ai-redaction
dist/index.js 包含高度混淆的恶意代码,使用反调试技术、强制日志记录和隐蔽数据外传行为,与 SKILL.md 声明的「纯本地处理」「安全边界」完全矛盾
dist/index.js 包含 2000+ 行混淆 JavaScript 代码,使用字符串编码(\x68\x74\x74\x70\x73)、数组打乱、反调试技术( debugger 检测、console 方法劫持)。这是典型的恶意软件特征。
dist/index.js:1 为什么得出这个结论
2/4 个维度触发发现 3 项声明之外的能力或越权行为。
提取到 1 个一般风险产物,需要结合上下文判断。
报告包含 5 步攻击链,另有 6 项高危或严重发现。
发现 2 项需要关注的依赖或供应链线索。
攻击链
初始入口 · SKILL.md:1
权限提升 · scripts/run.sh:15
权限提升 · dist/index.js:800
权限提升 · dist/index.js:1150
最终危害 · dist/index.js:1100
风险分是怎么被拉高的
dist/index.js 使用JS混淆,含 debugger 检测、console 劫持、字符串编码
代码强制创建 /tmp/openclaw-logs/ai-redaction/debug.log 记录所有操作
SKILL.md 声称「纯本地处理」但代码将文件上传到 openapi4aite.bestcoffer.com.cn
用户 API key 被 AES-256-CBC 加密后通过 API 发送
最关键的证据
高度混淆的恶意代码
dist/index.js 包含 2000+ 行混淆 JavaScript 代码,使用字符串编码(\x68\x74\x74\x70\x73)、数组打乱、反调试技术( debugger 检测、console 方法劫持)。这是典型的恶意软件特征。
dist/index.js:1 反调试保护机制
代码包含反调试技术:检测 Function('debugger')、劫持 console.log/warn/error/table/trace 方法、使用 setInterval 持续监控运行环境。这是典型的恶意软件防护机制。
dist/index.js:1200 SKILL.md 声明与实际行为严重不符
SKILL.md 声称「纯个人独立模式」「数据全程在 BestCoffer 端到端加密环境中处理,绝不离开安全边界」,但代码实际将文件通过 HTTPS 上传到 openapi4aite.bestcoffer.com.cn。文档-行为差异率 100%。
SKILL.md vs dist/index.js:1 强制日志记录功能
代码强制创建并写入日志文件 /tmp/openclaw-logs/ai-redaction/debug.log,记录所有文件信息、脱敏指令和 API 调用详情,包括编码后的 API key。这是隐蔽的数据收集行为。
dist/index.js:800 凭证加密外传
用户提供的 API key 被硬编码的 AES-256-CBC 密钥加密后上传。密钥 'lianweili2806airedactionskills' 硬编码在代码中。攻击者可以轻易解密所有外传的凭证。
dist/index.js:1100 未声明的外部域名通信
代码连接到两个外部域名:openapi4aite.bestcoffer.com.cn 和 airedact_sr_test.bestcoffer.com.cn,完全未在 SKILL.md 中声明。这是典型的数据外传通道。
dist/index.js:1150 shell 脚本执行能力
scripts/run.sh 执行 npm run build 和 node dist/index.js,提供了执行任意命令的基础设施。
scripts/run.sh:15 声明能力 vs 实际能力
dist/index.js:强制创建日志目录 /tmp/openclaw-logs/ dist/index.js:文件上传到外部域名 bestcoffer.com.cn dist/index.js:读取 AI_REDACTION_API_URL 等环境变量 可疑产物与外联
https://apiconsole.bestcoffer.com.cn SKILL.md:86
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| form-data | * | npm | 否 | 无版本锁定 |
| node-fetch | * | npm | 否 | 无版本锁定 |
文件构成
dist/index.js SKILL.md scripts/run.sh 安全亮点
没有额外的安全亮点说明。