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绕过, 网络代理, 逆向工具, 错误基检测, 静态代码分析