sattyamjjain/agent-audit-kit

GitHub: sattyamjjain/agent-audit-kit

为 MCP 连接的 AI 代理流水线设计的安全扫描器,涵盖 77 条规则和完整 OWASP Agentic/MCP Top 10 覆盖,填补了 AI 代理领域缺乏专用安全工具的空白。

Stars: 2 | Forks: 0

AgentAuditKit

AI 代理缺失的 npm audit

CI PyPI Python 3.9+ License: MIT Rules: 77 OWASP Agentic: 10/10 OWASP MCP: 10/10

AgentAuditKit Demo

MCP 连接 AI 代理流水线的安全扫描器。检测配置错误、硬编码密钥、工具投毒、 rug pull、信任边界违规和受污染数据流,覆盖 **13 个代理平台**。 - **77 条规则** 覆盖 11 个安全类别 - **13 个扫描模块** 包括 Python/TypeScript/Rust 污点分析 - **9 个 CLI 命令**:scan、discover、pin、verify、fix、score、update、proxy、kill - **OWASP 覆盖**:Agentic Top 10 (10/10)、MCP Top 10 (10/10)、Adversa AI Top 25 - **合规映射**:EU AI Act、SOC 2、ISO 27001、HIPAA、NIST AI RMF - **零云依赖** — 完全离线运行,扫描路径中无网络调用 ### 为什么存在此工具 2026 年初,[60 天内披露了 30 个 MCP CVE](https://www.heyuan110.com/posts/ai/2026-03-10-mcp-security-2026/)。[CVE-2026-21852](https://nvd.nist.gov/vuln/detail/CVE-2026-21852) 展示了通过单个 Claude Code 配置标志进行源代码窃取。[CVE-2026-32211](https://dev.to/michael_onyekwere/cve-2026-32211-what-the-azure-mcp-server-flaw-means-for-your-agent-security-14db)(CVSS 9.1)攻击了 Azure MCP 服务器。与此同时,每个 AI 编码助手都采用了 MCP,但没有任何安全工具。 ## 快速开始 ### GitHub Action(推荐) ``` # .github/workflows/agent-security.yml name: Agent Security Scan on: [push, pull_request] permissions: security-events: write contents: read jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: sattyamjjain/agent-audit-kit@v0.2.0 with: fail-on: high ``` 发现的问题将作为 **内联 PR 注释** 出现在 GitHub Security 标签页中,通过 SARIF 格式。 ### CLI ``` pip install agent-audit-kit agent-audit-kit scan . ``` ### Pre-commit Hook ``` # .pre-commit-config.yaml repos: - repo: https://github.com/sattyamjjain/agent-audit-kit rev: v0.2.0 hooks: - id: agent-audit-kit ``` ## 扫描内容 | 类别 | 规则数 | 检测内容 | |----------|:-----:|-----------------| | **MCP 配置** | 10 | 无认证的远程服务器、shell 注入、硬编码密钥、headersHelper 滥用、SSRF、文件系统根访问 | | **Hook 注入** | 9 | 网络钩子、凭据窃取、权限提升、混淆的有效载荷、源文件引用 | | **信任边界** | 7 | `enableAllProjectMcpServers`、API URL 重定向、通配符权限、缺少拒绝规则、缺少允许列表 | | **密钥泄露** | 9 | Anthropic/OpenAI/AWS/GitHub/GitLab/GCP 密钥、香农熵检测、.env 泄露、私钥文件 | | **供应链** | 6 | 未固定包、已知易受攻击依赖项、危险安装脚本、缺少锁文件、MCP 特定 CVE | | **代理配置** | 5 | AGENTS.md/CLAUDE.md/.cursorrules 劫持、隐藏 Unicode、凭据引用、编码有效载荷 | | **工具投毒** | 9 | 不可见 Unicode、提示注入、跨工具引用、rug pull 检测(SHA-256 固定) | | **污点分析** | 8 | `@tool` 参数流向 shell/eval/SSRF/文件/反序列化sink(Python AST)| | **传输安全** | 4 | HTTP 端点、TLS 禁用、过时 SSE、URL 查询字符串中的令牌 | | **A2A 协议** | 7 | Agent Card 认证、内部能力、缺少 schema、HTTP 端点、JWT 生命周期/验证、冒充 | | **法律合规** | 3 | Copyleft 许可证(AGPL/SSPL)、缺少许可证、DMCA 标记的包 | **共 77 条规则。** 每个发现都包含严重程度、证据、修复建议、OWASP 引用、Adversa 引用和 CVE 链接(若适用)。 ### 扫描的代理平台 Claude Code、Cursor、VS Code Copilot、Windsurf、Amazon Q、Goose CLI、Goose、Continue、Roo Code、Kiro + 用户级全局配置。 ### 语言支持 | 语言 | 扫描方法 | 检测内容 | |----------|----------------|---------------| | **Python** | AST 分析 | `@tool` 参数流向危险 sink(eval、subprocess、SQL、文件 I/O、HTTP)| | **TypeScript** | 基于正则 | MCP 服务器文件中的 `eval()`、`child_process.exec`、`fs.writeFileSync` | | **Rust** | 基于正则 | `Command::new(format!())`、`unsafe` 块、未参数化的 SQL 宏 | ## CLI 参考 ### 命令 | 命令 | 描述 | |---------|-------------| | `agent-audit-kit scan .` | 完整安全扫描 | | `agent-audit-kit scan . --ci` | CI 模式:SARIF + `--fail-on high` | | `agent-audit-kit discover` | 查找机器上所有 AI 代理配置 | | `agent-audit-kit pin .` | 固定工具定义(SHA-256 哈希)| | `agent-audit-kit verify .` | 验证工具与固定值(检测 rug pull)| | `agent-audit-kit fix . --dry-run` | 自动修复常见配置错误 | | `agent-audit-kit score .` | 安全等级(A-F)+ SVG 徽章 | | `agent-audit-kit update` | 更新漏洞数据库 | | `agent-audit-kit proxy --port 8765 --target URL` | 启动 MCP 拦截代理 | | `agent-audit-kit kill` | 终止运行中的代理 | ### 扫描标志 | 标志 | 默认值 | 描述 | |------|---------|-------------| | `--format` | `console` | 输出格式:`console`、`json`、`sarif` | | `--severity` | `low` | 报告的最低严重程度 | | `--fail-on` | `none` | 在此严重程度退出 1:`critical`、`high`、`medium`、`low`、`none` | | `--output` / `-o` | stdout | 将输出写入文件 | | `--ci` | | 简写:`--format sarif --fail-on high -o agent-audit-results.sarif` | | `--config` | | `.agent-audit-kit.yml` 路径 | | `--rules` | all | 要包含的逗号分隔规则 ID | | `--exclude-rules` | | 要跳过的逗号分隔规则 ID | | `--ignore-paths` | | 要排除的逗号分隔路径 | | `--include-user-config` | | 同时扫描 `~/.claude/`、`~/.cursor/` 等 | | `--score` | | 显示安全分数和等级 | | `--owasp-report` | | 生成 OWASP 覆盖矩阵 | | `--compliance FRAMEWORK` | | 合规报告:`eu-ai-act`、`soc2`、`iso27001`、`hipaa`、`nist-ai-rmf` | | `--verify-secrets` | | 探测 API 检查泄露密钥是否有效(可选)| | `--diff BASE_REF` | | 仅报告自 BASE_REF 以来更改的文件中的发现 | | `--llm-scan` | | 通过 Ollama 进行本地 LLM 语义分析(可选)| | `--verbose` / `-v` | | 详细扫描进度 | ### 退出码 | 码 | 含义 | |:----:|---------| | 0 | 扫描通过 — 无发现超过 `--fail-on` 阈值 | | 1 | 扫描失败 — 发现达到或超过 `--fail-on` 严重程度 | | 2 | 错误 — 无效路径、格式错误的配置等 | ## 配置 在项目根目录创建 `.agent-audit-kit.yml`: ``` severity: medium fail-on: high ignore-paths: - vendor/ - third_party/ exclude-rules: - AAK-MCP-007 # We intentionally don't pin npx versions include-user-config: false ``` CLI 标志始终优先于配置文件值。 ## GitHub Action 参考 ### 输入 | 输入 | 默认值 | 描述 | |-------|---------|-------------| | `path` | `.` | 要扫描的目录 | | `severity` | `low` | 报告的最低严重程度 | | `fail-on` | `high` | 在此严重程度或以上失败(`none` = 从不失败)| | `format` | `sarif` | 输出格式:`sarif`、`json`、`console` | | `upload-sarif` | `true` | 上传 SARIF 到 GitHub Security 标签页 | | `include-user-config` | `false` | 扫描用户级代理配置 | | `rules` | | 要包含的逗号分隔规则 ID | | `exclude-rules` | | 要跳过的逗分隔规则 ID | | `ignore-paths` | | 要排除的逗号分隔路径 | | `config` | | `.agent-audit-kit.yml` 路径 | ### 输出 | 输出 | 描述 | |---------|-------------| | `findings-count` | 发现总数 | | `critical-count` | CRITICAL 发现数 | | `high-count` | HIGH 发现数 | | `sarif-file` | SARIF 输出文件路径 | | `exit-code` | 0 = 通过,1 = 发现超过阈值 | ## SARIF 集成 使用 `upload-sarif: true`(默认),发现的问题将显示为: - PR 差异上的 **内联注释**,准确显示哪一行有问题 - Security 标签页下 Code Scanning 中的完整修复指导 - 每个发现的 **OWASP 引用** 和 **CVE 链接** SARIF 输出符合 [SARIF 2.1.0](https://json.schemastore.org/sarif-2.1.0.json) 规范,包含 `fingerprints`、`partialFingerprints`、`fixes[]`、`security-severity` 分数和 `%SRCROOT%` 相对路径。 ## 安全评分 ``` agent-audit-kit score . # 安全评分: 85/100 等级: B ``` | 等级 | 分数 | 含义 | |:-----:|:-----:|---------| | A | 90-100 | 优秀 — 风险极低 | | B | 75-89 | 良好 — 小问题 | | C | 60-74 | 一般 — 需要关注 | | D | 40-59 | 较差 — 风险较高 | | F | 0-39 | 严重 — 需要立即处理 | 为您的 README 生成 SVG 徽章:`agent-audit-kit score . --badge` ## 框架与标准 | 框架 | 覆盖范围 | |-----------|----------| | **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) | | **OWASP MCP Top 10** (MCP01-MCP10) | 10/10 (100%) | | **Adversa AI MCP Security Top 25** | 完全映射 | | **EU AI Act** | `--compliance eu-ai-act` | | **SOC 2 Type II** | `--compliance soc2` | | **ISO 27001:2022** | `--compliance iso27001` | | **HIPAA Security Rule** | `--compliance hipaa` | | **NIST AI RMF 1.0** | `--compliance nist-ai-rmf` | ## 工具固定与 Rug Pull 检测 MCP 服务器可以在您批准后静默更改工具定义。AgentAuditKit 可检测此情况: ``` # 创建初始 pins (提交 tool-pins.json 到 git) agent-audit-kit pin . # 在 CI 中验证没有变化 agent-audit-kit verify . ``` 检测:工具定义更改(AAK-RUGPULL-001)、新增工具(AAK-RUGPULL-002)、工具移除(AAK-RUGPULL-003)。 ## 对比 | 功能 | AgentAuditKit | mcp-scan | Snyk Agent Scan | Microsoft AGT | |---------|:---:|:---:|:---:|:---:| | 检测规则 | **77** | ~10 | ~30 | ~20 | | 代理平台 | **13** | 1 | 3 | 1 | | GitHub Action | **是** | 否 | 是 | 否 | | 工具投毒 + 固定 | **是** | 是 | 是 | 否 | | 污点分析 (Python/TS/Rust) | **是** | 否 | 部分 | 否 | | OWASP Agentic 10/10 | **是** | 否 | 部分 | 是 | | OWASP MCP 10/10 | **是** | 否 | 否 | 否 | | 合规框架 | **5** | 0 | 0 | 0 | | 自动修复 | **是** | 否 | 否 | 否 | | 密钥验证 | **是** | 否 | 否 | 否 | | A2A 协议扫描 | **是** | 否 | 否 | 否 | | 离线 / 零云 | **是** | 否 | 否 | 是 | | 运行时代理 | **是** | 否 | 否 | 是 | | 开源 | **MIT** | 部分 | 否 | MIT | ## VS Code 扩展 VS Code/Cursor 扩展位于 `vscode-extension/` 中: ``` cd vscode-extension && npm install && npm run compile ``` 在文件保存时提供内联诊断和快速修复建议。 ## 安全 通过 [GitHub Security Advisories](https://github.com/sattyamjjain/agent-audit-kit/security/advisories) 报告漏洞,或参见 [SECURITY.md](SECURITY.md)。 ## 许可证 [MIT](LICENSE)
标签:13个扫描器, 77条规则, Agentic AI, AI代理, AI安全, Chat Copilot, EU AI Act, GitHub Action, HIPAA, ISO 27001, LNA, MCP, Model Context Protocol, NIST, npm audit替代, OWASP Agentic, OWASP MCP, Rust安全, SARIF, SOC 2, TypeScript安全, 云安全监控, 可视化界面, 合规, 安全扫描, 时序注入, 离线扫描, 误配置检测, 逆向工具, 零云依赖, 静态分析