Readactor:代码随机化应对内存泄漏问题-阅读笔记(一)
前段时间在学习信息系统安全方面的内容,阅读了很多相关论文。其中对Readactor: Practical Code Randomization Resilient to Memory Disclosure这篇论文阅读之后,我进行了一些整理和总结,讨论了我对这篇论文的理解、分析和评价,论文工作的核心思想和主要贡献,其中包括论文所针对的问题和所实现的目标,供有需要的人参考。这篇论文刚开始读的时候我感觉不是很好理解,它涉及到了软件代码安全和硬件保护等方面的知识,而且顶级会议S&P上的文献,果然也是很难懂的。好了,下面我们就开始吧。
报告目录
- 要解决什么问题
- 相关背景知识
- 该领域研究现状
- 本论文实现目标
- 论文核心思想
- 论文主要贡献
- 本文具体工作内容分析
- 论文中的攻击模型和假设
- 实验结果评价
- 结论
要解决什么问题
本文提出的方法主要是针对解决代码重用攻击(Code-reuse attacks),比如ROP攻击。这些攻击严重威胁了现代软件的安全,因此急需设计一种实用且有效的防御方式来抵抗代码重用攻击。然而之前提出的所有方法都存在问题,有的方法存在内存泄漏漏洞,有的方法在实际商业系统的部署中无法实施。因此本文要解决的问题就是既能防止代码重用攻击,又能避免其他方法存在的内存泄漏和无法实际操作使用的问题。
相关背景知识
本文提到了许多重要的概念和名词,掌握它们以及相关背景知识有助于理解整篇文章。
1、ROP(Return-oriented Programming)
返回导向编程技术。核心思想是在整个进程空间内现存的函数中寻找适合指令片断(gadget),并通过精心设计返回堆栈把各个gadget拼接起来,从而达到恶意攻击的目的。构造ROP攻击的难点在于,我们需要在整个进程空间中搜索我们需要的gadgets,这需要花费相当长的时间。但一旦完成了“搜索”和“拼接”,这样的攻击是无法抵挡的,因为它用到的都是内存中合法的的代码,普通的杀毒引擎对ROP攻击是无计可施的。
2、DEP(Data Execution Prevention)
数据执行保护。DEP是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。可帮助防止数据页当作代码执行,