安全决策报告

birth-system-manager

声明与行为严重不符:SKILL.md承诺不显示私钥但decrypt-wallet.js将私钥明文输出到stdout,且generate-birth-id.js将私钥明文写入磁盘

安装决策优先 来源: ClawHub 扫描时间: 2026/4/10
文件 10
IOC 2
越权项 2
发现 7
最直接的威胁证据
严重 文档欺骗
文档承诺不显示私钥但代码明文输出

SKILL.md明确声明'Return ONLY wallet address and success message, NEVER show full private key',但decrypt-wallet.js第69-70行将解密后的私钥通过console.log直接打印到标准输出stdout

decrypt-wallet.js:69

为什么得出这个结论

2/4 个维度触发
阻止
声明与实际能力

发现 2 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 2 个一般风险产物,需要结合上下文判断。

阻止
攻击链与高危发现

报告包含 4 步攻击链,另有 3 项高危或严重发现。

复核
依赖与供应链卫生

发现 1 项需要关注的依赖或供应链线索。

攻击链

01
攻击者通过SKILL.md文档判断为合法身份系统工具

初始入口 · SKILL.md:1

02
用户执行'decrypt wallet'命令

权限提升 · decrypt-wallet.js:1

03
私钥明文输出到stdout被攻击者截获

最终危害 · decrypt-wallet.js:69

04
攻击者获取以太坊钱包私钥后可完全控制钱包资产

最终危害 · decrypt-wallet.js:70

风险分是怎么被拉高的

文档欺诈 - 私钥泄露承诺 +30

SKILL.md声明'NEVER show full private key'但decrypt-wallet.js:69-70行明文打印私钥到stdout

敏感数据明文存储 +25

generate-birth-id.js:51行将wallet.privateKey明文写入~/.openclaw/birth-info.json

弱默认密码 +8

pack.js:21行无密码时使用'default-secret-password'作为默认加密密码

凭证文件访问 +5

所有脚本访问~/.openclaw/birth-info.json含敏感凭证

最关键的证据

严重 文档欺骗

文档承诺不显示私钥但代码明文输出

SKILL.md明确声明'Return ONLY wallet address and success message, NEVER show full private key',但decrypt-wallet.js第69-70行将解密后的私钥通过console.log直接打印到标准输出stdout

decrypt-wallet.js:69
删除第69-70行的私钥输出,仅保留wallet.address输出
严重 凭证窃取

私钥明文写入磁盘

generate-birth-id.js第51行将wallet.privateKey明文保存到~/.openclaw/birth-info.json文件中,任何能访问该文件的人都可获取钱包私钥

generate-birth-id.js:51
使用加密存储替代明文存储,如使用ethers.Wallet.encrypt()加密后存储encrypted_private_key
高危 文档欺骗

私钥解密逻辑处理不当

clone-init.js和fix-clone.js尝试处理encrypted_private_key时存在逻辑缺陷,若解密失败会回退使用原始signature而非正确报错

clone-init.js:95
解密失败时应明确报错而非静默回退,避免用户误以为签名有效
中危 供应链

依赖包无版本锁定

代码使用ethers库但无package.json指定版本,存在依赖投毒风险

unknown
创建package.json并锁定ethers版本,如ethers@^6.0.0
中危 凭证窃取

弱默认加密密码

pack.js第21行使用'default-secret-password'作为默认打包密码,若用户未设置BIRTH_PACK_PASSWORD,备份钱包将以弱密码加密

pack.js:21
无密码时应强制要求用户输入,不应使用默认密码
低危 敏感访问

收集系统指纹信息

pack.js第138-141行在clone marker中记录hostname、platform、arch、node_version等系统信息

pack.js:138
如非必要功能,应移除系统指纹收集
低危 敏感访问

访问系统环境变量

脚本访问process.env.HOME、process.env.IS_CLONE等环境变量,虽然这是正常功能但需注意敏感环境变量泄露风险

clone-init.js:14
确保运行环境的环境变量安全性

声明能力 vs 实际能力

文件系统 阻止
声明 READ
推断 WRITE
generate-birth-id.js:51 将私钥写入birth-info.json
命令执行 阻止
声明 NONE
推断 READ
unpack.js:69 使用execSync执行tar命令
网络访问 通过
声明 NONE
推断 NONE
所有脚本无网络调用

可疑产物与外联

中危 钱包地址
0xF80042413226cf4a5F1b7de458Cf0EEd19237662

fix-clone.js:30

中危 外部 URL
https://docs.openclaw.ai

pack.js:272

依赖与供应链

包名版本来源漏洞备注
ethers * unknown 无package.json锁定版本

文件构成

10 个文件 · 1685 行
JavaScript 7 个文件 · 1488 行Markdown 2 个文件 · 192 行JSON 1 个文件 · 5 行
需关注文件 · 5
pack.js JavaScript · 395 行
弱默认加密密码 · 收集系统指纹信息 · https://docs.openclaw.ai
fix-clone.js JavaScript · 259 行
0xF80042413226cf4a5F1b7de458Cf0EEd19237662
clone-init.js JavaScript · 226 行
私钥解密逻辑处理不当 · 访问系统环境变量
generate-birth-id.js JavaScript · 164 行
私钥明文写入磁盘
decrypt-wallet.js JavaScript · 103 行
文档承诺不显示私钥但代码明文输出
其他文件 · whoami.js · unpack.js · README.md · SKILL.md · _meta.json

安全亮点

声称的本地操作无网络调用与代码实现一致
使用AES-256-CBC进行加密(算法层面合规)
使用scrypt密钥派生函数(比简单SHA256更安全)
签名验证机制可防止数据篡改