JaleedAhmad/Agentbreak
GitHub: JaleedAhmad/Agentbreak
一款多智能体 AI 系统的工作流级安全扫描器,通过分析工具调用图谱自动发现跨工具的间接注入等攻击链路。
Stars: 0 | Forks: 0
# AgentBreak
    
针对多智能体 AI 系统的工作流级安全扫描器。*(已在 Ubuntu 上测试并验证)*
AgentBreak 不是一款模型扫描器。它能理解你的 agent 可以调用的工具图谱,找出从不可信输入源到敏感执行操作的每一条链路,并通过完整的工具调用追踪记录来证明漏洞的可行性。专为交付基于 LangGraph、CrewAI 和 AutoGen 的 agent 的开发者而构建,帮助他们在别人之前了解自身的攻击面。
**📖 阅读发布文章:**[我开发了一款工具,发现我的 LangGraph 邮件 agent 可能被劫持](https://dev.to/jaleedahmad/-i-built-a-tool-that-found-my-langgraph-email-agent-could-be-hijacked-to-forward-the-entire-inbox-3ik7)
## 问题所在
大多数生产环境的 agent 同时具备三个条件:访问外部数据(电子邮件、网络、文件)的权限、一个在没有进行净化的情况下处理这些数据的 LLM,以及执行不可逆操作(发送电子邮件、写入文件、调用 API)的工具。现有的扫描器(garak、promptfoo)是在隔离环境下测试模型的——它们无法模拟当通过网页搜索结果注入的恶意 payload 经过三次工具调用并触发一封外发电子邮件时会发生什么。AgentBreak 测试的是工作流,而不是模型。
## 演示
```
AgentBreak scan — Email Assistant Agent
ToolGraph: 6 nodes, 5 edges, 3 sources, 2 sinks
Found Attack Paths
┌───┬─────────────────────────────────────────────────────────┬────────────┐
│ # │ Path Chain │ Sink Type │
├───┼─────────────────────────────────────────────────────────┼────────────┤
│ 1 │ fetch_emails → summarise_and_plan → draft_reply → │ email_send │
│ │ send_email │ │
│ 2 │ web_search → summarise_and_plan → save_to_notes │ file_write │
│ 3 │ fetch_emails → summarise_and_plan → save_to_notes │ file_write │
│ 4 │ web_search → summarise_and_plan → draft_reply → │ email_send │
│ │ send_email │ │
│ 5 │ summarise_and_plan → draft_reply → send_email │ email_send │
└───┴─────────────────────────────────────────────────────────┴────────────┘
Scan Results
┌──────────────────────────────────────┬──────────────────────────────────┬───────────┬──────────┐
│ Path Chain │ Payload Name │ Exploited │ Severity │
├──────────────────────────────────────┼──────────────────────────────────┼───────────┼──────────┤
│ fetch_emails → ... → send_email │ indirect_injection_email_exfil │ ✓ │ HIGH │
│ fetch_emails → ... → send_email │ search_result_prompt_injection │ ✓ │ HIGH │
│ web_search → ... → save_to_notes │ web_content_file_write │ ✓ │ HIGH │
│ web_search → ... → send_email │ search_result_prompt_injection │ ✓ │ HIGH │
│ summarise_and_plan → ... → send_email│ generic_override_fallback │ ✓ │ MEDIUM │
└──────────────────────────────────────┴──────────────────────────────────┴───────────┴──────────┘
Report written to agentbreak-report/
Exit code: 1 (HIGH findings present — fails CI/CD gate)
```
## 安装
因为 AgentBreak 是一个独立的 CLI 工具,我们强烈建议使用 **[`pipx`](https://pipx.pypa.io/)** 进行安装,以避免在现代 Linux 系统(如 Debian/Ubuntu)上出现 PEP 668 `externally-managed-environment` 错误。
如果你尚未安装 `pipx`,请先安装它并配置你的路径:
```
sudo apt install pipx
pipx ensurepath
# 你可能需要在这里重启你的终端或运行 `source ~/.bashrc`
```
然后安装 AgentBreak:
```
pipx install git+https://github.com/JaleedAhmad/Agentbreak.git
```
如需支持 LangGraph:
```
pipx install "agentbreak[langgraph] @ git+https://github.com/JaleedAhmad/Agentbreak.git"
```
如需支持 CrewAI:
```
pipx install "agentbreak[crewai] @ git+https://github.com/JaleedAhmad/Agentbreak.git"
```
*(或者,如果你更喜欢使用 `pip`,则必须先创建并激活虚拟环境:`python3 -m venv venv && source venv/bin/activate`,然后再运行 `pip install ...`)*
如需从源码进行本地开发:
```
git clone https://github.com/JaleedAhmad/Agentbreak.git
cd Agentbreak
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
```
## 项目结构
```
agentbreak/
├── agentbreak/ # Core package
│ ├── cli.py # CLI entry point
│ ├── models/ # Core data models (ToolGraph, AttackPath)
│ ├── output/ # JSONL and HTML report generators
│ ├── parsers/ # Framework parsers (LangGraph, CrewAI, Schema)
│ └── scanner/ # Analysis engine
│ ├── executor.py # Execution and severity assignment
│ ├── path_finder.py # Graph traversal and path extraction
│ └── payload_generator.py # Adversarial payload injection templates
├── examples/ # Example schemas
│ └── email_agent.yaml
├── tests/ # Pytest test suite
├── pyproject.toml # Build configuration
└── requirements.txt # Dependency definitions
```
## 用法
三种模式:
1. Schema 模式(最快,无框架依赖):
```
agentbreak scan --schema tools.yaml
```
2. LangGraph 模式:
```
agentbreak scan --langgraph my_agent.py
```
3. CI/CD 模式(发现 HIGH 或 CRITICAL 级别的问题时以状态码 1 退出):
```
agentbreak scan --schema tools.yaml --output ./security-report/
```
## 工具 Schema 格式
```
meta:
name: "Sample Agent"
framework: "custom" # Identifies the parsing framework context
tools:
- name: web_scraper
description: "Fetches text from a given URL." # Description helps contextualize the node
input_trust: external # Data originates from outside the system boundary (e.g. internet)
sinks: [] # This tool performs no dangerous actions
- name: planner_llm
description: "Analyzes scraped text and decides what to do."
input_trust: untrusted # Data comes from an external source but via another tool
sinks: []
- name: send_email
description: "Dispatches an email via SMTP."
input_trust: trusted # Only accepts developer-crafted or heavily sanitized text
sinks:
- email_send # An irreversible outbound action that could exfiltrate data
- name: save_log
description: "Appends the operation result to a local file."
input_trust: trusted
sinks:
- file_write # Modifies the local file system
edges:
# Explicitly defines the data flow between tools
- source: web_scraper
target: planner_llm
- source: planner_llm
target: send_email
- source: planner_llm
target: save_log
```
## AgentBreak 测试内容
| 攻击模板 | 源类型 | Sink 类型 |
| :--- | :--- | :--- |
| `indirect_injection_email_exfil` | EXTERNAL | EMAIL_SEND |
| `web_content_file_write` | EXTERNAL | FILE_WRITE |
| `document_code_exec` | EXTERNAL | CODE_EXEC, SHELL |
| `user_input_db_injection` | UNTRUSTED, EXTERNAL | DB_WRITE |
| `email_body_api_exfil` | EXTERNAL | API_CALL |
| `memory_poisoning_via_web` | EXTERNAL | MEMORY_WRITE |
| `search_result_prompt_injection` | EXTERNAL | EMAIL_SEND, API_CALL |
| `shell_injection_via_filename` | UNTRUSTED, EXTERNAL | SHELL, CODE_EXEC |
## 不测试的内容
- 针对真实 LLM 的实时执行(V1 仅支持 mock 模式)
- 运行时防护绕过(这是部署前的静态分析)
- 模型本身的漏洞(请使用 garak 进行此项测试)
## 路线图
* **V1(当前)**:基于 Schema 的扫描、8 个 payload 模板、mock 执行、JSONL + HTML 报告
* **V2**:LangGraph 和 CrewAI 原生解析器、实时执行模式(可选择开启)
* **V3**:CI/CD GitHub Action、托管扫描 API、合规报告导出(OWASP Agentic Top 10)
## 作者
Jalees Ahmad([GitHub](https://github.com/JaleedAhmad))
## 许可证
本项目采用 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE) 文件。
标签:Blue Team, CISA项目, DLL 劫持, GraphQL安全矩阵, Python, Web报告查看器, 多智能体AI, 大语言模型, 安全扫描器, 工作流安全, 文档结构分析, 无后门, 自动化漏洞挖掘, 逆向工具