SuperAPI AI 工具集

security-review

安全与审计

查看项目

更新于 10-16 03:19

技能介绍

用途

security-review 是一个专门用于安全敏感代码变更的安全审查技能。其核心原则是:安全问题需要超出一般代码审查的专门关注。当代码变更触及认证、授权、用户输入、API、数据库或凭据等安全敏感路径时,该审查是强制性的。

技能启动时会声明:“I'm performing a security review of this code.”

何时必须使用

当以下任一文件模式被修改时,该技能为强制使用:

  • **/auth/**(如 src/auth/login.ts、lib/auth/session.js)
  • **/security/**(如 src/security/encryption.ts)
  • **/middleware/**(如 src/middleware/authenticate.ts)
  • **/api/**(如 src/api/endpoints.ts)
  • **/*password*(如 utils/passwordHash.ts)
  • **/*token*(如 services/tokenService.ts)
  • **/*secret*(如 config/secrets.ts)
  • **/*credential*(如 lib/credentials.js)
  • **/*session*(如 middleware/session.ts)
  • **/routes/**(如 src/routes/protected.ts)
  • **/*.sql(如 migrations/001_users.sql)

可用以下命令检查:

git diff --name-only HEAD~1 | grep -E '(auth|security|middleware|api|password|token|secret|credential|session|routes|\.sql)'

OWASP Top 10 检查清单

审查需覆盖以下每个类别:

  1. 注入(A03:2021):检查 SQL 注入(所有查询使用参数化语句)、命令注入(用户输入不进入 shell 命令或正确转义)、LDAP 注入、XPath 注入、模板注入。示例:db.query('SELECT * FROM users WHERE id = ?', [userId]) 为安全写法。

  2. 认证失效(A07:2021):检查密码存储(使用 bcrypt/argon2,而非 MD5/SHA1)、会话管理(Secure、HttpOnly、SameSite cookie)、令牌处理(JWT 签名、验证、短有效期)、暴力破解防护(认证端点限流)、凭据暴露(日志、错误或响应中无凭据)。

  3. 敏感数据暴露(A02:2021):检查传输中数据(强制 HTTPS、TLS 1.2+)、静态数据加密、代码中的密钥(无硬编码 API key、密码、令牌)、错误消息(无敏感信息)、日志(不记录敏感数据)。可用 grep 检查硬编码密钥。

  4. XML 外部实体(A05:2021):检查 XML 解析是否禁用外部实体、DTD 处理是否在不需要时禁用。

  5. 访问控制失效(A01:2021):检查每个端点是否验证权限、直接对象引用是否针对用户校验、能否提升自身权限、CORS 是否正确限制来源、是否只接受允许的 HTTP 方法。

  6. 安全配置错误(A05:2021):检查默认凭据、错误处理(不向用户暴露堆栈跟踪)、安全头(CSP、X-Frame-Options 等)、调试模式(生产环境禁用)、不必要功能是否移除。

  7. 跨站脚本(A03:2021):检查输出编码、DOM XSS(不对用户输入使用 innerHTML)、模板安全(模板引擎自动转义)、CSP 配置。安全写法如 element.textContent = userInput; 或使用 DOMPurify.sanitize。

  8. 不安全反序列化(A08:2021):检查对象反序列化(不反序列化不可信数据)、JSON 解析安全用法、类型验证。

  9. 使用已知漏洞组件(A06:2021):检查依赖审计(pnpm audit / pip audit 干净)、过时包、CVE 检查。可运行 pnpm audit --prod 或 pip-audit。

  10. 日志与监控不足(A09:2021):检查认证事件(登录成功/失败记录)、访问控制(权限拒绝记录)、输入验证失败记录、敏感操作(管理员操作记录)、日志完整性(防篡改)。

审查流程

  1. 识别安全敏感变更:用 git diff 列出匹配安全模式的文件。
  2. 审查每个文件:阅读整个文件(不仅是 diff),对照全部 10 个 OWASP 类别检查,记录发现及严重级别。
  3. 检查依赖:运行 pnpm audit --prod 和 pnpm outdated。
  4. 记录发现:使用严重级别——CRITICAL(可利用漏洞、数据泄露风险,合并前必须修复)、HIGH(重大安全弱点,合并前必须修复)、MEDIUM(纵深防御问题,合并前应修复)、LOW(次要改进,可在未来问题中修复)。
  5. 在审查产物中添加安全部分:包含安全敏感标记、审查者、OWASP 类别检查数、发现表格、依赖审计结果和审查状态(PASS/ISSUES_FIXED/ISSUES_DEFERRED)。

独立安全审查产物

如果安全审查内容较多,可作为单独评论发布,包含 Issue 编号、审查者、审查时间、已审查文件、OWASP 检查清单结果表、依赖审计结果和审查状态。

完成前检查清单

  • 所有变更的安全敏感文件已审查
  • 全部 10 个 OWASP 类别已检查
  • 已运行依赖审计
  • 所有 CRITICAL/HIGH 发现已修复
  • 任何推迟的发现都有跟踪问题
  • 安全部分已添加到审查产物
  • 主产物中 Security-Sensitive 标记为 YES

集成

该技能由以下方式触发:安全敏感文件模式变更、显式调用、codex-subagent security-reviewer。

与以下技能集成:comprehensive-review(安全是第 4 项标准)、review-gate(验证敏感变更的安全审查)。

由以下方式强制执行:.codex/rules/security-sensitive.md 条件规则、PR 门禁自动化(安全敏感变更未经审查则阻止 PR)。