安全决策报告

asset-impairment-check-free

技能核心功能(资产减值检查)代码干净,但存在影子网络行为:向外部服务器发送由主机名+用户名生成的安装标识,自称「匿名」但实际可追踪特定用户/机器。声明的 Bash 权限与实际行为不符。

安装决策优先 来源: ClawHub 扫描时间: 2026/9/19
文件 4
IOC 1
越权项 3
发现 3
最直接的威胁证据

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

没有形成明确的恶意路径。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

风险分是怎么被拉高的

影子网络行为 - 可识别的 sid 生成 +20

run.mjs:217-219 使用 hostname()+username 生成 SHA1 哈希发送外部服务器,自称匿名但可追踪特定机器+用户

文档欺骗 - 匿名声明与实际不符 +15

SKILL.md 声称 sid 为匿名安装标识,但 hostname+username 组合可唯一识别用户环境

未声明的外部网络通信 +10

向 www.tokendidi.cn/api/free-hint 发请求,SKILL.md 仅模糊提及「匿名次数统计」

能力声明不符 - 声明 Bash 但未使用 +5

allowed-tools 声明 Bash,实际代码无任何 shell 执行,纯属多余声明

第三方域名无信任链披露 +5

向中国企业域名发送可识别信息,无隐私政策或数据处理说明

最关键的证据

中危 文档欺骗

匿名标识声明与实际不符

SKILL.md 声称发送「不含任何材料的匿名安装标识(由主机名与用户名做短哈希得到)」,但 SHA1(hostname+username) 可唯一识别用户机器和身份,非真正匿名。

scripts/run.mjs:217
使用随机 UUID 或删除遥测;如需统计使用量,使用完全独立的随机安装 ID,不与机器/用户信息关联
中危 数据外泄

未充分披露的外部网络通信

技能在每次执行后向 www.tokendidi.cn 发送 `id` 和 `sid` 参数,收集使用频率和用户环境信息,作为「次数统计」功能。无隐私政策说明数据保留期限和用途。

scripts/run.mjs:227
在 SKILL.md 中明确披露第三方服务商、数据字段含义、用途和保留策略;考虑使用可信的统计服务或本地离线计数
低危 权限提升

能力声明超出实际需要

allowed-tools 声明 Bash 但代码未使用任何 shell 执行,纯属多余声明。

SKILL.md:13
移除 Bash 声明,仅保留 Read

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 READ
run.mjs:73 仅读取入参 JSON 文件
命令执行 阻止
声明 WRITE
→
推断 NONE
allowed-tools:Bash 但代码无 child_process 调用
网络访问 阻止
声明 NONE
→
推断 WRITE
run.mjs:227-229 向外部服务器发送 sid 数据
环境变量 阻止
声明 NONE
→
推断 READ
run.mjs:218 读取 os.hostname() 和 os.userInfo().username

可疑产物与外联

中危 外部 URL
https://www.tokendidi.cn/api/free-hint

scripts/run.mjs:215

依赖与供应链

没有结构化依赖告警。

文件构成

4 个文件 · 685 行
JavaScript 2 个文件 · 604 行Markdown 1 个文件 · 78 行JSON 1 个文件 · 3 行
需关注文件 · 2
scripts/run.mjs JavaScript · 249 行
匿名标识声明与实际不符 · 未充分披露的外部网络通信 · https://www.tokendidi.cn/api/free-hint
SKILL.md Markdown · 78 行
能力声明超出实际需要
其他文件 · asset-impairment-check.js · sample.json

安全亮点

核心引擎(asset-impairment-check.js)使用纯 Node 标准库,无外部依赖,无网络调用
材料不出本机(财务数据不外传),声明准确
检查逻辑透明,结果可第三方复算
错误处理完善,材料不足时不给虚假结论
无代码混淆或恶意 payload