kuzivaai/SkillWatch
GitHub: kuzivaai/SkillWatch
一款监控 AI 智能体技能和 MCP 工具所引用外部网页内容变更的 Python CLI 工具,用于检测并预警针对 AI 工具的「诱饵替换」式供应链攻击。
Stars: 0 | Forks: 0
# SkillWatch
SkillWatch 会监控 AI 工具所依赖的网页,并在发生变化时通知你。它的出现是因为在 AI 工具通过审查和批准后,这些页面可能会被偷偷替换为包含恶意指令的内容。
[](https://github.com/kuzivaai/SkillWatch/actions/workflows/ci.yml)
[](https://pypi.org/project/skillwatch/)
[](https://pypi.org/project/skillwatch/)
[](LICENSE)
## 为什么需要这个工具
AI 工具会从互联网上获取指令。安全扫描器会在安装这些工具时进行检查,但工具所指向的外部页面在此之后可能会被修改。而扫描器并不会重新检查。
2026 年 6 月,[安全研究人员演示了](https://www.air.security/blog-posts/the-story-of-skills)一个虚假的 AI 技能如何通过保持代码干净并指向外部 URL,从而通过所有主流扫描器。在发布后,URL 的内容从合法的文档被替换为恶意指令。(声明:发布此项研究的 AIR 同时推出了一个托管的技能市场。其声称索引了 26,000 个 AI 智能体的头条数据是自我报告且未经审计的。这种“诱饵替换”技术得到了 [CSA 研究笔记](https://labs.cloudsecurityalliance.org/research/csa-research-note-skill-md-agent-context-poisoning-20260506/) 和 [arxiv 2508.12538](https://arxiv.org/abs/2508.12538) 的独立证实。)
[ClawHavoc 活动](https://orca.security/resources/blog/ai-agent-skill-supply-chain-security/)使用类似技术入侵了 1,184 个技能。[云安全联盟](https://labs.cloudsecurityalliance.org/research/csa-research-note-skill-md-agent-context-poisoning-20260506/)发布了一份关于 SKILL.md 上下文污染的专门研究笔记。
像 [Snyk Agent Scan](https://github.com/snyk/agent-scan) 这样的工具会检查工具描述和元数据。SkillWatch 则检查这些工具**指向的内容**:即外部 URL 上的实际内容。它们涵盖不同的防护层面,配合使用效果更好。
## 适用人群
SkillWatch 是一款命令行工具,专为构建、部署或审查 AI 智能体技能和 MCP 工具的人设计:包括开发者、安全工程师以及熟练使用终端的维护人员。使用它意味着需要安装 Python 包,在终端中运行命令,通过 cron 或 CI 定时扫描,并阅读 diff 来判断某项更改是否恶意。
**非技术人员目前尚无法直接使用。** 它没有独立的应用程序或网站,主要在终端中运行,并且解读警报需要一定的安全判断能力(大约五分之一的警报是误报)。通俗的解释和[了解你的警报](docs/UNDERSTANDING-ALERTS.md)指南会提供帮助,但你仍然需要使用终端并进行一些人工复核。
## 安装
```
pip install skillwatch
```
或者从源码安装:
```
git clone https://github.com/kuzivaai/SkillWatch.git
cd SkillWatch
pip install .
```
要求 Python 3.10+。包含五个依赖项,均为 Apache/MIT/BSD 许可证。
## 快速开始
```
# 从 SKILL.md 文件添加 URL
skillwatch add path/to/SKILL.md
# 或添加单个 URL
skillwatch add-url https://docs.example.com/setup
# 运行扫描
skillwatch scan
# 检查结果
skillwatch alerts
skillwatch alert 1
```
## 工作原理
1. **提取 URL**,来源包括 SKILL.md 文件、MCP 配置文件(.json/.yaml)或纯 URL 列表。
2. **抓取每个页面**,内置了针对服务器端请求伪造 (SSRF) 和 DNS 重绑定攻击的防护。文本提取使用 [trafilatura](https://github.com/adbar/trafilatura)。
3. **生成指纹**(SHA-256 哈希值),并将提取的文本存储在本地 SQLite 数据库中。
4. **在下一次扫描时,比对指纹。** 如果哈希值发生变化,说明内容已被更改。
5. **对更改后的内容运行 13 项模式检查**,以标记任何可疑之处。在检查之前,该工具会解码常见的混淆手法(包含隐藏文本的 HTML 注释、倒序文本、ROT13 编码),以便将伪装的 payload 还原为可读形式进行检查。有关能检测到哪些内容以及漏检了哪些内容,请参阅[实测检出率](#measured-detection-rates)。
SkillWatch 跨越三个严重级别检查 13 种可疑模式。每项检查仅查看自上次扫描以来新增的内容,因此页面上预先存在的 script 或 iframe 不会触发误报。
| 模式 | 严重程度 | 检测内容 |
|---|---|---|
| 执行命令 | 严重 | `curl`、`pip install`、`eval()`、`subprocess`、`powershell` |
| 提示词注入 | 严重 | 来自 [Agent Threat Rules](https://github.com/Agent-Threat-Rule/agent-threat-rules) 项目的 32 种模式,涵盖 7 种语言及混淆手法。在检查之前,该工具会解码 HTML 注释、倒序文本和 ROT13 编码。 |
| 可疑脚本 | 严重 | 带有 eval/fetch/cookie 访问权限的新 `