差异化安全评审(Differential Review)

高级 Advanced 流程型 Process ⚡ Claude Code 专属 ⚡ Claude Code Optimized
1 min read · 72 lines

Trail of Bits 安全评审:风险优先 + 爆炸半径计算 + 对抗性分析

差异化安全评审(Differential Review)

概述

Trail of Bits 出品的安全聚焦代码评审技能。专注于 PR、提交和 diff 的安全分析,自动检测和防止安全回退。

核心原则

  1. 风险优先:聚焦认证、加密、价值转移、外部调用
  2. 证据驱动:每个发现都要有 git 历史、行号、攻击场景支撑
  3. 自适应:根据代码库大小(小/中/大)调整分析深度
  4. 诚实:明确说明覆盖范围限制和置信度
  5. 产出导向:始终生成完整的 Markdown 报告文件

不可接受的借口

借口 为什么是错的 正确做法
"小 PR,快速看看" Heartbleed 也只有 2 行 按风险分类,不是按大小
"我熟悉这个代码库" 熟悉导致盲点 构建显式的基线上下文
"Git 历史太耗时" 历史能揭示回退 永远不跳过阶段 1
"爆炸半径很明显" 你会遗漏传递调用者 定量计算
"只是重构,没安全影响" 重构会破坏不变量 视为高风险直到证明低风险

代码库大小策略

大小 策略 方法
小(< 20 文件) 深度分析 读所有依赖,完整 git blame
中(20-200 文件) 聚焦分析 一跳依赖,优先级文件
大(200+ 文件) 外科手术式 仅关键路径

风险等级触发器

风险等级 触发条件
认证、加密、外部调用、价值转移、验证移除
业务逻辑、状态变更、新公开 API
注释、测试、UI、日志

工作流

预分析 → 阶段0:分诊 → 阶段1:代码分析 → 阶段2:测试覆盖
    ↓         ↓            ↓              ↓
阶段3:爆炸半径 → 阶段4:深度上下文 → 阶段5:对抗性分析 → 阶段6:报告

红旗(立即升级)

  • 来自"security"、"CVE"或"fix"提交的代码被移除
  • 访问控制修饰符被移除(onlyOwner、internal → external)
  • 验证被移除但没有替代
  • 新增外部调用但没有检查
  • 高爆炸半径(50+ 调用者)+ 高风险变更

质量检查清单

  • 所有变更文件已分析
  • 对移除的安全代码做了 git blame
  • 高风险变更计算了爆炸半径
  • 攻击场景是具体的(不是泛泛的)
  • 发现引用了具体行号和提交
  • 生成了报告文件

相关技能 Related Skills