[发明专利]程序的代码审核方法和装置有效
申请号: | 201210271493.3 | 申请日: | 2012-07-31 |
公开(公告)号: | CN103577758A | 公开(公告)日: | 2014-02-12 |
发明(设计)人: | 汪涛 | 申请(专利权)人: | 西门子公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 李慧 |
地址: | 德国*** | 国省代码: | 德国;DE |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 代码 审核 方法 装置 | ||
技术领域
本发明涉及软件安全领域,尤其涉及一种程序的代码审核方法和装置。
背景技术
在软件的开发过程中,需要对软件的源代码进行审核。代码审核的目的是检测源代码中是否存在安全漏洞并在检测到安全漏洞时发出告警信息。
其中一种安全漏洞为输入验证(validation)漏洞,该漏洞是由于外部的输入参数没有经过有效的安全检查(即检查该输入参数是否符合设定规范并在不符合规范时对该输入参数进行修正)就被传递到危险函数以作为该危险函数的输入参数所造成的。危险函数又称为引爆点(sink),是根据传入的输入参数而执行特定操作的函数。例如,对数据库的SQL查询函数、HTML页面的输出函数和操作系统命令的执行函数等,在输入参数不符合规范时,危险函数的调用会对软件系统带来安全问题。因此,恶意攻击者可以通过输入不符合规范的参数来达到攻击软件系统的目的。
目前,使用代码审核工具检测输入验证漏洞的方法如下:代码审核工具在源代码中查找漏洞模型中定义的作为扫描起始点的函数,并从该函数开始进行代码扫描,通过代码扫描确定外部的输入参数的传递路径,在该输入参数没有经过安全检查就到达漏洞模型中定义的危险函数时,确定检测到安全漏洞并发出告警信息。
本发明人发现现有技术存在以下缺陷:
其一,代码审核工具在代码审核过程中需要通过代码扫描确定外部的输入参数到危险函数之间的路径,工作量较大,效率较低。
其二,在输入参数经过安全检查,但安全检查后的输入参数仍不安全的情况下,并不会发出告警信息,但实际上此时是会导致安全漏洞的,安全漏洞检测方法的适用性较低。例如在检查函数检查到不安全的输入参数而不对其进行修正时,当其它的函数调用该输入参数时仍然存在安全漏洞。
其三,在漏洞模型中仅使用类名和方法名定义作为扫描起始点的函数,由于类名和方法名具有全局唯一性,因此,需要将各个函数逐个定义在漏洞模型中,这导致定义漏洞模型的工作量较大,效率低下,同时定义模式单一。相应地在确定代码扫描的起始点时,需要逐条读取漏洞模型中定义的函数,导致审核效率较低。
发明内容
在本发明中,危险函数又称为引爆点(sink),是根据传入的输入参数而执行特定操作的函数。在其输入参数不符合规范时危险函数被调用会对系统带来安全问题。检查函数是用于对外部的输入参数进行安全检查的函数,源函数为接收程序外部的输入参数的函数。功能函数是未被定义为危险函数和检查函数的函数。
根据本发明的一个方面,提供一种利用漏洞模型审核程序代码的方法,该方法包括:
对程序的源代码进行扫描,当在扫描到功能函数时,确定所述功能函数的输入参数是否被传递到漏洞模型定义的危险函数、和所述输入参数从所述功能函数传递到所述危险函数之间的路径上是否缺少漏洞模型中定义的检查函数;
在确定所述功能函数的输入参数被传递到漏洞模型定义的危险函数,并且所述输入参数从所述功能函数传递到所述危险函数的路径上缺少漏洞模型中定义的检查函数时,将所述功能函数作为新的危险函数加入到漏洞模型中,并确定存在安全漏洞;所述漏洞模型中至少包含被扫描代码的危险函数和检查函数的定义信息。
在扫描到的功能函数的输入参数被传递到危险函数,并且所述输入参数从所述功能函数到所述危险函数之间的路径上缺少检查函数时,将所述功能函数作为新的危险函数加入到漏洞模型中。该方案实现了危险函数的自学习功能,进而能够缩短代码审核所需的时间。例如,若源代码中存在的外部输入参数到危险函数之间的一条传递路径为A-B-CD,其中A、D分别为漏洞模型中定义的源函数和危险函数,在没有危险函数的自学习功能时,在根据漏洞模型进行代码扫描的过程中需要扫描的路径为A-B-C-D;在增加了上述危险函数的自学习功能后,如果在自学习过程中将C函数作为新的危险函数加入到了漏洞模型中,之后在根据该漏洞模型进行代码扫描的过程中需要扫描的路径变为A-B-C,这样就缩短了代码扫码所需的时间,提高了代码审核的效率。
较佳地,在扫描到检查函数时,根据记录在漏洞模型中该检查函数输入值(InputValue)的属性信息,确定经过该检查函数的安全检查后的输入参数是否安全;
在确定输入参数不安全并且该不安全的输入参数被传递到漏洞模型定义的危险函数时,确定检测到安全漏洞。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西门子公司,未经西门子公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210271493.3/2.html,转载请声明来源钻瓜专利网。