anzhuang-suanliang
技能代码本身无恶意行为,但 SKILL.md 未声明 filesystem/ network/ shell 权限且 ensure_base.sh 自动下载安装外部依赖构成供应链风险。
Why this conclusion was reached
1/4 dimensions flagged3 undeclared or violating capabilities were inferred.
2 lower-risk artifacts were extracted and still need context.
There is no explicit malicious chain in the report.
2 dependency or supply-chain issues need attention.
What drove the risk score up
SKILL.md 声明 capability:NONE,但代码实际使用 filesystem:WRITE(输出xlsx/JSON)、shell:WRITE(subprocess 调用 ensure_base.sh)、network:READ(下载外部依赖)
ensure_base.sh 从 lisong2003-lgtm/cad-file-reader 下载依赖,虽有 SHA-256 校验但无版本 pinning,依赖外源第三方包
依赖下载失败时仅退出而非优雅降级;SHA256SUMS 下载失败时整体退出(exit 3),降级路径依赖 SKILL_NO_BASE 环境变量而非自动 fallback
Most important evidence
权限声明与实际能力严重不符
SKILL.md 和 manifest.json 均未声明 filesystem/ shell/ network 权限,但代码通过 subprocess 调用 ensure_base.sh(shell:WRITE)和 cad_validate.sh,并执行 curl 下载外部依赖(network:READ),输出文件写磁盘(filesystem:WRITE)。
SKILL.md:1 显式依赖外部来源包,无版本 pinning
ensure_base.sh 默认从 GitHub releases 下载 cad-file-reader v0.28.5(可配置 CAD_FILE_READER_VERSION),虽然有 SHA-256 完整性校验,但无版本锁定,存在依赖版本漂移或发布包被篡改的潜在风险。
scripts/ensure_base.sh:60 下载失败处理逻辑不健壮
ensure_base.sh 中 SHA256SUMS 下载失败时直接 exit 3 终止,不给用户提示可降级使用 SKILL_NO_BASE=1;curl 下载有 timeout 但无重试机制。
scripts/ensure_base.sh:73 Declared capability vs actual capability
mep_plan.py:1300 写 xlsx; mep_scan.py:277 写 JSON mep_scan.py:27 subprocess.run ensure_base.sh; mep_plan.py:770 subprocess.run cad_validate.sh ensure_base.sh:67 curl 下载 GitHub release; ensure_base.sh:73 下载 SHA256SUMS Suspicious artifacts and egress
https://clawhub.ai/user/lisong2003-lgtm skill-card.md:9
https://clawhub.ai/lisong2003-lgtm/skills/anzhuang-suanliang skill-card.md:35
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| cad-file-reader | >=0.28.1 (默认安装0.28.5) | GitHub releases (lisong2003-lgtm) | No | 从外部 GitHub 下载安装,有SHA-256校验但无版本pinning |
| ezdwg/read_cad | bundled in cad-file-reader vendor | cad-file-reader vendor | No | 通过 ensure_base.sh 补齐的底座依赖 |
| openpyxl | * | pip (未在requirements.txt声明) | No | 用于生成xlsx,代码中import但未在依赖文件声明 |
File composition
SKILL.md scripts/ensure_base.sh skill-card.md