JAvito-GC/agent-audit-kit
GitHub: JAvito-GC/agent-audit-kit
面向 MCP 服务器和 AI Agent 的纯 Python 安全 linter,依据 OWASP Agentic Top 10 进行静态审计并输出 SARIF 报告与 Sigma 检测规则。
Stars: 0 | Forks: 0
# Agent Audit Kit
**一款用于 MCP 服务器和 AI Agent 的安全 linter。** 将其指向你的
`mcp.json` 和 agent 配置文件;它会标记出 OWASP Agentic Top 10 漏洞,并
为你生成报告——它具备其他工具所不具备的检测工程视角:针对每一个发现,指出*如何在生产环境中检测滥用行为*。
*🇪🇸 [Léelo en español](README.es.md)*
可在任何支持 Python 3.8+ 的环境下运行(Mac / Linux / Windows)。零依赖、无需
联网、无遥测。你的配置文件永远不会离开你的本机。支持在 CI 中运行
(输出 SARIF 以用于 GitHub code scanning)。
## 审计内容
核心重点是 **MCP 服务器配置**(`mcp.json`)——在这种声明式 JSON
文件中,检查是极其精准的。它还涵盖:
- **Claude Code agent 定义**(`.agents/*.md`)
- **Agent 代码**(`.py/.ts/.js` 中的 LangChain / CrewAI / AutoGPT 模式) ——
尽最大努力检测,详见[范围与限制](#scope--limits)。
## 发现的问题 (OWASP Agentic Top 10 · 2026)
| 类别 | 捕获内容 |
|----------|-----------------|
| A02 Excessive Agency | 拥有 Bash/Write/Edit 权限的“只读” agent |
| A03 Prompt Injection¹ | 未经防御的不可信输入 → 上下文 |
| A04 Tool Poisoning | 工具描述中的隐藏指令 |
| A05 Supply Chain | 未锁定的 / install-on-run 的 MCP 服务器 |
| A06 SSRF / Exfil¹ | 无访问白名单的网络出站 |
| A08 Human-in-the-Loop | 缺少审批门禁的更改状态操作 |
| A10 Logging | 缺少审计追踪的具备操作能力的 agent |
| LLM06 Secrets | 配置文件中硬编码的 API 密钥/token |
每一项发现都包含**检测指南**——如果你无法立即修复,该指南将提供用于在生产环境中
捕获滥用行为的日志/信号。为最高严重等级的类别提供了开箱即用的
[Sigma 规则](detection/),位于 `detection/` 目录下。
¹ A03/A06 依赖于数据流,这是静态工具无法完全解析的。仅当 agent 同时拥有
危险工具时,它们才会被加权(高/中);否则它们将作为**建议性的 `info`** 发出,供人工审查,不计入发现结果。已针对 64 个公共 MCP 代码库进行验证(AWS、Stripe、Google、Sentry、Prisma、Neon、Grafana、Cloudflare 等):其中 63 个无任何严重发现,且在调优后零严重误报。
## 快速开始
```
# 1. 静态扫描(安全:只读,无网络)。默认为 English。
python3 scanner/agent_audit.py /path/to/your/agents --json
# 2. 专业 HTML 报告(dark/light theme,brand-styled)
python3 scanner/agent_audit.py /path/to/your/agents --json \
| python3 scanner/report.py --auditor "Your Name" > report.html
# Spanish 输出:
python3 scanner/agent_audit.py /path/to/your/agents --lang es --json | ...
# CI / GitHub code scanning:
python3 scanner/agent_audit.py . --format sarif > agent-audit.sarif
```
语言:`--lang en`(默认)或 `--lang es`。报告支持双语,并且
内置了浅色/深色主题切换功能。共享同一根本原因的发现会被去重,并按位置分组。
## 开箱即用的内容
- `scanner/agent_audit.py` — 静态扫描器(标准库,零依赖)
- `scanner/report.py` — 专业的 HTML 报告生成器
- `scanner/messages.py` — 双语消息目录(在此处添加新语言)
- `checklist.md` — 手动版 OWASP Agentic 检查清单([español](checklist.es.md))
- `examples/` — 演示其工作原理的示例易受攻击配置
## 报告的构建方式(三个阶段)
模式预过滤 → 上下文调查 → 对抗性重新验证。
共享同一根本原因的发现会被去重,并按位置分组。
## 在 CI 中运行
输出 SARIF 并将其上传到 GitHub code scanning,以便发现结果显示在每一个
PR 上。一个开箱即用的工作流位于 [`.github/workflows/agent-audit.yml`](.github/workflows/agent-audit.yml):
```
python3 scanner/agent_audit.py . --format sarif > agent-audit.sarif
```
当存在任何严重/高风险发现时,退出代码为 `1`(导致构建失败),否则
为 `0`。
## 范围与限制
实事求是地说明静态 linter 能做什么和不能做什么——因为夸大其词的安全
工具比没有工具更糟糕:
- **对声明式配置具有高精度**(`mcp.json`):硬编码的密钥、
install-on-run 服务器、非绝对路径命令。这是核心功能且
可靠——因为它是解析后的 JSON,而不是靠猜测。
- **对结构化的 agent 定义表现出色**(Claude Code `.agents/*.md`):工具授权与
声明范围的对比、缺失的 human-in-the-Loop、缺失的日志记录。
- **对自由格式的 agent 代码尽最大努力检测**(LangChain/CrewAI/AutoGPT):它匹配
功能模式(shell/文件/网络导入),而不是完整的数据流。它会
遗漏人类审查或 AST 级别工具才能捕获的问题。请将这些
发现视为线索,而不是健康无病的证明。
- **仅限静态检测。** 它只读取文件;它永远不会运行你的 agent、触碰在线
主机或发起网络调用。针对运行中系统的动态测试(DAST/红蓝对抗)需要目标所有者的书面授权,此处
不作讨论。
误报即是 Bug——请提交报告。嘈杂的 linter 会破坏信任。
## 贡献
欢迎提供新的检测规则和语言翻译。规则位于
`scanner/agent_audit.py`;面向用户的文本位于 `scanner/messages.py`(每种语言
一个区块)。详见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。随意使用它,fork 它,在它的基础上进行构建。
由 [Javier Morales](https://javiermorales.tech) 构建 — Staff Security Engineer,
致力于检测工程与 AI 安全。
标签:DLL 劫持, IPv6支持, LNA, MCP服务器, Python, 人工智能, 大语言模型, 安全合规, 无后门, 用户模式Hook绕过, 网络代理, 逆向工具, 错误基检测, 静态代码分析