首页 › tutorials › Claude Code安全审计:OWASP扫描到自动修复

概述

本教程面向中高级开发者,系统讲解如何利用 Claude Code 内置安全审查、社区安全 Skill 和自定义 Hooks 三层防护体系,对项目进行 OWASP Top 10 全覆盖扫描,并实现漏洞的自动化发现与修复。学完本教程,你将掌握从单文件快速审计到 CI/CD 持续安全门禁的完整链路。

适用人群:有 Claude Code 基础使用经验,希望将安全审计融入日常开发流程的后端/全栈开发者。

前置条件

条件 说明
Claude Code 已安装 v1.0.20+ 版本(内置安全审查功能)
Node.js v18+ 运行时环境
Git 版本控制,用于 PR 审查集成
GitHub CLI (gh) 用于 PR 和 GitHub Actions 操作
基础安全知识 了解 OWASP Top 10 基本概念即可
# 验证环境
claude --version    # 确认 >= 1.0.20
node --version      # 确认 >= 18
gh --version        # 确认已安装

第一步:理解 Claude Code 安全审计三层架构

Claude Code 的安全能力并非单一工具,而是三层递进体系:

graph TB
    subgraph "Layer 1: 内置安全审查"
        A[Native Security Review] --> A1[自动扫描代码变更]
        A --> A2[检测常见漏洞模式]
        A --> A3[生成修复建议]
    end

    subgraph "Layer 2: 安全 Skill 扩展"
        B1[OWASP Security Skill]
        B2[claude-cybersecurity]
        B3[自定义安全规则]
        B1 & B2 & B3 --> B[并行 Agent 深度扫描]
    end

    subgraph "Layer 3: 持续安全门禁"
        C1[Pre-commit Hooks]
        C2[GitHub Actions]
        C3[PR 自动审查]
        C1 & C2 & C3 --> C[CI/CD 安全流水线]
    end

    A --> B --> C

Layer 1 是 Claude Code 自 2026 年 2 月起内置的安全审查功能,基于 Anthropic 的 SAST(静态应用安全测试)引擎,无需任何配置即可使用。

Layer 2 通过社区安全 Skill 扩展审计范围,支持 OWASP Top 10:2025 全系列漏洞的深度扫描,包括 SQL 注入、XSS、CSRF、SSRF 等。

Layer 3 将安全审计嵌入 CI/CD 流水线,确保每次提交和 PR 都经过自动安全检查。


第二步:配置 CLAUDE.md 安全规则

在项目根目录的 CLAUDE.md 中添加安全规则,是构建安全审计体系的第一步。这些规则会在每次会话启动时自动加载,指导 Claude Code 在编写和修改代码时遵循安全最佳实践。

# CLAUDE.md 安全规则示例

## 安全编码规范

### 禁止事项
- 禁止拼接 SQL 查询字符串,必须使用参数化查询
- 禁止将用户输入直接嵌入 HTML,必须经过转义
- 禁止在代码中硬编码密钥、令牌或凭证
- 禁止使用 eval()、exec() 等动态代码执行函数
- 禁止在日志中输出敏感信息(密码、token、PII)

### 强制要求
- 所有外部输入必须验证和清洗
- 所有 API 端点必须包含认证和授权检查
- 文件操作必须校验路径,防止目录遍历
- 密码必须使用 bcrypt/argon2 哈希存储
- 错误响应不得泄露内部实现细节

### 安全审查触发条件
当修改以下文件时,自动执行安全审查:
- 认证/授权相关代码
- 数据库查询逻辑
- 文件上传处理
- API 端点定义
- 配置文件变更

这段规则的核心价值在于 预防胜于修复。Claude Code 在编写代码时就会遵循这些约束,从源头减少漏洞引入。

分层规则文件

对于大型项目,建议使用模块化规则:

.claude/
├── rules/
│   ├── security-injection.md    # 注入类漏洞防护规则
│   ├── security-auth.md         # 认证授权安全规则
│   ├── security-data.md         # 数据保护规则
│   └── security-api.md          # API 安全规则
└── CLAUDE.md                     # 主规则文件,通过 @rules/security-*.md 引用

第三步:使用内置安全审查功能

Claude Code 自带安全审查能力,这是最快速的上手方式。

3.1 对当前代码库执行安全扫描

在 Claude Code 交互模式中,直接发出安全审查请求:

> 对整个 src/ 目录执行安全审查,重点检查 SQL 注入和 XSS 漏洞

Claude Code 会自动遍历目标目录,使用 Grep 搜索危险模式,逐文件分析并生成报告。

3.2 对 PR 进行安全审查

使用 /review 命令或直接请求 Claude Code 对特定 PR 进行安全审查:

# 方法一:在 Claude Code 中直接请求
> 审查 PR #42 的安全风险

# 方法二:使用 GitHub Actions 集成
gh pr view 42 --json files --jq '.files[].path' | \
  xargs claude -p "对这些文件变更进行安全审查"

3.3 内置安全审查的局限

内置审查擅长检测: - 明显的注入漏洞模式 - 硬编码凭证 - 危险函数调用 - 基本的权限缺失

但对于以下场景需要 Layer 2 扩展: - 业务逻辑漏洞 - 复杂的认证绕过 - 多步骤攻击链 - 特定框架的安全配置问题


第四步:安装安全 Skill 扩展审计能力

4.1 OWASP Security Skill

这是最全面的 OWASP 审计 Skill,覆盖 Top 10:2025 全部类别:

# 安装 OWASP Security Skill
claude skill add https://github.com/agamm/claude-code-owasp

安装后,该 Skill 会在 .claude/skills/ 目录下创建完整的安全审计规则集,包含: - A01:2025 — Broken Access Control:权限绕过检测 - A02:2021 — Cryptographic Failures:弱加密检测 - A03:2021 — Injection:SQL/NoSQL/OS 命令注入检测 - A04:2021 — Insecure Design:设计缺陷识别 - A05:2021 — Security Misconfiguration:安全配置错误 - A06:2021 — Vulnerable Components:依赖漏洞检查 - A07:2021 — Auth Failures:认证和会话管理缺陷 - A08:2021 — Data Integrity Failures:数据完整性问题 - A09:2021 — Logging Failures:日志和监控不足 - A10:2021 — SSRF:服务端请求伪造检测

4.2 claude-cybersecurity 并行审计 Skill

这个 Skill 的特色是使用 8 个并行 Agent 同时审计不同漏洞类别:

# 安装 claude-cybersecurity
claude skill add https://github.com/agricidaniel/claude-cybersecurity

其核心架构为:

graph LR
    subgraph "8 个并行审计 Agent"
        A1[Agent 1: SQL注入]
        A2[Agent 2: XSS]
        A3[Agent 3: 认证绕过]
        A4[Agent 4: CSRF]
        A5[Agent 5: SSRF]
        A6[Agent 6: 敏感数据泄露]
        A7[Agent 7: 配置错误]
        A8[Agent 8: 依赖漏洞]
    end

    TARGET[目标代码库] --> A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8

    A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 --> REPORT[统一安全报告]

4.3 使用 Skill 执行审计

安装完成后,在 Claude Code 中触发审计:

> 使用 OWASP Security Skill 对 src/ 目录进行全面安全审计,按严重程度排序输出结果

预期输出示例:

## 安全审计报告

### 🔴 严重 (Critical) — 3 个

**[A03:Injection] SQL 注入风险 — src/api/users.ts:45**
```typescript
// 漏洞代码
const query = `SELECT * FROM users WHERE name = '${req.body.name}'`;

修复方案:使用参数化查询

const query = `SELECT * FROM users WHERE name = $1`;
const result = await pool.query(query, [req.body.name]);

[A02:Crypto] 弱密码哈希 — src/auth/hash.ts:12

// 漏洞代码
const hash = crypto.createHash('md5').update(password).digest('hex');

修复方案:使用 bcrypt

const hash = await bcrypt.hash(password, 12);

🟡 中等 (Medium) — 5 个

...

🟢 低风险 (Low) — 2 个

...

---

## 第五步:构建自动化安全修复流程

发现漏洞只是第一步,关键是建立高效的修复机制。

### 5.1 单漏洞快速修复

修复 src/api/users.ts 第 45 行的 SQL 注入漏洞,保持原有逻辑不变

Claude Code 会读取文件上下文,理解业务逻辑,生成安全的替代代码,并通过 Edit 工具直接修改文件。

### 5.2 批量安全修复工作流

对于多个同类漏洞,使用 `-p` 模式批量处理:

```bash
# 批量修复所有 SQL 注入
claude -p "扫描 src/ 目录下所有 .ts 文件,找出所有字符串拼接 SQL 查询的地方,改为参数化查询。每个文件修改前展示 diff,确认后再应用" --allowedTools "Edit,Read,Grep,Glob"

5.3 安全修复 Skill 自动化

创建自定义安全修复 Skill,实现一键修复:

# .claude/skills/security-auto-fix.md
---
name: security-auto-fix
description: 自动发现并修复 OWASP Top 10 漏洞
---

## 执行步骤

1. **扫描阶段**:使用 Grep 搜索以下危险模式:
   - SQL 字符串拼接: `.*\+.*SELECT|INSERT|UPDATE|DELETE.*`
   - XSS 风险: `innerHTML|dangerouslySetInnerHTML|v-html`
   - 硬编码密钥: `password\s*=\s*['"]|api_key\s*=\s*['"]|secret\s*=\s*['"]`
   - 命令注入: `exec\(|eval\(|system\(|spawn\(`

2. **分析阶段**:对每个匹配结果分析上下文,判断是否为真实漏洞

3. **修复阶段**:生成安全替代代码,展示 diff 并应用

4. **验证阶段**:运行测试确认修复未破坏功能

使用方式:

> /security-auto-fix 扫描并修复 src/ 目录下的所有安全漏洞

第六步:配置安全 Hooks 实现持续防护

Hooks 是 Claude Code 的事件驱动机制,可以在文件修改时自动触发安全检查。

6.1 自动安全扫描 Hook

// .claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "claude -p \"检查刚修改的文件 $CLAUDE_FILE_PATH 是否引入了安全漏洞,包括 SQL 注入、XSS、硬编码凭证。只报告问题,不修改代码\" --model claude-haiku-4-5-20251001 2>/dev/null || true"
      }
    ]
  }
}

这个 Hook 的工作原理: - 触发时机:每次使用 Edit 或 Write 工具修改文件后 - 执行逻辑:调用 Haiku 模型(快速且低成本)对修改后的文件进行安全快扫 - 输出方式:仅在发现问题时输出警告

6.2 Pre-commit 安全门禁 Hook

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "if echo \"$TOOL_INPUT\" | grep -q 'git commit'; then claude -p \"检查 git diff --cached 的输出,确认没有引入安全问题。如有问题输出 BLOCK: 原因\" --model claude-haiku-4-5-20251001 2>/dev/null; fi"
      }
    ]
  }
}

6.3 敏感文件保护 Hook

防止意外提交敏感文件:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "file=\"$TOOL_INPUT\"; if echo \"$file\" | grep -qiE '(\\.env|credentials|secret|\\.pem|\\.key)'; then echo 'BLOCK: 正在修改可能的敏感文件,请确认'; exit 1; fi"
      }
    ]
  }
}

第七步:CI/CD 安全流水线集成

7.1 GitHub Actions 安全审查

Anthropic 官方提供了 claude-code-security-review GitHub Action:

# .github/workflows/security-review.yml
name: Security Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  security-scan:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: read

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Claude Code Security Review
        uses: anthropics/claude-code-security-review@v1
        with:
          claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
          severity-threshold: medium  # 只报告中等及以上
          categories: |
            injection
            xss
            auth
            crypto
            misconfig
            sensitive-data

该 Action 会自动: 1. 分析 PR 的所有文件变更 2. 识别安全漏洞 3. 在 PR 中发布内联评论 4. 根据严重程度设置检查状态

7.2 自定义安全 CI Pipeline

对于更细粒度的控制,可以构建自定义流水线:

# .github/workflows/custom-security.yml
name: Custom Security Pipeline

on:
  pull_request:
  push:
    branches: [main]

jobs:
  security-audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: OWASP Full Scan
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude -p "
          对以下目录执行完整 OWASP 安全审计:
          - src/api/ — 检查注入、认证、授权
          - src/db/ — 检查 SQL 注入、数据泄露
          - src/config/ — 检查硬编码凭证、安全配置
          - src/middleware/ — 检查 CSRF、CORS、安全头

          输出格式:JSON,包含漏洞位置、类别、严重程度、修复建议
          " --output-format json > security-report.json

      - name: Upload Report
        uses: actions/upload-artifact@v4
        with:
          name: security-report
          path: security-report.json

      - name: Check Threshold
        run: |
          critical=$(jq '[.[] | select(.severity == "critical")] | length' security-report.json)
          if [ "$critical" -gt 0 ]; then
            echo "::error::发现 $critical 个严重漏洞"
            exit 1
          fi

实战案例:审计一个 Express.js 项目

让我们用一个完整案例串联前面所有步骤。假设有一个 Express.js 后端项目需要安全审计。

项目结构

express-app/
├── src/
│   ├── api/
│   │   ├── users.ts      # 用户 API
│   │   ├── products.ts   # 产品 API
│   │   └── auth.ts       # 认证 API
│   ├── db/
│   │   └── connection.ts # 数据库连接
│   ├── middleware/
│   │   └── auth.ts       # 认证中间件
│   └── app.ts            # 应用入口
├── package.json
└── .env                  # ⚠️ 包含数据库密码

步骤 1:启动 Claude Code 并加载安全规则

cd express-app
claude

在会话中确认安全规则已加载:

> 列出当前项目的安全规则配置

步骤 2:执行全量安全扫描

> 使用以下策略对 src/ 目录进行安全审计:
> 1. 检查所有 .ts 文件中的 SQL 注入风险
> 2. 检查认证和授权逻辑缺陷
> 3. 检查敏感数据泄露风险
> 4. 检查硬编码凭证
> 5. 检查安全配置错误
> 按严重程度从高到低排序输出,每个漏洞给出具体代码位置和修复代码

步骤 3:修复发现的漏洞

Claude Code 会发现类似以下问题并逐一修复:

问题 1:SQL 注入 — src/api/users.ts

// ❌ 漏洞代码
app.get('/api/users/search', async (req, res) => {
  const name = req.query.name;
  const result = await db.query(
    `SELECT * FROM users WHERE name LIKE '%${name}%'`
  );
  res.json(result.rows);
});

// ✅ 修复后
app.get('/api/users/search', async (req, res) => {
  const name = req.query.name as string;
  const result = await db.query(
    'SELECT id, name, email FROM users WHERE name LIKE $1',
    [`%${name}%`]
  );
  res.json(result.rows);
});

问题 2:弱密码哈希 — src/api/auth.ts

// ❌ 漏洞代码
const crypto = require('crypto');
const hash = crypto.createHash('sha256').update(password).digest('hex');

// ✅ 修复后
import bcrypt from 'bcrypt';
const hash = await bcrypt.hash(password, 12);

问题 3:敏感文件暴露 — .env

# ❌ .env 被 git 跟踪
DB_PASSWORD=mysecretpassword123

# 修复:将 .env 加入 .gitignore,使用环境变量管理
echo ".env" >> .gitignore

步骤 4:运行测试验证修复

> 运行项目测试套件,确保安全修复没有破坏现有功能
npm test

步骤 5:提交安全修复

> 创建一个安全修复分支,提交所有安全修复,并创建 PR

Claude Code 会自动: 1. 创建 security-fix/initial-audit 分支 2. 暂存并提交修改 3. 使用 gh pr create 创建 PR,附带详细的修复说明


安全审计完整工作流程图

flowchart TD
    START[开始安全审计] --> CONFIG[配置 CLAUDE.md 安全规则]
    CONFIG --> INSTALL[安装安全 Skill]
    INSTALL --> SCAN{选择扫描方式}

    SCAN -->|快速扫描| NATIVE[内置安全审查]
    SCAN -->|深度扫描| OWASP[OWASP Skill 全量扫描]
    SCAN -->|并行扫描| CYBER[claude-cybersecurity 8 Agent]

    NATIVE --> REPORT[生成安全报告]
    OWASP --> REPORT
    CYBER --> REPORT

    REPORT --> CLASSIFY{漏洞分类}
    CLASSIFY -->|严重| CRITICAL[立即修复]
    CLASSIFY -->|中等| MEDIUM[计划修复]
    CLASSIFY -->|低风险| LOW[记录跟踪]

    CRITICAL --> FIX[自动/手动修复]
    MEDIUM --> FIX

    FIX --> TEST[运行测试验证]
    TEST -->|通过| COMMIT[提交安全修复]
    TEST -->|失败| FIX

    COMMIT --> PR[创建 PR]
    PR --> CI[CI/CD 安全门禁]
    CI -->|通过| MERGE[合并代码]
    CI -->|未通过| FIX

    LOW --> TRACK[记录到安全跟踪系统]
    MERGE --> HOOKS[Hooks 持续监控]
    TRACK --> HOOKS

    HOOKS --> |下次修改| NATIVE

高级技巧

技巧一:多模型协作审计

不同模型在安全审计中有不同优势:

> 使用 Opus 进行深度安全架构分析,识别设计层面的安全缺陷。
> 然后使用 Sonnet 对具体代码实现进行 OWASP 合规检查。
> 最后使用 Haiku 对所有修复进行回归测试。

这种分层策略在保证审计质量的同时控制了成本。

技巧二:安全审计模板化

在 .claude/rules/ 中创建安全审计模板,实现标准化审计流程:

<!-- .claude/rules/security-audit-template.md -->
## 安全审计标准流程

### 阶段一:信息收集
1. 确定技术栈和框架
2. 识别认证/授权机制
3. 映射数据流和信任边界
4. 列出外部依赖

### 阶段二:漏洞扫描
1. OWASP Top 10 逐项检查
2. 框架特定安全配置审查
3. 依赖漏洞检查(npm audit / pip audit)
4. 敏感数据泄露扫描

### 阶段三:报告输出
- 格式:漏洞位置 | 类别 | 严重程度 | 修复建议 | 修复代码
- 按严重程度排序
- 包含修复优先级建议

技巧三:安全合规自动化

对于需要满足合规要求(如 SOC 2、ISO 27001)的项目:

> 基于 OWASP ASVS 5.0 Level 1 要求,对本项目执行安全合规审计。
> 逐项检查 ASVS 验证要求,标记合规/不合规/不适用。
> 对不合规项生成修复方案。

技巧四:安全 diff 审计

只审计代码变更,适合大型项目快速迭代:

# 审计最近一次提交的变更
claude -p "审查 git diff HEAD~1 的输出,检查是否引入了安全漏洞"

常见问题与解决方案

Q1: 安全 Skill 扫描速度太慢?

方案:缩小扫描范围,使用 Haiku 模型加速。

> 只扫描 src/api/ 目录下的认证和授权相关代码,使用 Haiku 模型提高速度

在 Task 工具中指定 model: "haiku" 也可加速子任务。

Q2: 误报太多如何处理?

方案:在 CLAUDE.md 中添加误报过滤规则。

## 安全审计排除规则
- 忽略 test/ 目录中的硬编码凭证(仅用于测试环境)
- 忽略 src/utils/mock.ts 中的模拟数据
- 忽略依赖项的间接漏洞(通过 npm audit 处理)

Q3: 如何处理遗留项目的大量漏洞?

方案:分批修复,优先处理关键路径。

> 我的项目有大量安全漏洞。请帮我制定分阶段修复计划:
> 1. 首先识别涉及用户认证和数据保护的最高风险漏洞
> 2. 制定4周修复计划,每周修复一类漏洞
> 3. 每次修复后运行完整测试套件

Q4: Hooks 与 pre-commit 框架冲突?

方案:将 Claude Code Hooks 作为补充层,不替代已有的 pre-commit 配置。

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "command": "npx pre-commit run --files $CLAUDE_FILE_PATH 2>/dev/null || true"
    }]
  }
}

延伸阅读

资源 说明
Anthropic 官方安全审查文档 Claude Code 内置代码审查和安全审查官方指南
OWASP Top 10:2025 官方文档 最新的 Web 应用十大安全风险标准
claude-code-security-review GitHub Action Anthropic 官方的 CI/CD 安全审查 Action
OWASP ASVS 5.0 应用安全验证标准,用于合规审计
Claude Secure Coding Rules 社区维护的 Claude Code 安全编码规则集

参考来源

  1. Claude Code Security Audit: Find & Fix OWASP Vulnerabilities in Minutes — Claude Code 安全审计完整指南
  2. Automate OWASP Security Audits with Claude Code Security Pack — OWASP 安全审计自动化工具包
  3. anthropics/claude-code-security-review — Anthropic 官方安全审查 GitHub Action
  4. Automated Security Reviews in Claude Code — Claude Code 自动安全审查官方帮助文档
  5. Claude Code Security: AI Audit Skill — 8 并行 Agent 安全审计 Skill

训练营适用性评估

维度 评估
适合训练营类型 企业安全训练营、DevSecOps 工程师培训、全栈开发者进阶营
预计教学时长 4-6 小时(含实操演练)
学员基础要求 有 Claude Code 基础使用经验,了解 Web 开发基本概念
实操占比 70% 实操 + 30% 理论
考核方式 对给定含漏洞项目执行完整安全审计,输出报告并修复所有严重漏洞
分组建议 2-3 人一组,每组审计不同类型的项目(Express/Django/Spring)

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入