lucasrosati/claude-security-agents
GitHub: lucasrosati/claude-security-agents
一个基于 Claude Code 代理的自动化红蓝队安全审计与修复工具。
Stars: 6 | Forks: 0
# Claude Code 安全代理:自动化红队 + 蓝队
将两个 `.md` 文件放入你的项目。获得自动化的渗透测试和修复——无需框架、无需基础设施、无需安全背景。
🇧🇷 [Leia em Português](./README.pt-BR.md)
## 目录
1. [问题](#the-problem)
2. [解决方案](#the-solution)
3. [工作原理](#how-it-works)
4. [设置(2 分钟)](#setup-2-minutes)
5. [红队 — 进攻代理](#red-team--offensive-agent)
6. [蓝队 — 防御代理](#blue-team--defensive-agent)
7. [运行代理](#running-the-agents)
8. [发现的真实漏洞](#real-vulnerabilities-found)
9. [针对你的技术栈定制](#customizing-for-your-stack)
10. [常见问题](#faq)
## 问题
你正在快速构建产品、交付功能。但安全总是被推迟到“以后”。
meanwhile,你的代码库在悄悄积累漏洞:未经过滤的 HTML 渲染、公共 API 端点、未受保护的管理路由、不验证签名的 Webhook 处理器。你不会在代码审查中发现它们——它们隐藏在组件之间的交互中,隐藏在你凌晨 2 点的假设里,隐藏在从文档复制粘贴的第三方集成中。
雇佣渗透测试人员花费数千美元。运行 SAST 工具会给你 200 个通用警告,其中大多数是误报。而且你仍然有功能要交付。
## 解决方案
两个针对 Claude Code 的专用代理——每个都是一个约 120 行的 Markdown 文件:
| 代理 | 角色 | 模式 | 作用 |
|-------|------|------|-------------|
| **红队** | 攻击者 | 只读 | 扫描代码库中的漏洞。 像渗透测试人员一样思考。 生成包含严重性、攻击场景和修复建议的结构化报告 |
| **蓝队** | 防御者 | 编辑模式 | 接收红队报告并修复每个漏洞。编写代码、添加测试、提交更改 |
它们作为一个反馈循环工作:
```
Red Team scans → finds 14 vulnerabilities → generates report
↓
Blue Team reads report → fixes 12/14 → commits fixes
↓
Red Team re-scans → finds 3 new issues → generates report
↓
Blue Team fixes → hardening complete
```
每一轮只需几分钟,而不是几天。
## 工作原理
Claude Code 支持 [自定义代理](https://docs.anthropic.com/en/docs/claude-code/agents) —— 位于 `.claude/agents/` 的 Markdown 文件,为 Claude 提供专门的人格、方法论和受限的工具访问。
红队代理获得 **只读工具**(读取、grep、glob、npm audit)。它可以分析一切,但不能修改任何内容。
蓝队代理获得 **编辑工具**(读取、写入、编辑、git)。它可以修改代码、安装包、运行测试并提交。
两者都从 `CLAUDE.md` 继承项目上下文,因此它们无需额外配置即可理解你的技术栈、架构和约束。
## 设置(2 分钟)
### 1. 创建代理目录
```
mkdir -p .claude/agents
```
### 2. 复制代理文件
```
# 选项 A:克隆此仓库并复制
git clone https://github.com/lucasrosati/claude-security-agents.git /tmp/security-agents
cp /tmp/security-agents/agents/red-team-scanner.md .claude/agents/
cp /tmp/security-agents/agents/blue-team-defender.md .claude/agents/
# 选项 B:直接下载
curl -o .claude/agents/red-team-scanner.md https://raw.githubusercontent.com/lucasrosati/claude-security-agents/main/agents/red-team-scanner.md
curl -o .claude/agents/blue-team-defender.md https://raw.githubusercontent.com/lucasrosati/claude-security-agents/main/agents/blue-team-defender.md
```
### 3. 运行首次审计
在项目中打开 Claude Code 并输入:
```
Run the red-team-scanner agent on this codebase
```
仅此而已。没有配置文件、没有 API 密钥、没有 Docker 容器。
## 红队 — 进攻代理
**文件:** [`agents/red-team-scanner.md`](./agents/red-team-scanner.md)
**模型:** Sonnet(快速、成本高效的扫描)
**权限模式:** `plan`(只读 — 不能修改代码)
### 分析内容
| 类别 | 示例 |
|----------|---------|
| 身份验证与授权 | 破损的身份验证、弱 JWT 验证、缺少速率限制、IDOR、权限提升 |
| API 安全 | 公共端点、缺少对象级授权、Mass Assignment、枚举 |
| 输入验证与注入 | SQL/NoSQL 注入、XSS(存储/反射/DOM)、SSRF、路径遍历 |
| 文件上传 | MIME 欺骗、缺少魔数验证、公共存储暴露 |
| 数据安全与合规 | 硬编码密钥、日志中的 PII、不安全的令牌存储、LGPD/HIPAA 缺口 |
| 基础设施 | CORS 配置错误、缺少安全头(CSP、HSTS)、容器问题 |
| 管理面板 | 未受保护的管理路由、隐藏端点、会话劫持 |
| 支付与计费 | 缺少 Webhook 验证、价格操纵、订阅绕过 |
| Supabase 特定 | 破损的 RLS 策略、service_role 密钥泄露、跨租户访问 |
### 输出格式
对于发现的每个漏洞:
```
[VULN-001] XSS via unsanitized AI content rendering
Severity: HIGH
Location: src/pages/StudySession.tsx:267
Description: AI-generated HTML rendered via dangerouslySetInnerHTML without sanitization
Attack scenario: Attacker injects into content now renders as plain text
Prevention: All AI content must pass through sanitizeAIContent() before dangerouslySetInnerHTML
```
### 强化检查清单
修复所有漏洞后,蓝队会生成最终检查清单:
```
- [x] Security headers implemented
- [x] Rate limiting active on auth and API
- [x] CORS restricted to known origins
- [x] Logging and audit trail working
- [x] Sensitive data encrypted at rest and in transit
- [x] Secrets in env vars (none hardcoded)
- [x] Dependencies updated (0 critical/high CVEs)
- [x] RLS policies audited
- [x] Input validation on all endpoints
- [x] File upload secured
- [x] Admin panel protected
- [x] Webhooks verified
- [ ] LGPD compliance (consent, data retention, audit log)
```
## 运行代理
### 首次审计(红队)
```
# In Claude Code
> Run the red-team-scanner agent on this codebase
```
红队将:
1. 映射你的技术栈、端点、路由和中间件
2. 运行静态分析以查找脆弱模式
3. 运行 `npm audit` 检查依赖项中的已知 CVE
4. 检查配置(环境变量、CORS、头信息)
5. 跟踪敏感数据流(PII、令牌、凭证)
6. 生成编号报告(VULN-001、VULN-002、...)
### 应用修复(蓝队)
```
# In Claude Code,在收到红队报告后
> Run the blue-team-defender agent. Here is the Red Team report: [paste report]
```
蓝队将:
1. 按严重性优先(CRITICAL 和 HIGH 优先)
2. 反向工程每个攻击向量
3. 在代码中实现修复
4. 运行测试验证未破坏功能
5. 分别提交每个修复组:`fix(security): [VULN-XXX] 描述`
6. 生成强化检查清单
### 重新扫描(迭代)
```
# 再次运行红队以捕获回归或新问题
> Run the red-team-scanner agent again. Previous audit fixed VULN-001 through VULN-012.
```
重复此过程,直到红队报告返回干净结果。
### 快捷命令
| 命令 | 作用 |
|---------|-------------|
| `Run red-team-scanner` | 完整安全审计 |
| `Run blue-team-defender` | 修复红队报告中的漏洞 |
| `Run red-team-scanner on src/api/` | 扫描特定目录 |
| `Run red-team-scanner focusing on authentication` | 针对性扫描 |
## 发现的真实漏洞
这些是代理在一个生产 SaaS 应用(React + Supabase + Edge Functions)中发现的真实漏洞:
### 严重
| ID | 漏洞 | 影响 |
|----|--------------|--------|
| VULN-002 | 附属系统中的自引用 | 用户可为自己生成佣金 |
| VULN-010 | 重复的佣金处理 | 同一支付可能触发双重佣金 |
### 高危
| ID | 漏洞 | 影响 |
|----|--------------|--------|
| VULN-003 | 4 个页面中的 XSS(通过 `dangerouslySetInnerHTML`) | 脚本、学习内容、会话窃取 |
| VULN-004 | 无身份验证的 API 端点 | 任何人都可消耗 AI 配额 |
| VULN-005 | 通过竞争条件访问的管理路由 | 普通用户可访问管理面板 |
| VULN-006 | 可被覆盖的推荐字段 | 附属归因操纵 |
| VULN-007 | 易受 HTML 注入的邮件模板 | 通过操纵用户名进行钓鱼 |
| VULN-008 | 未验证签名的 JWT 解析 | 身份验证绕过 |
### 中危
| ID | 漏洞 | 影响 |
|----|--------------|--------|
| VULN-009 | 批量导入端点无有效负载限制 | 通过超大请求进行 DoS |
| VULN-011 | 服务器到服务器 Webhook 的 CORS 通配符 | 跨源请求滥用 |
| VULN-012 | 无身份验证的 CPF 枚举 | LGPD 违规、数据收集 |
| VULN-013 | SQL 函数具有错误的易失性 | 查询计划器中的缓存中毒 |
所有漏洞均由蓝队代理自动修复。
## 针对你的技术栈定制
这些代理开箱即用,适用于 Claude Code 支持的任何技术栈。如需针对你的项目优化:
### 1. 修改身份行
在两个代理文件中替换项目描述:
两个代理文件都以通用身份行开头。将其替换为你的项目上下文:
```
# 默认(通用)
You are the **Red Team Scanner** for this project.
# 定制(示例)
You are the **Red Team Scanner** for Acme Corp — a B2B fintech SaaS handling payment processing.
```
### 2. 添加特定技术栈部分
如果你使用 Firebase 而非 Supabase,替换第 9 节:
```
### 9. Firebase 特定
- Firestore security rules audit
- Firebase Auth configuration
- Cloud Functions input validation
- Storage rules (public vs private)
```
### 3. 添加合规要求
```
### 10. SOC 2 合规
- Access logging for all sensitive operations
- Data encryption at rest and in transit
- Incident response procedures documented
- Vendor security assessment
```
### 4. 修改模型
如需更深入分析,切换至 Opus:
```
model: opus # more thorough, higher cost
```
如需对大型代码库进行更快的扫描:
```
model: haiku # faster, cheaper, less thorough
```
### 5. 修改语言
代理可在 Claude 支持的任何语言中工作。只需重写指令:
```
# 英文版本
You are the **Red Team Scanner** for this project.
## 身份
- Senior Security Engineer specialized in SaaS, OWASP Top 10, API Security
```
## 常见问题
**使用这些代理需要安全经验吗?**
不需要。红队以通俗语言解释每个漏洞及攻击场景。蓝队会自动修复它们。你只需检查变更。
**红队会修改我的代码吗?**
不会。它运行在 `plan` 模式(只读)。它可以读取文件、搜索代码并运行 `npm audit`,但不能写入、编辑或执行任意命令。
**蓝队会破坏我的应用吗?**
它在每次修复后运行测试并单独提交更改。如果出现问题,你可以回滚单个提交。它还运行在 `acceptEdits` 模式,因此每次更改前你都需要批准。
**成本是多少?**
这些代理使用你现有的 Claude Code 订阅或 API 信用。对中等项目(约 100 个文件)的完整审计通常需要 5–15 分钟(使用 Sonnet)。
**可以在 CI/CD 中运行吗?**
不能直接运行——Claude Code 代理是交互式的。但你可以将定期审计安排为安全工作流的一部分。
**代理是特定于语言的吗?**
指令是葡萄牙语,但适用于任何编程语言。Claude Code 理解任何代码库。随意将代理文件翻译为你偏好的语言。
**与 Snyk 或 SonarQube 等工具有何不同?**
SAST 工具基于模式查找问题(已知 CVE、简单代码异味)。这些代理理解你的架构、跨组件追踪数据流,并发现逻辑漏洞(如自引用、竞争条件、权限提升),这是静态工具无法发现的。
## 架构
```
.claude/
└── agents/
├── red-team-scanner.md ← ~120 lines, read-only
└── blue-team-defender.md ← ~140 lines, edit mode
Workflow:
┌──────────────┐ report ┌──────────────┐ fixes ┌──────────┐
│ Red Team │ ──────────→ │ Blue Team │ ─────────→ │ Codebase │
│ (scanner) │ │ (defender) │ │ (safer) │
└──────────────┘ └──────────────┘ └──────────┘
↑ │
└───────────────── re-scan ─────────────────────────────┘
```
## 致谢与链接
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) —— Anthropic 的编码代理
- [Claude Code 代理](https://docs.anthropic.com/en/docs/claude-code/agents) —— 自定义代理文档
- [OWASP Top 10](https://owasp.org/www-project-top-ten/) —— 安全漏洞参考
**如果这帮助你保护了应用,请给仓库一颗 ⭐ 并分享给其他快速交付的开发者。**
标签:AI 安全, Claude Code, CSRF, Markdown, SEO: Claude 安全代理, SEO: 代码安全无门槛, SEO: 漏洞扫描工具, SEO: 红队蓝队自动化, SEO: 自动化安全审计, SSRF, Web 漏洞, XSS, 代码安全, 代码审查, 信息泄露, 单文件代理, 开发者安全, 快速部署, 攻击模拟, 数据展示, 无框架, 无需基础设施, 暗色界面, 权限绕过, 漏洞情报, 漏洞枚举, 红队, 自动化渗透测试, 防御修复, 防御加固, 驱动签名利用