prabhakaran-jm/shadowlab-ai
GitHub: prabhakaran-jm/shadowlab-ai
ShadowLab 是一个面向 AI API 的混沌工程与对抗性测试平台,能够自动生成攻击提示、检测提示注入等安全漏洞并给出修复建议。
Stars: 0 | Forks: 0
# ShadowLab – AI API 的混沌工程
**在用户利用之前,自动发现 AI API 中的对抗性故障。**
## 问题
AI API 经常在对抗性或边缘情况输入下发生故障。常见的故障模式包括:
- **Prompt injection(提示注入)** – 用户覆盖系统指令或注入恶意提示
- **System prompt leakage(系统提示泄露)** – 内部指令或系统提示在响应中暴露
- **Policy bypass(策略绕过)** – 通过假设、角色扮演或措辞绕过护栏
- **Edge-case inputs(边缘情况输入)** – 触发不安全行为的意外或畸形输入
开发者缺乏在这些漏洞被生产环境利用之前主动测试它们的工具。
## 解决方案
ShadowLab 是一个对抗性测试平台,它能够:
- 通过 **DigitalOcean Gradient™ AI** 或精选种子集**生成对抗性提示**
- 对任何 HTTP AI API 端点**执行自动化红队扫描**
- 使用启发式规则和 **Gradient AI** 驱动的响应分析**检测漏洞**
- 通过开发者友好的修复建议(包括 Gradient 生成的建议)**建议修复**
- **计算安全评分**,以便您可以随时间跟踪和比较 API 的鲁棒性
## 架构
| 组件 | 描述 |
|----------|-------------|
| **Frontend** | Next.js 仪表板 – 扫描表单、实时控制台、安全报告、结果表 |
| **Backend** | FastAPI 扫描引擎 – `/scan`、`/scan/demo`、健康检查 |
| **DigitalOcean Gradient™ AI** | GPT-OSS-20B 用于提示生成;Llama 3.3 70B 用于漏洞分析(双模型设计优化了性能和成本)。|
| **Attack generator** | 当设置了 `GRADIENT_MODEL_ACCESS_KEY` 时调用 Gradient AI;否则使用种子攻击(JSON)|
| **Target runner** | 通过 HTTP 将提示发送到目标 API 并返回响应文本 |
| **Response judge** | 启发式规则 + 可选的 Gradient AI 分析,用于提供原因和修复建议 |
| **Safety scoring** | 0–100;仅失败的测试会降低分数(通过的测试不扣分)|
| **Deployment** | DigitalOcean App Platform(可选)。存储:DigitalOcean Spaces(可选)|
## 功能
- **对抗性攻击生成** – Gradient AI 生成或基于种子(提示注入、系统提示提取、策略绕过)
- **自动化漏洞检测** – 通过单次 API 调用或从仪表板运行完整扫描
- **开发者友好的修复建议** – 可行的建议(包括 Gradient AI 增强)
- **安全评分报告** – 根据发现结果的严重程度得出的 0–100 分
- **安全报告仪表板** – 摘要、漏洞计数、结果表、建议修复
- **实时攻击控制台** – 扫描运行时的进度指示器(计划支持流式传输)
## 演示流程
1. **启动堆栈** – 运行后端(`uvicorn`)和前端(`npm run dev`)。
2. **打开仪表板** – 访问前端 URL(例如 `http://localhost:3000`)。
3. **输入目标** – 提供 API 端点 URL 和可选的目标描述。
4. **开始扫描** – 点击 “Start Scan”;控制台显示进度。配置 Gradient 后,攻击由 **DigitalOcean Gradient™ AI 生成**。
5. **查看报告** – 安全评分、漏洞摘要、结果表和建议修复(配置后,Gradient AI 可提供推理和修复文本)。
6. **可选** – 尝试 `GET /scan/demo` 对模拟端点进行快速扫描。
## 快速开始(3 条命令)
```
cd backend && pip install -r requirements.txt && cp .env.example .env && uvicorn app.main:app --reload
# 在另一个终端中:
cd frontend && npm install && npm run dev
```
然后打开 `http://localhost:3000`。可选:在 `backend/.env` 中设置 `GRADIENT_MODEL_ACCESS_KEY`(或 `GRADIENT_API_KEY`)以启用 Gradient AI;参见 [docs/GRADIENT_SETUP.md](docs/GRADIENT_SETUP.md)。要在本地扫描内置的模拟易受攻击 API,请在 `backend/.env` 中设置 `ALLOW_LOCALHOST_TARGET=1`。
## 本地运行
### Backend
```
cd backend
pip install -r requirements.txt
cp .env.example .env # then set GRADIENT_MODEL_ACCESS_KEY or GRADIENT_API_KEY for Gradient AI
uvicorn app.main:app --reload
```
API: `http://localhost:8000`
文档: `http://localhost:8000/docs`
**目标 URL 限制:** 除非设置 `ALLOW_LOCALHOST_TARGET=1`(用于 mock-vulnerable-api 演示),否则私有和 localhost URL 将被拒绝。
### Frontend
```
cd frontend
npm install
npm run dev
```
仪表板: `http://localhost:3000`。对于生产环境,请将 `NEXT_PUBLIC_API_URL` 设置为您的后端 URL。
要在本地运行生产构建:`npm run build` 然后 `npm start`(除非设置了 `PORT`,否则仍将在端口 3000 上提供服务)。
### 测试
**Backend (pytest):**
```
cd backend
pip install -r requirements.txt # includes pytest, pytest-asyncio
pytest tests/ -v
```
**Frontend (Jest + React Testing Library):**
```
cd frontend
npm install
npm run test
```
## 部署 (DigitalOcean App Platform)
要在 [DigitalOcean App Platform](https://docs.digitalocean.com/products/app-platform/) 上运行 ShadowLab:
1. 将此仓库推送到 GitHub 并在 [Apps](https://cloud.digitalocean.com/apps) 仪表板中连接它(或使用规范:在 `.do/app.yaml` 中设置您的仓库后执行 `doctl apps create --spec .do/app.yaml`)。
2. 添加两个服务:**backend**(源目录 `backend`,运行 `sh run.sh`,端口 8080)和 **frontend**(源目录 `frontend`,`npm run build` / `npm start`,端口 8080)。
3. 设置 **backend** 环境变量:`CORS_ORIGINS` = 您的前端 Live URL;可选 `GRADIENT_MODEL_ACCESS_KEY`。
4. 设置 **frontend** 环境变量:`NEXT_PUBLIC_API_URL` = 您的后端 Live URL,然后重新部署前端。
有关完整的分步指南和故障排除,请参阅 **[docs/DEPLOYMENT.md](/>)**。
## 我们如何使用 DigitalOcean Gradient™ AI
**设置:** 有关 **GRADIENT_MODEL_ACCESS_KEY**(或 **GRADIENT_API_KEY**)和 **GRADIENT_API_URL**,请参阅 [docs/GRADIENT_SETUP.md](docs/GRADIENT_SETUP.md)。
ShadowLab 使用 **DigitalOcean Gradient™ AI** 并采用双模型设置:
1. **对抗性提示生成** – 一个轻量级模型(默认:**GPT-OSS-20B**)根据目标描述生成攻击提示。快速且成本高效。
2. **漏洞分析** – 一个更强大的模型(默认:**Llama 3.3 70B**)分析失败的响应,并为报告生成 **reason**(原因)和 **suggested_fix**(建议修复)。
此设计优化了性能和成本。当未设置 Model Access Key 时,应用程序会回退到种子攻击和仅启发式判断。
这使得 pipeline 在没有 API key 的情况下也能工作,同时为黑客松展示了完整的 Gradient 集成。我们使用**快速、低成本的模型**进行批量提示生成,使用**高推理能力的模型**分析故障并建议修复——展示了生产级风格的 Gradient 模型选项用法。
**目标 API 契约:** 扫描发送带有 JSON body `{"message": ""}` 的 `POST` 请求。您的目标 API 应接受此格式(或使用位于 `http://localhost:8000/mock-vulnerable-api` 的内置模拟端点,并设置 `ALLOW_LOCALHOST_TARGET=1`)。
## 黑客松
为 **DigitalOcean Gradient™ AI Hackathon** 构建。该应用程序集成了 Gradient AI 用于攻击生成和漏洞推理,如上所述。
## 未来改进
- **实时攻击流** – 在攻击事件和判断结果完成时进行流式传输
- **更深层次的 LLM 分析** – 更多地利用 Gradient AI 进行细致的判决和解释
- **CI/CD 集成** – 当安全评分或关键发现超过阈值时,使构建失败或阻止部署
- **高级对抗性变异** – 使用 Gradient 变异和演化提示以获得更广泛的覆盖范围
标签:AI安全, API安全, AV绕过, Chat Copilot, DigitalOcean, DLL 劫持, FastAPI, JSON输出, 人工智能安全, 健壮性测试, 合规性, 大语言模型, 安全合规, 安全规则引擎, 安全评分, 对抗攻击, 敏感信息检测, 混沌工程, 私有化部署, 策略绕过, 系统提示泄露, 网络代理, 自动化攻击, 自动化渗透测试, 逆向工具, 防御规避, 零日漏洞检测