JaleedAhmad/Agentbreak

GitHub: JaleedAhmad/Agentbreak

一款多智能体 AI 系统的工作流级安全扫描器,通过分析工具调用图谱自动发现跨工具的间接注入等攻击链路。

Stars: 0 | Forks: 0

# AgentBreak ![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python&logoColor=white) ![安全](https://img.shields.io/badge/Security-Red--Teaming-red) ![智能体](https://img.shields.io/badge/Agents-Multi--Agent-purple) ![框架](https://img.shields.io/badge/Frameworks-LangGraph%20%7C%20CrewAI-orange) ![许可证](https://img.shields.io/badge/License-MIT-brightgreen) 针对多智能体 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, 大语言模型, 安全扫描器, 工作流安全, 文档结构分析, 无后门, 自动化漏洞挖掘, 逆向工具