一种源代码安全漏洞的检测方法及系统技术方案

技术编号:16216824 阅读:20 留言:0更新日期:2017-09-15 23:03
本发明专利技术公开了一种源代码安全漏洞的检测方法及系统,所述方法包括:检测和定位源代码中所有的操作入口;分析每个操作入口,建立参照树,记录安全信息,作为安全属性;遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;根据检测到的安全漏洞来产生告警提示和修正建议。本发明专利技术中所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。

Method and system for detecting source code security vulnerability

Detection method and system of the invention discloses a source code for security vulnerabilities, the method includes: the operation of all entrance detection and location in the source code; analysis of each operation entrance, establish the reference tree, record of safety information, as security attributes; reference traversal tree, the use of security attributes to check whether there is the use of security vulnerabilities according to the existing security vulnerabilities; detected to generate alarm and amendments. The method described in the invention can greatly reduce false positive rate, and provides an effective solution for automated security auditing of source code only by detecting available traffic flows. This method avoids detection by the attacker can input operation, interface or other environmental conditions into the availability of traffic safety, which can reduce the cost of the audit of the source code, especially for large-scale applications. Based on the FSR information of the reference tree, the method can also provide accurate guidance for modifying the source code that is flawed.

【技术实现步骤摘要】
一种源代码安全漏洞的检测方法及系统
本专利技术涉及计算机
,尤其涉及一种源代码安全漏洞的检测方法及系统。
技术介绍
软件漏洞是当今信息系统绝大多数安全漏洞的来源。软件漏洞是软件中存在的一些缺陷,这些缺陷可以被第三方或程序利用来进行未经授权的资源访问,或改变控制权限来执行其他操作。软件漏洞轻则造成相应的经济或财产损失(如敏感信息被盗,不可用的服务),重则导致严重的灾难,尤其是发生在被人类生活和生计所依赖的关键基础设施的软件系统上(如核,生物,化学实验室,电网,水处理和分配系统,空中交通控制和交通信号系统)。与代码审计有关的前期工作多聚焦于缓冲区溢出漏洞。D.Wagner等提出了一种用于发现C语言代码中潜在缓冲区溢出的关键安全性问题的方法。该方法将缓冲区溢出检测转化为一个整数约束问题,并使用一些简单的图论技术构建了一个整数约束求解的有效算法。最后利用安全知识设计一个可以捕捉有可能会在实际程序中出现的安全相关性漏洞的启发式。VinodGanapathy等提出了一种将C字符的操作建模为一种线性规划,并根据线性规划的相关文献来确定缓冲区范围的方法,来了解并消除源代码中存在的缓冲区溢出漏洞。代码安全审查的对象是实践于应用中的源代码。这些审计的主要目的是发现安全漏洞和缺陷,然后准确地识别与修复。事实上,安全漏洞的概念被引入到软件主要是由于大多数软件及其功能无法在未知情况下保持正常运行。一般来说,攻击者有两个渠道来利用软件的缺陷:一是通过软件的输入;二是通过软件与其他应用层实例之间的接口。几乎所有的可利用安全漏洞都可以被用于执行非预期的操作,特殊的输入、接口或环境入口会触发这些安全漏洞从而对系统造成破坏。例如,黑客总是构造一些精心设计的字符串作为应用程序的输入来使其崩溃,或改变它的控制流来做其他恶意操作(如拒绝服务攻击,SQL注入和跨站点脚本攻击)。可利用安全漏洞总是与外部输入、接口或其他环境入口相关。但是,现有技术中检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是提供一种源代码安全漏洞的检测方法及系统,所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。为实现上述目的,本专利技术提供了一种源代码安全漏洞的检测方法,其特征在于,所述方法包括:检测和定位源代码中所有的操作入口;分析每个操作入口,建立参照树,记录安全信息,作为安全属性;遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;根据检测到的安全漏洞来产生告警提示和修正建议。上述的一种源代码安全漏洞的检测方法,其特征在于:所述操作入口包括但不限于用户输入、网络输入项、I/O输入项。上述的一种源代码安全漏洞的检测方法,其特征在于:所述源代码包括C、C++、C#、JAVA和Perl的主流开发语言。上述的一种源代码安全漏洞的检测方法,其特征在于:所述安全属性为程式化安全规则FSR,包括但不限于正则表达式、ACL。上述的一种源代码安全漏洞的检测方法,其特征在于:所述利用安全属性来检查是否有可利用安全漏洞的存在包括:检查参考树的父亲节点的FSR和孩子节点的FSR之间是否存在矛盾。一种源代码安全漏洞的检测系统,其特征在于,所述系统包括:操作入口定位器,用于检测和定位源代码中所有的操作入口;解析引擎模块,用于分析每个操作入口建立参照树;漏洞检测器,用于遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;告警修复生成器,用于根据检测到的安全漏洞来产生告警提示和修正建议。上述的一种源代码安全漏洞的检测系统,其特征在于:所述操作入口定位器搜索外部输入的API。上述的一种源代码安全漏洞的检测系统,其特征在于:所述解析引擎模块在句法分析中自动分配一些FSR规则。上述的一种源代码安全漏洞的检测系统,其特征在于:所述外部输入包括但不限于scanf输入、getchar输入、getwindowstext输入、socket输入。本专利技术的有益效果是:本专利技术中所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。以下将结合附图对本专利技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本专利技术的目的、特征和效果。附图说明图1是本专利技术的一种源代码安全漏洞的检测方法流程图。图2是本专利技术的一种源代码安全漏洞的检测系统结构框图。图3是本专利技术的检测缓冲区溢出漏洞的参考树示意图。具体实施方式如图1所示,一种源代码安全漏洞的检测方法,所述方法包括:101、检测和定位源代码中所有的操作入口;102、分析每个操作入口,建立参照树,记录安全信息,作为安全属性;103、遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;104、根据检测到的安全漏洞来产生告警提示和修正建议。优选的,所述操作入口包括但不限于用户输入、网络输入项、I/O输入项。而可以用来检测这些操作入口的方法是找到所有用于获取外界输入、用于与接口和其他环境入口做交互的API。优选的,所述源代码包括C、C++、C#、JAVA和Perl的主流开发语言。优选的,所述安全属性为程式化安全规则FSR,包括但不限于正则表达式、ACL。每个引用或引申的参考项可以追溯到的节点应该包含在树中。记录和保持原有的安全属性对进一步操作参考树来说是十分必要的。FSR可以定义不同树的安全性能,它是一种可被机器识别的自动处理过程。优选的,所述利用安全属性来检查是否有可利用安全漏洞的存在包括:检查参考树的父亲节点的FSR和孩子节点的FSR之间是否存在矛盾。如图2所示,一种源代码安全漏洞的检测系统,所述系统包括:操作入口定位器201,用于检测和定位源代码中所有的操作入口;解析引擎模块202,用于分析每个操作入口建立参照树;漏洞检测器203,用于遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;告警修复生成器204,用于根据检测到的安全漏洞来产生告警提示和修正建议。优选的,所述操作入口定位器搜索外部输入的API。优选的,所述解析引擎模块在句法分析中自动分配一些FSR规则。解析引擎利用的是编译器技术,它可以找到所有可以追溯到操作入口的代码块。它可以在句法分析中自动分配一些FSR规则。最后,该引擎将产生源代码参考树。优选的,所述外部输入包括但不限于scanf输入、getchar输入、getwindowstext输入、socket输入。以下给出本专利技术的几种具体应用情景:情景一:缓冲区溢出漏洞一般来说,当一个数据块B写入缓冲器A时,若B的大小大于A的合法分配的大小就会发本文档来自技高网
...
一种源代码安全漏洞的检测方法及系统

【技术保护点】
一种源代码安全漏洞的检测方法,其特征在于,所述方法包括:检测和定位源代码中所有的操作入口;分析每个操作入口,建立参照树,记录安全信息,作为安全属性;遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;根据检测到的安全漏洞来产生告警提示和修正建议。

【技术特征摘要】
1.一种源代码安全漏洞的检测方法,其特征在于,所述方法包括:检测和定位源代码中所有的操作入口;分析每个操作入口,建立参照树,记录安全信息,作为安全属性;遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;根据检测到的安全漏洞来产生告警提示和修正建议。2.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述操作入口包括但不限于用户输入、网络输入项、I/O输入项。3.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述源代码包括C、C++、C#、JAVA和Perl的主流开发语言。4.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述安全属性为程式化安全规则FSR,包括但不限于正则表达式、ACL。5.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述利用安全属性来检查是否有可利用安全漏洞的存在包括:...

【专利技术属性】
技术研发人员:司徒健辉林广银文革萍
申请(专利权)人:广东电力发展股份有限公司沙角A电厂
类型:发明
国别省市:广东,44

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

1