一种基于静态分析技术的源代码检测系统及方法技术方案

技术编号:14479740 阅读:111 留言:0更新日期:2017-01-25 12:24
本发明专利技术公开了一种基于静态分析技术的源代码检测系统及方法,所述系统包括:接口单元,用于接收待检测的源代码以及用户的标识;源代码安全管理单元,对所述待检测的源代码进行识别,以确定所述待检测的源代码的编程语言和编译器版本,并且根据用户的标识获取预先设定的定制规则,向缺陷知识库发送包括所述预先设定的定制规则的检测请求;缺陷知识库,用于存储多个规则库并且根据所述预先设定的定制规则从所述多个规则库获取至少一个检测规则;集成编译器,根据所述待检测的源代码的编程语言和编译器版本对所述待检测的源代码进行编译,以获得编译信息;以及符号执行检测单元,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果。

【技术实现步骤摘要】

本专利技术涉及源代码检测领域,并且更具体地,涉及一种基于静态分析技术的源代码检测系统及方法
技术介绍
随着网络技术和应用的飞速发展,信息系统安全正面临着前所未有的挑战。网络化和互联互通性已经成为当前软件和信息系统的发展方向。信息系统与互联网或其他网络的互连,使信息系统遭受攻击的概率增大,也导致了信息系统面临的安全威胁空前地增加。另一方面,随着构建在信息系统之上的各种业务应用的不断丰富,以及软件和信息系统复杂程度的不断提高,信息系统中隐藏的各种安全隐患也越来越多,并且通常难以被发现和消除。最近几年,重大安全事件的频频发生揭示了当前信息系统安全形势的严峻性。仅仅依靠传统的安全防护机制来保障信息安全的做法已经逐渐力不从心。软件代码是构建系统信息的基础组件,软件代码中安全漏洞和未声明功能(后门)的存在是安全事件频繁发生的根源。忽视软件代码自身的安全性,而仅仅依靠外围的防护、事后的修补等方法,舍本逐末,必然事倍功半。只有通过管理和技术手段保障软件代码自身的安全性,再辅以各种安全防护手段,才是解决当前安全问题的根本解决之道。然而,目前的源代码检测系统只能按照检测系统的检测规则进行检测,例如,进行检测系统预先确定的缺陷类型的检测。另一方面,当前主流的源代码安全检测产品通常是根据通用需求开发,而很多用户由于各自业务的不同,对源代码安全有很多个性化的需求,例如组织内部安全编码规范的自动化合规检测等。目前的工具对这种个性化需求的支持不足,导致国内用户在应用源代码安全检测产品时无法完全满足组织自身的需求。此外,现有技术中并没有在进行源代码分析时使用任何有效的静态分析技术的启示。
技术实现思路
为了解决上述问题,提供一种基于静态分析技术的源代码检测系统,所述系统包括:接口单元,用于接收待检测的源代码以及用户的标识;源代码安全管理单元,对所述待检测的源代码进行识别,以确定所述待检测的源代码的编程语言和编译器版本,并且根据用户的标识获取预先设定的定制规则,向缺陷知识库发送包括所述预先设定的定制规则的检测请求;缺陷知识库,用于存储多个规则库并且根据所述预先设定的定制规则从所述多个规则库获取至少一个检测规则;集成编译器,根据所述待检测的源代码的编程语言和编译器版本对所述待检测的源代码进行编译,以获得编译信息;以及检测单元,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果。优选地,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果包括:根据所述至少一个检测规则对编译信息进行模拟符号执行检测以确定检测结果,所述模拟符号执行检测能够避免对所述待检测的源代码中无法执行的路径进行检测,从而降低检测误报率。优选地,所述模拟符号执行检测能够避免对源代码中无法执行的路径进行检测,从而降低检测误报率包括:所述模拟符号执行检测将待检测的源代码中的输入值用作符号值,针对每条执行路径进行符号模拟执行,在执行路径的分支处记录变量的约束信息并且对约束信求解,在判断所述分支处的分支路径无法执行时,不对所述分支路径进行检测,从而降低检测误报率。优选地,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果包括:根据所述至少一个检测规则对编译信息进行数据流分析检测以确定检测结果。优选地,其中所述数据流分析检测使用流不敏感分析、流敏感分析和路径敏感分析对编译信息进行数据流分析。优选地,其中所述流不敏感分析用于确定编译信息中函数的整体数据流信息。优选地,其中所述流敏感分析用于确定函数的控制流程中每个节点所对应的数据流信息,优选地,所述路径敏感分析为函数的控制流程中沿不同路径到达同一节点的不同状态信息优选地,其中所述源代码安全管理单元基于用户所属行业的代码安全规范确定所述预先设定的定制规则。优选地,其中所述源代码安全管理单元基于用户预先输入的检测要求确定所述预先设定的定制规则。优选地,其中所述集成编译器包括以下内容中的至少一个:C/C++编译器、Java/JSP编译器、C#编译器、Python编译器以及PHP编译器。优选地,所述多个规则库为:缺陷检测规则库、合规检测规则库以及开源组件检测规则库。优选地,所述缺陷检测规则库包括以下内容中的至少一个:常见缺陷列表、安全隐患列表以及编程错误列表。优选地,所述合规检测规则库包括以下内容中的至少一个:计算机安全应急响应组CERT安全编码规范和汽车产业软件可靠性协会MISRA的C/C++安全编码规范。优选地,所述开源组件检测规则库包括通过搜索引擎和/或大数据网络所收集的开源组件信息。优选地,所述多个规则库还包括定制化规则库,所述定制化规则库用于存储与定制规则对应的至少一个检测规则。优选地,所述源代码安全管理单元对检测结果进行分析以确定是否需要进行额外检测,如果不需要进行额外检测,则根据检测结果生成检测报告。优选地,所述源代码安全管理单元对检测结果进行分析以确定是否需要进行额外检测,如果需要进行额外检测,则通过接口单元将检测结果中的缺陷信息发送给缺陷管理系统,以进行额外检测。优选地,还包括采用离线或在线方式来更新缺陷知识库。根据本专利技术的另一方面,提供一种基于静态分析技术的源代码检测方法,所述方法包括:接收待检测的源代码以及用户的标识;对所述待检测的源代码进行识别,以确定所述待检测的源代码的编程语言和编译器版本,并且根据用户的标识获取预先设定的定制规则,向缺陷知识库发送包括所述预先设定的定制规则的检测请求;根据所述预先设定的定制规则从缺陷知识库中的多个规则库获取至少一个检测规则;所述待检测的源代码的编程语言和编译器版本对所述待检测的源代码进行编译,以获得编译信息;以及根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果。优选地,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果包括:根据所述至少一个检测规则对编译信息进行模拟符号执行检测以确定检测结果,所述模拟符号执行检测能够避免对所述待检测的源代码中无法执行的路径进行检测,从而降低检测误报率。优选地,所述模拟符号执行检测能够避免对源代码中无法执行的路径进行检测,从而降低检测误报率包括:所述模拟符号执行检测将待检测的源代码中的输入值用作符号值,针对每条执行路径进行符号模拟执行,在执行路径的分支处记录变量的约束信息并且对约束信求解,在判断所述分支处的分支路径无法执行时,不对所述分支路径进行检测,从而降低检测误报率。优选地,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果包括:根据所述至少一个检测规则对编译信息进行数据流分析检测以确定检测结果。优选地,其中所述数据流分析检测使用流不敏感分析、流敏感分析和路径敏感分析对编译信息进行数据流分析。优选地,其中所述流不敏感分析用于确定编译信息中函数的整体数据流信息。优选地,其中所述流敏感分析用于确定函数的控制流程中每个节点所对应的数据流信息,优选地,所述路径敏感分析为函数的控制流程中沿不同路径到达同一节点的不同状态信息优选地,其中基于用户所属行业的代码安全规范确定所述预先设定的定制规则。优选地,其中基于用户预先输入的检测要求确定所述预先设定的定制规则。优选地,其中所述编译器包括以下内容中的至少一个:C/C++编译器、Java/JSP编译器、C#编译器本文档来自技高网
...
一种基于静态分析技术的源代码检测系统及方法

【技术保护点】
一种基于静态分析技术的源代码检测系统,所述系统包括:接口单元,用于接收待检测的源代码以及用户的标识;源代码安全管理单元,对所述待检测的源代码进行识别,以确定所述待检测的源代码的编程语言和编译器版本,并且根据用户的标识获取预先设定的定制规则,向缺陷知识库发送包括所述预先设定的定制规则的检测请求;缺陷知识库,用于存储多个规则库并且根据所述预先设定的定制规则从所述多个规则库获取至少一个检测规则;集成编译器,根据所述待检测的源代码的编程语言和编译器版本对所述待检测的源代码进行编译,以获得编译信息;以及检测单元,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果。

【技术特征摘要】
1.一种基于静态分析技术的源代码检测系统,所述系统包括:接口单元,用于接收待检测的源代码以及用户的标识;源代码安全管理单元,对所述待检测的源代码进行识别,以确定所述待检测的源代码的编程语言和编译器版本,并且根据用户的标识获取预先设定的定制规则,向缺陷知识库发送包括所述预先设定的定制规则的检测请求;缺陷知识库,用于存储多个规则库并且根据所述预先设定的定制规则从所述多个规则库获取至少一个检测规则;集成编译器,根据所述待检测的源代码的编程语言和编译器版本对所述待检测的源代码进行编译,以获得编译信息;以及检测单元,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果。2.根据权利要求1所述的系统,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果包括:根据所述至少一个检测规则对编译信息进行模拟符号执行检测以确定检测结果,所述模拟符号执行检测能够避免对所述待检测的源代码中无法执行的路径进行检测,从而降低检测误报率。3.根据权利要求2所述的系统,所述模拟符号执行检测能够避免对源代码中无法执行的路径进行检测,从而降低检测误报率包括:所述模拟符号执行检测将待检测的源代码中的输入值用作符号值,针对每条执行路径进行符号模拟执行,在执行路径的分支处记录变量的约束信息并且对约束信求解,在判断所述分支处的分支路径无法执行时,不对所述分支路径进行检测,从而降低检测误报率。4.根据权利要求1所述的系统,根据所述至少一个检测规则对编译信息进行静态分析检测以确定检测结果包括:根据所述至少一个检测规则对编译信息进行数据流分析检测以确定检测结果。5.根据权利要求4所述的系统,其中所述数据流分析检测使用流不敏感分析、流敏感分...

【专利技术属性】
技术研发人员:章磊韩建
申请(专利权)人:北京奇虎测腾科技有限公司北京奇安信科技有限公司
类型:发明
国别省市:北京;11

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

1