Claude Code 技能:安全审查 (security-review)

利用 AI 对当前分支的待提交变更进行全面的安全审查

技能名称:security-review

技能别名:安全审查

核心能力:审查当前分支的待提交变更,识别安全漏洞与风险

适用场景:代码提交前安全检查、CI/CD 集成审查、合规审计

一、概述

security-review 是 Claude Code 内置的一项安全审查技能,专门用于对当前 Git 分支上的待提交变更进行全面的安全分析。当开发者在终端中执行 /security-review 或直接调用该技能时,Claude Code 会自动读取当前分支相较于基准分支(通常是 main 或 master)的差异代码,逐行审查每一处变更,识别潜在的安全漏洞、配置风险和不安全的编码实践,并输出结构化的安全审查报告。

该技能将 AI 代码理解能力与安全工程最佳实践相结合,能够在代码进入代码库之前发现安全隐患,帮助开发团队在软件开发生命周期的早期阶段消除风险,降低安全修复成本。

核心价值:安全左移(Shift Left)—— 在开发阶段而非生产阶段发现并修复安全漏洞,将安全审查融入日常开发工作流。

二、设计目的

在现代软件开发中,安全漏洞的发现越晚,修复成本越高。传统的安全审查方式要么依赖专门的安全团队进行事后的渗透测试,要么需要开发者手动逐行检查代码,效率低下且容易遗漏。security-review 技能旨在解决以下核心问题:

设计哲学:安全审查不应该是开发流程的瓶颈,而应该是开发流程的加速器。security-review 让每一行代码在提交前都经过安全检查,实现"默认安全"的编码实践。

三、审查内容与范围

security-review 技能覆盖了现代 Web 应用和软件开发中最常见的安全风险类别。主要审查方向包括但不限于以下方面:

3.1 注入攻击 (Injection)

审查代码中是否存在未经处理的用户输入直接拼接至 SQL 查询、NoSQL 查询、系统命令或模板引擎中的情况。具体包括 SQL 注入、命令注入、模板注入、LDAP 注入等。检测是否有使用参数化查询、预编译语句或适当的转义机制。

3.2 跨站脚本攻击 (XSS)

检查前端代码中是否存在将用户输入直接插入 DOM 而未经过适当转义或清理的情况。涵盖反射型 XSS、存储型 XSS 和基于 DOM 的 XSS。审查是否使用了安全的 HTML 编码、内容安全策略(CSP)和适当的输出编码函数。

3.3 SQL 注入 (SQLi)

专项检测后端代码中的数据库查询语句,识别字符串拼接构造 SQL 查询的危险模式。验证是否使用了 ORM 框架的安全查询方法、参数化查询或预编译语句。对存储过程、动态查询生成等场景进行重点审查。

3.4 OWASP Top 10 安全风险

全面对照 OWASP Top 10 最新版(2021年版)十大安全类别进行检查:

3.5 其他安全关注项

除上述核心类别外,还审查敏感信息泄露(硬编码密钥、Token、密码)、不安全的反序列化、路径遍历、文件上传漏洞、CSRF 防护缺失、不安全的跨域配置(CORS)、HTTP 安全头缺失等常见安全问题。

四、工作原理

security-review 的执行过程是一个端到端的自动化安全分析管道,从代码差异提取到报告生成共经历多个阶段:

获取 diff 上下文分析 逐行审查 关联分析 生成报告

第一步:获取代码差异。技能自动执行 git diff 命令,获取当前分支相较于基准分支(默认为 main)的全部变更内容,包括新增代码、修改代码和删除代码,以及对应的文件路径和行号信息。

第二步:上下文理解。Claude Code 读取变更文件的整体结构,理解代码的上下文环境。包括识别语言类型、框架、API 端点、数据库交互模式、认证机制等,确保审查在正确的上下文语境中进行。

第三步:逐行安全审查。AI 模型对每一处代码变更进行安全分析,对照安全规则库(包括 OWASP 指南、CWE 列表、供应商安全建议等)逐项检查。不局限于单一的漏洞模式,而是结合代码上下文进行综合判断。

第四步:关联分析。对有多个文件变更的场景,技能会跨文件追踪数据流,分析用户输入如何在不同组件之间传递,是否存在从输入到敏感操作(如数据库写入、文件系统操作、命令执行等)的完整攻击链路。

第五步:生成结构化报告。将所有发现的问题按照严重级别(高危、中危、低危、信息)分类整理,针对每个问题提供问题描述、影响分析、修复建议和示例代码。

五、输出格式

security-review 以结构化的 Markdown 文本形式输出审查结果,每个发现的问题都包含以下完整信息:

## 🔴 高危漏洞 (High Severity) ### 问题 1:用户输入直接拼接到 SQL 查询 文件:src/user/userController.js:45-52 风险等级:高危 CWE 编号:CWE-89 (SQL Injection) 问题描述: 第48行中,用户输入的 `id` 参数未经任何清理直接拼接到 SQL 查询字符串中。 攻击者可以通过构造特殊的 `id` 值来执行任意 SQL 命令。 风险代码: const query = `SELECT * FROM users WHERE id = ${req.params.id}`; 修复建议: 使用参数化查询或预编译语句替代字符串拼接。 修复示例: const query = 'SELECT * FROM users WHERE id = ?'; db.execute(query, [req.params.id]);

报告整体按风险等级组织,依次为:高危(High)→ 中危(Medium)→ 低危(Low)→ 信息(Info)。每个等级内的问题按文件路径排序,方便开发者按文件逐一修复。报告末尾提供总体评估摘要,包括发现的漏洞总数、各等级分布情况和整体安全评分。

六、使用场景

security-review 技能可以嵌入到多个开发环节中,适应不同团队和项目的安全需求:

6.1 提交前本地审查

开发者在完成功能开发后、提交代码之前,在本地分支上运行 /security-review 技能。这是最常见的用法,能在代码离开开发者本地环境之前发现并修复安全问题,避免将漏洞带入共享代码库。

6.2 CI/CD 流水线集成

将 security-review 集成到 GitHub Actions、GitLab CI 或其他 CI/CD 工具中,在每次 Pull Request 创建或更新时自动触发安全审查。审查结果会作为 PR 评论自动发布,让审查者在代码评审时一并参考安全报告。

6.3 代码审计辅助

在进行定期的代码安全审计时,作为自动化辅助工具快速扫描整个代码库或特定模块的安全状况。虽然不能替代人工专业审计,但可以大幅提升审计效率,帮助审计人员快速定位高风险区域。

6.4 安全培训与教育

将 security-review 用于团队的安全编码培训。新成员可以通过查看审查报告中的修复建议学习安全编码规范,有经验的开发者也可以通过持续的自动化反馈保持安全意识。

6.5 开源项目贡献检查

在为开源项目贡献代码时,先运行 security-review 自我检查,确保提交的代码不会给项目引入安全风险,提升 PR 被合并的概率和社区信任度。

注意事项:security-review 是基于 AI 模型的代码分析工具,虽然能够发现大量常见安全漏洞,但不能完全替代人工安全审查和专业渗透测试。对于涉及敏感数据、金融交易、医疗信息等高风险场景,仍建议结合专业安全团队的审查。

七、最佳实践

为了最大化 security-review 技能的效果,以下是在实际项目中总结出的最佳实践和建议:

7.1 保持较小的提交粒度

每次提交的变更集尽量聚焦于单一功能或修复。小范围的变更不仅便于人工 Code Review,也能让 AI 安全审查更加精准。大范围的变更可能导致上下文过于复杂,影响审查质量。

7.2 结合人工 Code Review

将 security-review 的自动化审查作为人工 Code Review 的前置步骤。开发者在提交 PR 前先运行安全审查并修复发现的问题,然后再请求团队成员进行人工审查。这样可以让人工审查更聚焦于业务逻辑和架构设计,而非基础的安全问题。

7.3 建立安全规则基线

在项目中维护一份安全编码规范文档,与 security-review 的检查项相对应。当审查报告中出现误报时,分析原因并更新规范文档或调整审查策略,逐步减少误报率,提高审查的精准度。

7.4 及时修复高危漏洞

对于 security-review 报告中的高危漏洞,建议在发现后立即修复,不要积压。可以制定团队 SLA(服务等级协议),规定高危漏洞必须在 X 小时内修复,中危漏洞在 Y 天内修复,以此推动安全问题的及时处理。

7.5 定期更新依赖库

security-review 会检查代码中引用的第三方库是否存在已知漏洞。建议建立定期更新依赖的机制(如每周或每两周),配合自动化工具保持依赖库的最新状态,减少因使用过时组件带来的安全风险。

建议:将 security-review 作为 Git Hooks(pre-commit 或 pre-push)的一部分自动执行,确保每次提交前都自动触发安全审查,不留遗漏。

八、核心要点总结

1. 能力定位:security-review 是 Claude Code 内置的自动化代码安全审查技能,基于 AI 分析当前分支的代码变更,识别并报告安全漏洞。

2. 审查范围:覆盖注入攻击(SQL/命令/模板注入)、跨站脚本(XSS)、OWASP Top 10 全部类别、敏感信息泄露、不安全反序列化、SSRF 等主流安全风险。

3. 工作流程:获取 diff → 上下文分析 → 逐行审查 → 关联分析 → 生成报告,五步完成从代码变更到安全报告的完整闭环。

4. 报告结构:按高危/中危/低危/信息四级分类输出,每个问题包含文件路径、行号、CWE 编号、问题描述、风险代码、修复建议和修复示例,开发者可立即定位并修复。

5. 适用场景:提交前本地审查、CI/CD 流水线集成、代码审计辅助、安全培训教育、开源项目贡献检查,贯穿软件开发生命周期的多个环节。

6. 核心优势:降低安全审查门槛、加速反馈循环、提供可操作修复建议、培养团队安全意识,实现"安全左移"的开发理念。

7. 使用限制:AI 安全审查不能完全替代人工专业审查和渗透测试,高风险场景仍需结合专业安全团队的审核。建议与人工 Code Review 配合使用,组成多层级安全防线。

8. 最佳实践:保持小提交粒度、配合 Git Hooks 自动执行、建立安全规则基线、及时修复高危漏洞、定期更新依赖库,将安全审查融入日常开发习惯。