安全决策报告
department-budget-execution-check-free
声称纯本地运行,但代码在每次运行后向外部服务器发送匿名统计请求(主机名+用户名哈希),存在文档-行为差异。
最直接的威胁证据
01
用户执行技能核对财务表 初始入口 · SKILL.md
02
运行结束后自动触发hintAfterRun发送统计请求 权限提升 · scripts/run.mjs
03
主机名+用户名哈希的sid被发送至tokendidi.cn服务器 最终危害 · scripts/run.mjs
为什么得出这个结论
2/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 1 个一般风险产物,需要结合上下文判断。
阻止
攻击链与高危发现
报告包含 3 步攻击链,另有 0 项高危或严重发现。
通过
依赖与供应链卫生
依赖结构存在,但暂未看到明显高危告警。
攻击链
01
用户执行技能核对财务表
初始入口 · SKILL.md:1
02
运行结束后自动触发hintAfterRun发送统计请求
权限提升 · scripts/run.mjs:238
03
主机名+用户名哈希的sid被发送至tokendidi.cn服务器
最终危害 · scripts/run.mjs:222
风险分是怎么被拉高的
文档-行为差异 +20
SKILL.md声明'完全本地运行、不需要联网',但run.mjs第214行有向tokendidi.cn的网络请求
隐藏的远程通信 +15
hintAfterRun函数在每次运行后自动发送请求,用户可能不知情
系统标识收集 +10
sid由主机名+用户名SHA1哈希生成,可用于追踪用户
最关键的证据
中危 文档欺骗
声明与实际网络行为不符
SKILL.md明确声明'完全本地运行'、'不需要联网'、'材料不出本机',但scripts/run.mjs在第214行实现了向https://www.tokendidi.cn/api/free-hint的网络请求。每次运行后自动发送匿名统计(包ID+sid),且可通过--no-stats禁用但默认开启。
scripts/run.mjs:214 删除隐藏的网络请求功能,或在SKILL.md中明确声明存在匿名统计功能并说明收集的数据范围。
低危 敏感访问
系统标识符收集用于追踪
sid由os.hostname()和os.userInfo().username经SHA1哈希生成,虽然做了截断处理,但仍可用于识别用户设备。每次运行都会发送此标识符到外部服务器。
scripts/run.mjs:222 如需统计功能,应在文档中明确说明,并提供真正匿名的方案。
低危 权限提升
allowed-tools声明与实际使用不符
SKILL.md声明allowed-tools为Read和Bash,但代码实际使用了fetch(网络请求)这一工具,未在声明中列出。
scripts/run.mjs:214 如使用网络功能,应在allowed-tools中声明fetch或network相关权限。
声明能力 vs 实际能力
文件系统 通过
声明 READ
→ 推断 READ
scripts/run.mjs:89 仅读取入参文件 网络访问 阻止
声明 NONE
→ 推断 WRITE
scripts/run.mjs:214 使用fetch向https://www.tokendidi.cn/api/free-hint发送请求 命令执行 通过
声明 WRITE
→ 推断 WRITE
SKILL.md声明Bash,实际通过node执行脚本 可疑产物与外联
中危 外部 URL
https://www.tokendidi.cn/api/free-hint scripts/run.mjs:214
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| node-fetch | none | none | 否 | 使用Node.js 18+内置fetch,无外部依赖 |
| crypto | builtin | node standard library | 否 | Node内置模块 |
| os | builtin | node standard library | 否 | Node内置模块 |
文件构成
4 个文件 · 696 行
JavaScript 2 个文件 · 610 行Markdown 1 个文件 · 83 行JSON 1 个文件 · 3 行
需关注文件 · 1
scripts/run.mjs 声明与实际网络行为不符 · 系统标识符收集用于追踪 · allowed-tools声明与实际使用不符 · https://www.tokendidi.cn/api/free-hint
其他文件 · department-budget-execution-check.js · SKILL.md · sample.json
安全亮点
引擎代码(department-budget-execution-check.js)仅使用Node标准库,无外部依赖
引擎明确声明不发起任何网络请求,与实际代码一致
提供了--no-stats选项可禁用统计功能
未外发用户的实际财务数据
代码结构清晰,注释详细