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抓取, 严重性评估, 人工智能安全, 代码审查, 修复建议, 合规性, 大模型代理, 安全防御评估, 密钥泄露防护, 强化学习环境, 无后门, 机器学习安全, 真实漏洞样本, 网络安全, 自动化代码审计, 请求拦截, 软件安全, 逆向工具, 隐私保护