[发明专利]一种源代码漏洞检测方法及其系统有效
申请号: | 201310165266.7 | 申请日: | 2013-05-07 |
公开(公告)号: | CN103268281B | 公开(公告)日: | 2017-02-08 |
发明(设计)人: | 黄永刚 | 申请(专利权)人: | 北京天广汇通科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 |
代理公司: | 北京品源专利代理有限公司11332 | 代理人: | 马晓亚 |
地址: | 100097 北京市海淀区蓝靛厂南*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种源代码漏洞检测方法及其系统,方法包括S1、获取目标检测源代码的编程语言,根据编程语言编写的源代码所存在的安全漏洞构建安全漏洞规则库;S2、对目标检测源代码进行编译,生成中间表示文件,对中间表示文件进行解析,提取中间表示文件的上下文信息并存储起来;S3、依据存储的上下文信息构建调度上下文的状态自动机;S4、对状态自动机中的状态空间进行遍历,分别判断状态自动机中各状态空间是否与安全漏洞规则库中的规则相匹配,若是则获取产生漏洞的执行路径。本发明能有效地检测出源代码的安全漏洞,特别是能有效地检测多线程并发执行导致的安全漏洞,能实现从源代码层面保障软件的安全性和健壮性。 | ||
搜索关键词: | 一种 源代码 漏洞 检测 方法 及其 系统 | ||
【主权项】:
一种源代码漏洞检测方法,其特征在于,包括:S1、获取目标检测源代码的编程语言,根据所述编程语言编写的源代码所存在的安全漏洞构建安全漏洞规则库;S2、对所述目标检测源代码进行编译,生成中间表示文件,对所述中间表示文件进行解析,提取所述中间表示文件的上下文信息,将所述提取的上下文信息存储为一个六元组M={ID,V,S,T,Vinit,enable(S)},提取的源代码信息按照标识符cid=0,1,2,…,i,i∈N依次进行存储;其中,ID=CID∪MID是标识符集合,CID是类的标识符集合,cid∈CID,是为类设置的唯一标识符;MID是方法标识符集合,mid∈MID,是为类的方法设置的唯一标识符;V=Vcid∈CID∪Vmid∈MID是变量集合,其中Vcid∈CID是类的变量集合,包括类的全局变量和局部变量,Vmid∈MID是类中定义的方法的变量集合;S是状态集合,s∈S是类的一个状态;是状态转移关系集合,其中S是状态集合,Ins是指令集合;状态转移关系t=(si,a,sj)∈T表示源代码在状态si下执行指令a转换到状态sj;Vinit是类的初始状态;是状态集合S到ID集合的映射,表示状态对应的可调度的id∈ID,enable(s∈S)={set(id)|cid∈CID,mid∈MID}表示当处于状态s∈S时,可调度的cid和mid,可利用函数enable(s)确定某个状态下可调度的类和方法;S3、依据所述存储的上下文信息构建调度上下文的状态自动机;S4、根据预设的搜索算法对所述状态自动机中的状态空间进行遍历,分别判断所述状态自动机中各状态空间是否与所述安全漏洞规则库中的规则相匹配,若是则获取产生漏洞的执行路径;其中,所述步骤S3具体包括:步骤一、构造状态自动机的初始状态结点Sinit,所述Sinit是全局变量和局部变量的初始化赋值;步骤二、根据状态转移关系集合,构造状态自动机的其他状态:如果存在一个状态转移关系<si,a,sj>,状态si与已存在的状态匹配,且不存在状态sj,则构造状态赋值为sj,同时添加状态si到状态sj的边,边上标注指令a;步骤三、重复执行步骤二直至没有可以匹配的状态迁移关系,至此,自动机构造完毕;步骤四、记录上下文的状态空间,即状态自动机接受的语言集合L(Post*(Acid));其中,Post*为正向可达算法;Acid为基于正向可达算法依次构造对应的状态自动机。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天广汇通科技有限公司,未经北京天广汇通科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310165266.7/,转载请声明来源钻瓜专利网。
- 上一篇:数据问题处理方法和处理系统
- 下一篇:安装信息系统的方法及装置