manuelbomi/AI-Security-Red-Team-Toolkit

GitHub: manuelbomi/AI-Security-Red-Team-Toolkit

一款完全离线的 AI/LLM 防御性安全测试工具包,通过自动化扫描器和 CI 门控将 AI 红队测试融入持续集成流程,防止 LLM 应用的安全抵抗力发生回归。

Stars: 0 | Forks: 0

# AI 安全红队工具包 这是一个防御性的、完全离线的 **AI/LLM 安全测试工具包**:它包含一个文档齐全的 prompt injection 和 jailbreak 模式类别目录,一个自动化的扫描器(可将这些模式对您自己的应用进行重放测试),一个数据边界测试器(用于检查 system prompt 泄露和跨租户机密泄露),一个轻量级的模型/依赖供应链扫描器,一个针对 AI 的 STRIDE 威胁模型生成器,一个示例 guardrail middleware,以及一个 CI gate(当应用的抵抗力发生回归时,它会像失败的单元测试套件一样阻断构建)。 ## 为什么这对咨询和专业服务公司很重要 各公司正越来越多地部署 LLM agent,以处理机密的客户文档和内部系统:读取交易室的尽职调查机器人、有权访问多个客户数据的研究助手、以及连接到内部工具的 agent。在这种情况下,哪怕只有一次成功的 prompt injection,或者一次数据边界违规——一个客户的 agent 泄露了另一个客户的信息——这都不是一个小 bug,而是一场严重的声誉、合同以及潜在的法律危机。 对于“我们如何确定这不会发生回归?”这个问题的标准工程答案是,在 CI 中运行自动化测试套件。该工具包将同样的准则应用于 AI 安全:与发布前进行的一次性手动红队演练不同,`injection_scanner.py` 和 `data_boundary_tests.py` 可以在几秒钟内完全离线运行,并且可以像 `pytest` 已经做到的那样,对每一个 pull request 进行拦截。`threat_model.py` 在编写任何代码之前的设计阶段,就为团队提供了一个基于 STRIDE 的起点,因此可以提前明确安全需求,而不是事后修补。`defense_middleware.py` 展示了一个具体的、可测试的 guardrail 示例,以此来填补安全缺口。 ## 负责任地使用 这是一款防御性工具,用于测试**您拥有或获得明确授权进行测试**的系统,属于正常的部署前安全审查的一部分。其攻击模式目录涵盖了公开记录的、众所周知的 prompt injection 和 jailbreak 技术类别,旨在针对您自己的 LLM 应用构建自动化回归测试——它不包含任何新颖的漏洞利用研究或造成现实世界危害的说明。完整的适用范围和报告流程请参阅 [`SECURITY.md`](SECURITY.md)。 ## 架构 ``` flowchart LR subgraph Catalog["Attack pattern catalog"] AL["attack_library.py\n(~20 prompt-injection /\njailbreak pattern categories)"] end subgraph Scanners["Scanners (offline, deterministic)"] IS["injection_scanner.py"] DB["data_boundary_tests.py"] SC["supply_chain_scanner.py"] end subgraph Targets["Target chat function under test"] VA["examples/vulnerable_app.py\n(no defenses)"] HA["examples/hardened_app.py\n(defense_middleware-wrapped)"] end subgraph Reports["Resistance reports"] RR["ScanReport / BoundaryReport\npass rate, by category, by severity"] end subgraph Gate["CI decision"] CG["ci_gate/security_gate.py\n--target module:attr --threshold 0.5"] PASS["Build passes"] FAIL["Build fails\n(non-zero exit)"] end AL --> IS AL --> DB IS --> VA IS --> HA DB --> VA DB --> HA VA --> RR HA --> RR RR --> CG CG -- "pass rate >= threshold" --> PASS CG -- "pass rate < threshold" --> FAIL SC -. "independent check:\nrequirements.txt /\nmodel manifest" .-> Gate ``` 有关每个组件的说明,请参阅 [`docs/architecture.md`](docs/architecture.md)。 ## 包含内容 | 路径 | 用途 | |---|---| | `src/redteam/attack_library.py` | 约 20 个已分类的 prompt injection/jailbreak 模式模板(直接覆盖、间接注入、角色扮演覆盖、编码欺骗、system prompt 窃取、多轮对话投毒)。 | | `src/redteam/injection_scanner.py` | 针对目标聊天功能重放此目录中的模式,并根据整体、类别和严重程度对抵抗力进行评分。 | | `src/redteam/data_boundary_tests.py` | 探测 system prompt 泄露、canary token 泄露以及跨租户机密泄露。 | | `src/redteam/supply_chain_scanner.py` | 标记未锁定的依赖版本以及清单中缺失的模型来源/哈希——这是一种参考模式,而非实时的 CVE 数据源。 | | `src/redteam/threat_model.py` | 根据结构化的系统描述,生成一份针对 AI 的 STRIDE 威胁模型文档。 | | `src/redteam/defense_middleware.py` | 输入 guardrail 示例(拦截高严重性模式)和输出 guardrail 示例(对 canary/机密泄露进行脱敏),可组合应用于任何聊天功能。 | | `examples/vulnerable_app.py` / `examples/hardened_app.py` | 同一个简单的演示应用,分别为无防御版本与被 `defense_middleware` 封装的版本——形成一组前后对比。 | | `ci_gate/security_gate.py` | CLI:扫描目标,如果抵抗力低于阈值则以非零状态退出。 | ## 示例输出 **按类别划分的攻击成功率,易受攻击 vs. 已加固(真实扫描结果):** ![攻击成功前后对比](https://static.pigsec.cn/wp-content/uploads/repos/cas/e1/e1638ed531b05dabb653e7ee91cf19ef3b151e49e739ca19355149ce003ca994.png) **按严重程度划分的攻击库目录组成:** ![严重程度分布](https://static.pigsec.cn/wp-content/uploads/repos/cas/94/94027aff5475b20103ed3b8c2b7f39e20e148eb58dc384fa5cbc0586dc95c381.png) **运行 `python examples/run_demo_scan.py` 的真实输出:** ``` Metric vulnerable_app hardened_app ---------------------------------------------------------------------------- Injection resistance (overall pass rate) 0% 55% - direct_instruction_override 0% 75% - encoding_obfuscation 0% 0% - indirect_injection 0% 100% - multi_turn_context_poisoning 0% 33% - roleplay_persona_override 0% 33% - system_prompt_exfiltration 0% 100% Data-boundary resistance (pass rate) 0% 100% OK: hardened_app shows strictly improved resistance over vulnerable_app on both scans. ``` `vulnerable_app` 在每次尝试中(12/12 次探测)都泄露了其 system prompt、植入的 canary 机密以及另一个模拟租户的机密。通过使用 `defense_middleware` 封装,数据边界泄露降至 0/12,并将整体注入抵抗力从 0% 提升至 55% —— 同时准确地指出了 `encoding_obfuscation` 是这种简单的启发式 guardrail 仍然会漏掉的类别,这正是实际部署中需要更强的过滤器(或基于分类器的 guardrail)来填补的确切缺口。 ## 快速开始 ``` git clone cd ai-security-redteam-toolkit python -m venv .venv source .venv/bin/activate # .venv\Scripts\activate on Windows pip install -r requirements.txt pytest -q # 57 tests, fully offline python examples/run_demo_scan.py # before/after comparison python scripts/generate_charts.py # regenerate docs/images/*.png # 针对 hardened demo app 运行的 CI-style gate: python ci_gate/security_gate.py --target examples.hardened_app:chat --threshold 0.5 ``` ## 许可证 [MIT](LICENSE) ## 免责声明 本仓库是一个参考/作品集级别的实现,旨在为咨询和专业服务场景演示防御性 AI 红队和安全工程模式。它旨在用于测试您拥有或获得明确授权的系统,属于正常的部署前安全审查的一部分。它可以被咨询或顾问公司用作可部署的起点,但这里的攻击库、扫描器和阈值仅供说明,您的安全团队必须根据贵组织的实际威胁模型对其进行扩展、调整和验证,然后才能将其作为生产环境的安全门依赖。
标签:AI安全, Chat Copilot, DLL 劫持, 大语言模型, 威胁建模, 安全测试, 安全规则引擎, 攻击性安全, 逆向工具