论文部分内容阅读
缓冲区溢出攻击是一种严重威胁网络安全与系统安全的攻击方式。由于存在缓冲区溢出漏洞的应用程序不计其数,对缓冲区溢出攻击防范技术的研究具有重要意义。
StackGuard是基于程序返回地址完整性检测的动态检测技术。StackGuard设计的两种检测字符串Terminal canaries Random canaries对安全性与效率性进行选择,但在这两者的选择上存在矛盾。本文提出的ARXE(Advanced RET XOR EBP的简称)检测方案解决了这个矛盾。一方面,本文提出一个新的检测字符串生成算法,使检测字符串具有同Random canaries等同的随机性要求,实现了设计的安全性要求。另一方面,检测机制只需要简单计算便可实现,克服了Random canaries因使用内存保护机制而带来的大量时间消耗,在效率上与Terminal canaries具有等同的效果。最后,本文提出对检测字符串位置进行调整,使ARXE 可以检测StackGuard不能检测到的单字节溢出攻击。
为比较ARXE检测机制与StackGuard的有效性和效率影响,本文将ARXE 检测机制在GCC(GNU C Compiler的简称)编译器实现,并使用若干测试用例和攻击实例对两者检测缓冲区溢出攻击的有效性和对运行程序的效率影响进行比较分析。结果显示,ARXE在有效性上都很好的表现,并且其对运行程序的效率影响较小。