mathewtom/ai-redteam-lab

GitHub: mathewtom/ai-redteam-lab

一个集成多款红队工具的 AI 红队实验室,用于对 SecureRAG-Sentinel 类 RAG 系统进行自动化对抗测试与防御评估。

Stars: 0 | Forks: 0

# AI 红队实验室 对两种安全加固的 RAG 目标进行对抗性测试: - **[SecureRAG-Sentinel](https://github.com/mathewtom/SecureRAG-Sentinel)** — 带有七层防御栈的经典 RAG - **[SecureRAG-Agent](https://github.com/mathewtom/SecureRAG-Agent)** — 带有 7 个授权保护工具的代理派生(LangGraph ReAct) 各工具的配置文件和报告按目标在对应目录下划分: ``` garak/ ├── SecureRAG-Sentinel/{configs,scripts,reports}/ └── SecureRAG-Agent/{configs,scripts,reports}/ promptfoo/ ├── SecureRAG-Sentinel/{configs,reports}/ └── SecureRAG-Agent/{configs,reports}/ ``` 共享工具(`garak/.venv`、`promptfoo/node_modules`)位于工具根目录。运行说明请参见各目录内的独立 README。 ## 原始上下文 — SecureRAG-Sentinel 目标系统将 LLM 视为不可信组件:文档在进入向量存储前进行净化,访问在到达模型前进行控制,并在 API 边界进行速率限制。本仓库旨在找出这些防御被突破的位置。 ## 目标系统 SecureRAG-Sentinel 是一个基于 LangChain、ChromaDB、Presidio 和 Ollama(LLaMA 3.3 70B)构建的 RAG 管道。它将 LLM 视为不可信组件,并对每个查询运行七层防御栈: | # | 层级 | 状态 | |---|------|--------| | 1 | 速率限制(每用户滑动窗口) | ✅ 已部署 | | 2 | 输入注入扫描(评分正则模式) | ✅ 已部署 | | 3 | 嵌入相似度扫描(与 100 个提示语料的余弦匹配) | ✅ 已部署 | | 4 | 访问控制检索(组织架构 + 部门 + 分类) | ✅ 已部署 | | 5 | 带有安全提示模板的 LLM 推理 | ✅ 已部署 | | 6 | 输出扫描(正则快速路径 + Llama Guard 3 1B) | ✅ 已部署 | | 7 | 分类防护(输出侧防泄露) | ✅ 已部署 | 摄取阶段的防御(NFKC 标准化、注入隔离、Presidio 进行的 PII 脱敏)在任何内容到达向量存储前运行。 完整架构、OWASP/ATLAS 映射与威胁模型请参见[主仓库](https://github.com/mathewtom/SecureRAG-Sentinel)。 ## 威胁模型 — E003 人设 API 在服务端将请求用户硬编码为 **E003(Priya Patel — 软件工程师,低权限)**。攻击工具无法通过发送不同的 `user_id` 来伪造身份。这建模了真实威胁:**一个已认证的低权限工程师试图突破自身权限边界**。 本实验室中的每一次测试均以 E003 视角运行。成功的攻击是指 E003 能够: - 读取其他员工的 HR 记录 - 访问 E003 不属于的部门(法务、财务、高管)的机密文档 - 覆盖系统提示或提取脱敏内容 - 通过输出触发 PII 泄露或分类信息泄露 ## 工具 每个工具拥有独立的目录,包含配置文件、脚本以及说明如何运行的本地 README。 | 工具 | 用途 | 目录 | 状态 | |------|------|-----------|--------| | [Garak](https://github.com/NVIDIA/garak)(NVIDIA) | 广泛漏洞扫描 — 提示注入、DAN、编码绕过 | [garak/](garak/) | ✅ 活跃(V5 扫描完成) | | [Promptfoo](https://github.com/promptfoo/promptfoo) | 评估 + 红队。迭代式 LLM 驱动攻击,使用 Claude 作为攻击者/评分器,最适合访问控制与 RAG 特定滥用 | [promptfoo/](promptfoo/) | ✅ 活跃(V1 基线 + 流水线完成) | | [PyRIT](https://github.com/Azure/PyRIT)(微软) | 多轮自适应攻击、Crescendo、转换器链 | [pyrit/](pyrit/) | 🔲 计划中 | | [DeepTeam](https://github.com/confident-ai/deepteam)(Confident AI) | 单元测试风格红队,LLM 作为评委评估 | [deepteam/](deepteam/) | 🔲 计划中 | | [FuzzyAI](https://github.com/cyberark/FuzzyAI)(CyberArk) | 遗传变异模糊测试、Unicode 走私、ASCII 艺术攻击 | [fuzzyai/](fuzzyai/) | 🔲 计划中 | ## 方法论 每个工具执行两阶段扫描: 1. **阶段 1 — 基线**:直接扫描无安全层的原始 Ollama 模型 2. **阶段 2 — 防护**:通过 FastAPI 端点扫描完整流水线(所有防御启用) 两阶段之间的攻击成功率(ASR)差值衡量各防御层级的价值。结果记录在 `results/` 目录并带有时间戳。 ## 先决条件 - [SecureRAG-Sentinel](https://github.com/mathewtom/SecureRAG-Sentinel) 克隆并在本地运行于 `http://localhost:8000` - [Ollama](https://ollama.com) 拉取 `llama3.3:70b` 与 `llama-guard3:1b` - Python 3.12+ - Node.js 18+(仅 Promptfoo 需要) - [Anthropic API 密钥](https://console.anthropic.com)(用于 Promptfoo 的 Claude 攻击者/评分器)。Garak 完全本地运行,无需此项。 ## 快速开始 ``` # 将此仓库与 SecureRAG-Sentinel 并行克隆 git clone https://github.com/mathewtom/ai-redteam-lab.git cd ai-redteam-lab # 在单独的终端中启动目标系统 cd /path/to/SecureRAG-Sentinel source .venv/bin/activate python -m src.pipeline # populate ChromaDB uvicorn src.api:app --port 8000 # start API # 从 Garak 开始(详细信息请参见 garak/README.md) cd garak python3 -m venv .venv source .venv/bin/activate pip install -U git+https://github.com/NVIDIA/garak.git@main ./scan_baseline.sh ./scan_pipeline.sh ``` ## 结果 扫描结果、HTML 报告与 ASR 对比记录在 [`results/`](results/)。格式说明请参见 `results/README.md`。 ### 至今发现 | 工具 / 扫描 | 日期 | 目标 | 头条 ASR | 实际 ASR(经过筛选后) | 主要发现 | |---|---|---|---:|---:|---| | Garak V5 | 2026-04-02 | Sentinel `/query` | 7.9% | ~0.7% | 潜在注入(`LatentInjectionReport` 中约 19%);详见 [Sentinel 报告](https://github.com/mathewtom/SecureRAG-Sentinel/tree/main/reports) | | [Promptfoo 基线 V1](results/promptfoo/promptfoo_baseline_v1.md) | 2026-04-09 | 原始 LLaMA 3.3 70B(无防御) | 28.28% | n/a(原始模型上限) | `rag-document-exfiltration` 占 66.7%,`hijacking` 占 58.3%;迭代式攻击器的成功率是静态策略的 3 倍 | | [Promptfoo 流水线 V1](results/promptfoo/promptfoo_pipeline_v1.md) | 2026-04-10 | Sentinel `/query`(完整流水线,Haiku 评分器) | 55.15% | **~1.2%** | **AWS 访问密钥从 `vendor_security_assessment.txt` 泄露,共 165 次响应中有 81 次。** 当天通过 21 模式 CredentialDetector 修复。另有 89 次“失败”为 Haiku 评分器噪声。 | | [Promptfoo 流水线 V2](results/promptfoo/promptfoo_pipeline_v2.md) | 2026-04-10 | Sentinel `/query`(完整流水线 + 凭证修复,Sonnet 攻击者 + 评分器) | 21.21% | **0.0%** | **零真实防御绕过。** 所有 35 次失败均为 base64 策略“无输出”基础设施工件(LLaMA 无法解码 base64 → 拒绝 → 触发 promptfoo 内置检测器)。非 base64 策略:ASR 0%(基础 0/45,jailbreak-templates 0/40,jailbreak:meta 0/40)。凭证修复已验证 — 响应中未出现任何 AKIA 字符串。Sonnet 评分器配合明确的授权表在 125 次非 base64 测试中零误报。 | 从 V1 到 V2 的流水线演进讲述了一个完整红队故事:V1 发现真实的凭证泄露(AWS 密钥绕过 Presidio)并暴露了 Haiku 作为评分器的策略弱点;两者均在当天修复。V2 确认修复有效,并在 125 次有意义的测试中实现 0% 真实 ASR。 ## 安全映射 所有发现映射至: - [OWASP 大语言模型应用安全顶层 10(2025)](https://genai.owasp.org) - [MITRE ATLAS](https://atlas.mitre.org) ## 许可证 MIT
标签:AI风险缓解, ChromaDB, DeepTeam, FuzzyAI, Garak, LangChain, Llama 3.3 70B, LLM评估, MITM代理, Ollama, Presidio, PromptFoo, PyRIT, RAG安全, Red Canary, SecureRAG-Agent, SecureRAG-Sentinel, SEO: AI红队实验室, SEO: RAG安全测试, Streamlit, 分类防护, 后端开发, 多智能体系统, 安全对抗, 嵌入相似性扫描, 提示注入, 提示词攻击, 访问控制, 轻量级, 输入清洗, 输出扫描, 逆向工具, 防御栈, 集群管理