安全决策报告

ar-aging-check-free

SKILL.md 声称完全本地运行、不联网,但代码实际向外部服务器发送匿名标识符用于次数统计,构成文档-行为差异。

安装决策优先 来源: ClawHub 扫描时间: 2026/9/19
文件 4
IOC 1
越权项 2
发现 3
最直接的威胁证据
01
用户运行技能核对应收账龄表 初始入口 · scripts/run.mjs
02
运行结束后自动发起网络请求 权限提升 · scripts/run.mjs
03
发送hostname+username哈希的匿名标识符到外部服务器 最终危害 · scripts/run.mjs

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

攻击链

01
用户运行技能核对应收账龄表

初始入口 · scripts/run.mjs:1

02
运行结束后自动发起网络请求

权限提升 · scripts/run.mjs:215

03
发送hostname+username哈希的匿名标识符到外部服务器

最终危害 · scripts/run.mjs:211

风险分是怎么被拉高的

文档声明与实际行为不符 +20

SKILL.md声明'不联网',但代码向https://www.tokendidi.cn/api/free-hint发送请求

收集系统标识符 +10

使用hostname+username的SHA1哈希前16位作为匿名安装标识

权限声明宽泛 +10

声明Bash工具但实际未使用,存在权限过度声明

网络请求存在 +5

向外部URL发起fetch请求,传输sid标识符

最关键的证据

中危 文档欺骗

文档声明与实际网络行为不符

SKILL.md明确声明'不联网'和'完全本地运行',但scripts/run.mjs在运行结束后向https://www.tokendidi.cn/api/free-hint发送匿名统计请求。前3次无返回,第4次起可能返回广告或升级提示。

scripts/run.mjs:215
在SKILL.md中明确声明存在匿名次数统计,说明只发送包标识和匿名安装标识,不发送用户材料。
低危 敏感访问

收集系统标识符用于追踪

代码通过SHA1(hostname|username)生成半唯一安装标识符,虽然声称'不读环境变量',但实际收集了主机名和用户名。

scripts/run.mjs:210
如果不需要追踪用户行为,可移除此逻辑;或使用纯本地方式计数(如本地文件)。
低危 权限提升

Bash工具权限过度声明

SKILL.md声明allowed-tools包含Bash,但代码中无任何subprocess调用,存在权限过度声明。

SKILL.md:12
将Bash从allowed-tools中移除,仅保留Read工具。

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 READ
scripts/run.mjs:79 fs.readFileSync
网络访问 阻止
声明 NONE
→
推断 WRITE
scripts/run.mjs:215 fetch to https://www.tokendidi.cn/api/free-hint
环境变量 阻止
声明 NONE
→
推断 READ
scripts/run.mjs:211 os.hostname() + os.userInfo()
命令执行 通过
声明 WRITE
→
推断 NONE
SKILL.md声明Bash工具但代码中无subprocess调用

可疑产物与外联

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

scripts/run.mjs:215

依赖与供应链

没有结构化依赖告警。

文件构成

4 个文件 · 643 行
JavaScript 2 个文件 · 572 行Markdown 1 个文件 · 68 行JSON 1 个文件 · 3 行
需关注文件 · 2
scripts/run.mjs JavaScript · 249 行
文档声明与实际网络行为不符 · 收集系统标识符用于追踪 · https://www.tokendidi.cn/api/free-hint
SKILL.md Markdown · 68 行
Bash工具权限过度声明
其他文件 · ar-aging-check.js · sample.json

安全亮点

检查引擎完全使用Node标准库实现,无第三方依赖
不访问敏感路径如~/.ssh、~/.aws、.env
不访问环境变量中的敏感关键字
不进行代码混淆或eval执行
材料不足时不输出默认结论,设计合理
退出码设计清晰