JXXR1/skill-scanner
GitHub: JXXR1/skill-scanner
面向 AI 智能体技能包的多层安全扫描器,通过 38 个检测模块在安装前识别凭证窃取、供应链攻击、提示词注入及运行时滥用等威胁。
Stars: 0 | Forks: 0
# Skill Scanner
**AI 智能体技能安全扫描器 — 模式匹配、AST 污点追踪、LLM 语义分析、供应链来源证明以及 PGP 发行版签名验证。**
在安装前检测 AI 智能体技能中的恶意模式、数据窃取链、供应链攻击和行为威胁。适用于任何附带 `SKILL.md` 或清单文件的技能包 —— Claude Code、OpenClaw、AgentPress、Hermes Skills Hub、MCP 工具包等。默认的扫描路径和少数检测模块带有 OpenClaw 风格(这是该项目的起源地),但该扫描器与平台无关,可重新设定目标。
## 🚨 为什么需要它
AI 智能体技能可以在你的权限下执行任意代码。一个恶意技能可以:
- 窃取你的文件(SOUL.md、MEMORY.md、凭证)
- 利用你的 CPU 挖掘加密货币
- 建立用于远程访问的反向 shell
- 注入持久化机制
- 通过隐蔽通道泄露数据
- **向你的智能体注入指令**(提示词注入)
**本扫描器能在你安装前检测出这些威胁。**
## ✨ 功能特性
### 38 个检测模块
**静态模式分析 (1–19)**
1. **Shell 注入** — 命令执行模式(`curl | sh`、`eval()`、反引号)
2. **加密货币矿工** — XMRig、Stratum 矿池、挖矿算法、RandomX
3. **反向 Shell** — `bash -i`、`nc`/`ncat -e`、`/dev/tcp/`、socat、Python pty
4. **无文件恶意软件** — `memfd_create`、`/dev/shm`、`/proc/self/exe`
5. **可疑 URL** — Pastebin、hastebin、rentry、ghostbin(常见恶意软件托管站点)
6. **代码混淆** — Base64、十六进制编码、单字符变量密度
7. **代码复杂度** — 压缩文件、高混淆指标
8. **硬编码机密** — 源代码中的密码、API 密钥、令牌 (token)
9. **定时炸弹** — 延迟执行、极大的 `sleep()` / `setTimeout()` 值
10. **持久化** — Crontab、systemd、`.bashrc`、`rc.local`、自启动项
11. **权限提升** — `sudo`、`pkexec`、`setuid`、`chmod 777`
12. **数据外发通道** — DNS 隧道、ICMP、Telegram/Discord Webhook
13. **网络模式** — HTTP 请求、fetch、axios(标记以供审查)
14. **依赖包仿冒** — 包清单中的 `reqests`、`beautfiulsoup`、`numbpy`
15. **二进制文件检测** — 带有 SHA256 哈希校验的 `.exe`、`.dll`、`.so` 文件
16. **Git 历史** — 强制推送、频繁提交(1 小时内超过 10 次)
17. **前置条件陷阱** — README 中旨在诱骗用户运行恶意设置的说明
18. **沙盒测试** — 在 firejail 中运行 `install.sh`(网络 + 文件系统隔离)
19. **YARA 签名** — 使用自定义规则集进行恶意软件签名扫描
**意图与行为分析 (20–26)**
20. **社会工程学** — README/文档中旨在诱骗操作员运行恶意命令的模式;利用紧迫感/权威性进行操纵
21. **提示词注入** — 越狱、角色覆盖、SKILL.md 中的隐藏指令
22. **凭证路径检测** — 针对 `.env`、`authorized_keys`、机密路径的 OpenClaw 特定模式
23. **敏感读取与外发组合** — 检测上下文克隆 / 数据泄露链(读取敏感文件 → 向外发送)
24. **权限清单检查** — 标记缺失或过于宽泛的权限清单
25. **MoltGuard 模式** — 验证 `moltguard.json` 结构、范围膨胀、声明与实际网络访问对比
26. **隐蔽文件监控** — 针对 MEMORY.md、SOUL.md、`.env` 的 `inotify`/`chokidar`/`fs.watch`/`pyinotify` 监控
**高级静态 + 语义分析 (27–31)** *(v3.0.0–v3.2.0)*
27. **AST 污点追踪** — 在 Python、JS 和 Shell 中,追踪从用户输入到危险接收器(`eval`、`exec`、`subprocess`、`os.system`)的数据流。JS 通过 esprima 解析;支持三跳变量和一跳编码边界。
28. **Unicode / Bidi 木马源检测** — CVE-2021-42574;双向覆写字符、零宽字符、同形异义字标识符
29. **符号链接 / 硬链接攻击检测** — 符号链接逃逸、针对敏感路径的硬链接创建模式
30. **多语言文件检测** — 文件扩展名与内容类型不一致;隐藏在图像中的高熵数据
31. **LLM 语义分析** — 本地 Ollama 或兼容 Anthropic/OpenAI 的服务。单次扫描分类器;通过 `--llm` 选择启用,或在标记出模糊模式时自动升级。可捕获社会工程学、混淆意图以及文档中嵌入的提示词注入
**2026 威胁态势 (32–34)** *(v3.3.0 新增)*
32. **间接提示词注入 (IPI) 攻击面** — 标记那些获取外部内容(HTTP、文档解析器、电子邮件/订阅源解析器)并将其未经中间处理直接传递给 LLM 调用的技能。*Google 威胁情报指出这是 2026 年针对 AI 智能体的第一大攻击媒介。*
33. **能力膨胀检测** — 将清单中声明的权限与实际代码使用情况进行比较。模式泄漏/潜在攻击面缓解:声明但未使用的功能是膨胀,即使未被调用也会影响推理。
34. **系统提示词谬误检查** — 标记仅依赖自然语言防护(如 `do not reveal`、`never tell`)而缺乏结构性防御(输入验证、输出过滤、允许列表、模式强制执行)的技能。系统提示词只是建议,不是防火墙。
**供应链 (35–37)** *(v3.4.0 新增)*
35. **捆绑内容来源** — 捕获附带文档语料库、RAG 索引或知识库文件的技能,这些文件会被加载到智能体上下文中。这是隐写后门触发器和提示词注入载荷的载体。可配置的大小阈值 + 需要清单来源声明。
36. **外部模型下载检测** — 标记在安装或运行时从 HuggingFace、replicate 或其他注册中心拉取任意模型的技能。默认的允许列表涵盖了第一方组织(Meta、Mistral、Qwen、Google/Gemma、Microsoft/Phi、NousResearch);其他模型需要显式的逐模型授权。相关研究依据:arxiv 2510.07192(约 250 份投毒文档即可对任何主要的大型语言模型 (LLM) 进行后门攻击)。
37. **哈希锁定验证** — 首次导入时建立 SHA256 基线,在后续安装/更新时进行偏移检测。可捕获传输过程中的篡改以及随后的仓库入侵。关键文件偏移默认设为阻止 (BLOCK);已签名的发行版(见模块 38)可自动豁免。
**发行版签名 (38)** *(v3.5.0 新增)*
38. **发行版签名验证** — 检测 `*.sig` / `*.asc` / `*cosign.bundle` 附带签名文件。PGP 路径是完整的:针对可配置的受信密钥环运行 `gpg --verify`,并与系统 GPG 主目录隔离。有效签名可豁免文件受到模块 37 的关键偏移阻止 —— 合法的维护者更新将畅通无阻,不产生误报。Sigstore 路径在 v3.5 中仅用于检测(基于身份的验证需要按部署制定的策略,将在 v3.6 中推出)。无效的 PGP 签名 = 严重性 +6(先签名后篡改 = 高置信度攻击信号)。
### LLM 语义分析 *(可选)*
传递 `--llm` 参数以运行额外的 AI 驱动语义分析层,该层可捕获:
- 伪装成合法功能的社会工程学
- 能够绕过静态分析的混淆意图
- 嵌入在文档或配置文件中的提示词注入
需要在本地运行 Ollama,或者配置 `OLLAMA_URL` 环境变量。
## 🚀 使用方法
```
# Pattern scan(38 个模块,免费)
skill-scan-v2.sh ./my-skill
# 使用 LLM 语义分析的 Full scan
skill-scan-v2.sh ./my-skill --llm
# 按名称 Scan 已安装的 skill(默认扫描 skill 根目录)
skill-scan-v2.sh weather
# 列出所有已安装的 skill 并逐一 scan
skill-scan-v2.sh --list
```
## 🔗 推荐:与 Cisco Skill Scanner 配合使用
为了获得最大的覆盖范围,请在安装任何技能之前同时运行这两个扫描器:
```
# Step 1:我们的 scanner(pattern + AST + LLM)
skill-scan-v2.sh ./my-skill --llm
# Step 2:Cisco Skill Scanner(补充检测)
skill-scanner ./my-skill
```
这两个扫描器使用不同的检测方法并互为补充。不应单独使用其中任何一个。
## 📦 安装说明
```
curl -fsSL https://raw.githubusercontent.com/JXXR1/skill-scanner/main/skill-scan-v2.sh \
-o /usr/local/bin/skill-scan-v2.sh && chmod +x /usr/local/bin/skill-scan-v2.sh
```
## 📄 许可证
MIT — JXXR1
标签:AgentPress, AI Agent技能扫描器, AI安全, AI安全防护, AI风险缓解, AMSI绕过, AST污点分析, Chat Copilot, Claude Code, CSV导出, Cutter, DNS 反向解析, IP 地址批量处理, MCP工具包, OpenCanary, OpenClaw, PGP签名验证, StruQ, 云安全监控, 代码安全扫描, 代码模式匹配, 代码混淆检测, 供应链攻击, 加密货币挖矿检测, 协议分析, 反弹Shell检测, 后门检测, 大模型安全, 大语言模型语义分析, 威胁检测, 子域名变形, 持久化后门, 数据渗出, 文档安全, 无文件恶意软件, 权限提升, 硬编码密码, 网络安全, 运行时滥用检测, 隐私保护, 静态分析