一种检测终端源代码安全的方法、装置及系统制造方法及图纸

技术编号:13863700 阅读:76 留言:0更新日期:2016-10-19 15:28
本发明专利技术提供了一种检测终端源代码安全的方法、装置及系统,其中,方法包括:获取待检测源代码,对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图;根据预设的缺陷规则集,从所述控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷构建缺陷点的程序依赖图;遍历每个预定缺陷的缺陷点的程序依赖图,判断所述程序依赖图中存在未经过净化的数据污染点时,进一步将所述未经过净化的数据污染点作为潜在缺陷点。本发明专利技术实现了对待检测源代码的自动分析,发现了应用系统现有和潜在的安全问题,在有效的降低缺陷分析误报率和漏报率的同时,提高了检测效率。

【技术实现步骤摘要】

本专利技术涉及互联网安全领域,尤其是涉及一种检测终端源代码安全的方法、装置及系统
技术介绍
在应用系统软件中很多地方都有可能存在安全缺陷(漏洞),代码审核是对应用系统的源代码进行全方位的检查,从而实现对应用系统安全性的检测。现有的解决方案主要是通过源码服务,使用Fortify和Coverity进行源码缺陷分析,确保每次上线代码的合法合规。但是Fortify和Coverity两种工具误报漏报率高,检测效率低,经常出现扫描过程中崩溃的现象。
技术实现思路
为了能够实现对待检测源代码的自动分析,发现应用系统现有和潜在的安全问题,在有效的降低缺陷分析误报率和漏报率的同时,提高检测效率,本专利技术提供了一种检测终端源代码安全的方法、装置及系统。为了实现上述目的,本专利技术提供了一种检测终端源代码安全的方法,其中,所述方法包括:获取待检测源代码,对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图;根据预设的缺陷规则集,从所述控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷构建缺陷点的程序依赖图;遍历每个预定缺陷的缺陷点的程序依赖图,判断所述程序依赖图中存在未经过净化的数据污染点时,进一步将所述未经过净化的数据污染点作为潜在缺陷点。可选的,所述获取待检测源代码的具体步骤为:接收集中调度平台根据待
检测源代码的缺陷类型下发的待检测源代码。可选的,所述对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图的具体步骤为:对所述待检测源代码进行词法和语法解析,将所述待检测源代码生成抽象语法树,然后进一步将所述抽象语法树生成控制流程图。可选的,所述进一步将所述未经过净化的数据污染点作为潜在缺陷点之后,所述方法还包括:将所述潜在缺陷点形成缺陷报告,得到分析结果。可选的,所述将所述潜在缺陷点形成缺陷报告,得到分析结果之后,所述方法还包括:将所述分析结果上传至文件服务器,由所述文件服务器将所述分析结果回传至所述集中调度平台,由所述集中调度平台将所述分析结果进行分类,存入至数据库。依据本专利技术的另一个方面,还提供了一种用于检测终端源代码安全的装置,所述装置包括:解析模块,用于获取待检测源代码,对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图;第一处理模块,用于根据预设的缺陷规则集,从所述控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷构建缺陷点的程序依赖图;第二处理模块,用于遍历每个预定缺陷的缺陷点的程序依赖图,判断所述程序依赖图中存在未经过净化的数据污染点时,进一步将所述未经过净化的数据污染点作为潜在缺陷点。可选的,所述装置还包括接收模块,用于接收集中调度平台根据待检测源代码的缺陷类型下发的待检测源代码。可选的,所述解析模块进一步用于,对所述待检测源代码进行词法和语法解析,将所述待检测源代码生成抽象语法树,然后进一步将所述抽象语法树生成控制流程图。可选的,所述装置还包括输出模块,用于将所述潜在缺陷点形成缺陷报告,得到分析结果。可选的,所述装置还包括上传模块,用于将所述分析结果上传至文件服务器,由所述文件服务器将所述分析结果回传至所述集中调度平台,由所述集中调度平台将所述分析结果进行分类,存入至数据库。依据本专利技术的另一个方面,还提供了一种用于检测终端源代码安全的系统,
所述系统包括一个或多个用于检测终端源代码安全的装置,每一所述装置的所述第一处理模块中所提取的所述预定缺陷的缺陷点集合,形成为预设的缺陷规则集的扩展缺陷规则集。可选的,所述系统还包括:包含有待检测源代码的终端;集中调度平台,用于接收所述终端上传的待检测源代码,并分析所述待检测源代码的缺陷类型,根据所述待检测源代码的缺陷类型将所述待检测源代码下发至一个或多个所述装置;文件服务器,用于接收一个或多个的所述装置上传的分析结果,并将所述分析结果回传至所述集中调度平台;数据库,用于接收并存储所述集中调度平台进行分类后的分析结果。本专利技术的有益效果是:本专利技术通过预设的缺陷规则集,从待检测源代码的控制流程图中提取预定缺陷的缺陷点集合,并通过遍历每个预定缺陷的缺陷点的程序依赖图,找到程序依赖图中的未经过净化的数据污染点,最后将该数据污染点作为潜在缺陷点输出。本专利技术通过预设的缺陷规则集,能够实现对待检测源代码的自动分析,发现待检测源代码中的潜在缺陷点即发现应用系统中潜在的安全问题。另外,通过遍历预定缺陷的缺陷点的程序依赖图,可以有效降低缺陷分析的误报率和漏报率,提高待检测源代码的检测效率。附图说明图1表示本专利技术的实施例中检测终端源代码安全的方法的主要步骤流程图;图2表示本专利技术的实施例中检测终端源代码安全的方法的详细步骤流程图;图3表示本专利技术的实施例中用于检测终端源代码安全的装置的结构框图;以及图4表示本专利技术的实施例中用于检测终端源代码安全的系统的结构框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本
公开,并且能够将本公开的范围完整的传达给本领域的技术人员。如图1所示,为本专利技术的实施例中检测终端源代码安全的方法的主要步骤流程图,该方法主要包括如下步骤:步骤S101,获取待检测源代码,对待检测源代码进行词法和语法解析,将待检测源代码转化为控制流程图。在本步骤中,对终端源代码进行安全检测的首要任务是对待检测源代码进行词法和语法解析,将待检测源代码转化为控制流程图。具体的,在对待检测源代码进行词法和语法解析时,可以先将待检测源代码转化为抽象语法树,然后进一步将抽象语法树生成控制流程图,其中,控制流程图描述了程序的潜在可执行路径,且控制流程图更易于进行静态分析;此外,还可以在控制流程图上进行数据流和控制流分析,其中,基于语义的缺陷分析能够发现变量未初始化、变量未使用、函数未使用以及死代码等代码质量问题,而基于数据流和控制流分析结果的污染传播分析能够发现SQL注入、XSS、命令注入和DOS等常见的安全缺陷。在此需要说明的是,待检测源代码可以是C、C++、Java、PHP、Python、Perl、JavaScript、JSP等多种语言的待检测源代码。具体的,在对终端源代码进行安全检测之前,首先需要获取待检测源代码。可选的,在获取待检测源代码的过程中,终端将待检测源代码上传至集中调度平台,由集中调度平台根据待检测源代码的缺陷类型进行分类;最后接收集中调度平台根据待检测源代码的缺陷类型下发的待检测源代码。步骤S102,根据预设的缺陷规则集,从控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷构建缺陷点的程序依赖图。在本步骤中,首先需要获取预设的缺陷规则集,具体的,可以根据不同的检测需求提供不同的预设的缺陷规则集,例如可以提供结构化查询语言SQL、跨站脚本攻击XSS、命令注入和DOS等常见的安全缺陷的缺陷规则集。在此需要说明的是,由于缺陷规则集为一些预先收集并配置的编程规范,因此,缺陷规则集是可以进行扩展的。在获取预设的缺陷规则集之后,就可以根据预设的缺陷规则集从待检测源代码的控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷的缺本文档来自技高网
...

【技术保护点】
一种检测终端源代码安全的方法,其特征在于,所述方法包括:获取待检测源代码,对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图;根据预设的缺陷规则集,从所述控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷构建缺陷点的程序依赖图;遍历每个预定缺陷的缺陷点的程序依赖图,判断所述程序依赖图中存在未经过净化的数据污染点时,进一步将所述未经过净化的数据污染点作为潜在缺陷点。

【技术特征摘要】
1.一种检测终端源代码安全的方法,其特征在于,所述方法包括:获取待检测源代码,对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图;根据预设的缺陷规则集,从所述控制流程图中提取预定缺陷的缺陷点集合,并为每个预定缺陷构建缺陷点的程序依赖图;遍历每个预定缺陷的缺陷点的程序依赖图,判断所述程序依赖图中存在未经过净化的数据污染点时,进一步将所述未经过净化的数据污染点作为潜在缺陷点。2.根据权利要求1所述的方法,其特征在于,所述获取待检测源代码的具体步骤为:接收集中调度平台根据待检测源代码的缺陷类型下发的待检测源代码。3.根据权利要求1所述的方法,其特征在于,所述对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图的具体步骤为:对所述待检测源代码进行词法和语法解析,将所述待检测源代码生成抽象语法树,然后进一步将所述抽象语法树生成控制流程图。4.根据权利要求2所述的方法,其特征在于,所述进一步将所述未经过净化的数据污染点作为潜在缺陷点之后,所述方法还包括:将所述潜在缺陷点形成缺陷报告,得到分析结果。5.根据权利要求4所述的方法,其特征在于,所述将所述潜在缺陷点形成缺陷报告,得到分析结果之后,所述方法还包括:将所述分析结果上传至文件服务器,由所述文件服务器将所述分析结果回传至所述集中调度平台,由所述集中调度平台将所述分析结果进行分类,存入至数据库。6.一种用于检测终端源代码安全的装置,其特征在于,所述装置包括:解析模块,用于获取待检测源代码,对所述待检测源代码进行词法和语法解析,将所述待检测源代码转化为控制流程图;第一处理模块,用于根据预设的缺陷规则集,从所述控制流程图中提取预
\t定缺陷的缺陷点集合,并...

【专利技术属性】
技术研发人员:苏郁成方军
申请(专利权)人:中国移动通信集团陕西有限公司
类型:发明
国别省市:陕西;61

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

1