Suspicious — Risk Score 40/100
Last scan:2 days ago Rescan
40 /100
clawhub-security-scan
ClawHub技能预发布安全扫描工具,扫描代码中的可疑模式
安全扫描工具存在未声明的系统交互和硬编码凭证示例,意图看似良性但代码质量存在问题
Skill Nameclawhub-security-scan
Duration44.5s
Enginepi
Use with caution
移除代码中的凭证示例文本,补充SKILL.md声明实际使用的权限(文件系统读取、网络请求、环境变量访问)

Findings 4 items

Severity Finding Location
Medium
未声明的网络外部通信
代码通过urllib向skillpay.me API发送计费请求,但SKILL.md未声明此外部通信行为
API = "https://skillpay.me/api/v1"
→ 在SKILL.md中明确声明:本技能会调用skillpay.me API进行计费
scripts/scan.py:22
Medium
未声明的环境变量访问
代码读取SKILLPAY_API_KEY环境变量用于API认证,但SKILL.md未声明此环境变量依赖
k = api_key or os.environ.get("SKILLPAY_API_KEY")
→ 在SKILL.md中声明:本技能需要SKILLPAY_API_KEY环境变量
scripts/scan.py:43
Low
代码包含凭证示例文本
review.py文档字符串中包含'secretkeyhere123'作为反面教材示例,虽非真实密钥但属不良实践
NOT:    `api_key = "secretkeyhere123"` ✗
→ 移除代码中的凭证示例,改用占位符如'<YOUR_API_KEY>'
scripts/review.py:24
Low
MEDIUM_RISK_PATTERNS覆盖自身
代码的高危模式列表(eval/exec/subprocess等)会触发自身扫描结果,用户运行扫描时可能看到误报
subprocess\.|os\.environ|urllib
→ 在扫描时自动排除scripts/目录自身,或在文档中说明扫描工具自身会被标记
scripts/scan.py:56
ResourceDeclaredInferredStatusEvidence
Filesystem NONE READ ✗ Violation scripts/scan.py:scan_file() 逐行读取目标文件
Network NONE READ ✗ Violation scripts/scan.py:skillpay_charge() 调用skillpay.me API
Environment NONE READ ✗ Violation scripts/scan.py:43 读取SKILLPAY_API_KEY
Shell NONE READ ✓ Aligned scripts/scan.py:import subprocess 仅用于检测模式,非实际执行
1 High 2 findings
🔑
High API Key 疑似硬编码凭证
api_key = "secretkeyhere123"
scripts/review.py:24
🔗
Medium External URL 外部 URL
https://skillpay.me/api/v1
scripts/precheck.py:24

File Tree

5 files · 32.2 KB · 847 lines
Python 3f · 769L Markdown 1f · 73L JSON 1f · 5L
├─ 📁 scripts
│ ├─ 🐍 precheck.py Python 196L · 6.9 KB
│ ├─ 🐍 review.py Python 101L · 3.8 KB
│ └─ 🐍 scan.py Python 472L · 18.7 KB
├─ 📋 _meta.json JSON 5L · 140 B
└─ 📝 SKILL.md Markdown 73L · 2.7 KB

Security Positives

✓ 功能看似良性:提供代码安全扫描服务
✓ 使用标准库实现,无第三方依赖风险
✓ 无实际恶意行为(无凭证外泄、无远程代码执行)
✓ 代码结构清晰,意图是帮助开发者而非攻击
✓ 高危模式检测逻辑合理,包含常见CVE模式