论文部分内容阅读
随着社会的发展和科技的进步,人们对计算机和网络的需求量越来越大,互联网应用已进入全球化时代。目前,互联网正向着“互联网+”的方向发展。“互联网+各个传统行业”正在创造新的发展生态,因为它利用互联网大平台和信息通信技术,将传统行业和互联网技术深度融合。以“互联网+”金融、教育、医疗、视频和娱乐等等为代表的新兴产业正在慢慢地改变我们的生活。在互联网大潮流的影响下,越来越多的求职者加入了软件开发人员的行列,使得对Linux系统的操作越来越频繁。然而,软件开发人员们的素质和能力参差不齐,在编程的时候有很多不良的习惯,这就让其编写的软件和系统被黑客攻击的可能性增大,存在较高的安全风险。另一方面,栈溢出攻击(也称为堆栈溢出攻击)作为一种主要的缓冲区溢出攻击方式,其存在性、危害性以及流行性都是非常大的。所以研究Linux平台上针对栈溢出攻击的防护方法是十分必要。本文围绕网络安全防护相关技术的研究这一主题,以国内外研究成果为基础,针对目前Linux平台上存在的栈溢出攻击问题,提出了自己的防护方法,使得防护更安全、高效和全面。本文的主要研究工作分为以下几个部分。(1)从计算机系统结构层面,分析了 Linux平台下的进程地址空间和函数栈帧结构特点。分析发现,Linux系统在编译和运行过程中存在数组越界和恶意代码跳转等栈溢出安全隐患。(2)基于(1)中安全隐患产生原因的分析,结合Linux平台上的GCC编译器原理,提出三种防护栈溢出攻击的方法:栈检查(fstack-check)、堆栈不可执行(-z noexecstack)和堆栈保护(-fstack-protector),并从源代码、二进制特性、运行时特性和优缺点等多个方面进行分析。分析结果表明,这三种方法在很大程度上可以抵抗住栈溢出攻击。(3)搭建栈溢出攻防验证系统,实现对栈溢出攻击的防护。并从软件开发、编译和运行等多个软件工程角度,对三种防护方法进行验证测试,并分析和评估其可靠性及性能影响。实验结果表明,这三种方法带来的性能开销不超过10%,能够同时保证系统的安全性、高效性和全面性。