首页> 外文学位 >Defending against return-oriented programming.
【24h】

Defending against return-oriented programming.

机译:防御面向返回的编程。

获取原文
获取原文并翻译 | 示例

摘要

Return-oriented programming (ROP) has become the primary exploitation technique for system compromise in the presence of non-executable page protections. ROP exploits are facilitated mainly by the lack of complete address space randomization coverage or the presence of memory disclosure vulnerabilities, necessitating additional ROP-specific mitigations. Existing defenses against ROP exploits either require source code or symbolic debugging information, or impose a significant runtime overhead, which limits their applicability for the protection of third-party applications.;We propose two novel techniques to prevent ROP exploits on third-party applications without requiring their source code or debug symbols, while at the same time incurring a minimal performance overhead. Their effectiveness is based on breaking an invariant of ROP attacks: knowledge of the code layout, and a common characteristic: unrestricted use of indirect branches. When combined, they still retain their applicability and efficiency, while maximizing the protection coverage against ROP.;The first technique, in-place code randomization, uses narrow-scope code transformations that can be applied statically, without changing the location of basic blocks, allowing the safe randomization of stripped binaries even with partial disassembly coverage. These transformations effectively eliminate 10%, and probabilistically break 80% of the useful instruction sequences found in a large set of PE files. Since no additional code is inserted, in-place code randomization does not incur any measurable runtime overhead, enabling it to be easily used in tandem with existing exploit mitigations such as address space layout randomization. Our evaluation using publicly available ROP exploits and two ROP code generation toolkits demonstrates that our technique prevents the exploitation of the tested vulnerable Windows 7 applications, including Adobe Reader, as well as the automated construction of alternative ROP payloads that aim to circumvent in-place code randomization using solely any remaining unaffected instruction sequences.;The second technique is based on the detection of abnormal control transfers that take place during ROP code execution. This is achieved using hardware features of commodity processors, which incur negligible runtime overhead and allow for completely transparent operation without requiring any modifications to the protected applications. Our implementation for Windows 7, named kBouncer, can be selectively enabled for installed programs in the same fashion as user-friendly mitigation toolkits like Microsoft's EMET. The results of our evaluation demonstrate that kBouncer has low runtime overhead of up to 4%, when stressed with specially crafted workloads that continuously trigger its core detection component, while it has negligible overhead for actual user applications. In our experiments with in-the-wild ROP exploits, kBouncer successfully protected all tested applications, including Internet Explorer, Adobe Flash Player, and Adobe Reader.;In addition, we introduce a technique that enables ASLR for executables with stripped relocation information by incrementally adjusting stale absolute addresses at runtime. The technique relies on runtime monitoring of memory accesses and control flow transfers to the original location of a module using page table manipulation. We have implemented a prototype of the proposed technique for Windows 8, which is transparently applicable to third-party stripped binaries. Our results demonstrate that incremental runtime relocation patching is practical, incurs a runtime overhead of up to 83% in most of the cases for initial runs of protected programs, and has a low runtime overhead of 5% on subsequent runs.
机译:在存在不可执行的页面保护的情况下,面向返回的编程(ROP)已成为针对系统危害的主要开发技术。主要由于缺乏完整的地址空间随机性覆盖范围或内存泄漏漏洞而导致ROP漏洞利用,这需要其他专门针对ROP的缓解措施。现有的针对ROP漏洞的防御措施要么需要源代码或符号调试信息,要么会施加大量的运行时开销,从而限制了它们对第三方应用程序的保护的适用性。我们提出了两种新颖的技术来防止针对第三方应用程序的ROP漏洞:需要它们的源代码或调试符号,同时又将性能开销降至最低。它们的有效性基于打破ROP攻击的不变性:对代码布局的了解,以及一个共同的特征:无限制地使用间接分支。当结合使用时,它们仍然保留了其适用性和效率,同时最大化了对ROP的保护范围。第一种技术是就地代码随机化,它使用可以静态应用的窄范围代码转换,而无需更改基本块的位置,甚至在部分拆卸的情况下,也可以安全地将剥离后的二进制文件随机化。这些转换有效地消除了10%,并可能破坏了在大量PE文件中发现的80%的有用指令序列。由于没有插入其他代码,因此就地代码随机化不会招致任何可测量的运行时开销,从而使其可以轻松地与现有的漏洞利用缓解措施(例如地址空间布局随机化)一起使用。我们使用公开的ROP漏洞和两个ROP代码生成工具包进行的评估表明,我们的技术可以防止对经过测试的易受攻击的Windows 7应用程序(包括Adobe Reader)的利用,以及旨在规避就地代码的替代ROP有效载荷的自动构建仅使用任何剩余的不受影响的指令序列进行随机化。第二种技术基于对ROP代码执行期间发生的异常控制转移的检测。这是通过使用商品处理器的硬件功能实现的,这些硬件功能的运行时开销可忽略不计,并且允许完全透明的操作,而无需对受保护的应用程序进行任何修改。我们可以使用与用户友好的缓解工具包(例如Microsoft的EMET)相同的方式,为安装的程序有选择地启用Windows 7的实现,即kBouncer。我们的评估结果表明,kBouncer在承受不断触发其核心检测组件的特制工作负载的压力下,运行时开销高达4%,而实际用户应用程序的开销却可以忽略不计。在我们针对野生ROP漏洞进行的实验中,kBouncer成功地保护了所有经过测试的应用程序,包括Internet Explorer,Adobe Flash Player和Adobe Reader。此外,我们引入了一种技术,该技术使ASLR能够通过逐步剥离信息将可执行文件带给可执行文件在运行时调整过时的绝对地址。该技术依赖于对内存访问的运行时监视,并使用页表操作控制流向模块原始位置的传输。我们已经为Windows 8实现了所建议技术的原型,该原型可透明地应用于第三方剥离的二进制文件。我们的结果表明,增量运行时重定位补丁是可行的,在大多数情况下,对于受保护程序的首次运行,运行时开销高达83%,而在随后的运行中,运行时开销仅为5%。

著录项

  • 作者

    Pappas, Vasileios.;

  • 作者单位

    Columbia University.;

  • 授予单位 Columbia University.;
  • 学科 Computer Science.
  • 学位 Ph.D.
  • 年度 2015
  • 页码 127 p.
  • 总页数 127
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号