安全决策报告
skill-gatekeeper
Skill Gatekeeper 是合法的安全审核工具,但存在未声明的外部命令执行和硬编码路径问题,需要谨慎审查。
最直接的威胁证据
01
用户执行 skill-gatekeeper install <slug> 命令 初始入口 · SKILL.md
02
通过 child_process.execSync 执行外部 clawhub CLI 权限提升 · gatekeeper.ts
03
CLI 工具可被替换为恶意版本,执行任意命令 最终危害 · gatekeeper.ts
为什么得出这个结论
2/4 个维度触发 阻止
声明与实际能力
发现 3 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 1 个一般风险产物,需要结合上下文判断。
阻止
攻击链与高危发现
报告包含 3 步攻击链,另有 2 项高危或严重发现。
复核
依赖与供应链卫生
没有完整依赖信息,供应链判断需要保留弹性。
攻击链
01
用户执行 skill-gatekeeper install <slug> 命令
初始入口 · SKILL.md:28
02
通过 child_process.execSync 执行外部 clawhub CLI
权限提升 · gatekeeper.ts:261
03
CLI 工具可被替换为恶意版本,执行任意命令
最终危害 · gatekeeper.ts:261
风险分是怎么被拉高的
未声明的外部命令执行 +20
使用 child_process.execSync 执行 clawhub CLI,但 SKILL.md 未声明此行为
硬编码用户路径泄露 +15
gatekeeper.ts:261 硬编码 C:/Users/ReaMasTer/AppData/Roaming/npm/...
文档与实现权限不一致 +10
SKILL.md 未声明 filesystem:WRITE 和 shell:WRITE 权限
最关键的证据
高危 代码执行
未声明的外部命令执行
代码使用 child_process.execSync 执行 clawhub CLI 工具安装技能,但 SKILL.md 中未声明此行为。这是明显的阴影功能。
gatekeeper.ts:261 在 SKILL.md 中声明 shell:WRITE 权限,或改用更安全的安装方式
高危 敏感访问
硬编码用户路径信息泄露
代码中硬编码了 Windows 用户路径 'C:/Users/ReaMasTer/',这暴露了开发者的系统信息,在跨平台部署时会导致功能失效。
gatekeeper.ts:261 使用动态路径发现或跨平台路径处理,避免硬编码用户目录
中危 文档欺骗
声明-行为权限不一致
SKILL.md 描述为'自动审核'工具,但未声明实际的 filesystem:WRITE 和 shell:WRITE 权限需求
SKILL.md:1 在 metadata.requires 或文档中明确声明所需权限
低危 供应链
依赖 clawhub CLI 工具
安装功能依赖外部 clawhub 工具的可用性,该工具不在 skill 包内
gatekeeper.ts:261 考虑内置安装逻辑或明确声明对 clawhub 的依赖
声明能力 vs 实际能力
文件系统 阻止
声明 NONE
→ 推断 WRITE
gatekeeper.ts:55-57 cpSync/mkdirSync 复制文件到沙盒目录 命令执行 阻止
声明 NONE
→ 推断 WRITE
gatekeeper.ts:261 execSync 调用外部 CLI 工具 网络访问 阻止
声明 NONE
→ 推断 READ
gatekeeper.ts:112 fetch 访问 VirusTotal API 可疑产物与外联
中危 外部 URL
https://www.virustotal.com/api/v3/files/$ gatekeeper.ts:112
依赖与供应链
没有结构化依赖告警。
文件构成
2 个文件 · 528 行
TypeScript 1 个文件 · 411 行Markdown 1 个文件 · 117 行
需关注文件 · 2
gatekeeper.ts 未声明的外部命令执行 · 硬编码用户路径信息泄露 · 依赖 clawhub CLI 工具 · https://www.virustotal.com/api/v3/files/$
SKILL.md 声明-行为权限不一致
安全亮点
功能设计合理:用于审核其他技能的安全性
内置风险模式检测:检测 eval/exec/键盘侧录等危险行为
沙盒隔离机制:先复制到沙盒再扫描
VirusTotal 集成:云端恶意软件检测
隔离区机制:拒绝危险技能时移动到隔离区