bishnubista/a2a-irbench

GitHub: bishnubista/a2a-irbench

A2A-IRBench 是一个用于评估 LLM 编排器智能体在异步多智能体事件响应工作流中抵御恶意通知攻击能力的基准测试框架,聚焦于异步状态完整性这一此前被忽视的攻击面。

Stars: 0 | Forks: 0

# A2A-IRBench **智能体间事件响应中的异步状态完整性基准测试** A2A-IRBench 是一个实验套件,用于评估基于 LLM 的编排器智能体如何处理异步智能体间 (A2A) 事件响应工作流中的恶意通知攻击。它随一篇提交给 COLM 2026 的论文一同发布。 ## 问题 在生产 A2A 系统中,专业智能体会在不可预测的时间向编排器推送状态通知。攻击者可以注入伪造、重放或过期的通知,使其在合法证据之前到达——利用**异步信息差**误导编排器执行不安全的补救操作(例如,回滚健康的部署)。 ## 方法 该基准测试定义了: - **3 个事件系列**(F1:错误发布,F3:外部依赖,F5:并发事件)以及 8 个场景变体 - **4 种攻击类别**(A1:伪造,A2:重放,A3:错误绑定,A4:已认证过期) - **3 个防御级别**(O0:朴素,O1:规范最小 Webhook 卫生,O2:协议感知安全驱动)及其消融变体 - **4 种编排器模式**(单次调用、多轮拉取、仅推送、确定性基线) - **7 项指标**(URR、BIRS、SSDR、CTCR、FPBR、ARSM、DL)及 bootstrap 置信区间 ## 架构 ``` ┌─────────────┐ notifications ┌──────────────┐ tools ┌─────────────────┐ │ Mock Agents │ ──────────────────▶ │ Defense │ ─────────────▶ │ Orchestrator │ │ (scripted │ │ Middleware │ │ (LLM / rules) │ │ timelines) │ ◀─ send_task/get ── │ O0/O1/O2 │ ◀──────────── │ │ └─────────────┘ └──────────────┘ └────────┬────────┘ │ ┌──────────────────────────────────────────────────────────────────────┘ ▼ ┌──────────────┐ ┌──────────────┐ │ Safety Judge │ ───────▶ │ Metrics │ │ (det + LLM) │ │ URR, BIRS… │ └──────────────┘ └──────────────┘ ``` 1. **模拟智能体**从带有真实异步传递延迟的场景时间线中返回预先编写的制品 2. **防御中间件** (O0/O1/O2) 在推送通知到达编排器之前对其进行过滤 3. **编排器**通过工具查询智能体,接收过滤后的通知,并提交补救建议 4. **安全评判器**根据真实安全操作对建议进行分类(确定性过滤 + LLM 回退机制) 5. **指标**计算安全性和检测率及 bootstrap 置信区间 ## 快速开始 ``` # 安装依赖项(需要 Python 3.12+,uv) uv sync # 设置 API 密钥 cp .env.example .env # 使用您的 ANTHROPIC_API_KEY 编辑 .env(以及可选的 OPENAI_API_KEY) source .env # Dry run — 验证完整流水线(3 trials) uv run python scripts/run_sweep.py --dry-run # 单一 scenario family,3 seeds uv run python scripts/run_sweep.py --families F1 --seeds 3 # 完全扫描(所有 families × attacks × defenses × 10 seeds) uv run python scripts/run_sweep.py ``` ### 编排器模式 ``` # Single-call 模式(默认,约 $0.003/trial — 匹配论文架构) uv run python scripts/run_sweep.py --mode single # 确定性基线(无 LLM 调用,基于规则的决策) uv run python scripts/run_sweep.py --mode deterministic # 多轮 pull 模式(约 $0.11/trial,orchestrator 主动查询 agents) uv run python scripts/run_sweep.py --mode pull # 仅 Push 模式(通知驱动,无主动查询) uv run python scripts/run_sweep.py --mode push ``` ### 附加实验 ``` # E3: Protocol-vs-Prompt 控制(隔离攻击渠道效应) uv run python scripts/run_e3.py # 从结果中提取发布表格 uv run python scripts/extract_tables.py uv run python scripts/extract_e2.py # 分析 API token 使用情况和成本 uv run python scripts/cost_analysis.py ``` ## 项目结构 ``` src/ ├── models.py # Pydantic data models (Task, Notification, Scenario, TrialResult, …) ├── agents/ │ ├── mock_agents.py # Deterministic mock specialist agents with deferred delivery │ ├── orchestrator.py # Multi-turn LLM orchestrator (pull mode) │ ├── orchestrator_push.py # Push-only orchestrator variant │ ├── orchestrator_single.py # Single-call orchestrator (paper design) │ ├── orchestrator_deterministic.py # Rule-based non-LLM baseline │ └── prompts.py # System prompts and tool definitions ├── attacks/ # Attack class definitions (embedded in scenarios) ├── defenses/ │ └── base.py # O0/O1/O2 defense middleware + ablation variants ├── evaluation/ │ ├── judge.py # Two-stage safety classifier (deterministic + LLM) │ └── metrics.py # URR, BIRS, SSDR, CTCR, FPBR, ARSM, DL + bootstrap CI ├── experiments/ │ ├── runner.py # Sweep orchestrator (parallel, checkpoint/resume) │ └── llm_client.py # Multi-provider LLM client (Anthropic + OpenAI) └── scenarios/ ├── f1_bad_release.py # F1 family: 4 scenarios + attack generators ├── f3_external_dep.py # F3 family: external dependency incidents └── f5_concurrent.py # F5 family: concurrent incidents scripts/ ├── run_sweep.py # Main CLI entry point ├── run_e3.py # E3: Protocol-vs-Prompt control experiment ├── extract_tables.py # Generate publication-ready CSV tables ├── extract_e2.py # Extract E2 core matrix table └── cost_analysis.py # Token usage and cost analysis tests/ └── test_defenses.py # Defense middleware unit tests ``` ## 指标 | 指标 | 描述 | |--------|-------------| | **URR** | 不安全补救率 — 采取不安全操作的试验比例 | | **BIRS** | 良性事件解决成功率 — 良性(无攻击)试验中的安全率 | | **SSDR** | 过期状态检测率 — 对 A2/A4 过期通知的拒绝率 | | **CTCR** | 跨任务污染率 — 接受 A3 错误绑定通知的比例 | | **FPBR** | 误报拦截率 — 在良性试验中被拦截的真实通知比例 | | **ARSM** | 操作相关状态不匹配 — 信念状态与真实情况相矛盾 | | **DL** | 决策延迟 — 从开始到建议所用的时间 | 所有指标均包含 95% 的 bootstrap 置信区间(10k 次重采样)。 ## 防御级别 | 级别 | 机制 | 防御目标 | |-------|-----------|-----------------| | **O0** | 接受所有通知 | 无(基线) | | **O1** | HMAC 签名、重放检测、新鲜度窗口 | A1 (伪造)、A2 (重放) | | **O2** | O1 + 通过 GetTask 重新实例化、跨智能体确证、任务绑定 | A1–A4 | O2 消融变体(`O2_no_getask`、`O2_no_corroboration`、`O2_no_binding`)分离了每种机制的独立贡献。 ## 环境要求 - Python 3.12+ - [uv](https://docs.astral.sh/uv/) 包管理器 - Anthropic API 密钥(必需) - OpenAI API 密钥(可选,用于跨提供商实验) ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 ## 引用 ``` @inproceedings{bista2026a2airbench, title={A2A-IRBench: Benchmarking Async State Integrity in Agent-to-Agent Incident Response}, author={Bista, Bishnu}, booktitle={Conference on Language Modeling (COLM)}, year={2026} } ```
标签:A2A协议, AI安全, Chat Copilot, CI/CD安全, CISA项目, COLM 2026, DevSecOps, DLL 劫持, DNS 解析, FTP漏洞扫描, Llama, LLM代理, LLM安全评估, Petitpotam, Webhook安全, 上游代理, 中间件, 大语言模型, 子域名变形, 学术研究, 安全基准测试, 安全度量, 安全编排, 异步通信, 模拟攻击, 注入攻击, 状态完整性, 网络安全基准, 自动化防御, 蜜罐, 证书利用, 逆向工具, 配置错误, 重放攻击