Abstract
自动利用的挑战:将一个可利用的状态与一个rop链相连。控制流劫持是一个方案。
困境:普遍的利用缓解技术,利用路径上的陷阱和不适宜的原语,导致手工生成linux内核利用原语都很困难。
成果:提出KEPLER来生成一个单发的利用链来帮助利用生成。
具体:接受一个控制流劫持原语作为输入,符号化地缝合一些流行内核编码风格和相应片段以生成ROP载荷。
实验:通过比较先前地自动利用生成技术和内核利用技术,展示了KEPLER地有效性。
1 介绍
内核漏洞威胁很高,一种直接办法是修复所有知道地bug。实际上,因为人力有限,不足以及时修复所有bug,只能优先修补那些安全威胁最高的bug。
研究意义:
- 自动化生成poc来验证bug的可利用性是首选的方案。[7] [3] [9] [64] [5] [55] [30] [75]
- 另一方面,自动化利用生成还能帮助在CTF比赛中快速得分。
- 同时,这些产生的漏洞可能有助于防御方评估新内核利用缓解方案的有效性。
自动利用生成系统分为两个步骤:
- 利用原语识别:根据崩溃输入寻找预定义的利用原语。
- 利用原语评估:建立利用约束,求解约束,使利用生效。
三个挑战:
- 利用缓解技术
- 利用路径中的陷阱(利用路径执行导致的难以预料的结果)
- 不合适的利用原语:利用原语不满足生成利用的条件