针对缓冲区溢出的安全增强编译技术研究

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:sweetyjiaxin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着软件规模的扩大与内部结构的复杂,境内外恶意程序感染主机规模不断增加。软件安全问题越来越受到人们的重视。编译器作为计算机系统不可或缺的系统软件,几乎所有的可执行代码都是通过编译器编译后产生。大多编译环境都是基于C/C++语言语法语义实现的,由于C/C++编程语言以及相关库固有的安全问题,其存在着大量的缓冲区溢出漏洞。因而提高编译器的防缓冲区溢出能力并减少防御导致的额外性能开销,一直是安全编译研究的热点和难点。  本文结合程序从源代码到最后在机器上执行的全过程,针对不同阶段所面临的缓冲区溢出漏洞威胁,在编译、链接以及基础库等方面实现一个综合的安全编译系统,主要工作包括:  提出了基于堆栈控制流信息备份的控制流完整性保护方法。针对堆栈中控制流信息可能被篡改而导致程序返回时跳转错误的问题,考虑现有防御方法在对间接攻击的防御以及兼容性与性能等方面的不足,设计在GCC编译器上实现防御缓冲区溢出攻击的动态防护方法。使用在动态库中声明的数组来备份函数的控制流信息包括返回地址和栈帧指针从而动态监测非法的篡改行为。  提出了GOT表写保护的控制流完整性保护方法。针对恶意程序可能篡改GOT表而导致链接重定位时提供入口地址错的问题,考虑目前GOT表备份和数据随机化等保护方法在性能和安全性方面的不足,实现了通过限制GOT表读写权限的方法来保护程序控制流完整性。  讨论已有Libsafe库安全增强机制并分析其依赖于栈帧指针回溯栈活动记录的局限性,提出改进的Libsafe库安全检查算法。采用程序指令特征码匹配来回溯函数栈活动记录方法,并引入哈希函数做进一步优化。同时对改进版Libsafe库安全检查算法做了分析,表明算法的有效性和可行性。  实验结果表明:控制流完整性保护技术防御能力优于文中提到的现有6款常见防御工具,其可对缓冲区溢出的直接攻击和间接攻击均有效防护,性能损失在6.6%左右;改进版Libsafe库防御成功率明显优于原始版Libsafe库,性能方面对实验所选SPEC2000一些题目反而有提升;综合控制流完整性保护技术和改进版Libsafe库的安全编译系统准确性和完整性高于上述两种方法,而性能损失则介于两者之间在5%左右。
其他文献
网格监控系统通过实时获取、保存资源和平台的信息,为网格的正常运行和管理控制提供支持。目前的网格监控系统在信息处理问题上存在聚合信息不全面,聚合方式简单,监控数据的
随着计算机应用技术的快速发展,应用系统的复杂程度越来越高,相应的开发出高质量的软件也就越来越困难。从一个好的观点或需求出发,到最终变成一个要实际运行的软件产品,其间
图的交叉数是衡量图的非平面性的一个重要参数,Garey和Johnson证明了计算图的交叉数问题是NP完全的。目前仅确定了少数几类图的交叉数。完全图,完全二分图,广义Petersen图,循环图
随着人机交互逐渐被人们所熟知和应用,计算机被期望拥有与人一样的情感、情绪方面处理能力。近年来,社会化媒体的兴起使得用户生成的文本,尤其是带有个人情绪的微博、博客和
随着计算机的发展,浮点运算的高精度特性使其在计算机设计与发展中扮演越来越重要的角色,浮点运算由协处理器的身份到合成在处理器中其在处理器的份量逐步加重。浮点运算的运
视频监控系统是安全防范系统的组成部分,它是一种防范能力较强的综合系统。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。由于数字化的网络视频监控系统具有
随着传感技术、通信技术和计算机技术的飞速发展以及微型机电系统的日益成熟与完善,无线传感器网络已广泛应用到许多领域。然而,大多数无线传感器的应用受到能量有限性的限制。
随着信息技术、网络技术的飞速发展,企业信息系统“信息孤岛”的问题越来越引起人们的重视。在以前,解决企业内部信息系统“信息孤岛”的问题通常是采用EAI的方式。尽管从理论
图灵奖获得者Jim Gray提出了一个新的经验定律:网络环境下每18个月产生的数据量等于有史以来数据量之和。信息资源的爆炸性增长,对存储系统在存储容量、数据可用性以及可靠性
随着“金盾工程”的正式启动,我国公安部门的信息化建设进入了高速、全面发展阶段。目前大部分公安部门已经利用信息技术完成了“事务处理”的工作,公安信息化正在向第二阶段,即