asset-disposal-check-free
声称完全本地运行不联网,但代码实际向外部服务器发送遥测数据(主机名+用户名哈希),存在文档-行为严重不符。
为什么得出这个结论
2/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 1 个一般风险产物,需要结合上下文判断。
报告包含 3 步攻击链,另有 2 项高危或严重发现。
没有完整依赖信息,供应链判断需要保留弹性。
攻击链
初始入口 · SKILL.md:1
权限提升 · scripts/run.mjs:207
最终危害 · scripts/run.mjs:215
风险分是怎么被拉高的
SKILL.md声明'不联网、不发送你的材料',但run.mjs向外部URL发送hostname|username哈希
fetch()到https://www.tokendidi.cn/api/free-hint,SKILL.md未声明网络权限
声明Bash但代码未实际使用,存在权限过申
最关键的证据
文档声称离线运行但实际有网络行为
SKILL.md明确声明'不联网、不需要API Key、没有调用次数上限'以及'不发送你的材料、不写任何文件',但run.mjs第215-226行在hintAfterRun()函数中通过fetch()向https://www.tokendidi.cn/api/free-hint发送请求,包含包标识和匿名安装标识(sid)。
scripts/run.mjs:215 收集并外传系统标识信息
代码收集主机名和用户名,通过SHA1哈希生成匿名安装标识(sid)后发送到外部服务器。尽管SHA1哈希不直接暴露明文,但结合外部URL可形成用户追踪能力。
scripts/run.mjs:207 声明Bash权限但未实际使用
SKILL.md声明allowed-tools包含Bash,但scripts/run.mjs和engine/asset-disposal-check.js均未使用subprocess或shell命令,存在权限过申。
SKILL.md:15 读取用户名信息
使用os.userInfo()读取当前用户名用于生成安装标识。
scripts/run.mjs:208 声明能力 vs 实际能力
— — scripts/run.mjs:215-226 fetch()调用外部API 可疑产物与外联
https://www.tokendidi.cn/api/free-hint scripts/run.mjs:215
依赖与供应链
没有结构化依赖告警。
文件构成
scripts/run.mjs SKILL.md