用途
Security Review 用于审查代码变更中的安全漏洞,重点关注 OWASP Top 10 以及项目技术栈特有的安全问题。它适合在本地作为分叉子代理运行,也适合在 CI 中运行(例如通过 claude-code-action),由工作流将报告转换为 GitHub PR 审查评论。
主要能力
该技能会审查变更文件,覆盖以下安全领域:
- 注入与输入处理:SQL 注入(字符串拼接而非参数化查询)、命令注入(用户输入传入 shell 命令)、XSS(dangerouslySetInnerHTML 或未转义反射)、路径遍历(未校验的文件路径中的 ..)、原型污染(对用户可控对象使用 Object.assign 或展开而不做键白名单)。
- 认证与授权:缺失的认证检查、IDOR(接受 ID 参数但未验证调用者访问权限)、权限提升(删除、移动、管理操作未按角色/权限限制)。
- 数据暴露:过度获取(API 响应包含超出客户端需要的数据)、错误泄露(堆栈跟踪、SQL 错误、内部路径)、日志中的敏感数据(密码、令牌、PII)。
- 实时/WebSocket 安全(仅当项目有 WebSocket 层时):频道授权、消息伪造、载荷校验。
- 拒绝服务:无界查询、正则 DoS、资源耗尽(文件上传、大请求体、昂贵操作缺少限流或大小限制)。
- 密码学与密钥:硬编码密钥、弱随机数(安全敏感操作使用 Math.random() 而非 crypto.randomUUID())、缺失 TLS(生产环境使用 ws://)。
- 依赖:已知漏洞(bun audit / npm audit / pip-audit)、依赖导致的原型污染。
使用方式
- 确定审查范围:运行
git diff main...HEAD --name-only获取本分支相对 main 的变更文件。若失败(无 main、分离工作树等),回退到git diff HEAD --name-only查看未提交变更,再回退到git diff --cached --name-only查看已暂存文件。若无 diff 可用,询问用户要审查哪些文件。 - 先阅读 CLAUDE.md 了解项目技术栈及具有安全敏感面的子系统(认证、实时、支付、文件上传)。
- 完整阅读每个变更文件后再开始审查。
- 按严重程度组织发现:Critical(无需认证即可利用,数据丢失、未授权访问或远程代码执行)、High(需要一定前置条件,权限提升、重大数据泄露)、Medium(纵深防御问题)、Low(加固建议)。
- 每条发现包含:文件与行号(精确 path:line 或 path:start-end,跨文件发现列出每个位置)、严重程度、漏洞类型(OWASP 类别或 CWE)、当前代码片段、利用场景、修复建议(最好有前后对比片段)、周边上下文(调用方、需同步修改的相关文件、修复依赖的校验层、应添加的测试)。
- 返回完整格式化报告作为最终消息,而非摘要。
适用场景
- 本地作为分叉子代理运行:主会话看不到你读取的文件或推理过程,只看到最终报告。
- CI 中运行:工作流将报告转换为 GitHub PR 审查评论。
- 报告消费者将其作为工作清单,因此报告必须完整且自包含。
限制
- 不标记风格问题(那是代码审查的职责)。
- 除非代码级修复不足,否则不建议添加 WAF、限流器或基础设施变更。
- 不报告需要物理访问或基础设施被攻破的理论问题。
- 不堆砌问题,优先处理最重要的发现。
- 修复阶段(或 PR 评论发布阶段)在报告消费者处进行,不在本技能内。本地主会话将按严重程度顺序进行最小化针对性修复,并在每次修复后运行
bun run check+bun test。 - 实时/WebSocket 安全部分仅当项目有 WebSocket 层时相关。
- 依赖检查需 bun audit / npm audit / pip-audit 可用。