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绕过, 红队评估, 请求拦截, 逆向工具