摘要
为了防止代码重用攻击,经典的方法是通过代码随机化或者重构,使其地址无法被准确定位。然而,通过内存泄露攻击可以实时读取可执行内存,实现利用代码的动态构建。深入分析了内存泄露攻击的本质特征,提出了基于可执行内存不可读属性的防代码重用技术。该技术将可执行内存的属性设置为不可读,在保证程序正常执行的前提下,防止代码被作为数据读取。由于当前Intel x86和ARM处理器不支持内存"可执行但不可读"(XnR)的属性,通过软件模拟实现了XnR的功能。基于Linux平台的测试结果显示,XnR带来的额外开销只有2.2%,具有良好的可行性和实用性。
A common approach to mitigate code reuse attacks is disguising the address or content of code snippets by means of randomization or rewriting. However,memory disclosure attacks allow an adversary to read executable memory on-the-fly,thereby allowing just-in-time assembly of exploits.In this paper,the idea of code reuse prevention based on executable but not readable( XnR) memory is proposed through analysis of the nature of memory disclosure attacks. This approach sets the executable memory as unreadable,which ensures that the code can still be executed by the processor,but at the same time cannot be read as data. Despite the lack of hardware support for XnR in contemporary Intel x86 and ARM processors,software emulations for XnR based on Linux have been realized. The result shows a run-time overhead of only 2. 2%,which indicates great feasibility and practicality.
出处
《信息工程大学学报》
2016年第1期59-64,共6页
Journal of Information Engineering University
基金
国家863计划资助项目(2012AA012902)
关键词
代码重用攻击
内存泄露攻击
可执行但不可读
软件模拟
code reuse attack
memory disclosure attack
executable but not readable
software emulation