Skill Trust Decision

ar-aging-check-free

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

Install decision first Source: ClawHub Scanned: 24 days ago
Files 4
Artifacts 1
Violations 2
Findings 3
Most direct threat evidence
01
用户运行技能核对应收账龄表 Entry · scripts/run.mjs
02
运行结束后自动发起网络请求 Escalation · scripts/run.mjs
03
发送hostname+username哈希的匿名标识符到外部服务器 Impact · scripts/run.mjs

Why this conclusion was reached

2/4 dimensions flagged
Block
Declared vs actual capability

2 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.

Review
Dependencies and supply chain hygiene

Dependency information is incomplete, so supply-chain confidence stays limited.

Attack Chain

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

Entry · scripts/run.mjs:1

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

Escalation · scripts/run.mjs:215

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

Impact · scripts/run.mjs:211

What drove the risk score up

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

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

收集系统标识符 +10

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

权限声明宽泛 +10

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

网络请求存在 +5

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

Most important evidence

Medium Doc Mismatch

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

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

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

收集系统标识符用于追踪

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

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

Bash工具权限过度声明

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

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

Declared capability vs actual capability

Filesystem Pass
Declared READ
→
Inferred READ
scripts/run.mjs:79 fs.readFileSync
Network Block
Declared NONE
→
Inferred WRITE
scripts/run.mjs:215 fetch to https://www.tokendidi.cn/api/free-hint
Environment Block
Declared NONE
→
Inferred READ
scripts/run.mjs:211 os.hostname() + os.userInfo()
Shell Pass
Declared WRITE
→
Inferred NONE
SKILL.md声明Bash工具但代码中无subprocess调用

Suspicious artifacts and egress

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

scripts/run.mjs:215

Dependencies and supply chain

There are no structured dependency warnings.

File composition

4 files · 643 lines
JavaScript 2 files · 572 linesMarkdown 1 files · 68 linesJSON 1 files · 3 lines
Files of concern · 2
scripts/run.mjs JavaScript · 249 lines
文档声明与实际网络行为不符 · 收集系统标识符用于追踪 · https://www.tokendidi.cn/api/free-hint
SKILL.md Markdown · 68 lines
Bash工具权限过度声明
Other files · ar-aging-check.js · sample.json

Security positives

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