论文部分内容阅读
信息技术的发展,对全球的经济、政治、科教、军事等社会发展的各方面带来了重大的影响。信息化不仅仅使人类社会获得了高效率和便利,同时也给人类社会带来了威胁和风险。从Windows系统到Linux系统,从Internet Explorer到Sendmail,无论是系统软件还是应用软件都不乏有缓冲区溢出漏洞的存在。在对信息系统的安全发动的攻击中,针对缓冲区漏洞进行的攻击已经成为一种最重要的攻击方式之一。截至到2004年12月,在CERT/CC新发布的100个最严重的漏洞中,近一半的漏洞是程序中的缓冲区溢出错误带来的。
本文分析缓冲区溢出原理和各种实际的编程情况,总结了导致缓冲区溢出的相关信息集。在流程,算法,和实现的角度研究了基于抽象语法树(AST)的缓冲区溢出漏洞检测方案。
在流程方面,提出了首先将源文件通过编译器转变成AST文件,接着对AST文件进行信息解析,重建和抽取的过程来获得缓冲区信息,最后利用所获得的信息建立约束条件,进行线性规划求解得出缓冲区溢出漏洞的检测流程。
在算法方面,针对AST文本节点间的相互关系,基于AST文件研究了函数调用关系的搜索算法,数组或者指针类型变量的搜索算法,含有数组或者指针类型结构体或者联合体的搜索算法,可能成为缓冲区的函数参数的搜索算法。
在实现方面,针对AST文件节点的结构特性,研究了基于Bison,XML和数据库来实现AST的信息的解析和重建的方案,针对缓冲区搜索算法,研究了基于XML和数据库来实现缓冲区信息的收集的方案。
论文最后提出了基于Fuzz的缓冲区溢出检测的改进,总结了基于AST的缓冲区溢出检测流程,提出了今后工作的研究方向。