论文标题

用于掺杂应用的类固醇:用于自动数据的编译器的编译器

Steroids for DOPed Applications: A Compiler for Automated Data-Oriented Programming

论文作者

Pewny, Jannik, Koppe, Philipp, Holz, Thorsten

论文摘要

对系统防御的广泛采用,例如代码,堆栈和堆的随机化,提高了代码恢复攻击的标准。因此,攻击者在Web浏览器(例如Web浏览器)中使用脚本引擎来准备代码链条链,例如,重新定位小工具地址或执行即时的小工具搜索。但是,许多类型的程序没有提供攻击者可以使用的执行上下文。面向数据的编程(DOP)的最新进展探讨了一种滥用内存损坏漏洞的正交方式,并证明攻击者可以在不修改应用程序中的代码指针的情况下实现图灵完整的计算。截至目前,构建DOP漏洞需要大量的手动工作。 在本文中,我们提出了新颖的技术来自动化生成DOP漏洞的过程。我们实施了一个称为类固醇的编译器,该编译器将我们的高级语言语编译成在运行时驾驶恶意计算的低级DOP数据结构中。这使攻击者能够以应用和脆弱性的方式指定她的意图,以最大程度地提高可重复性。我们通过指定计算Levenshtein距离的四个不同复杂性的程序来证明我们的技术和原型实现的有效性,遍历指针链来窃取私钥,重新安置ROP链并执行Jit-Rop攻击。类固醇将这些程序中的每个程序都编译为针对五个不同应用程序的低级DOP数据结构,包括GSTREAMER,WIRESHARK和PROFTPD,它们具有差异很大的漏洞和DOP实例。最终,这表明我们的编译器具有通用性,可用于32位和64位应用程序,跨错误类使用,并在缺乏脚本引擎的应用程序中启用高度表达性攻击,而无需传统的代码注入或代码归结技术。

The wide-spread adoption of system defenses such as the randomization of code, stack, and heap raises the bar for code-reuse attacks. Thus, attackers utilize a scripting engine in target programs like a web browser to prepare the code-reuse chain, e.g., relocate gadget addresses or perform a just-in-time gadget search. However, many types of programs do not provide such an execution context that an attacker can use. Recent advances in data-oriented programming (DOP) explored an orthogonal way to abuse memory corruption vulnerabilities and demonstrated that an attacker can achieve Turing-complete computations without modifying code pointers in applications. As of now, constructing DOP exploits requires a lot of manual work. In this paper, we present novel techniques to automate the process of generating DOP exploits. We implemented a compiler called Steroids that compiles our high-level language SLANG into low-level DOP data structures driving malicious computations at run time. This enables an attacker to specify her intent in an application- and vulnerability-independent manner to maximize reusability. We demonstrate the effectiveness of our techniques and prototype implementation by specifying four programs of varying complexity in SLANG that calculate the Levenshtein distance, traverse a pointer chain to steal a private key, relocate a ROP chain, and perform a JIT-ROP attack. Steroids compiles each of those programs to low-level DOP data structures targeted at five different applications including GStreamer, Wireshark, and ProFTPd, which have vastly different vulnerabilities and DOP instances. Ultimately, this shows that our compiler is versatile, can be used for both 32- and 64-bit applications, works across bug classes, and enables highly expressive attacks without conventional code-injection or code-reuse techniques in applications lacking a scripting engine.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源