[USENIX Security] SyzScope:揭开 Linux 内核“低风险”漏洞背后的杀招

SyzScope: Revealing High-Risk Security Impacts of Fuzzer-Exposed Bugs in Linux kernel

2021-01-01
Xiaochen Zou, Guoren Li, Weiteng Chen, Hang Zhang, Zhiyun Qian
总结
问题
方法
结果
要点
摘要

本文提出了 SyzScope,这是一个能够自动评估 Linux 内核漏洞安全影响的系统。它针对 syzbot 平台上大量被标记为“低风险”的漏洞(如 WARNING、INFO、Read-only 访问等),通过结合定向 Fuzzing、静态分析和符号执行,成功挖掘出隐藏的“高风险”影响(如控制流劫持、任意内存写入)。

TL;DR

别被 KASAN: Read 或内核 WARNING 给骗了!最新的研究表明,超过 15% 的所谓“低风险”内核漏洞实际上隐藏着控制流劫持或任意内存写入的威力。由 UC Riverside 团队开发的 SyzScope 系统,通过一套组合拳(Fuzzing + Static Analysis + Symbolic Execution),能够自动将这些被低估的漏洞转化为具备 CVE 潜力的安全重弹。

1. 背景:内核漏洞的“幸存者偏差”

在持续 Fuzzing 平台(如 syzbot)的工业化运作下,内核漏洞的产出速度已经快到让开发人员麻木。一个尴尬的现实是:修bug的速度跟不上出bug的速度

目前社区主要靠漏洞报告的标题(如 WARNING)来判断修复优先级。然而,Fuzzer 有个天性:一旦触发第一个错误就会停止执行。这导致我们看到的只是冰山一角。比如一个简单的“内存读访问越界”,其后续路径可能紧接着一个“函数指针覆盖”,但因为内核已经 Panic,这个致命的高风险影响被永远掩盖了。

痛点:

  • 修复序列错位:高危漏洞可能排在 Minor 队列中。
  • 补丁传播滞后:由于不知道某个补丁具有安全性意义,Android 等下游厂商可能推迟一年才合并补丁。

2. SyzScope 的核心直觉

SyzScope 的核心逻辑是:漏洞的影响是一个搜索问题。既然原始 PoC 只能跑出低风险路径,我们就通过技术手段强行让它探索更深处的恶意潜能。

SyzScope 模型架构图

三位一体的方法论:

  1. 影响感知型 Fuzzing (Impact-aware Fuzzing)
    • 传统的 Fuzzer 追求代码覆盖。SyzScope 修改了 Syzkaller,让它在发现新“影响类型”时也给予反馈奖励。
    • 开启 kasan_multi_shot,即使发生一次越界也不立即停机,强行观察后续是否会有 Write 原语。
  2. 隐藏影响估算 (Hidden Impact Estimation)
    • 使用 静态污点分析。如果一个低风险的读操作读取了受攻击者控制的对象,那么我们就追踪这些污点数据。
    • 目标:寻找污点数据是否流向了函数指针调用(控制流劫持)或内存地址操作(Write-what-where)。
  3. 验证与评级 (Validation & Evaluation)
    • 静态分析可能有误报,所以 SyzScope 使用 符号执行(Angr) 进行实机验证。
    • 为了解决符号执行的路径爆炸问题,它使用静态分析产生的“路径指南”来约束搜索空间。

3. 实验发现:这不仅仅是理论

研究人员分析了 syzbot 上千个低风险漏洞,结果令人震惊:

实验结果对比

  • 转化率极高:15% 的低风险漏洞被成功晋升为高风险。
  • 杀伤力巨大:发现了 42 个可以实现控制流劫持(FPD)的漏洞,以及 173 个包含写入(Write)原语的漏洞。
  • 效率突破:在静态引导下,原本需要数小时的符号执行任务,在 18 秒内即可完成。

案例分析:从 OOB Read 到 Arbitrary Write

在一个真实的 syzbot 案例中(见下图),原本报告仅显示 slab-out-of-bounds Read。但在 SyzScope 的介入下,发现如果允许程序继续运行,受污染的地址会被传递给 set_bit(),从而演变成一个典型的任意地址写入原语。

代码分析案例图

4. 行业价值与反思

SyzScope 不仅仅是一个学术玩具。作者通过这套工具向 Linux 基金会提交了申请,成功让 8 个原本无人问津的“普通 Bug”获得了 CVE 编号,并促使 Ubuntu、RedHat 等发行版紧急发布安全通告。

总结: 内核开发者的精力是有限资源。SyzScope 证明了:通过自动化组合分析技术,我们可以更科学地分配这些资源,把最危险的漏洞先关进笼子里。这项工作为未来的“自动利用生成”(AEG)和“智能漏洞分拣”提供了坚实的前端支持。


注:本文基于学术论文《SyzScope: Revealing High-Risk Security Impacts of Fuzzer-Exposed Bugs in Linux kernel》重构。

发现相似论文

试试这些示例

  • 查找最近其他试图利用符号执行或动态分析技术自动评估 Linux 内核漏洞可利用性(Exploitability)的研究。
  • 哪篇论文最早讨论了 Linux 内核补丁在下游分发版中传播滞后的问题(Patch Propagation Lag),本文又是如何量化其风险的?
  • 除了 UAF 和 OOB,目前有哪些研究正在针对内核中的未初始化变量(Uninitialized Use)或竞争条件(Race Condition)进行自动化的安全影响挖掘?
目录
[USENIX Security] SyzScope:揭开 Linux 内核“低风险”漏洞背后的杀招
1. TL;DR
2. 1. 背景:内核漏洞的“幸存者偏差”
3. 2. SyzScope 的核心直觉
3.1. 三位一体的方法论:
4. 3. 实验发现:这不仅仅是理论
4.1. 案例分析:从 OOB Read 到 Arbitrary Write
5. 4. 行业价值与反思