Leontp05/redline
GitHub: Leontp05/redline
Redline 是一个用于 LLM 驱动应用的自动化红队安全测试平台,通过运行多种攻击 payload 对应用防御进行评分并自动强化系统 prompt。
Stars: 0 | Forks: 0
# Redline — AI 安全测试平台
一个用于 LLM 驱动应用的自动化红队平台。可跨 6 个类别(越狱、注入、编码、多轮、提取)运行 40 多种攻击 payload,对防御进行评分,并自动强化系统 prompt。
## 技术栈
- **框架**:Next.js 16 (App Router) + TypeScript
- **数据库**:Neon 上的 PostgreSQL (Prisma ORM)
- **认证**:NextAuth v5 (GitHub + Google OAuth)
- **样式**:Tailwind CSS 4 + shadcn/ui
- **状态**:TanStack Query + Zustand
- **3D/Canvas**:React Three Fiber(落地页 hero 区)
- **支付**:Stripe(可选 —— 无密钥时以开发模式运行)
## 项目结构
```
redline/
├── src/
│ ├── app/
│ │ ├── page.tsx # Landing page (public)
│ │ ├── app/ # Application (auth-gated)
│ │ │ └── page.tsx # Dashboard, targets, scans, billing
│ │ └── api/
│ │ ├── auth/ # NextAuth routes
│ │ ├── attacks/ # Attack types catalog
│ │ ├── targets/ # CRUD for targets
│ │ ├── scans/ # Create + run scans (async)
│ │ ├── harden/ # Auto-harden + re-test
│ │ ├── billing/ # Stripe checkout/portal/webhook/usage
│ │ ├── stats/ # Dashboard stats
│ │ └── health/ # Health check
│ ├── lib/
│ │ ├── auth.ts # NextAuth config
│ │ ├── db.ts # Prisma client
│ │ ├── llm.ts # z-ai SDK wrapper (target model + harden)
│ │ ├── orchestrator.ts # Scan execution engine
│ │ ├── attacks/ # 6 attack modules
│ │ ├── scoring.ts # Severity-weighted scoring
│ │ ├── harden.ts # Harden-and-retest flow
│ │ ├── plans.ts # Free/Pro/Team plan definitions
│ │ ├── usage.ts # Quota enforcement
│ │ ├── rate-limit.ts # Per-user rate limiting
│ │ ├── stripe.ts # Stripe integration (optional)
│ │ ├── crypto.ts # AES-256-GCM encryption
│ │ ├── ssrf.ts # SSRF protection
│ │ ├── api-target.ts # API-connect mode (real HTTP fetch)
│ │ ├── cache.ts # In-memory cache (Redis-ready)
│ │ ├── logger.ts # Structured JSON logger
│ │ ├── audit.ts # Audit logging
│ │ └── session.ts # Server-side session helper
│ └── components/
│ ├── ui/ # shadcn/ui components
│ ├── landing/ # Landing page (hero, loading screen)
│ └── redline/ # App components (dashboard, views)
├── prisma/
│ └── schema.prisma # Database schema (Postgres)
├── public/
├── package.json
├── .env.example # Template — copy to .env
└── README.md
```
## 快速开始
### 1. 安装依赖
```
npm install
# 或
bun install
```
### 2. 设置数据库
1. 在 [neon.tech](https://neon.tech) 创建一个免费的 Postgres 数据库
2. 复制连接字符串
3. 将 `.env.example` 复制到 `.env` 并填写 `DATABASE_URL`
### 3. 运行迁移
```
npx prisma migrate dev
# 或
bunx prisma migrate dev
```
### 4. 设置 OAuth
**GitHub:**
1. 前往 [GitHub Settings → Developer settings → OAuth Apps → New OAuth App](https://github.com/settings/developers)
2. Homepage URL: `http://localhost:3000`
3. Callback URL: `http://localhost:3000/api/auth/callback/github`
4. 将 Client ID + Secret 复制到 `.env`
**Google:**
1. 前往 [Google Cloud Console → Credentials](https://console.cloud.google.com/apis/credentials)
2. 创建 OAuth 2.0 Client ID (Web application)
3. Authorized redirect URI: `http://localhost:3000/api/auth/callback/google`
4. 将 Client ID + Secret 复制到 `.env`
### 5. 生成密钥
```
# NextAuth secret
openssl rand -base64 32
# → 设置为 NEXTAUTH_SECRET 和 AUTH_SECRET
# Encryption key (用于静态 API keys)
openssl rand -base64 32
# → 设置为 ENCRYPT_KEY
```
### 6. 运行开发服务器
```
npm run dev
# 或
bun run dev
```
打开 [http://localhost:3000](http://localhost:3000)
## 功能
### 核心循环
- **创建目标** — 粘贴系统 prompt(模拟模式)或连接到实时的 API endpoint(API-Connect 模式)
- **运行扫描** — 针对目标触发跨越 6 个类别的 40 种攻击 payload
- **获取评分** — 按严重程度加权的 0–100 安全评分 + 各类别细分
- **自动强化** — LLM 重写你的 prompt 以填补检测到的漏洞
- **重新测试** — 完整的攻击套件针对强化后的 prompt 重新运行
- **前后对比** — 查看评分差值 + 哪些漏洞已被修复
### 攻击类别
| 类别 | Payload | 严重程度 | 示例 |
|----------|----------|----------|---------|
| 角色扮演越狱 | 8 | 8 | DAN, AIM, developer mode |
| 指令覆盖 | 8 | 7 | "Ignore previous instructions..." |
| Prompt 注入 | 6 | 9 | 伪造的 RAG 上下文中的隐藏指令 |
| 编码技巧 | 7 | 6 | Base64, leetspeak, ROT13 |
| 多轮操纵 | 3 | 9 | 渐进式升级 |
| 系统 Prompt 提取 | 8 | 8 | "Repeat everything above" |
### SaaS 功能
- **认证**:GitHub + Google OAuth (NextAuth v5)
- **多租户**:每个查询都由 userId 限定范围
- **计费**:Free / Pro ($29) / Team ($99) 计划,带有配额 + 速率限制
- **API-Connect**:攻击兼容 OpenAI 的真实 endpoint
- **安全性**:SSRF 防护、AES-256-GCM 密钥加密、审计日志记录
- **可扩展性**:数据库索引、缓存层、结构化日志记录、健康检查
## 部署
### 部署到 Vercel
1. 推送到 GitHub
2. 在 [vercel.com/new](https://vercel.com/new) 导入
3. 在 Vercel 项目设置中设置 `.env` 里的所有环境变量
4. 将 OAuth 回调 URL 更新为你的 Vercel 域名
5. 部署
### 生产环境变量
| 变量 | 值 |
|-----|-------|
| `DATABASE_URL` | 你的 Neon 连接字符串 |
| `NEXTAUTH_SECRET` | 与本地相同(或重新生成) |
| `AUTH_SECRET` | 与 NEXTAUTH_SECRET 相同 |
| `NEXTAUTH_URL` | `https://your-app.vercel.app` |
| `GITHUB_ID` | 与本地相同 |
| `GITHUB_SECRET` | 与本地相同 |
| `GOOGLE_ID` | 与本地相同 |
| `GOOGLE_SECRET` | 与本地相同 |
| `ENCRYPT_KEY` | 与本地相同(或重新生成 —— 但现有的加密密钥将无法解密) |
## 许可证
仅供教育用途。使用 Redline 测试你拥有或被授权测试的系统。
标签:后端开发, 大语言模型安全, 机密管理, 红队评估, 自动化渗透测试