一种基于GCC抽象语法树的缓冲区溢出漏洞检测方法技术

技术编号:4061372 阅读:533 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种缓冲区溢出漏洞的检测方法,特别涉及一种基于GCC抽象语法树的缓冲区溢出漏洞检测方法,属于信息安全技术领域。本发明专利技术利用GCC编译器对待分析源程序进行操作,生成抽象语法树;消除抽象语法树文本中所有与分析数据流、控制流无关的信息并保持有用信息的完整性;然后将其用于程序分析中,通过对抽象语法树上相关结点的监控来达到缓冲区溢出漏洞的分析和检测的目的。与传统的没有消除冗余的解析方法相比,本方法具有更好的实用性和更高的效率与准确率。

【技术实现步骤摘要】

本专利技术涉及一种缓冲区溢出漏洞的检测方法,特别涉及一种基于GCC抽象语法树的缓冲区溢出漏洞检测方法,属于信息安全

技术介绍
随着计算机技术的迅速发展,人类社会的信息化程度越来越高,整个社会的政治、经济、军事、文化以及其他领域对计算机信息系统的依赖程度也越来越高。在这种情况下,计算机系统的安全性得到了人们越来越多的关注。然而,大型软件、系统的编写需要许许多多程序员共同完成,他们将一个软件或系统分成若干板块,分工编写,然后再汇总,测试;最后再修补、发布,因此在软件中存在安全漏洞几乎是不可避免的。软件安全漏洞指软件设计实现过程中被引入的、在数据访问或行为逻辑等方面的缺陷。这些漏洞常常被攻击者利用,从而使程序行为违背一定的安全策略。基于上述原因,目前对软件安全漏洞检测技术的研究越来越受到重视。按照检测过程中是否需要执行程序的标准,软件安全漏洞检测技术分为动态检测和静态检测。(1)静态检测静态检测方法大致可分为三类:第一类是基于词法分析的检测方法。对应于早期检测工具,例如Grep工具等。它出现的时间较长,且发展较成熟,其优点是:漏洞特征以数据的形式独立于分析程序存在,可以灵活扩展本文档来自技高网...

【技术保护点】
一种基于GCC抽象语法树的缓冲区溢出漏洞检测方法,其特征在于:其具体操作步骤如下:步骤一、针对待分析源程序,直接利用GCC编译器生成抽象语法树AST;所述待分析源程序为C/C++源程序;步骤二、在步骤一的基础上,消除抽象语法树AST中的冗余信息;具体为:第1步:遍历抽象语法树AST中的所有结点,根据抽象语法树AST的结点中的“srcp”字段的情况将所有结点分为3种类型:a.如果“srcp”字段的值是源文件名,则将该节点标记为有用结点;b.如果“srcp”字段不是源文件名,则将溢出;对可能会和肯定会发生缓冲区溢的情况作出报警提示;经过上述步骤的操作,即可检测出缓冲区溢出漏洞。该节点标记为无用结点...

【技术特征摘要】
1.一种基于GCC抽象语法树的缓冲区溢出漏洞检测方法,其特征在于:其具体操作步骤如下:步骤一、针对待分析源程序,直接利用GCC编译器生成抽象语法树AST;所述待分析源程序为C/C++源程序;步骤二、在步骤一的基础上,消除抽象语法树AST中的冗余信息;具体为:第1步:遍历抽象语法树AST中的所有结点,根据抽象语法树AST的结点中的“srcp”字段的情况将所有结点分为3种类型:a.如果“srcp”字段的值是源文件名,则将该节点标记为有用结点;b.如果“srcp”字段不是源文件名,则将该节点标记为无用结点;c.如果该结点中不含“srcp”字段,则将该节点标记为待定结点;第2步:重新遍历抽象语法树AST中的所有结点,并将所有被标记为有用结点和无用结点的结点称为父结点;对于每一个父结点,依此查找它的各个子结点,并按照以下规则进行判定:a.若父结点为有用结点,其子结点为待定结点,则将该子结点标记为有用结点;b.若父结点为有用结点,其子结点为无用结点,则将该子结点标记为无用结点;c.若父结点为无用结点,其子结点为待定结点,则将该子结点标记为无用结点;d.若父结点为无用结点,其子结点为有用结点,则将该子结点标记为有用结点;重复本步骤直至待定结点的数量为零;第3步:重新遍历抽象语法树AST中的所有结点,如果该节点或者其子节点包含“call_expr”,即该节点或者其子节点包含调用表达式,并且该...

【专利技术属性】
技术研发人员:胡昌振邹家莘王崑声马锐薛静锋
申请(专利权)人:北京理工大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1