● 摘要
随着计算机在社会各方面重要性的突显,计算机网络和信息安全也受到了人们广泛的关注,而利用缓冲区溢出来实施破坏在计算机安全事件中占有很大一部分。针对缓冲区溢出已经有了很多研究成果,比如程序编写时使用安全代码、程序正式发布以前使用检测软件检测缓冲区溢出漏洞并修补程序等,也有一些防御措施来防止攻击发生,但还是不断地有缓冲区溢出漏洞被利用、防御措施失效、系统被攻破的现象出现。还需要继续研究新的防护方法来阻止缓冲区溢出攻击。
??? 攻击代码通常会利用缓冲区溢出漏洞篡改函数返回地址或函数入口地址,当程序执行函数返回指令或运行函数调用指令时,就会改变程序流程,跳转到攻击代码处执行。如果我们对那些可以改变程序流程的数据实施保护,当程序运行过程中使用这些数据来决定程序执行流程时,检测这些数据是否被修改,或是否发生错误,以此就可检测出攻击行为。本文在研究了ELF文件的结构特点以及程序代码的执行时特点的基础上,提出了缓冲区溢出攻击实时检测的方法。本方法使用动态程序插装平台PIN提供的丰富的API函数来编写程序运行时的监控工具,在程序运行过程中当执行到调用函数、操作返回地址这样的指令时,检测函数返回地址、函数入口地址这些数据的正确性,从而判断是否有攻击代码存在。该方法的特点是无需对现有的软件系统和硬件系统进行修改,也不需要知道程序的源代码,直接对二进制代码进行处理。
??? 本文阐述了课题研究背景、研究现状,研究分析了缓冲区溢出的原理和攻击方法以及防御措施,讲述了ELF文件的动态链接过程和映像文件的内存空间分布。在总结了已有的缓冲区溢出攻击特点基础上,提出了对几种缓冲区溢出攻击实时检测的方法,并举实例进行了分析。