name: 安全审计 description: 通过系统代码分析识别和修复漏洞。适用于执行安全评估、部署前审查、合规验证(如OWASP、PCI-DSS、GDPR)、调查已知漏洞或事件后分析。
安全审计
概述
全面的安全分析,以识别漏洞、评估风险并提供修复指导,符合行业标准(如OWASP Top 10、CVSS评分)。
输入:
- 待审计的代码库
docs/system-design.md- 架构上下文docs/api-contracts.yaml- API规范docs/feature-spec/F-##-*.md- 功能实现
输出:
- 按严重性组织安全发现(CRITICAL、HIGH、MEDIUM、LOW)
- CVSS评分和OWASP Top 10映射
- 利用场景和修复代码
- 风险优先的修复计划
快速开始
请求安全审计并提供上下文:
- 审计什么? 功能、组件或完整应用
- 关注点? 注入、认证绕过、数据泄露、访问控制、API安全
- 敏感数据? 个人身份信息、凭证、财务数据、健康信息、商业机密
- 现有安全措施? JWT/会话、RBAC/ABAC、TLS、输入验证、头部、速率限制
范围发现
Q1: 审计范围
- 特定功能或组件
- 整个应用(全面安全审计)
- 已知漏洞调查
- 合规检查(OWASP Top 10、PCI-DSS、GDPR)
- 安全问题的代码审查
- 基础设施和配置
Q2: 威胁模型
- 数据泄露和泄漏
- 认证绕过
- 注入攻击(SQL、XSS、命令)
- 访问控制失败
- API安全
- 基础设施漏洞
- 依赖漏洞
Q3: 敏感级别
- 个人身份信息(PII)
- 认证凭证
- 财务数据(支付信息、交易)
- 健康信息(HIPAA)
- 商业机密或专有数据
- 用户生成内容
Q4: 现有安全措施(可选)
- 认证方法(JWT、会话、OAuth)
- 授权模型(RBAC、ABAC)
- 加密(TLS、静态加密)
- 输入验证和清理
- 安全头部(CSP、HSTS等)
- 速率限制和节流
- 日志记录和监控
安全审查策略
顺序审查(针对性审计)
何时使用: 小代码库、单个漏洞调查、特定攻击向量、<5个文件
逐一审查漏洞区域,使用直接工具:
注入漏洞:
- SQL注入:查询中的字符串拼接(
db.query("SELECT * FROM users WHERE id = '" + id + "'")) - XSS:
dangerouslySetInnerHTML,未清理的HTML(.innerHTML = userInput) - 命令注入:Shell命令构造(
exec('rm ' + filename)) - NoSQL注入、LDAP注入
- 搜索:
db.query(、eval(、exec(、.innerHTML
认证/授权:
- 未进行认证检查的端点
- 弱密码要求
- 认证端点缺少速率限制
- 会话管理问题
- 破坏的访问控制、权限提升
- 搜索:路由处理器、认证中间件、权限检查
敏感数据暴露:
- 硬编码的机密:API密钥、密码、令牌
- API响应中过多的数据
- 日志记录敏感信息
- 未加密的传输
- 不安全存储
- 搜索:
apiKey、password、secret、token赋值
安全配置错误:
- 缺少安全头部(CSP、HSTS、X-Frame-Options)
- CORS配置错误
- 详细错误消息暴露内部信息
- 默认凭证
- 生产环境中的调试模式
- 搜索:服务器配置、错误处理器、CORS设置
依赖漏洞:
- 运行
npm audit或等效工具 - 检查有CVE的过时包
- 不必要的依赖、供应链风险
并行扫描(全面审计)
何时使用: 整个应用、多个OWASP类别、>1000行代码、多个攻击面
代理1: 注入(OWASP A03) SQL、XSS、命令、NoSQL、LDAP注入漏洞
代理2: 认证/授权(OWASP A01, A07) 缺少认证、弱密码、破坏的会话、访问控制失败、权限提升
代理3: 数据暴露(OWASP A02) 硬编码的机密、过多的API响应、日志记录敏感数据、未加密的传输、不安全存储
代理4: 配置(OWASP A05) 缺少安全头部、CORS配置错误、详细错误、默认凭证、不必要的服务
代理5: 依赖(OWASP A06) 易受攻击的包、过时版本、供应链风险
发现文档格式
对于每个漏洞:
### [SEVERITY] 问题名称
**CVSS评分:** X.X | **类别:** OWASP A##:YEAR | **位置:** `src/path/file.js:123`
**易受攻击的代码:**
[代码片段]
**利用场景:**
[如何滥用的具体示例]
**影响:**
[攻击者能达到的目标:数据访问、认证绕过、系统妥协等]
**修复:**
[安全的替换代码]
**参考:**
- OWASP: [链接]
- CWE-##: [链接]
严重性映射:
- 🔴 CRITICAL (CVSS 9.0-10.0): 立即修复,认证绕过、完整数据库访问、RCE
- 🔴 HIGH (CVSS 7.0-8.9): 几天内修复,数据泄露、显著的权限提升
- 🟡 MEDIUM (CVSS 4.0-6.9): 几周内修复,部分数据访问、有限的认证绕过
- 🟢 LOW (CVSS 0.1-3.9): 几个月内修复,信息泄露、次要配置问题
安全审计报告
生成全面报告:
# 安全审计报告: [系统名称]
## 执行摘要
**整体安全态势:** [CRITICAL / POOR / FAIR / GOOD / EXCELLENT]
**漏洞摘要:**
- CRITICAL: [X] (CVSS 9.0-10.0)
- HIGH: [Y] (CVSS 7.0-8.9)
- MEDIUM: [Z] (CVSS 4.0-6.9)
- LOW: [N] (CVSS 0.1-3.9)
**立即行动要求:**
1. [最关键问题]
2. [第二优先级]
## OWASP Top 10 评估
| 类别 | 状态 | 发现 | 优先级 |
|----------|--------|----------|----------|
| A01: 破坏的访问控制 | ✅/⚠️/❌ | [计数] | - |
| A02: 加密失败 | ✅/⚠️/❌ | [计数] | - |
| A03: 注入 | ✅/⚠️/❌ | [计数] | - |
| [继续所有10个] | | | |
## 按严重性发现
[CRITICAL漏洞]
[HIGH漏洞]
[MEDIUM漏洞]
[LOW漏洞]
## 修复计划
### 立即(24小时内)
[关键和高严重性修复]
### 短期(1周内)
[中等严重性修复]
### 中期(1个月内)
[低严重性修复、加固]
## 验证清单
- [ ] 在修复代码上重新运行安全扫描
- [ ] 验证每个漏洞已关闭
- [ ] 运行 `npm audit` 检查依赖
- [ ] 测试修复不破坏功能
- [ ] 添加安全回归测试
安全检查参考
注入:
- SQL查询使用参数化(预编译语句、ORM)
- HTML输出被清理(DOMPurify、转义)
- 无动态命令执行(使用用户输入的
exec、spawn) - 无
eval()或类似代码执行
认证:
- 密码要求充足(12+字符、复杂性)
- 所有敏感端点有认证检查
- 会话管理安全(httpOnly、安全cookie)
- 认证端点速率限制(最多5次/分钟)
- 凭证使用bcrypt/argon2哈希,非明文
数据暴露:
- 无硬编码机密(使用环境变量)
- API响应不泄漏不必要的数据
- 敏感数据不在日志中
- HTTPS/TLS 随处强制执行
- 敏感数据静态加密(AES-256)
配置:
- 安全头部存在(CSP、HSTS、X-Frame-Options、X-Content-Type-Options)
- CORS正确配置(非
*,验证来源) - 错误消息不暴露内部信息
- 无默认凭证
- 生产环境禁用调试模式
依赖:
- 无已知漏洞(运行
npm audit) - 包更新至最新
- 无不必要的依赖
修复工作流
- 修复每个漏洞,遵循文档化的代码示例
- 立即验证 - 重新运行安全扫描、测试功能
- 记录解决 - 标记发现为已修复,附验证方法
- 运行依赖审计 -
npm audit,更新包 - 测试回归 - 确保修复不破坏功能
- 更新文档 - 记录实施的安全措施
示例
示例1: SQL注入发现
### [CRITICAL] 用户登录中的SQL注入
**CVSS评分:** 9.8 | **类别:** OWASP A03:2021 | **位置:** `src/auth/login.js:45`
**易受攻击的代码:**
const query = `SELECT * FROM users WHERE email = '${email}'`;
const user = await db.query(query);
**利用场景:**
攻击者发送:email = "admin' OR '1'='1"
→ 返回所有用户,绕过认证,获取管理员访问权限
**影响:**
- 完全认证绕过
- 完整数据库访问
- 数据泄露和操纵
**修复:**
const query = 'SELECT * FROM users WHERE email = ?';
const user = await db.query(query, [email]);
示例2: 硬编码机密发现
### [CRITICAL] 硬编码的API密钥
**CVSS评分:** 9.6 | **类别:** OWASP A02:2021 | **位置:** `src/config.js:12`
**易受攻击的代码:**
const apiKey = "sk-1234567890abcdef";
**影响:**
- 未经授权的API访问
- 账单责任
- 以受害者账户访问数据
**修复:**
const apiKey = process.env.API_KEY;
// 存储在 .env: API_KEY=sk-1234567890abcdef