论文部分内容阅读
在信息化社会中,随机计算机技术与网络信息技术的不断高速发展,各种实体业务已经在网络上开始兴起,如电子商务、移动支付、网上银行、云存储、大数据以及各种专用网的建设等等,这些都给人们的生产和生活带来了极大便捷。但与此同时,人们在享受网络所带来的各种便捷生活的同时,也随时面临着网络安全隐患所带来的种种威胁。比如由于人们缺乏网络安全意识,对计算机和网络的使用不当,同时入侵者刚好利用了这种不当,对个人或企业甚至是政府部门的网络进行攻击破坏,导致个人、企业,甚至是政府部门的重要信息泄露或是财产损失等严重后果。在当前的计算机网络与分布式系统中,超过半数以上的网络安全威胁,大多来自于一种比较传统的网络攻击方式——缓冲区溢出攻击。而在缓冲区溢出攻击中,最为危险的是堆栈溢出攻击,因为通过对某个程序的堆栈进行溢出攻击,入侵者可以造成函数返回地值被覆盖,从而在函数返回时,改变程序返回的地址,让程序跳转至入侵者指定的地址中。这种缓冲区溢出攻击能够给计算机使用者带来很多严重的后果,一是导致程序崩溃,拒绝服务器,二是程序将跳转至入侵者指定的地址,并且执行一段恶意代码,造成服务器瘫痪,三是入侵者可以通过缓冲区溢出攻击,得到服务器的root权限,从而修改服务器的相关参数。本论文以Linux系统下的GCC编译器与Clang编译器,以及微软最新的安全防护技术——MPX为研究对象,分析缓冲区溢出攻击的原理和对应的安全防护机制。在不同版本的Linux系统下,通过编写测试用例,利用不同的编译器对测试用例进行编译时,加载各种安全选项,通过对比测试用例未添加安全编译选项与添加选项前后,测试例程的二进制与反汇编的对比,从而验证GCC编译器、Clang编译器与MPX的安全编译选项能否对测试用例进行保护,并研究添加选项后,选项对测试用例所带来的影响有哪些。本论文的创新点在于:首次将MPX技术利用到Linux系统下,通过编写测试用例进行验证测试,通过查看反汇编与二进制,研究在Linux系统下,MPX安全编译选项是如何对程序进行防护。