Why this conclusion was reached
1/4 dimensions flagged Pass Declared vs actual capability Declared resources and inferred behavior are broadly aligned.
Block Hidden execution and egress 1 high-risk artifacts or egress signals were extracted.
Pass Attack chain and severe findings There is no explicit malicious chain in the report.
Review Dependencies and supply chain hygiene Dependency information is incomplete, so supply-chain confidence stays limited.
What drove the risk score up
硬编码计费 API 密钥 +15
payment.py:12 包含硬编码 BILLING_API_KEY,应改为 os.environ.get('SKILLPAY_API_KEY') 方式读取
权限声明宽泛 +5
SKILL.md 声明了 8 大类安全功能但实际脚本均为 mock 模拟,无真实审计/检测能力
Most important evidence
Medium Credential Theft
计费 API 密钥硬编码在源码中
payment.py:12 硬编码了 BILLING_API_KEY = 'sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2',应通过环境变量注入
payment.py:12 改为 os.environ.get('SKILLPAY_API_KEY') 方式读取,避免密钥随源码分发
Low Doc Mismatch
文档描述与实际能力不符
SKILL.md 声明了 Slither/Mythril 静态分析、硬件钱包固件验证等真实审计功能,但 scripts/*.py 全部为 mock 模拟,返回随机/硬编码结果
SKILL.md:18 明确标注当前版本为模拟演示版,或接入真实 API
Low Sensitive Access
写入本地文件行为未被文档声明
contract_auditor.py demo() 和 wallet_guardian.py demo() 会将报告写入 audit_report.json 和 wallet_security_report.json,SKILL.md 中未声明此文件系统写入行为
scripts/contract_auditor.py:297 在文档中声明 '输出审计报告到本地 JSON 文件'
Declared capability vs actual capability
Filesystem Pass
Declared NONE
→ Inferred READ
demo() 函数中写入 audit_report.json、wallet_security_report.json,属正常日志输出 Network Pass
Declared NONE
→ Inferred READ
payment.py:41-42 调用 skillpay.me 进行计费,真实场景需要网络权限 Shell Pass
Declared NONE
→ Inferred NONE
所有脚本均无 subprocess/os.system 调用,纯内存模拟 Environment Pass
Declared NONE
→ Inferred READ
payment.py:99 读取 SKILLPAY_USER_ID 环境变量 Skill Invoke Pass
Declared NONE
→ Inferred NONE
无跨 skill 调用 Clipboard Pass
Declared NONE
→ Inferred NONE
SKILL.md 提到 --watch-clipboard 但脚本代码中未实现 Browser Pass
Declared NONE
→ Inferred NONE
无浏览器操作 Database Pass
Declared NONE
→ Inferred NONE
无数据库操作
Suspicious artifacts and egress
High API Key
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" payment.py:12
Medium External URL
https://suspicious-site.com SKILL.md:106
Medium External URL
https://skillpay.me payment.py:11
Medium External URL
https://swcregistry.io/ references/contract-auditing.md:238
Medium External URL
https://consensys.github.io/smart-contract-best-practices/ references/contract-auditing.md:239
Medium External URL
https://docs.openzeppelin.com/contracts/ references/contract-auditing.md:240
Medium External URL
https://www.certora.com/ references/contract-auditing.md:241
Medium External URL
https://swcregistry.io/docs/SWC-107 scripts/contract_auditor.py:160
Medium External URL
https://consensys.github.io/smart-contract-best-practices/attacks/reentrancy/ scripts/contract_auditor.py:161
Medium External URL
https://swcregistry.io/docs/SWC-104 scripts/contract_auditor.py:164
Medium External URL
https://swcregistry.io/docs/SWC-115 scripts/contract_auditor.py:167
Medium External URL
https://docs.soliditylang.org/en/v0.8.0/080-breaking-changes.html scripts/contract_auditor.py:190
Dependencies and supply chain
There are no structured dependency warnings.
File composition
10 files · 2745 lines Python 7 files · 2081 linesMarkdown 2 files · 645 linesJSON 1 files · 19 lines
Files of concern · 8
scripts/phishing_detector.py Python · 339 lines
https://uniswap.org · https://uniswop.org · https://claim-free-tokens.xyz · https://ethereum.org
scripts/contract_auditor.py Python · 324 lines
写入本地文件行为未被文档声明 · https://swcregistry.io/docs/SWC-107 · https://consensys.github.io/smart-contract-best-practices/attacks/reentrancy/ · https://swcregistry.io/docs/SWC-104 · https://swcregistry.io/docs/SWC-115 · https://docs.soliditylang.org/en/v0.8.0/080-breaking-changes.html
scripts/tx_validator.py Python · 336 lines
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
scripts/multisig_manager.py Python · 327 lines
0x1111111111111111111111111111111111111111 · 0x2222222222222222222222222222222222222222 · 0x3333333333333333333333333333333333333333
scripts/wallet_guardian.py Python · 292 lines
0x0000000000000000000000000000000000000000 · 0xdead00000000000000000000000000000000dead
SKILL.md Markdown · 400 lines
文档描述与实际能力不符 · https://suspicious-site.com
references/contract-auditing.md Markdown · 245 lines
https://swcregistry.io/ · https://consensys.github.io/smart-contract-best-practices/ · https://docs.openzeppelin.com/contracts/ · https://www.certora.com/
payment.py Python · 142 lines
计费 API 密钥硬编码在源码中 · API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" · https://skillpay.me
Other files · incident_responder.py · _meta.json
10 files · 87.2 KB · 2745 lines
Python 7f · 2081LMarkdown 2f · 645LJSON 1f · 19L
├─
▾
📁
references
│ └─
📝
contract-auditing.md
Markdown
245L · 6.3 KB
├─
▾
📁
scripts
│ ├─
🐍
contract_auditor.py
Python
324L · 11.2 KB
│ ├─
🐍
incident_responder.py
Python
321L · 10.5 KB
│ ├─
🐍
multisig_manager.py
Python
327L · 10.5 KB
│ ├─
🐍
phishing_detector.py
Python
339L · 11.5 KB
│ ├─
🐍
tx_validator.py
Python
336L · 11.2 KB
│ └─
🐍
wallet_guardian.py
Python
292L · 10.2 KB
├─
📝
SKILL.md
Markdown
400L · 10.2 KB
├─
📋
_meta.json
JSON
19L · 442 B
└─
🐍
payment.py
Python
142L · 5.2 KB
Security positives
所有脚本均为纯 Python 代码,无 subprocess/os.system/eval 等危险调用
无 base64 编码、命令注入、eval 执行等混淆行为
无遍历环境变量收割敏感凭证的逻辑
无访问 ~/.ssh、~/.aws、.env 等敏感路径
无反向 shell、C2 通信、数据外泄等恶意行为
钓鱼检测器使用正则模式匹配,无实际网络请求钓鱼
多签管理器为纯本地逻辑,无链上操作
支付模块调用的是合法计费 API (skillpay.me),符合 SkillPay 生态规范