中文

面向 DOP 化应用的“类固醇”:一种自动化数据导向编程的编译器

密码学与安全 2020-07-07 v1

摘要

代码、栈和堆的随机化等系统防御的广泛采用提高了代码复用攻击的门槛。因此,攻击者利用目标程序(如网页浏览器)中的脚本引擎来准备代码复用链,例如重定位 gadget 地址或执行即时 gadget 搜索。然而,许多类型的程序并不提供攻击者可用的此类执行上下文。近期数据导向编程(DOP)的进展探索了一种正交方式来滥用内存破坏漏洞,并证明攻击者可以在不修改应用程序中代码指针的情况下实现图灵完备的计算。截至目前,构建 DOP 漏洞利用需要大量手工工作。在本文中,我们提出自动化生成 DOP 漏洞利用过程的新技术。我们实现了一个称为 Steroids 的编译器,它将我们的高级语言 SLANG 编译为低层 DOP 数据结构,在运行时驱动恶意计算。这使得攻击者能够以与应用程序和漏洞无关的方式指定其意图,以最大化可重用性。我们通过用 SLANG 指定四个复杂度各异的程序来展示我们技术和原型实现的有效性,这些程序计算 Levenshtein 距离、遍历指针链以窃取私钥、重定位 ROP 链以及执行 JIT-ROP 攻击。Steroids 将每个程序编译为针对五个不同应用程序(包括 GStreamer、Wireshark 和 ProFTPd)的低层 DOP 数据结构,这些程序具有截然不同的漏洞和 DOP 实例。最终,这表明我们的编译器具有通用性,可用于 32 位和 64 位应用程序,跨漏洞类别工作,并在缺乏脚本引擎的应用程序中实现无需传统代码注入或代码复用技术的高表达性攻击。

关键词

引用

@article{arxiv.2007.02308,
  title  = {Steroids for DOPed Applications: A Compiler for Automated Data-Oriented Programming},
  author = {Jannik Pewny and Philipp Koppe and Thorsten Holz},
  journal= {arXiv preprint arXiv:2007.02308},
  year   = {2020}
}

备注

Published in 4th IEEE European Symposium on Security and Privacy (EuroS&P'19)