博士论文:语言解释器中堆溢出的灰盒自动漏洞利用生成
背景
作者在2009年首次研究漏洞利用生成(硕士论文),采用混合执行构建SMT公式来表示导致程序崩溃的输入路径语义。虽然该方法在有限防护场景(如IoT设备)中有效,但存在根本性概念缺陷:现有系统将漏洞利用视为"发现崩溃路径→单步转换为exploit"的两阶段过程,而实际漏洞开发往往需要多阶段复杂编程。
2016年待解决问题
- 缺乏人机协同的漏洞利用生成框架
- 未引入"利用原语"核心概念
- 所有系统仍专注于栈溢出漏洞
- 未整合信息泄露与ASLR应对机制
- 缺乏针对语言解释器/浏览器的研究
研究创新
1. 多阶段分解架构
将漏洞利用过程拆分为独立可组合阶段,支持"惰性解析"——允许先模拟前期阶段解决方案,验证可行性后再实际求解。
2. 灰盒解决方案
为每个阶段设计基于模糊测试的灰盒解决方案,通过定制化反馈机制大幅缩减状态空间。
3. 模板化交互框架
开发模板语言实现不同求解器(或人工)的解决方案交互与替换,具体实践参见作者相关论文。
技术实现
选择堆溢出作为目标漏洞类型(PHP/Python解释器),通过以下核心组件构建端到端系统:
- 堆布局操控(USENIX Security 2018)
- 模块化灰盒利用生成(ACM CCS 2019)
未来展望
作者认为下一代漏洞利用生成系统将呈现以下特征:
- 模糊测试式输入生成机制应用于粒度化任务
- 模板语言组合解决方案并支持人工干预
- 符号执行仅在需要精确推理时有限使用
- 静态分析辅助缩减搜索空间
论文详细假设见第1章,未来研究方向见第6章。