8x05 - CVE Case Studies
深度拆解经典漏洞。
本章不追求堆砌 CVE 列表,而是用“统一拆解框架”读案例:入口 → 根因 → 影响面 → 缓解机制 → 修复与回归。
1. 逻辑漏洞案例
- StrandHogg 2.0: 任务栈劫持。
建议的拆解维度:
- 漏洞属于“缺少校验”还是“校验对象不一致”
- 是否存在 confused deputy(代表低权限执行高权限能力)
- 是否与多用户/profile/权限授予链路相关
2. 内存破坏案例
- Stagefright: 媒体解析溢出。
- Bad Binder: 内核 UAF。
- BlueFrag: 蓝牙远程代码执行。
建议的拆解维度:
- 输入面:文件/网络/无线/本地接口
- 进程边界:漏洞发生在哪个进程与哪个 SELinux 域
- 缓解机制:ASLR/CFI/MTE/seccomp 是否改变可利用性
- 修复策略:边界检查、对象生命周期、状态机收敛
3. 一个通用的案例阅读模板
3.1 背景
- 组件在系统中的位置与权限
- 输入从哪里来,是否可由第三方触发
3.2 根因
- 关键函数/路径
- 缺失的校验与不变量
3.3 影响面
- 影响类型(信息泄露/越权/DoS/RCE/LPE)
- 受影响版本与设备差异
3.4 修复与验证
- 补丁做了什么(边界检查/权限校验/状态机修正)
- 回归风险点
4. 案例与专题的映射
- Stagefright →
/notes/android/03-services/05-media-framework - Bad Binder →
/notes/android/02-ipc/01-binder-deep-dive与/notes/android/05-kernel/03-attack-surface - BlueFrag →
/notes/android/07-special/02-bluetooth
参考(AOSP)
- https://source.android.com/docs/security/bulletin — 安全公告入口:用于对照 CVE 的补丁时间线、受影响范围与修复说明。
- https://source.android.com/docs/setup/contribute/report-bugs — AOSP 问题跟踪/提交入口:当案例涉及 AOSP 组件时,用于回溯公开 issue 与组件归属。