安全审计Skill AuditingSecurity

安全审计技能用于通过系统代码分析识别安全漏洞、评估风险并提供修复建议,适用于安全评估、部署前审查、合规验证(如OWASP、PCI-DSS、GDPR)、漏洞调查等场景。关键词:安全审计、漏洞识别、风险评估、代码分析、OWASP、CVSS、安全修复。

安全审计 0 次安装 0 次浏览 更新于 3/8/2026

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响应中过多的数据
  • 日志记录敏感信息
  • 未加密的传输
  • 不安全存储
  • 搜索:apiKeypasswordsecrettoken 赋值

安全配置错误:

  • 缺少安全头部(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、转义)
  • 无动态命令执行(使用用户输入的 execspawn
  • eval() 或类似代码执行

认证:

  • 密码要求充足(12+字符、复杂性)
  • 所有敏感端点有认证检查
  • 会话管理安全(httpOnly、安全cookie)
  • 认证端点速率限制(最多5次/分钟)
  • 凭证使用bcrypt/argon2哈希,非明文

数据暴露:

  • 无硬编码机密(使用环境变量)
  • API响应不泄漏不必要的数据
  • 敏感数据不在日志中
  • HTTPS/TLS 随处强制执行
  • 敏感数据静态加密(AES-256)

配置:

  • 安全头部存在(CSP、HSTS、X-Frame-Options、X-Content-Type-Options)
  • CORS正确配置(非 *,验证来源)
  • 错误消息不暴露内部信息
  • 无默认凭证
  • 生产环境禁用调试模式

依赖:

  • 无已知漏洞(运行 npm audit
  • 包更新至最新
  • 无不必要的依赖

修复工作流

  1. 修复每个漏洞,遵循文档化的代码示例
  2. 立即验证 - 重新运行安全扫描、测试功能
  3. 记录解决 - 标记发现为已修复,附验证方法
  4. 运行依赖审计 - npm audit,更新包
  5. 测试回归 - 确保修复不破坏功能
  6. 更新文档 - 记录实施的安全措施

示例

示例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