This report was generated in Chinese. Some content may be in Chinese.
Suspicious — Risk Score 55/100
Last scan:3 hr ago Rescan
55 /100
baidu-netdisk-skill
百度网盘文件管理 for OpenClaw - OAuth 2.0 一键授权,支持列表/搜索/下载/上传
硬编码加密密钥导致声称的 AES-256 加密形同虚设,文档-行为存在欺骗,依赖无版本锁定存在供应链风险,但无主动恶意行为证据。
Skill Namebaidu-netdisk-skill
Duration81.8s
Enginepi
ClawHub Baidu Netdisk Skill v1.0.10 by niukesi
📥 253 📦 1
ClawHub Verdict Suspicious env_credential_accessllm_suspiciouspotential_exfiltration
Use with caution
1. 立即将 ENCRYPTION_KEY 替换为用户提供的密钥或从密钥管理服务获取;2. 在 SKILL.md 中完整声明 filesystem 路径访问和 env 读取;3. 锁定所有依赖版本并定期审查已知漏洞;4. 移除 README 中的付费订阅推广链接。

Findings 6 items

Severity Finding Location
High
硬编码加密密钥使 AES-256 加密承诺失效 Doc Mismatch
auth.js:18 和 baidu-api.js:20 使用固定字符串 'baidu-netdisk-skill-secret-2026' 经 SHA-256 派生 ENCRYPTION_KEY,该密钥随源码公开。所有用户 Token 使用相同密钥加密,攻击者获取源码后可直接解密全部已存储 Token。SKILL.md 和 SECURITY.md 均未披露此设计,声称'Token 本地加密存储(AES-256)'但加密密钥已知使该保护名存实亡。
const ENCRYPTION_KEY = process.env.ENCRYPTION_KEY || crypto.createHash('sha256').update('baidu-netdisk-skill-secret-2026').digest('hex');
→ 将 ENCRYPTION_KEY 改为必须由用户提供或从系统密钥管理服务获取,绝不能使用内置默认值。
src/auth.js:18
High
内置加密密钥使已加密 Token 可被批量解密 Credential Theft
由于 ENCRYPTION_KEY 硬编码且公开,用户存储的 accessToken 和 refreshToken 虽经 AES 加密但密钥已知。攻击者只需读取配置文件并用同一密钥解密即可获得明文 Token,影响所有用户。
const ENCRYPTION_KEY = process.env.ENCRYPTION_KEY || crypto.createHash('sha256').update('baidu-netdisk-skill-secret-2026').digest('hex');
→ 使用用户提供的主密码派生密钥(PBKDF2),或集成系统密钥链(如 keytar),禁止内置默认密钥。
src/baidu-api.js:20
Medium
npm 依赖无版本锁定 Supply Chain
package.json 中 axios ^1.6.0, crypto-js ^4.2.0, commander ^11.1.0, conf ^10.2.0 等依赖使用 caret 范围,未锁定具体版本。npm install 时可能安装带有安全漏洞的更新版本。
"axios": "^1.6.0",
"crypto-js": "^4.2.0",
"commander": "^11.1.0"
→ 使用 npm ci 或将 package.json 改为精确版本(~ 或无修饰符),并定期运行 npm audit 扫描已知漏洞。
package.json:38
Medium
skill.json 声明 tools: ['exec'] 但代码无任何 exec 调用 Doc Mismatch
skill.json 的 tools 字段声明使用 'exec' 工具,但实际代码中无 child_process.exec/spawn/fork 等任何 shell 执行调用。声明的工具与实际代码能力不匹配,可能误导 AI Agent 授予不必要的 shell 执行权限。
"tools": ["exec"]
→ 将 tools 字段改为描述实际使用的资源类型,如 ['filesystem:READ', 'network:READ'] 或移除 tools 字段。
skill.json:18
Medium
未声明的敏感文件路径访问 Priv Escalation
代码通过 conf 库访问 ~/.config/configstore/baidu-netdisk-skill.json 存储配置和加密 Token,但 skill.json 和 SKILL.md 均未声明 filesystem 权限及此具体路径。用户在授权时无法了解该路径将被访问。
const config = new Conf({ projectName: 'baidu-netdisk-skill' });
→ 在 skill.json security.fileAccess 字段中明确列出 ~/.config/configstore/ 路径,并在 SKILL.md 安全说明中告知用户。
src/auth.js:35
Low
README.md 包含付费订阅推广内容 Doc Mismatch
README.md 末尾包含'首发优惠'、'前100名用户5折'、'年付用户¥999/年'等付费推广内容,与工具类开源项目性质不符,可能是诱导付费的营销手段。
前 100 名用户:个人版首月 5 折(¥49.5)
→ 如为开源工具,移除付费推广内容;如为付费产品,在 SKILL.md 中明确标注。
README.md:337
ResourceDeclaredInferredStatusEvidence
Filesystem NONE READ ✓ Aligned src/auth.js:35 使用 Conf 库读取 ~/.config/configstore/baidu-netdisk-skill.json; src/b…
Network READ READ ✓ Aligned 仅调用 pan.baidu.com 和 openapi.baidu.com,与 skill.json 声明的 externalDomains 一致
Environment NONE READ ✓ Aligned src/auth.js:17-18, src/baidu-api.js:20-21 读取 ENCRYPTION_KEY/BAIDU_API_KEY/BAIDU_…
Shell NONE NONE skill.json 声明 tools: ['exec'] 但代码中无任何 child_process.exec/spawn/popen 调用
27 findings
🔗
Medium External URL 外部 URL
https://img.shields.io/badge/License-MIT-yellow.svg
README.md:5
🔗
Medium External URL 外部 URL
https://opensource.org/licenses/MIT
README.md:5
🔗
Medium External URL 外部 URL
https://img.shields.io/badge/Node.js-%3E%3D18.0.0-green.svg
README.md:6
🔗
Medium External URL 外部 URL
https://nodejs.org/
README.md:6
🔗
Medium External URL 外部 URL
https://img.shields.io/badge/ClawHub-Skill-blue.svg
README.md:7
🔗
Medium External URL 外部 URL
https://clawhub.ai/
README.md:7
🔗
Medium External URL 外部 URL
https://img.shields.io/badge/Security-Self--Audited-brightgreen.svg
README.md:8
🔗
Medium External URL 外部 URL
https://img.shields.io/badge/Privacy-No%20Data%20Collection-success.svg
README.md:9
🔗
Medium External URL 外部 URL
https://pan.baidu.com/union/console
README.md:150
🔗
Medium External URL 外部 URL
https://clawhub.ai/niukesi/baidu-netdisk-skill
TODO.md:60
🔗
Medium External URL 外部 URL
https://pan.baidu.com/union/apply
docs/QUICKSTART.md:7
🔗
Medium External URL 外部 URL
https://openapi.baidu.com/oauth/2.0/authorize?
docs/QUICKSTART.md:30
🔗
Medium External URL 外部 URL
https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=你的
docs/QUICKSTART.md:40
🔗
Medium External URL 外部 URL
https://opencollective.com/eslint
package-lock.json:43
🔗
Medium External URL 外部 URL
https://www.patreon.com/feross
package-lock.json:331
🔗
Medium External URL 外部 URL
https://feross.org/support
package-lock.json:335
🔗
Medium External URL 外部 URL
https://eslint.org/version-support
package-lock.json:723
🔗
Medium External URL 外部 URL
https://opencollective.com/fastify
package-lock.json:925
🔗
Medium External URL 外部 URL
https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=$
src/auth.js:54
🔗
Medium External URL 外部 URL
https://openapi.baidu.com/oauth/2.0/token
src/auth.js:80
🔗
Medium External URL 外部 URL
https://pan.baidu.com/rest/2.0/xpan
src/baidu-api.js:40
🔗
Medium External URL 外部 URL
https://pan.baidu.com/union/doc/pksg0s9ns
src/baidu-api.js:99
🔗
Medium External URL 外部 URL
https://pan.baidu.com/rest/2.0/xpan/nas
src/baidu-api.js:103
🔗
Medium External URL 外部 URL
https://pan.baidu.com/rest/2.0/xpan/file
src/baidu-api.js:131
📧
Info Email 邮箱地址
[email protected]
README.md:299
📧
Info Email 邮箱地址
[email protected]
SECURITY.md:161
📧
Info Email 邮箱地址
[email protected]
package-lock.json:1085

File Tree

13 files · 121.0 KB · 3972 lines
JSON 4f · 2271L Markdown 5f · 907L JavaScript 3f · 686L Shell 1f · 108L
├─ 📁 docs
│ └─ 📝 QUICKSTART.md Markdown 147L · 2.9 KB
├─ 📁 src
│ ├─ 📜 auth.js JavaScript 123L · 4.0 KB
│ ├─ 📜 baidu-api.js JavaScript 324L · 8.3 KB
│ └─ 📜 index.js JavaScript 239L · 7.3 KB
├─ 📋 _meta.json JSON 5L · 138 B
├─ 📋 package-lock.json JSON 2101L · 72.8 KB
├─ 📋 package.json JSON 61L · 1.4 KB
├─ 📝 README.md Markdown 361L · 8.8 KB
├─ 📝 SECURITY.md Markdown 197L · 3.9 KB
├─ 📋 skill.json JSON 104L · 3.2 KB
├─ 📝 SKILL.md Markdown 126L · 3.4 KB
├─ 🔧 test-local.sh Shell 108L · 3.2 KB
└─ 📝 TODO.md Markdown 76L · 1.7 KB

Dependencies 6 items

PackageVersionSourceKnown VulnsNotes
axios ^1.6.0 npm No semver caret 范围,未锁定版本;需关注已知漏洞报告
crypto-js ^4.2.0 npm No semver caret 范围,未锁定版本;本项目用于 AES 加密
commander ^11.1.0 npm No semver caret 范围,未锁定版本
conf ^10.2.0 npm No semver caret 范围,未锁定版本;存储配置到 ~/.config
ora ^5.4.1 npm No semver caret 范围,未锁定版本
chalk ^4.1.2 npm No semver caret 范围,未锁定版本

Security Positives

✓ 代码结构清晰,核心功能(文件列表/搜索/上传/下载)与文档描述一致
✓ 仅调用百度官方 API(pan.baidu.com, openapi.baidu.com),无第三方追踪
✓ 无主动的恶意行为证据(无反向 shell、无 base64 编码执行、无凭证外传)
✓ OAuth 2.0 授权流程设计合理,不存储用户明文密码
✓ Token 刷新机制实现正确,refreshAccessToken 方法有效
✓ test-local.sh 提供本地测试支持,辅助安全验证