Skill Trust Decision

LinkSKILL

LinkSKILL 存在文档-行为差异和依赖管理缺陷:subprocess 调用和 json-file 文件读取功能未在 SKILL.md 中声明,且缺少依赖版本锁定文件,但代码本身未发现恶意行为。

Install decision first Source: ClawHub Scanned: Jun 24, 2026
Files 6
Artifacts 2
Violations 1
Findings 3
Most direct threat evidence

Why this conclusion was reached

1/4 dimensions flagged
Block
Declared vs actual capability

1 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

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

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Review
Dependencies and supply chain hygiene

1 dependency or supply-chain issues need attention.

What drove the risk score up

SKILL.md 未声明 subprocess 调用 +15

http_request_tool.py L75-80 通过 subprocess 调用 auth_manager.py --force-login,但 SKILL.md 完全未提及 shell 执行能力

SKILL.md 未声明 json-file 文件读取 +10

http_request_tool.py L88-91 支持 --json-file 读取本地 JSON 文件,SKILL.md 仅声明 --json-body

缺少依赖版本锁定 +10

无 requirements.txt 文件,requests 库无版本锁定,存在供应链风险

SKILL.md 缺少 Allowed Tools 声明 +5

metadata 仅有 bins 和 pip 依赖声明,缺少标准化的 allowed-tools 映射

Most important evidence

Medium Doc Mismatch

SKILL.md 未声明 subprocess shell 执行

http_request_tool.py 在 401 响应时通过 subprocess.run 调用 auth_manager.py --force-login 进行自动重新认证,但 SKILL.md 的 Tool Responsibilities 表和 Core Workflow 章节均未提及此行为。subprocess 调用属于隐式 shell 执行能力。

scripts/http_request_tool.py:75-80
在 SKILL.md 的 Tool Responsibilities 表中明确标注 'http_request_tool.py 在 401 时触发 auth_manager.py re-auth'
Medium Doc Mismatch

SKILL.md 未声明 --json-file 本地文件读取

http_request_tool.py 支持 --json-file 参数读取本地 JSON 文件作为请求体,但 SKILL.md Request Execution 章节仅声明 --json-body 和 --json-file(未说明后者会读取文件),且 SKILL.md 声明的 allowed-tools 中无 filesystem:READ。

scripts/http_request_tool.py:88-91
在 Request Execution 部分明确说明 '--json-file 从本地文件系统读取 JSON 文件'
Low Supply Chain

缺少 requirements.txt 依赖版本锁定

SKILL.md metadata 声明 pip=['requests'],但无 requirements.txt 文件,requests 库版本未锁定。

SKILL.md:3
添加 requirements.txt 并锁定版本:requests>=2.28.0,<3.0.0

Declared capability vs actual capability

Filesystem Pass
Declared READ
Inferred WRITE
scripts/swagger_loader.py:L56 (swagger cache), scripts/auth_manager.py:L37 (token cache)
Network Pass
Declared READ+WRITE
Inferred READ+WRITE
所有脚本使用 requests 库进行 HTTP 请求
Shell Block
Declared NONE
Inferred WRITE
scripts/http_request_tool.py:L75-80 subprocess 调用 auth_manager.py

Suspicious artifacts and egress

Medium External URL
https://clawhub.ai/user/hgvgfgvh

skill-card.md:7

Medium External URL
https://clawhub.ai/hgvgfgvh/link-skill

skill-card.md:29

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
requests unpinned pip No SKILL.md metadata 声明依赖 requests 但无版本锁定文件

File composition

6 files · 787 lines
Python 3 files · 607 linesMarkdown 2 files · 175 linesJSON 1 files · 5 lines
Files of concern · 3
SKILL.md Markdown · 133 lines
缺少 requirements.txt 依赖版本锁定
scripts/http_request_tool.py Python · 136 lines
SKILL.md 未声明 subprocess shell 执行 · SKILL.md 未声明 --json-file 本地文件读取
skill-card.md Markdown · 42 lines
https://clawhub.ai/user/hgvgfgvh · https://clawhub.ai/hgvgfgvh/link-skill
Other files · swagger_loader.py · auth_manager.py · _meta.json

Security positives

代码结构清晰,无 base64/eval 等混淆技术
未发现凭证收割逻辑(token 仅本地缓存,不外传)
未发现数据外泄或 C2 通信行为
未访问 ~/.ssh、~/.aws、.env 等敏感路径
Token 缓存机制有 TTL 限制,防止永久有效凭证
错误处理完善(status_code 检查、超时控制)