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 测试你拥有或被授权测试的系统。
标签:后端开发, 大语言模型安全, 机密管理, 红队评估, 自动化渗透测试