摘 要: | 为了防止代码重用攻击,经典的方法是通过代码随机化或者重构,使其地址无法被准确定位。然而,通过内存泄露攻击可以实时读取可执行内存,实现利用代码的动态构建。深入分析了内存泄露攻击的本质特征,提出了基于可执行内存不可读属性的防代码重用技术。该技术将可执行内存的属性设置为不可读,在保证程序正常执行的前提下,防止代码被作为数据读取。由于当前Intel x86和ARM处理器不支持内存“可执行但不可读”(XnR)的属性,通过软件模拟实现了XnR的功能。基于Linux平台的测试结果显示,XnR带来的额外开销只有2.2%,具有良好的可行性和实用性。
|