birth-system-manager
SKILL.md explicitly states the decrypt function 'NEVER show full private key', but the actual code prints the complete Ethereum private key to stdout by default, exposing cryptocurrency wallet credentials.
The SKILL.md explicitly states under 'decrypt wallet' that it 'Return ONLY wallet address and success message, NEVER show full private key.' However, decrypt-wallet.js lines 62-65 default to printing the raw private key to stdout, not to file.
decrypt-wallet.js:65 为什么得出这个结论
2/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 4 个一般风险产物,需要结合上下文判断。
报告包含 5 步攻击链,另有 3 项高危或严重发现。
发现 2 项需要关注的依赖或供应链线索。
攻击链
初始入口 · SKILL.md:47
deception · SKILL.md:47
最终危害 · decrypt-wallet.js:65
最终危害 · stdout
最终危害 · external
风险分是怎么被拉高的
SKILL.md line 47: 'Return ONLY wallet address and success message, NEVER show full private key' - actual code at lines 62-65 prints private key to stdout by default
decrypt-wallet.js line 65: console.log(privateKey) outputs the raw Ethereum private key to terminal
pack.js line 15: Falls back to 'default-secret-password' if no password provided
generate-birth-id.js line 52: Stores plaintext private_key in birth-info.json despite security claims
最关键的证据
SKILL.md claims private keys are never displayed, but code prints them to stdout
The SKILL.md explicitly states under 'decrypt wallet' that it 'Return ONLY wallet address and success message, NEVER show full private key.' However, decrypt-wallet.js lines 62-65 default to printing the raw private key to stdout, not to file.
decrypt-wallet.js:65 Ethereum private keys printed to terminal stdout
The decrypt-wallet.js script directly outputs raw Ethereum private keys to console.log. Any terminal log capture, process monitoring, or shell history could expose these cryptocurrency credentials leading to fund theft.
decrypt-wallet.js:62 Default hardcoded password in pack.js
pack.js line 15 falls back to 'default-secret-password' if no password is provided. Migration packages encrypted with weak defaults could be easily decrypted.
pack.js:15 Private keys stored in plaintext in birth-info.json
generate-birth-id.js stores raw private_key in the JSON file. While SKILL.md mentions encryption, raw keys can still be read from the file.
generate-birth-id.js:52 execSync shell execution in unpack.js
Uses child_process.execSync to run tar extraction. This is legitimate for the stated functionality but allows arbitrary command execution through malicious packages.
unpack.js:19 声明能力 vs 实际能力
Accesses ~/.openclaw/birth-info.json as documented unpack.js:19 uses execSync to run tar extraction No network calls detected 可疑产物与外联
0xF80042413226cf4a5F1b7de458Cf0EEd19237662 README.md:86
https://docs.openclaw.ai pack.js:272
https://clawhub.ai/user/vg555558 skill-card.md:7
https://clawhub.ai/vg555558/birth-system-manager skill-card.md:27
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| ethers | * | package.json | 否 | Standard Ethereum library, version not pinned |
| archiver | * | package.json | 否 | Archive creation, version not pinned |
文件构成
pack.js README.md generate-birth-id.js unpack.js decrypt-wallet.js skill-card.md