安全决策报告

auto-skill-hunter

技能声称仅需filesystem权限,实际使用network/shell执行未声明操作,包括会话历史读取和外部脚本执行

安装决策优先 来源: ClawHub 扫描时间: 19 天前
文件 6
IOC 8
越权项 4
发现 7
最直接的威胁证据
01
用户部署技能,声称仅需filesystem权限 初始入口 · claw.json
02
运行时通过 fetchJson 访问 clawhub.com API 权限提升 · src/hunt.js
03
读取 agents/main/sessions/*.jsonl 收集用户对话上下文 权限提升 · src/hunt.js

为什么得出这个结论

2/4 个维度触发
阻止
声明与实际能力

发现 4 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 8 个一般风险产物,需要结合上下文判断。

阻止
攻击链与高危发现

报告包含 6 步攻击链,另有 3 项高危或严重发现。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

攻击链

01
用户部署技能,声称仅需filesystem权限

初始入口 · claw.json:1

02
运行时通过 fetchJson 访问 clawhub.com API

权限提升 · src/hunt.js:240

03
读取 agents/main/sessions/*.jsonl 收集用户对话上下文

权限提升 · src/hunt.js:118

04
execSync 执行 git clone 安装外部技能

权限提升 · src/hunt.js:475

05
spawnSync 执行外部 report.js 脚本

权限提升 · src/hunt.js:530

06
外部脚本可能外发收集的会话数据和技能推荐信息

最终危害 · ../../feishu-evolver-wrapper/report.js:1

风险分是怎么被拉高的

未声明的网络请求 +15

fetchJson 访问 clawhub.com API,SKILL.md 未声明

未声明的shell执行 +15

execSync git clone 和 node --self-test,SKILL.md 未声明

会话历史读取 +10

读取 SESSIONS_DIR/*.jsonl 暴露用户对话上下文

外部报告脚本执行 +10

sendHunterReport 调用 ../../feishu-evolver-wrapper/report.js,行为未知

代码生成能力 +5

ensureRunnableShim 动态生成 index.js 和 SKILL.md

最关键的证据

高危 文档欺骗

文档未声明网络请求能力

fetchJson 函数访问 clawhub.com API 端点,但 SKILL.md 和 claw.json 均未声明 network 权限

src/hunt.js:240
在 SKILL.md 和 claw.json 中补充声明 network 权限
高危 文档欺骗

文档未声明Shell执行能力

installSkill 函数通过 execSync 执行 git clone 和 node --self-test,SKILL.md 未声明 shell 权限

src/hunt.js:475
在 SKILL.md 补充说明 live install 模式会执行 git clone
高危 敏感访问

未声明的会话历史读取

collectRecentUserMessages 读取 agents/main/sessions/*.jsonl,暴露用户近期对话内容

src/hunt.js:118
在文档中明确声明并说明仅用于问题挖掘
中危 代码执行

外部脚本执行能力

sendHunterReport 通过 spawnSync 执行 ../../feishu-evolver-wrapper/report.js,该脚本行为未知且可能外发数据

src/hunt.js:530
审查 report.js 源码,禁用时应使用 SKILL_HUNTER_NO_REPORT=1
中危 供应链

git clone 无版本锁定

installSkill 直接克隆 repoUrl,无 commit/tag 锁定,可能引入恶意版本

src/hunt.js:476
要求使用 --branch 指定版本或 hash 锁定
中危 权限提升

动态代码生成与执行

ensureRunnableShim 在安装目录生成 index.js 和 SKILL.md,可植入任意代码

src/hunt.js:355
审查生成的代码内容,考虑签名验证
低危 敏感访问

用户画像和人格状态读取

extractAgentProfileKeywords 和 getPersonalityProfile 读取 USER.md 和 personality_state.json

src/hunt.js:206
确认这些数据用于技能推荐是否必要

声明能力 vs 实际能力

文件系统 通过
声明 WRITE
→
推断 WRITE
src/hunt.js:4-14 读取/写入工作区文件
网络访问 阻止
声明 NONE
→
推断 READ
src/hunt.js:240-255 fetchJson 访问 clawhub.com API
命令执行 阻止
声明 NONE
→
推断 WRITE
src/hunt.js:475-477 execSync git clone
环境变量 阻止
声明 NONE
→
推断 READ
src/hunt.js:62-65 读取 SKILL_HUNTER_* 环境变量
技能调用 阻止
声明 NONE
→
推断 WRITE
src/hunt.js:430-450 安装外部技能到 SKILLS_DIR

可疑产物与外联

中危 外部 URL
https://clawhub.ai/wanng-ide/memory-mesh-core

README.md:7

中危 外部 URL
https://clawhub.ai/user/terrycarter1985

skill-card.md:9

中危 外部 URL
https://clawhub.ai/terrycarter1985/skills/wanng-ide-auto-skill-hunter

skill-card.md:39

中危 外部 URL
https://clawhub.com/api/v1/skills/trending?limit=30

src/hunt.js:16

中危 外部 URL
https://clawhub.com/api/v1/skills?sort=trending&limit=30

src/hunt.js:17

中危 外部 URL
https://clawhub.com/api/v1/skills?limit=30

src/hunt.js:18

中危 外部 URL
https://clawhub.com/api/v1/skills/search?q=

src/hunt.js:22

中危 外部 URL
https://clawhub.com/api/v1/skills?q=

src/hunt.js:23

依赖与供应链

没有结构化依赖告警。

文件构成

6 个文件 · 1149 行
JavaScript 1 个文件 · 828 行Markdown 3 个文件 · 304 行JSON 2 个文件 · 17 行
需关注文件 · 3
src/hunt.js JavaScript · 828 行
文档未声明网络请求能力 · 文档未声明Shell执行能力 · 未声明的会话历史读取 · 外部脚本执行能力 · git clone 无版本锁定 · 动态代码生成与执行 · 用户画像和人格状态读取 · https://clawhub.com/api/v1/skills/trending?limit=30 · https://clawhub.com/api/v1/skills?sort=trending&limit=30 · https://clawhub.com/api/v1/skills?limit=30 · https://clawhub.com/api/v1/skills/search?q= · https://clawhub.com/api/v1/skills?q=
README.md Markdown · 134 行
https://clawhub.ai/wanng-ide/memory-mesh-core
skill-card.md Markdown · 58 行
https://clawhub.ai/user/terrycarter1985 · https://clawhub.ai/terrycarter1985/skills/wanng-ide-auto-skill-hunter
其他文件 · SKILL.md · claw.json · _meta.json

安全亮点

提供 --dry-run 模式避免实际安装
提供 --max-install 限制安装数量
有 SKILL_HUNTER_NO_REPORT=1 禁用报告外发
validateRunnableSkill 进行自检验证
不覆盖已存在的技能目录