[发明专利]基于XML中间模型以及缺陷模式匹配的静态检测系统有效
申请号: | 201110208958.6 | 申请日: | 2011-07-25 |
公开(公告)号: | CN102339252A | 公开(公告)日: | 2012-02-01 |
发明(设计)人: | 周宽久;赖晓晨;王洁;闫旭;袁柱;王喆;汤乐敏 | 申请(专利权)人: | 大连理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 大连理工大学专利中心 21200 | 代理人: | 梅洪玉 |
地址: | 116100*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 xml 中间 模型 以及 缺陷 模式 匹配 静态 检测 系统 | ||
技术领域
本发明属于软件检测技术领域,涉及一种基于XML中间模型以及缺陷模式匹配的静态检测方法。
背景技术
目前,检测软件安全漏洞的方法主要有动态测试和静态分析。
动态测试方法通过软件的实际执行来发现软件中的错误,由于只能对有限的测试用例进行检查,所以不能保证发现软件的所有安全漏洞。
静态分析不编译运行程序,而是通过对程序源代码进行分析以发现其中的错误,能在早期发现30%~70%的逻辑设计和编码缺陷引入的安全漏洞而。静态分析技术通过对源代码进行检查,往往能在开发早期发现软件隐含的安全问题,提高程序的可靠性和健壮性。尽管静态分析方法可能产生一定的漏报(false negatives)或误报(false positives),但仍然是当今最实用、最有效的安全漏洞检测方法之一。在实际使用中,静态测试能快速找到软件安全缺陷,比动态测试更有效率。目前,软件安全静态分析技术主要分为模型检测、词法分析、类型推导、符号执行、定理证明等。其中,模型检测是一种验证有限状态的并发系统的方法,基本思想是对于有限状态的系统构造状态机或者有向图等抽象模型,再对模型进行遍历以验证系统的某一性质。模型检测的难点在于如何避免状态空间爆炸。为此人们提出了多种方法。其中符号化模型检测方法是将抽象模型中的状态转换为逻辑公式,然后判定公式的可满足性。还可将模型转化成自动机,同时将需要检查的公式转换为一个等价的自动机,再将此自动机取补。这两个自动机的积构成了一个新的自动机,则判定模型是否具有某一属性的问题就转换成检查这个新自动机能接受的语言是否为空。
发明内容
本发明提供了一种基于XML中间模型以及缺陷模式匹配的源代码静态检测方法,通过构造基于关系存储模式的关系语法树,以及基于XML的中间数据存储模型,将源代码安全属性信息提取并存储到XML中间模型中,以供规则检测器进行规则匹配和缺陷检测。
本发明的技术方案如下:
1、静态检测系统的整体架构建立
本发明整体架构包括系统前端静态信息提取和系统后端漏洞检测两个功能模块。
系统前端静态信息提取模块由预处理模块和源代码解析模块组成,负责对待检测代码源文件进行预处理和语法制导的解析,提取所需静态信息(即安全编程规则所涉及的所有代码信息),构建关系语法树,并根据制定的XML中间模型生成XML文件;具体如下:
1)预处理模块:完成对源代码文件的宏替换功能,该功能的实现借用G++的预处理器辅助完成。预处理后将生成.i文件。
G++预处理将执行源代码中的所有预处理指令。由于源代码中的所有预处理指令均是规则检测的对象,所以我们需要将所有的预处理指令重新恢复到源代码文件中。同时,由于文件包含指令的执行,使源代码文件中被引入了大量的代码,尤其是引入了大量的C++标准库文件,但这是标准库文件中的代码并不是我们检测的对象,需要从将其删除。
预处理模块首先将源代码文件读入内存,对源文件中的特殊区域添加标记,标记添加的原则是:标记只分为两种,BEGIN与END;BEGIN与END之间的内容是需要从后续的.i中恢复的内容;标记之外的内容是源代码中的所有预处 理指令。
系统通过调用G++-E-C对添加了标记的代码文件进行预处理,生成含有标记信息的.i文件。通过分别从添入标记的源代码文件和带有标记的.i文件中分别提取相应信息,即可获得符合规定的预处理后的文件。其中,从添入标记的源代码文件中提取出所有预处理指令及它们在源代码文件中的各自的行号,从带有标记信息的.i文件中提取两个标记之间的所有代码。
2)源代码解析模块:主要完成对源代码文件的转换,即将源代码文件转换成为XML文件。源代码解析模块按照功能可划分为词法分析模块、语法分析模块和XML生成模块。代码解析器以LEX、YACC描述脚本构造词法分析器和语法分析器,对通过GCC编译生成的.i文件进行解析,从中识别出代码类型、文本、行号以及变量、函数声明等数据信息。这些信息被存储在系统内部临时“数据池”中,经XML生成模块的处理,依据设计的XML中间模型的结构,将解析出的数据信息存储在XML文件中。
系统后端漏洞检测模块:负责对系统前端生成的特定格式的XML文件执行规则检测。安全规则库中存储着安全规则,针对已经转换为XML中间文件的检测对象,规则以适宜检测XML文件的一种形式存储在安全规则库中。规则配置文件中存储每次规则检测时用户进行的一些系统配置信息。系统后端通过读入XML中间文件、规则配置文件以及安全知识库,输出检测结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110208958.6/2.html,转载请声明来源钻瓜专利网。