Agent Audit

在上线前扫描 AI Agent 代码中的提示注入、MCP 配置风险与污点漏洞。

Star 数
★ 244
最近更新
1 个月前
License
MIT
主语言
Python

30 秒速览

运行形态
命令行工具
可在哪里用
通用 · 跨平台
费用
免费,无需付费服务
上手难度
低 · 几分钟可跑通
开始前需要
Python(pip 包 agent-audit)Node.js/npx(可选,用于安装 OpenClaw skill)Shell / 命令行网络访问本地文件系统
典型场景
使用 LangChain、CrewAI、AutoGen 或 AgentScope 构建 Agent 的开发者在合并前自检提示注入与命令注入风险。
不适合
  • 需要跨函数或跨模块污点追踪的团队
  • 只关注非 Python 语言代码库的团队
  • 期望运行时动态检测而非静态扫描的团队

这个 Agent 能做什么,适合哪些场景?

Agent Audit 是一个面向 AI Agent 应用的静态安全扫描器,可通过 pip 安装并以 agent-audit 命令行运行。它由多条分析路径组成:PythonScanner 做 AST 分析并识别危险模式,TaintTracker 在工具边界内追踪从参数到 eval、subprocess、cursor.execute 等 sink 的数据流,SecretScanner 配合 SemanticAnalyzer 分三阶段检测凭据泄漏,MCPConfigScanner 审计 MCP 配置文件,PrivilegeScanner 检查守护进程、sudoers 与沙箱配置,最后由 RuleEngine 按 66 条规则映射到 OWASP Agentic Top 10 输出发现。它输出终端报告、JSON、Markdown 或 SARIF,可接入 GitHub Code Scanning,并通过 --fail-on 在 CI 中作为质量门禁。扫描过程不执行被测代码,核心限制是仅做函数内污点分析,主要支持 Python 与 MCP JSON 配置。

执行 agent-audit scan <路径> 时,工具读取目标目录中的 .py、.json、.yaml、.env 等文件:PythonScanner 解析 AST 识别危险模式与 @tool 元数据,TaintTracker 在函数内部追踪工具入口参数是否未经净化流向 eval、subprocess.run、cursor.execute 等危险操作,DangerousOperationAnalyzer 定位工具边界;SecretScanner 先用正则发现候选密钥,再由 SemanticAnalyzer 通过已知格式匹配、熵值与占位符排除、上下文调整三步过滤;MCPConfigScanner 解析 claude_desktop_config.json 与 MCP 网关配置,检查服务器来源、路径权限、认证与版本锁定;PrivilegeScanner 检查守护进程、sudoers 与沙箱。RuleEngine 汇总为带严重级别的发现,按 BLOCK/WARN/INFO 分层输出终端报告、JSON、Markdown 或 SARIF。此外 agent-audit inspect stdio 可只读检查运行中的 MCP 服务器,--save-baseline/--baseline 支持只报告新增问题,--severity 控制报告范围,--fail-on 控制退出码。

  1. 使用 LangChain、CrewAI、AutoGen 或 AgentScope 构建 Agent 的开发者在合并前自检提示注入与命令注入风险。
  2. 安全工程师审查第三方 Agent 代码库时,用 SARIF 输出导入 GitHub Security 标签页做集中跟踪。
  3. 维护 MCP 服务器或 claude_desktop_config.json 的团队检查密钥泄漏、缺失认证与过宽文件权限。
  4. 在 CI 中以 --fail-on high 建立安全门禁,并用 baseline 只拦截新增问题。
  5. OpenClaw 用户安装 agent-audit-scanner skill 后,让 Agent 扫描已安装技能与配置是否安全。
  6. 在漏洞教学或靶场项目中验证 damn-vulnerable-llm-agent 一类代码能否被静态规则命中。

如何安装或部署这个 Agent?

需要可用的 Python 环境与 pip,通过 PyPI 安装:

pip install agent-audit

若要在 OpenClaw 中使用其 skill 版本,需要 Node.js 与 npx:

npx clawhub@latest install agent-audit-scanner

从源码开发时按 README 使用 Poetry:

git clone https://github.com/HeadyZhang/agent-audit
cd agent-audit/packages/audit
poetry install

如何使用这个 Agent?

安装后扫描项目目录:

agent-audit scan ./your-agent-project

只报告高危及以上并让 CI 在发现高危问题时失败:

agent-audit scan . --severity high
agent-audit scan . --fail-on high

输出 JSON 或 SARIF:

agent-audit scan ./my-agent --format json
agent-audit scan . --format sarif --output results.sarif

用 baseline 只跟踪新增问题:

agent-audit scan . --save-baseline baseline.json
agent-audit scan . --baseline baseline.json --fail-on-new

只读检查一个 MCP 服务器(不会调用其工具):

agent-audit inspect stdio -- npx -y @modelcontextprotocol/server-filesystem /tmp

在 GitHub Actions 中调用:

name: Agent Security Scan
on: [push, pull_request]
jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: HeadyZhang/agent-audit@v1
        with:
          path: '.'
          fail-on: 'high'
          upload-sarif: 'true'

项目级配置放在 .agent-audit.yaml:

# .agent-audit.yaml
scan:
  exclude: ["tests/**", "venv/**"]
  min_severity: low
  fail_on: high

ignore:
  - rule_id: AGENT-003
    paths: ["auth/**"]
    reason: "Auth module legitimately communicates externally"

allowed_hosts:
  - "api.openai.com"

这个 Agent 有哪些优点和局限?

优点
  • 提供工具边界感知的污点分析,只在确认的 @tool 入口参数流向危险操作时触发,并对 LangChain、CrewAI、AutoGen、AgentScope 做框架级检测。
  • 具备 MCP 配置审计能力,包括工具描述投毒、跨服务器工具名遮蔽、基线漂移,README 称 Bandit 与 Semgrep 无法解析 MCP 配置。
  • 66 条规则覆盖 OWASP Agentic Top 10 全部 10 个类别,并提供 SARIF、JSON、Markdown 输出与 --fail-on 的 CI 门禁。
  • 在自建的 81 样本、238 标签基准上给出可复现的原始指标(精确率 68.86%、召回率 84.32%、F1 0.7581),并公开了指标回调说明。
局限
  • 污点分析目前只在函数内进行,尚无跨函数或跨模块追踪,可能漏掉链式调用导致的漏洞。
  • 以 Python 与 MCP JSON 配置为主,其他语言只有有限的模式匹配。
  • 只做静态分析,不执行代码,运行时才出现的逻辑漏洞不在覆盖范围内。
  • README 自身给出的精确率为 68.86%,且承认 FP 90 的统计口径偏悲观,接入 CI 时需要 baseline 和 ignore 规则来抑制误报。

这个 Agent 与同类方案有什么区别?

README 直接与 Bandit 1.8 和 Semgrep 1.x 对比:在同样的注入/RCE/凭据子集上,agent-audit 的召回率为 84.32%,Bandit 为 29.7%,Semgrep 为 27.0%;在 MCP 配置类漏洞上后两者召回率均为 0%。README 也将自身定位为通用 SAST 的补充而非替代,通用 Python 安全检查仍建议交给 Bandit 或 Semgrep。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Agent Audit 当前 50 · 缺口较多 命令行工具免费 ★ 244 1 个月前 Python —
Repo Forensics:AI Agent 仓库离线安全审计器 44 · 缺口较多 命令行工具付费 ★ 204 13 天前 Python Codex · Claude Code
Semia — AI Agent 技能安全审计工具 59 · 缺口较多 命令行工具免费 + 模型费 ★ 615 5 个月前 Python Codex · Claude Code · OpenAI API · Claude API
SkillSpector 技能安全扫描器 62 · 存在缺口 命令行工具免费 + 模型费 ★ 25k 今天 Python Codex · Claude Code · OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
50/ 100 五分制 2.5 / 5
信任安全 14/29
可靠稳定 6/14
适用触发 10/18
规范维护 10/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全14 / 29 · 2.4/5

SECURITY.md 明确声明纯静态分析、不执行被扫描代码、无遥测、无网络请求、无需特权,且仅需读权限,这与 least_privilege 和 external_effects 的声明一致,故给 2;但 inspect 子命令会启动 MCP 服务器进程(README 示例 npx -y ...),属于外部副作用,文档仅以“read-only, never calls tools”一句带过,缺少对启动第三方进程风险的说明,故 external_effects 未给满分。user_confirmation 方面,CLI 有 --fail-on/--baseline 等门控,但无交互式确认机制,且 inspect 启动外部进程前无确认提示,仅 1。sensitive_data_handling 有语义密钥检测与脱敏示例(sk-a***),但扫描结果本身可能包含密钥片段,未见对输出脱敏的明确保证,给 2。dependency_security 仅口头称“minimal dependencies”,无锁文件、无依赖审计证据,且 CI 中 bandit/semgrep 为 best-effort 安装,给 1。rollback 仅有 baseline 机制用于增量对比,无对扫描目标或自身配置变更的回滚说明,给 1。source_attribution 有 OWASP/CWE 引用与 citation,但 publisher 身份未经验证,且报告文档混用 Argus/agent-audit 两个名称,归属不清,给 1。

可靠稳定6 / 14 · 2.1/5

self_consistency 存在明显矛盾:README 称 66 条规则,描述称 51 条,规格文档为 v0.14.1,SECURITY.md 只支持 0.15.x,而 README 已到 v0.20.0;测试数一处 1924、一处 1873;基准结果文件为 layer1_v0.19.0.json 却配 v0.20.0 数字,给 1。dependency_availability 有 PyPI 徽章与 poetry 安装说明,但无锁文件证据,CI 依赖第三方 action 与可选工具,给 1。failure_messages 方面 CI 注释详细说明了退出码契约(0/1/2)、SARIF 空输出检测、导入路径回归守卫,显示对失败可诊断性的关注,给 2。

适用触发10 / 18 · 2.8/5

audience_and_scenarios 明确面向 agent 开发者、安全工程师、MCP 团队,并给出 CI 集成场景,给 2。capability_boundaries 在“Current Scope”与规格第 6 节清楚列出静态分析、函数内污点、Python 为主等边界,给 2。trigger_precision 依赖启发式与置信度分层,但 OpenClaw 报告自承 680 条中 615 条(90.4%)为疑似误报,且 README 自承 FP 90 且部分未标注,触发精度证据薄弱,给 1。environment_fit 支持 Python 3.9–3.12 矩阵、离线运行、SARIF/JSON/markdown 多格式,适配常见 CI 环境,给 2。

规范维护10 / 18 · 2.8/5

information_architecture 有 README、规格、规则、架构、CI 集成、基准等多层文档,结构清晰,给 2。install_notes 有 pip 安装、poetry 开发安装、GitHub Action 输入表,给 2。naming_stability 存在 Argus 与 agent-audit 双名混用、规则重命名(AGENT-040→050)、版本号跨文档不一致,给 1。examples_and_faq 有快速开始、示例报告、GitHub Action 折叠示例、故意脆弱示例文件,给 2。known_limitations 在 README 与规格中均有专门章节,给 2。license 为完整 MIT 文本,给 3。versioning_changelog 无 CHANGELOG 文件,仅靠文档内零散版本注记,给 1。maintenance_responsibility 有 SECURITY.md 响应时限与贡献指南引用,但 publisher 未经验证、无维护者名单与发布流程说明,给 1。

有效结果7 / 13 · 2.7/5

output_usability 提供终端报告、JSON、SARIF、markdown、baseline 与退出码门控,输出可直接用于 CI,给 2。marginal_value 针对 MCP 配置审计与 tool 边界污点,是通用 SAST 未覆盖的类别,有差异化价值,给 2。cost_benefit 安装轻量,但高误报率(OpenClaw 90.4% 疑似 FP)意味着大量人工分诊成本,且基准数字存在自承的不可复现调整值,性价比证据不足,给 1。

证据核验3 / 8 · 1.9/5

claim_traceability 部分声明可追溯到脚本与结果文件(precision_recall.py、results/layer1_v0.19.0.json),但版本错配使追溯链断裂,且“first and only”类断言无独立佐证,给 1。cross_source_corroboration 各报告间数字互相矛盾(规则数 51/63/66、测试数、版本),跨源一致性差,给 1。fact_inference_separation 报告中对 Claude Code 泄露事件与 OpenClaw 信任模型的推断与实测发现混排,且自承使用“Python 重构版”而非原始源码,事实与推断边界模糊,给 1。

风险与缓解建议
  • 文档间版本与规则数严重不一致(51/63/66 条规则、v0.14.1/v0.15.x/v0.19.0/v0.20.0),使用前应以实际安装版本为准,勿依赖 README 数字。
  • 自承高误报率(OpenClaw 扫描 90.4% 疑似误报;基准 FP 90),CI 门控可能产生大量噪声,建议先用 baseline 与 --severity 收敛。
  • inspect 子命令会启动第三方 MCP 服务器进程(如 npx -y),存在供应链与执行风险,应在隔离环境中运行并审阅命令。
  • 基准 F1 0.7581 与“调整后 0.84”并存,后者自承不可由脚本复现,不应作为选型依据。
  • 报告文档混用 Argus 与 agent-audit 名称,且对 Claude Code 泄露事件的分析基于“Python 重构版”而非原始源码,结论外推需谨慎。
  • publisher 身份未经验证,维护责任与更新路径不明确,生产采用前应评估长期维护风险。
证据充分度:低 评估于 2026年11月5日 审查版本 8c4c5cb9bddd
查看完整评分方法 →

常见问题

它会执行我项目里的代码吗?
不会。核心是静态分析,不运行被测代码;inspect stdio 子命令明确为只读,不会调用 MCP 服务器的工具。
扫描需要联网或调用 LLM 吗?
扫描本身不需要模型 API。联网只在安装包、拉取 OpenClaw skill 或 inspect 启动外部 MCP 服务器进程时用到。
误报率如何控制?
README 报告 v0.20.0 原始精确率 68.86%,可通过 .agent-audit.yaml 的 ignore 规则、allowed_hosts、min_severity 与 baseline 机制过滤,v0.16 曾将误报减少 79%。
能覆盖 Java 或 Go 写的 Agent 吗?
不能充分覆盖。项目以 Python 源码和 MCP JSON 配置为主,其他语言只有有限的模式匹配。
在 GitHub 查看 ↗ 安装 ↓

相关 Agents