Dystheism16/AI-RedTeam-env
GitHub: Dystheism16/AI-RedTeam-env
这是一个基于OpenEnv的强化学习环境,旨在训练和评估AI代理在代码审查中发现真实安全漏洞的能力。
Stars: 0 | Forks: 0
## 标题:AI-RedTeam-env
emoji: 🛡️
colorFrom: red
colorTo: purple
sdk: docker
pinned: false
# AI Red-Team 审查环境
一个 OpenEnv RL 环境,其中 AI 代理扮演**安全代码审查员**的角色。
该代理会获得真实的易受攻击代码片段,并必须识别漏洞,
评估严重程度,解释问题,并建议具体的修复方案。
## Quick Start — 在您的笔记本上运行
### 您首先需要准备
- Python 3.10, 3.11 或 3.12 → 在 **python.org** 下载
- 一个 Hugging Face 账户(免费)→ **huggingface.co**
- 您的 HF token → **huggingface.co/settings/tokens**(创建一个 Read token)
### Step 1 — 下载项目
下载所有 10 个文件并将它们放在一个文件夹中,例如:
```
D:\AI Red-Team Review Environment\
```
您的文件夹应该看起来像这样:
```
ai-redteam-env/
├── inference.py
├── app.py
├── environment.py
├── models.py
├── tasks.py
├── grader.py
├── openenv.yaml
├── requirements.txt
├── Dockerfile
└── README.md
```
### Step 2 — 打开 PowerShell 并进入您的文件夹
```
cd "D:\AI Red-Team Review Environment"
```
### Step 3 — 创建虚拟环境
```
python -m venv venv
```
如果遇到权限错误,请先运行此命令:
```
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### Step 4 — 激活虚拟环境
**Windows (PowerShell):**
```
venv\Scripts\activate
```
**Mac / Linux:**
```
source venv/bin/activate
```
您将在提示符的开头看到 `(venv)`。这意味着成功了。
### Step 5 — 安装依赖
```
pip install -r requirements.txt
```
这需要 1-2 分钟。请等待完成。
### Step 6 — 启动环境服务器
```
python app.py
```
您应该看到:
```
INFO: Uvicorn running on http://0.0.0.0:7860
```
**保持此终端打开。** 服务器必须保持运行。
### Step 7 — 打开第二个 PowerShell 标签页
在 PowerShell 中点击 **+** 按钮打开一个新标签页,然后:
```
cd "D:\AI Red-Team Review Environment"
venv\Scripts\activate
```
### Step 8 — 设置您的 API 凭证
**Windows PowerShell:**
```
$env:HF_TOKEN = "hf_your_token_here"
$env:API_BASE_URL = "https://router.huggingface.co/v1"
$env:MODEL_NAME = "Qwen/Qwen2.5-72B-Instruct"
$env:ENV_BASE_URL = "ws://localhost:7860"
```
**Mac / Linux:**
```
export HF_TOKEN="hf_your_token_here"
export API_BASE_URL="https://router.huggingface.co/v1"
export MODEL_NAME="Qwen/Qwen2.5-72B-Instruct"
export ENV_BASE_URL="ws://localhost:7860"
```
将 `hf_your_token_here` 替换为您在 huggingface.co/settings/tokens 的实际 token
### Step 9 — 运行 AI 代理
```
python inference.py
```
您将看到代理实时审查每个代码片段:
```
[START] task=ai-redteam-review env=ai-redteam-review-env model=Qwen/Qwen2.5-72B-Instruct
[STEP] step=1 action=task=easy_sql_injection vulns=['SQL_INJECTION'] sev=critical reward=0.9900 done=false error=null
[STEP] step=2 action=task=easy_hardcoded_secret vulns=['HARDCODED_SECRET'] sev=high reward=0.9900 done=false error=null
...
[END] success=true steps=9 rewards=0.9900,0.9900,0.9900,0.9900,0.9200,0.9900,0.7500,0.9900,0.6500
```
**success=true 表示成功了!🎉**
## 故障排除
| 错误 | 修复 |
|---|---|
| `'source' is not recognized` | 您使用的是 Windows。请使用 `venv\Scripts\activate` |
| `set` 命令无法设置环境变量 | 在 PowerShell 中使用 `$env:HF_TOKEN = "..."` |
| `HF_TOKEN environment variable is required` | 在运行 inference.py 之前再次设置 `$env:HF_TOKEN` |
| `ModuleNotFoundError` | 先运行 `venv\Scripts\activate`,然后运行 `pip install -r requirements.txt` |
| `model_not_supported` | 设置 `$env:MODEL_NAME = "Qwen/Qwen2.5-72B-Instruct"` |
| `api-inference.huggingface.co is no longer supported` | 设置 `$env:API_BASE_URL = "https://router.huggingface.co/v1"` |
| 端口 7860 已被占用 | Windows: `netstat -ano \| findstr :7860` 然后 `taskkill /PID /F` |
## 使用 Docker 运行
```
docker build -t ai-redteam-env .
docker run -p 7860:7860 ai-redteam-env
```
## 部署到 Hugging Face Spaces
1. 前往 **huggingface.co/new-space**
2. 名称:`ai-redteam-env` | SDK:**Docker** | 可见性:Public
3. 上传所有 10 个文件
4. 前往 **Settings → Variables and secrets**,添加:
- `API_BASE_URL` = `https://router.huggingface.co/v1`
- `MODEL_NAME` = `Qwen/Qwen2.5-72B-Instruct`
- `HF_TOKEN` = 您的 token(作为 **secret** 添加)
5. 等待 Space 显示 **Running**(绿色)
6. 测试它:`https://YOUR_USERNAME-ai-redteam-env.hf.space/health`
## 本项目的作用 — 简单说明
- **服务器** (`app.py`) 逐一给 AI 代理提供代码问题
- **代理** (`inference.py`) 使用 LLM (Qwen) 来审查代码
- **评分器** (`grader.py`) 对答案进行评分:它发现 bug 了吗?严重程度对吗?修复建议好吗?
- 有 **9 个代码片段** 包含真实的安全漏洞 — 3 个简单,3 个中等,3 个困难
- 代理在每个任务中获得的奖励严格在 **(0.0, 1.0)** 之间(永远不会是精确的 0 或 1)
## 环境概览
| 属性 | 值 |
|---|---|
| 任务数 | 9 (3 easy, 3 medium, 3 hard) |
| Episode 长度 | 9 步 |
| 每步奖励 | (0.0, 1.0) 不包含两端(部分得分) |
| 最大总奖励 | 8.91 |
| 所需硬件 | 2 vCPU, 8 GB RAM (无需 GPU) |
## 任务
### 简单
| 任务 | 漏洞 | 严重程度 |
|---|---|---|
| `easy_sql_injection` | SQL_INJECTION | critical |
| `easy_hardcoded_secret` | HARDCODED_SECRET | high |
| `easy_command_injection` | COMMAND_INJECTION | critical |
### 中等
| 任务 | 漏洞 | 严重程度 |
|---|---|---|
| `medium_xss_idor` | XSS + IDOR | high |
| `medium_path_traversal` | PATH_TRAVERSAL | high |
| `medium_insecure_deserialize` | INSECURE_DESERIALIZATION | critical |
### 困难
| 任务 | 漏洞 | 严重程度 |
|---|---|---|
| `hard_jwt_none_algo` | JWT_NONE_ALGORITHM + BROKEN_AUTHENTICATION | critical |
| `hard_race_condition_toctou` | TOCTOU_RACE_CONDITION | high |
| `hard_ssrf_redirect_chain` | SSRF + OPEN_REDIRECT | critical |
## 奖励函数
每一步最多得分为 0.99:
| 组成部分 | 最高分 | 获得方式 |
|---|---|---|
| 发现漏洞 | 0.50 | 发现部分漏洞给予部分得分 |
| 正确的严重程度 | 0.20 | 相差一个级别得 0.10 |
| 好的解释 | 0.15 | 必须使用技术关键词 |
| 好的修复建议 | 0.15 | 必须提及实际的修复方法 |
## 基线分数
使用 `Qwen/Qwen2.5-72B-Instruct` 测试:
| 难度 | 分数 |
|---|---|
| Easy (3 tasks) | 每个 ~0.99 |
| Medium (3 tasks) | 每个 ~0.95 |
| Hard (3 tasks) | 每个 ~0.80 |
| **总体** | **~92%** |
## API 端点
| 方法 | 路径 | 作用 |
|---|---|---|
| POST | `/reset` | 开始新的 episode |
| POST | `/step` | 提交 action,获取 reward |
| GET | `/state` | 检查当前状态 |
| GET | `/health` | 检查服务器是否运行 |
| GET | `/schema` | Action/observation 格式 |
| GET | `/metadata` | 环境信息 |
| WS | `/ws` | 代理用的 WebSocket |
## 项目结构
```
ai-redteam-env/
├── inference.py ← the AI agent (run this to play)
├── app.py ← the server (run this first)
├── environment.py ← game logic
├── models.py ← data models
├── tasks.py ← 9 security challenges
├── grader.py ← scoring logic
├── openenv.yaml ← OpenEnv config
├── requirements.txt
├── Dockerfile
└── README.md
```
## 许可证
BSD-3-Clause
标签:AI 红队, Docker, Hugging Face, OpenEnv, Python, TLS抓取, 严重性评估, 人工智能安全, 代码审查, 修复建议, 合规性, 大模型代理, 安全防御评估, 密钥泄露防护, 强化学习环境, 无后门, 机器学习安全, 真实漏洞样本, 网络安全, 自动化代码审计, 请求拦截, 软件安全, 逆向工具, 隐私保护