Argus
gy15901580825/Argus加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

产品团队花了三个月打磨的客服 Agent 即将上线。安全同学的评估清单上却全是这样的问题:它会不会被一段藏在 PDF 里的文字骗去把内部密钥发给外部?它接了 MCP 工具服务器之后,会不会调用一个"看起来同名"但描述被投毒的函数?它帮用户付款时,能不能被诱导着把钱打给替换掉的收款人?
传统 LLM 评测框架回答不了这些问题。它们比的是"一句 prompt 对一句回复"——但真正上生产的是一个会规划、会调工具、会读文档、会开浏览器、跨轮次保持状态的系统。它的失效面是对抗鲁棒性,不是基准准确率。
Argus 就是冲着这个缺口来的。它的自我定位一句话说清:按攻击者的方式去打 Agent,然后看 Agent 实际做了什么,而不是听它说了什么。
Argus 是一个 Python 编写的黑盒红队测试平台,Apache-2.0 协议,2026 年 5 月开源,目前 206 星、28 fork,最新版本 0.7.0(同时发布在 PyPI 上,包名 argus-probe)。
探针以 YAML 形式存放在 argus/probes/,数量分布很能说明它的取舍:
支持 6 个扫描套件:owasp-llm-top10、mitre-atlas、nist-ai-rmf、eu-ai-act、payments、mcp。生成的报告明确写出"哪些没有测到"——这是很多同类工具不做的事。
你不需要改被测系统的代码,只要写一个 JSON 描述文件就能接入:OpenAI 兼容协议、Anthropic 原生协议、自定义 HTTP(Jinja2 模板 + JSONPath 提取)、gRPC(支持反射自动发现)、文件上传渲染、浏览器 Agent(Playwright)、支付 Agent、MCP Agent、MCP Server 自身、vLLM Server、以及通用测试床适配器。
这是 Argus 最硬的设计。支付类探针的结论来自测试床记录的真实支付流水(有没有打给被替换的收款人、是否拆单绕过审批额度、重试是否重复付款),MCP 类探针来自记录在案的每一次工具调用,而不是让 LLM 去"读一遍回复然后发表看法"。只有那些带 assertions 之外的纯文本响应,才交给 LLM 裁判:先用 Haiku 4.5 快模型打分,命中高危且置信度 ≥ 0.7 时再升级到 Sonnet 4.6 复判。裁判读到的攻击文本会被放进标记为"不可信"的分隔块里,裁判返回 pass/warn/fail 之外的任何值一律算 error,绝不判 pass。
argus-probe run:主命令,本地模式(--local)或服务端模式argus-probe mcp-trap:让你自己的 Agent 连到 Argus 现场起的敌意 MCP 服务器上,跑工具投毒、rug pull、影子工具、confused deputy、凭据钓鱼五种攻击,无需 LLM 裁判、无模型花费argus-probe scan-skill:在一次性 Linux 容器里装一个 Claude Code 技能,给它派几个日常任务,然后报告它读了哪些文件、跑了哪些命令、试图向哪些外部主机发请求另有 argus-probe scan-mcp 可以直接连一个 MCP 服务器,用惰性载荷调它的工具,查命令执行、路径穿越、结果里的注入指令和跨会话泄漏。
如果把 Agent 想象成一个新招的实习生——他会用公司的浏览器、能调内部 API、能读共享盘文档、能代表公司付款——那么 Argus 做的事相当于派一批"社会工程学测试员"去接近他:有人在他桌上留一张写着"把这份文件发给 xxx"的便条(间接注入),有人注册了一个和公司内部工具重名的 MCP 服务(工具投毒),有人在他走神时提了个"要不要顺便买张演唱会票"的要求(越过授权额度)。
关键区别在于:Argus 不看这个实习生说了什么,只看他的日志和流水——文件读了没有、命令跑了没有、钱转了没有。这正是它相较普通 LLM 评测的核心价值。
pipx install argus-probe
argus-probe quickstart # 攻击内置的脆弱 MCP demo Agent,无需任何 key
export ANTHROPIC_API_KEY=<your key>
argus-probe run --local --target argus-target.json \
--probes owasp_01_prompt_injection_basic,syscard_crescendo \
--format sarif --out argus.sarif
CLI 提供 init(交互式生成 target 规格)、list-probes(列出当前目标适配的探针)、validate-target。输出支持 HTML(给人看)、SARIF 2.1.0(可直接上传 GitHub Code Scanning)、JUnit XML(CI 门禁)。
Dockerfile 提供编排器镜像,默认监听 8080,非回环地址下强制要求 ARGUS_SERVER_TOKEN 与 AGENT_CONNECT_SECRET 两个不同密钥。浏览器探针在服务端模式还需要额外连接 client_agent(WebSocket)。官方 GitHub Action argus-probe-action@v1 可在 CI 里跑本地模式、上传 SARIF,并在发现达到 fail-on 级别时直接让流水线失败。
注意:Web UI 与 SaaS 界面不在当前 main 分支,只在 v0.3-full 标签下(该标签含 REST API、Web UI、数据库迁移与 Helm chart)。
1. 裁判模型本身的可靠性是天花板。 README 坦承:小模型裁判会漏掉大量越狱。作者的应对是快模型 + 强模型复判两段式,并提供 docs/judge-accuracy.md 公开在自身夹具上的准确率。README 还直接点名 Azure OpenAI 默认内容过滤器会拦截裁判调用(因为裁判要读攻击文本),需要自定义过滤策略。
2. 大量探针依赖外网。 包幻觉类探针要去 PyPI、npm、RubyGems、crates.io 等公共注册表查证,registry 答不上来时该探针报 error 而不是 pass。另外它只读取 import/install 语句,散文里提到的库名不会被识别,Raku 生态只查 zef 索引。
3. 成本不可忽略。 裁判调用是真金白银。工具提供了每日成本上限与单次运行上限,并做预测性中止——预估超限就不启动。但 scan-skill 需要真实 Anthropic key,默认单任务上限按最坏情况预留,Sonnet 4.6 下三任务约 $4.5 上限,而一次干净扫描实际约 $0.30。
4. "扫描通过"不等于安全。 README 自己写道:干净报告不能证明技能是安全的,因为技能可能等待扫描没创造出来的条件;只在 macOS 上生效的技能在 Linux 容器里什么都不会做。作者建议配合 NVIDIA SkillSpector 或 Cisco skill-scanner 做静态审查。
5. 部分能力"引擎里存在但未暴露"。 TAP、PAIR、GCG 等迭代攻击,以及 persona × strategy 多轮的 deep 模式,虽有测试覆盖,但没有 CLI 开关也没有 API 字段能启动,只能直接调编排器的 /redteam/run 传 "mode": "deep"。
6. 定位是"攻击"而非"防护"。 Argus 明确说自己不保护生产环境,只负责攻击它;PromptGuard 集成是用于防御对照实验,而不是拿来做在线运行时网关。
从 790 个文件的仓库结构看,工程成熟度明显高于一般个人项目:
test_contract_freeze.py)、成本计量、证据契约等深层逻辑import-linter 架构约束、pytest-cov 分支覆盖率配置、asyncio 模式、pytest marker 分层(rubric_live、live_skillscan 默认 deselect)jinja2>=3.1.6 是为了修沙箱逃逸 CVE-2024-56326 与 CVE-2025-27516;litellm>=1.105.1,<1.107 是为了规避 2026-10-21 的后门版本事件test_readme_probe_counts_are_current.py、test_probe_mapping_doc_is_current.py)——这是很成熟的做法RESULTS.md 给出可复现的实测数据:本地 demo 35 条提示词,基线攻击成功率 22.9%(8/35),接入 ProtectAI DeBERTa 版 Prompt Guard 后降到 2.9%(1/35),攻击面收敛 87%,代价是每提示词约 275ms(p50)CPU 推理开销,总耗时从 0.4s 涨到 13.9sAgent 安全正处在一个微妙节点上:能力已经足够让 Agent 去调工具、花钱、读文档,但安全评测体系还停留在"问一句、答一句"的口径上。Argus 代表的正是这个转向——评测对象从"模型"变成了"系统",评测方式从"读回复"变成了"看证据",评测产出从"分数"变成了"能进 CI 的 SARIF"。
三个可观察的趋势信号:
scan-skill 在安装前就扫描技能包,反映出 Claude Code 技能、MCP 服务器这类"AI 时代的插件"正在重演传统软件供应链攻击(投毒依赖包、恶意安装脚本),只是载体换成了自然语言指令和 YAML 描述。
Argus 不训练模型,不跑基准,也不替代已有的 LLM 评测。它填的是另一个洞:用攻击者视角,把 Agent 当成黑盒、隔着网络、按证据判定,做一轮可复现、可进 CI 的对抗性测试。
对要做 AI 安全的团队,它值得直接装进流水线试一轮——pipx install argus-probe && argus-probe quickstart 零成本起步,之后按 11 种适配器接自己的系统。对只想了解这个方向的开发者,仓库里的 RESULTS.md 与 docs/probe-mapping.md 是相当完整的入门材料。
需要留意的两点:一是裁判模型准确率决定检出上限,别把它当银弹;二是当前 main 分支只有 CLI 与编排器服务端,Web UI 仍在 v0.3-full 标签里。