Surya2215/AI-Red-Teaming-Platform

GitHub: Surya2215/AI-Red-Teaming-Platform

一个企业级 LLM 安全评估平台,通过自动化攻击编排与多模型检测机制,帮助安全团队系统化发现 OWASP LLM Top 10 相关漏洞。

Stars: 0 | Forks: 0

# AI 红队与 LLM 安全评估平台 企业级 LLM 漏洞评估平台,专注于 OWASP LLM Top 10。该实现包含了 OWASP LLM01 提示词注入检查、单轮攻击、多轮 Crescendo 攻击编排、多 Provider LLM 裁定器/检测器支持、React 前端、FastAPI API、基于 PostgreSQL 的 SQLAlchemy 持久化以及 JSON 目标模板。 ## 快速开始 ``` python -m venv .venv .venv\Scripts\activate pip install -r requirements.txt uvicorn core.api:app --reload ``` 在 Docker 外本地运行时,请在 `.env` 中设置 PostgreSQL: ``` DATABASE_URL=postgresql+asyncpg://redteam:redteam@localhost:5432/redteam ``` 运行 React 前端: ``` cd frontend npm install npm run dev ``` 运行测试: ``` pytest ``` ## LLM Provider 从 Configurations 页面选择模型 provider,或者在 `.env` 中进行设置: ``` LLM_PROVIDER=azure_openai AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= AZURE_OPENAI_DEPLOYMENT= AZURE_OPENAI_API_VERSION=2024-12-01-preview ``` 支持的 provider 包括 Azure OpenAI、OpenAI、AWS Bedrock、Ollama localhost、Hugging Face 和 Anthropic。如果配置的 provider 尚未就绪,平台将使用确定性的本地后备方案,以确保 demo、测试和 mock target 能够继续运行。 ## 仓库结构 ``` checks/ Dynamic detector plugins scenarios/ Dynamic attack scenario plugins targets/ JSON target templates engine/ Orchestration, loaders, judge, target execution frontend/ React frontend ui/ Legacy Streamlit frontend core/ Settings, schemas, API, LLM client, logging database/ SQLAlchemy models and repository reports/ Generated JSON/PDF reports logs/ Structured JSON logs configs/ Scan defaults tests/ Unit tests docs/ Architecture, mockups, examples ``` ## 架构 ``` flowchart LR UI["React UI"] --> API["FastAPI API"] UI --> ORCH["Scan Orchestrator"] API --> ORCH ORCH --> AE["Attack Engine"] ORCH --> DE["Detector Engine"] AE --> SL["Scenario Loader"] DE --> DL["Detector Loader"] AE --> TE["Target Executor"] AE --> JA["Judge Agent"] JA --> LLM["Configured LLM Provider"] DE --> LLM TE --> TARGET["Target App"] ORCH --> DB["PostgreSQL / asyncpg SQLAlchemy"] ORCH --> REPORTS["Reports"] ORCH --> LOGS["JSON Logs"] ``` ## 目标流式与非流式配置 目标工作流同时支持常规 HTTP 响应和 Server-Sent Events (SSE) 流式传输。 - 非流式:省略 `streaming`(或将 `streaming.enabled` 设置为 `false`)。 - 流式:在工作流步骤中(通常是 `next_turn`)将 `streaming.enabled` 设置为 `true`。 ### 非流式示例 ``` { "type": "none", "workflow": { "next_turn": { "enabled": true, "method": "POST", "url": "https://example.app/chat", "headers": {"Content-Type": "application/json"}, "body": { "message": "{{prompt}}", "session_id": "{{session_id}}" }, "response_message_path": "response.text" } } } ``` ### 流式示例 (SSE) ``` { "type": "none", "workflow": { "next_turn": { "enabled": true, "method": "POST", "url": "https://example.app/chat/stream", "headers": {"Accept": "text/event-stream"}, "body": { "message": "{{prompt}}", "session_id": "{{session_id}}" }, "streaming": { "enabled": true, "response_message_path": "delta.content", "response_session_id_path": "meta.task_id", "stop_conditions": [ {"value": "[DONE]"}, {"path": "result.final", "value": "true"} ], "select_conditions": [ {"path": "delta.role", "value": "agent"} ] } } } } ``` ### 条件匹配规则 - `value: "true"` 或 `"false"`:严格布尔值匹配。 - `value: "*"`:字段存在性匹配(`not None`)。 - 任何其他值:精确字符串匹配(`str(value) == signal`)。 对于停止条件: - 如果省略 `path`,则在 JSON 解析之前的原始 SSE `data:` 内容上进行匹配(例如 `[DONE]`)。 - 如果提供了 `path`,则在解析后的 JSON 数据块上进行匹配。 对于选择条件: - 所有选择条件都必须匹配,然后才会追加数据块内容。 - 通过 `response_session_id_path` 提取 Session ID 的操作会在每个解析后的数据块上运行,且先于选择过滤。 ## 扩展 在 `scenarios//` 下添加一个场景文件,使其 `get_scenario()` 返回一个暴露 `metadata` 和异步 `run(...)` 的对象。 在 `checks//` 下添加一个检测器文件,使其 `get_detector()` 返回一个暴露 `metadata` 和异步 `evaluate(scenario_result)` 的对象。 加载器支持带有空格和连字符的文件名,因此插件目录可以与 OWASP 类别名称完全匹配。 ## 安全说明 密钥从 `.env` 加载,并会在日志中进行脱敏处理。目标身份验证可以引用环境变量。提示词日志是面向报告设计的,在对敏感的生产目标运行之前应进行审查。 ## Docker ``` docker compose up --build ``` API:`http://localhost:8000` 前端:`http://localhost:5173`
标签:AV绕过, DLL 劫持, FastAPI, React, Syscalls, 人工智能, 大语言模型, 测试用例, 用户模式Hook绕过, 红队评估, 请求拦截, 逆向工具