Agent Audit
在上线前扫描 AI Agent 代码中的提示注入、MCP 配置风险与污点漏洞。
- Star 数
- ★ 244
- 最近更新
- 1 个月前
- License
- MIT
- 主语言
- Python
- FA 评分
- 50/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 使用 LangChain、CrewAI、AutoGen 或 AgentScope 构建 Agent 的开发者在合并前自检提示注入与命令注入风险。
- 不适合
- 需要跨函数或跨模块污点追踪的团队
- 只关注非 Python 语言代码库的团队
- 期望运行时动态检测而非静态扫描的团队
- 源码审查
- 50/100 · 缺口较多
这个 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 控制退出码。
- 使用 LangChain、CrewAI、AutoGen 或 AgentScope 构建 Agent 的开发者在合并前自检提示注入与命令注入风险。
- 安全工程师审查第三方 Agent 代码库时,用 SARIF 输出导入 GitHub Security 标签页做集中跟踪。
- 维护 MCP 服务器或 claude_desktop_config.json 的团队检查密钥泄漏、缺失认证与过宽文件权限。
- 在 CI 中以 --fail-on high 建立安全门禁,并用 baseline 只拦截新增问题。
- OpenClaw 用户安装 agent-audit-scanner skill 后,让 Agent 扫描已安装技能与配置是否安全。
- 在漏洞教学或靶场项目中验证 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?
查看各维度的扣分理由
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。
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。
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。
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。
output_usability 提供终端报告、JSON、SARIF、markdown、baseline 与退出码门控,输出可直接用于 CI,给 2。marginal_value 针对 MCP 配置审计与 tool 边界污点,是通用 SAST 未覆盖的类别,有差异化价值,给 2。cost_benefit 安装轻量,但高误报率(OpenClaw 90.4% 疑似 FP)意味着大量人工分诊成本,且基准数字存在自承的不可复现调整值,性价比证据不足,给 1。
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 身份未经验证,维护责任与更新路径不明确,生产采用前应评估长期维护风险。