Skill Trust Decision

department-budget-execution-check-free

声称纯本地运行,但代码在每次运行后向外部服务器发送匿名统计请求(主机名+用户名哈希),存在文档-行为差异。

Install decision first Source: ClawHub Scanned: 21 days ago
Files 4
Artifacts 1
Violations 1
Findings 3
Most direct threat evidence
01
用户执行技能核对财务表 Entry · SKILL.md
02
运行结束后自动触发hintAfterRun发送统计请求 Escalation · scripts/run.mjs
03
主机名+用户名哈希的sid被发送至tokendidi.cn服务器 Impact · scripts/run.mjs

Why this conclusion was reached

2/4 dimensions flagged
Block
Declared vs actual capability

1 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

1 lower-risk artifacts were extracted and still need context.

Block
Attack chain and severe findings

The report includes 3 attack-chain steps and 0 severe findings.

Pass
Dependencies and supply chain hygiene

Dependencies are present but no obvious high-risk issue stands out.

Attack Chain

01
用户执行技能核对财务表

Entry · SKILL.md:1

02
运行结束后自动触发hintAfterRun发送统计请求

Escalation · scripts/run.mjs:238

03
主机名+用户名哈希的sid被发送至tokendidi.cn服务器

Impact · scripts/run.mjs:222

What drove the risk score up

文档-行为差异 +20

SKILL.md声明'完全本地运行、不需要联网',但run.mjs第214行有向tokendidi.cn的网络请求

隐藏的远程通信 +15

hintAfterRun函数在每次运行后自动发送请求,用户可能不知情

系统标识收集 +10

sid由主机名+用户名SHA1哈希生成,可用于追踪用户

Most important evidence

Medium Doc Mismatch

声明与实际网络行为不符

SKILL.md明确声明'完全本地运行'、'不需要联网'、'材料不出本机',但scripts/run.mjs在第214行实现了向https://www.tokendidi.cn/api/free-hint的网络请求。每次运行后自动发送匿名统计(包ID+sid),且可通过--no-stats禁用但默认开启。

scripts/run.mjs:214
删除隐藏的网络请求功能,或在SKILL.md中明确声明存在匿名统计功能并说明收集的数据范围。
Low Sensitive Access

系统标识符收集用于追踪

sid由os.hostname()和os.userInfo().username经SHA1哈希生成,虽然做了截断处理,但仍可用于识别用户设备。每次运行都会发送此标识符到外部服务器。

scripts/run.mjs:222
如需统计功能,应在文档中明确说明,并提供真正匿名的方案。
Low Priv Escalation

allowed-tools声明与实际使用不符

SKILL.md声明allowed-tools为Read和Bash,但代码实际使用了fetch(网络请求)这一工具,未在声明中列出。

scripts/run.mjs:214
如使用网络功能,应在allowed-tools中声明fetch或network相关权限。

Declared capability vs actual capability

Filesystem Pass
Declared READ
→
Inferred READ
scripts/run.mjs:89 仅读取入参文件
Network Block
Declared NONE
→
Inferred WRITE
scripts/run.mjs:214 使用fetch向https://www.tokendidi.cn/api/free-hint发送请求
Shell Pass
Declared WRITE
→
Inferred WRITE
SKILL.md声明Bash,实际通过node执行脚本

Suspicious artifacts and egress

Medium External URL
https://www.tokendidi.cn/api/free-hint

scripts/run.mjs:214

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
node-fetch none none No 使用Node.js 18+内置fetch,无外部依赖
crypto builtin node standard library No Node内置模块
os builtin node standard library No Node内置模块

File composition

4 files · 696 lines
JavaScript 2 files · 610 linesMarkdown 1 files · 83 linesJSON 1 files · 3 lines
Files of concern · 1
scripts/run.mjs JavaScript · 250 lines
声明与实际网络行为不符 · 系统标识符收集用于追踪 · allowed-tools声明与实际使用不符 · https://www.tokendidi.cn/api/free-hint
Other files · department-budget-execution-check.js · SKILL.md · sample.json

Security positives

引擎代码(department-budget-execution-check.js)仅使用Node标准库,无外部依赖
引擎明确声明不发起任何网络请求,与实际代码一致
提供了--no-stats选项可禁用统计功能
未外发用户的实际财务数据
代码结构清晰,注释详细