Skip to main content
QUICK REVIEW

[论文解读] Security Mitigations for Return-Oriented Programming Attacks

Piotr Bania|arXiv (Cornell University)|Aug 24, 2010
Security and Verification in Computing参考文献 1被引用 14
一句话总结

本文提出针对x86-32 Windows系统上返回导向编程(ROP)攻击的编译器级别与二进制级别缓解措施。其提出的技术包括调用-返回关系分析、调用后注入特殊值、基于段的保护、代码诱饵以及IAT重定向,以破坏指令片段链式攻击,显著提高攻击难度,且二进制级别防御无需修改源代码即可部署。

ABSTRACT

With the discovery of new exploit techniques, new protection mechanisms are needed as well. Mitigations like DEP (Data Execution Prevention) or ASLR (Address Space Layout Randomization) created a significantly more difficult environment for vulnerability exploitation. Attackers, however, have recently developed new exploitation methods which are capable of bypassing the operating system's security protection mechanisms. In this paper we present a short summary of novel and known mitigation techniques against return-oriented programming (ROP) attacks. The techniques described in this article are related mostly to x86-32 processors and Microsoft Windows operating systems.

研究动机与目标

  • 应对传统保护机制(如DEP和ASLR)无法防范的返回导向编程(ROP)攻击日益增长的威胁。
  • 识别现有缓解措施的局限性,并提出针对ROP链式利用能力的新技术。
  • 开发无需访问源代码即可部署的编译器级别与二进制级别防御机制。
  • 在最小化性能开销的同时,最大化对ROP攻击的抵抗能力。
  • 提供与现有Windows及PE二进制格式兼容的实用、可部署解决方案。

提出的方法

  • 分析调用-返回指令之间的关系,以检测并仅保护由CALL指令前导的原始返回指令,从而减少攻击面。
  • 在每个CALL指令后注入特殊字节,并在函数结尾处验证其完整性,以检测未经授权的返回跳转。
  • 利用x86段描述符隔离代码段,仅允许在有效且受保护的段内执行代码,防止任意代码执行。
  • 通过重新定位并标记原始代码段为不可执行,实现代码诱饵机制,从而在尝试执行时触发页面异常。
  • 应用导入地址表(IAT)重定向,防止攻击者通过修改指针劫持函数调用。
  • 使用页面异常过滤机制检测并阻止对不可执行内存区域的执行尝试,仅允许合法的镜像代码执行。

实验结果

研究问题

  • RQ1如何在不需重新编译源代码的情况下缓解ROP攻击?
  • RQ2利用指令级模式检测并阻止ROP指令片段链式攻击的最有效方法是什么?
  • RQ3基于段的保护机制能否有效应用于现有x86-32二进制文件而不破坏兼容性?
  • RQ4如何利用代码诱饵与不可执行内存区域检测并阻止ROP攻击?
  • RQ5这些缓解技术在真实Windows环境中的性能与兼容性权衡如何?

主要发现

  • 调用-返回关系分析使测试模块中可用ROP指令片段减少超过95%,因为仅有2.11%至5.31%的指令片段由CALL指令前导。
  • 在CALL指令后注入特殊值可有效检测非法返回序列,且在使用操作码频率统计进行优化后性能影响极小。
  • 使用自定义代码段的基于段的保护机制能有效隔离可执行代码并防止未经授权的执行,但需谨慎处理重定位与CS寄存器状态。
  • 通过随机化内存布局并标记为不可执行的代码诱饵,可成功检测并阻止ROP攻击,因非法执行会触发页面异常。
  • IAT重定向与页面异常过滤机制可结合使用以防止间接调用劫持,但需与PE加载器交互,并仔细处理虚拟地址范围。
  • 尽管存在性能与兼容性挑战,特别是在大型模块(如SHELL32.DLL)中,所提出的缓解措施仍显著提高了ROP攻击成功的难度。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。