# Differential Review

> 针对 PR、提交和差异的安全聚焦代码审查。当用户要求对 PR、提交或差异进行安全审查时使用。

- Skill: `kscz0000/differential-review` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kscz0000/differential-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kscz0000/differential-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kscz0000 (https://skillmd.com/u/kscz0000)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kscz0000/differential-review

---


# 差异安全审查

针对 PR、提交范围和差异的安全聚焦代码审查。

## 何时使用
- 需要对 PR、提交范围或差异进行安全聚焦审查，而非通用代码审查。
- 变更涉及认证、加密、外部调用、价值转移、权限或其他高风险逻辑。
- 需要基于代码证据、攻击场景和明确的报告产物的发现。

## 核心原则

1. **风险优先**：聚焦认证、加密、价值转移、外部调用
2. **证据驱动**：每个发现都由 git 历史、行号、攻击场景支撑
3. **自适应**：根据代码库规模调整（SMALL/MEDIUM/LARGE）
4. **诚实**：明确说明覆盖范围限制和置信度
5. **输出导向**：始终生成完整的 markdown 报告文件

---

## 合理化借口（不可跳过）

| 合理化借口 | 为何错误 | 必要行动 |
|-----------------|----------------|-----------------|
| "小 PR，快速审查" | Heartbleed 只有 2 行代码 | 按风险分类，而非大小 |
| "我熟悉这个代码库" | 熟悉滋生盲点 | 构建明确的基线上下文 |
| "Git 历史太耗时" | 历史揭示回归问题 | 绝不跳过 Phase 1 |
| "爆炸半径显而易见" | 你会遗漏传递调用者 | 定量计算 |
| "没测试 = 不是我的问题" | 缺少测试 = 提升风险等级 | 在报告中标记，提升严重性 |
| "只是重构，无安全影响" | 重构破坏不变量 | 按 HIGH 分析直到证明为 LOW |
| "我会口头解释" | 没有产物 = 发现丢失 | 始终撰写报告 |

---

## 快速参考

### 代码库规模策略

| 代码库规模 | 策略 | 方法 |
|---------------|----------|----------|
| SMALL（<20 文件） | DEEP | 读取所有依赖，完整 git blame |
| MEDIUM（20-200） | FOCUSED | 1 跳依赖，优先文件 |
| LARGE（200+） | SURGICAL | 仅关键路径 |

### 风险等级触发条件

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

---

## 工作流概览

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

---

## 决策树

**开始审查？**

```
├─ 需要详细的分阶段方法论？
│  └─ 阅读：methodology.md
│    （预分析 + Phases 0-4：分诊、代码分析、测试覆盖、爆炸半径）
│
├─ 分析 HIGH RISK 变更？
│  └─ 阅读：adversarial.md
│    （Phase 5：攻击者建模、漏洞利用场景、可利用性评级）
│
├─ 撰写最终报告？
│  └─ 阅读：reporting.md
│    （Phase 6：报告结构、模板、格式指南）
│
├─ 查找特定漏洞模式？
│  └─ 阅读：patterns.md
│    （回归、重入、访问控制、溢出等）
│
└─ 仅快速分诊？
   └─ 使用上方快速参考，跳过详细文档
```

---

## 质量检查清单

交付前：

- [ ] 所有变更文件已分析
- [ ] 已对移除的安全代码执行 git blame
- [ ] HIGH 风险已计算爆炸半径
- [ ] 攻击场景具体（非泛泛而谈）
- [ ] 发现引用具体行号 + 提交
- [ ] 已生成报告文件
- [ ] 已通知用户并附摘要

---

## 集成

**audit-context-building skill:**
- 预分析：构建基线上下文
- Phase 4：HIGH RISK 变更的深度上下文

**issue-writer skill:**
- 将发现转化为正式审计报告
- 命令：`issue-writer --input DIFFERENTIAL_REVIEW_REPORT.md --format audit-report`

---

## 使用示例

### 快速分诊（小型 PR）
```
输入：5 文件 PR，2 个 HIGH RISK 文件
策略：使用快速参考
1. 按文件分类风险等级（2 HIGH，3 LOW）
2. 仅聚焦 2 个 HIGH 文件
3. Git blame 移除的代码
4. 生成最小报告
时间：约 30 分钟
```

### 标准审查（中型代码库）
```
输入：80 文件，12 个 HIGH RISK 变更
策略：FOCUSED（见 methodology.md）
1. 对 HIGH RISK 文件执行完整工作流
2. 对 MEDIUM 进行表面扫描
3. 跳过 LOW 风险文件
4. 生成包含所有章节的完整报告
时间：约 3-4 小时
```

### 深度审计（大型、关键变更）
```
输入：450 文件，认证系统重写
策略：SURGICAL + audit-context-building
1. 用 audit-context-building 构建基线上下文
2. 仅对认证变更进行深度分析
3. 爆炸半径分析
4. 对抗性建模
5. 综合报告
时间：约 6-8 小时
```

---

## 何时不使用此技能

- **全新代码**（无基线可比较）
- **仅文档变更**（无安全影响）
- **格式化/linting**（外观变更）
- **用户明确要求仅快速摘要**（用户接受风险）

这些情况请使用标准代码审查。

---

## 红旗信号（停止并调查）

**立即升级触发条件：**
- 移除来自 "security"、"CVE" 或 "fix" 提交的代码
- 移除访问控制修饰符（onlyOwner、internal → external）
- 移除验证且无替代
- 新增外部调用但无检查
- 高爆炸半径（50+ 调用者）+ HIGH 风险变更

这些模式即使在快速分诊中也需要对抗性分析。

---

## 最佳实践提示

**应该：**
- 从 git blame 开始检查移除的代码
- 尽早计算爆炸半径以确定优先级
- 生成具体的攻击场景
- 引用具体行号和提交
- 对覆盖范围限制保持诚实
- 始终生成输出文件

**不应该：**
- 跳过 git 历史分析
- 做无证据的泛泛发现
- 时间有限时声称完整分析
- 忘记检查测试覆盖
- 遗漏高爆炸半径变更
- 仅在聊天中输出报告（需要文件）

---

## 支持文档

- **methodology.md** - 详细的分阶段工作流（Phases 0-4）
- **adversarial.md** - 攻击者建模和漏洞利用场景（Phase 5）
- **reporting.md** - 报告结构和格式（Phase 6）
- **patterns.md** - 常见漏洞模式参考

---

**首次使用者：** 从 methodology.md 开始理解完整工作流。

**有经验用户：** 使用本页快速参考和决策树直接导航到所需内容。

## 限制
- 仅当任务明确符合上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准，请停止并请求澄清。

