论文部分内容阅读
随着信息技术的快速发展,系统和软件的复杂性的不断提高导致各类软件的正确性与安全性越来越难以保证,程序不可避免的包含各种各样的漏洞,攻击者利用安全漏洞构造并实施攻击,给个人、企业乃至国家造成巨大的安全威胁。因此,如何快速有效地遏制软件安全漏洞对软件行业造成的影响一直是学术和工业界关注的热点。各种缓解软件安全漏洞危害性的机制应运而生,这其中栈不可执行、随机化和栈保护等攻击平缓技术在安全性、性能和兼容性等方面取得很好的平衡,因此被广泛的部署到现有的系统中。但是由于设计中存在缺陷,导致它们在特定环境中仍旧存在被攻破的风险。本论文从栈保护技术着手,研究其最初设计方案和随后相关改进工作在防御力、性能和正确性等方面的不足,并提出了自己的设计方案。在众多的软件安全漏洞中,缓冲区溢出漏洞由于在软件中广泛存在且易于实施攻击,一直是困扰网络空间安全的主要威胁之一。攻击者通过缓冲区溢出漏洞可以修改程序内存数据、操作程序控制流、进而执行恶意代码,给软件使用者带来极大的危害。在研究者已经提出的多种针对缓冲区溢出的防御机制中,基于canary的栈保护机制(Stack Smashing Protection)作为一种简单、高效的防御缓冲区溢出的安全机制被广泛的部署和应用。不幸的是,栈保护机制可以通过逐字节暴力破解(Byte-by-Byte Brute Force Attack)的方式被攻破。虽然最近研究者已经提出了一些针对逐字节暴力破解的增强型栈溢出保护机制,但是它们不但牺牲了栈保护机制得以广泛应用的最大优势——简洁高效,而且在特殊场景下的正确性和兼容性难以保证。为了解决现有工作中的不足,(1)本文提出了一种用于阻止逐字节暴力破解攻击的高效防御机制——多态栈保护机制。它通过不断的改变canary的形态以抵御逐字节暴力破解攻击,并保持不同形态canary内在的一致性,以简洁、高效的方式实现对canary检验和更新;(2)针对源代码程序和二进制程序,本文分别基于编译器和二进制插桩工具实现了部署多态栈保护机制的工具,它们的运行负载分别只有0.24%和1.01%;(3)本文又设计了基于多态栈保护机制的四种扩展方案,它们分别具有更好的兼容性、更广泛的保护范围、更强的保护能力;(4)本文实现了验证四个扩展方案可行性的原型系统,并实现了部署其中的两个扩展方案的编译器插件;(5)本文对基本方案进行性能、有效性和兼容性测试,基于原型系统对扩展方案的运行效率进行评估,并比较了四个扩展方案与基本方案的优缺点;与相关工作的对比结果充分的表明多态栈保护机制的优越性和广泛的应用前景。