路径敏感检测方法和装置的制造方法

文档序号:8543617阅读:285来源:国知局
路径敏感检测方法和装置的制造方法
【技术领域】
[0001 ] 本发明实施例涉及领域计算机技术,尤其涉及一种路径敏感检测方法和装置。
【背景技术】
[0002]程序中存在的值流错误是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在,值流错误是指在定值点存在错误定值,且错误定值随值流到达引用点时引发的错误。为保障计算机系统安全运行,消除值流错误非常重要。
[0003]目前主要采用静态方法检测值流错误。静态方法不需要运行程序,仅需静态扫描源程序即可发现程序中的错误能够尽早地发现程序中的错误。而为了提高错误检测的精度,通常是通过逐一分析程序中所有可能执行的路径,然后检测值流错误。此类方法具有高检测精度,但由于路径空间的指数级膨胀问题,该分析方法的可扩展性并不理想,无法有效应用于大规模的应用程序。

【发明内容】

[0004]本发明实施例提供一种路径敏感检测方法和装置,从而解决现有技术中检测值流错误的方案存在的可扩展性不理想,无法有效应用于大规模的应用程序的问题。
[0005]第一方面,本发明实施例提供一种路径敏感检测方法,包括:
[0006]根据值流错误类型为变量设置初始的与错误相关的属性;
[0007]沿着定值引用链传播所述初始的与错误相关的属性,所述定值引用链为所有可能流经所述定值点的引用点所组成的集合;
[0008]在潜在错误语句处识别所述变量的与错误相关的属性;
[0009]根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,所述可能错误语句表示所述变量的定值语句经由部分路径到达会导致错误的引用语句;
[0010]根据所述可能错误语句获得路径敏感检测的语句输入集;
[0011]根据所述路径敏感检测的语句输入集进行路径敏感检测。
[0012]在第一方面的第一种可能的实现方式中,所述根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,包括:
[0013]根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述变量的与错误相关的属性是否为不安全的属性;
[0014]若所述变量的与错误相关的属性为不安全的属性,则通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句,所述控制节点为所述潜在错误语句相对于所述变量的定值语句的控制流图上的控制节点;
[0015]若存在检查语句,则查找是否存在特殊控制流;
[0016]若不存在特殊控制流,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤;
[0017]在检查过的所有控制节点中都不存在检查语句和特殊控制流的情况下,确定所述潜在错误语句为可能错误语句。
[0018]根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0019]若不存在检查语句,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤。
[0020]根据第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,还包括:
[0021]若存在特殊控制流,则确定所述潜在错误语句为一定不错语句。
[0022]根据第一方面、第一方面的第一种至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述根据所述可能错误语句获得路径敏感检测的语句输入集,包括:
[0023]对所述可能错误语句进行程序切片,以获得与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
[0024]根据第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述对所述可能错误语句进行程序切片,以获得与可能错误语句相关的语句集合,包括:
[0025]对所述可能错误语句进行后向切片,以获得语句集合Sbt ;
[0026]对所述变量的定值语句进行前向切片,以获得语句集合Sfs ;
[0027]计算所述Sbt与所述Sfs的交集Sts,并对所述变量的定值语句进行后向切片,以获得对所述变量的定值语句进行后向切片的结果;
[0028]计算获得的对所述变量的定值语句进行后向切片的结果与所述Sts的并集,并将所述对所述变量的定值语句进行后向切片的结果与所述Sts的并集作为与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
[0029]第二方面,本发明实施例提供一种路径敏感检测装置,包括:
[0030]设置模块,用于根据值流错误类型为变量设置初始的与错误相关的属性;
[0031]传播模块,用于沿着定值引用链传播所述初始的与错误相关的属性,所述定值引用链为所有可能流经所述定值点的引用点所组成的集合;
[0032]识别模块,用于在潜在错误语句处识别所述变量的与错误相关的属性;
[0033]确定模块,用于根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,所述可能错误语句表示所述变量的定值语句经由部分路径到达会导致错误的引用语句;
[0034]获得模块,用于根据所述可能错误语句获得路径敏感检测的语句输入集;
[0035]检测模块,用于根据所述路径敏感检测的语句输入集进行路径敏感检测。
[0036]在第二方面的第一种可能的实现方式中,所述确定模块,具体用于根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述变量的与错误相关的属性是否为不安全的属性;若所述变量的与错误相关的属性为不安全的属性,则通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句,所述控制节点为所述潜在错误语句相对于所述变量的定值语句的控制流图上的控制节点;若存在检查语句,则查找是否存在特殊控制流;若不存在特殊控制流,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤;在检查过的所有控制节点中都不存在检查语句和特殊控制流的情况下,确定所述潜在错误语句为可能错误语句。
[0037]根据第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定模块,还用于若不存在检查语句,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤。
[0038]根据第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述确定模块,还用于若存在特殊控制流,则确定所述潜在错误语句为一定不错语句。
[0039]根据第二方面、第二方面的第一种至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述获得模块,具体用于对所述可能错误语句进行程序切片,以获得与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
[0040]根据第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述获得模块,具体用于对所述可能错误语句进行后向切片,以获得语句集合Sbt ;对所述变量的定值语句进行前向切片,以获得语句集合Sfs ;计算所述Sbt与所述Sfs的交集STS,并对所述变量的定值语句进行后向切片,以获得对所述变量的定值语句进行后向切片的结果;计算获得的对所述变量的定值语句进行后向切片的结果与所述Sts的并集,并将所述对所述变量的定值语句进行后向切片的结果与所述Sts的并集作为与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
[0041]本发明实施例路径敏感检测方法和装置,通过根据值流错误类型为变量设置初始的与错误相关的属性,沿着定值引用链传播初始的与错误相关的属性,在潜在错误语句处识别变量的与错误相关的属性,根据在潜在错误语句处识别的变量的与错误相关的属性,确定潜在错误语句为可能错误语句,根据可能错误语句获得路径敏感检测的语句输入集,根据路径敏感检测的语句输入集进行路径敏感检测。从而解决现有技术中检测值流错误存在的可扩展性并不理想,无法有效应用于大规模的应用程序的问题,通过减少路径敏感检测的语句输入集降低了检测开销,能够有效应用于大规模的应用程序。
【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0043]图1为本发明实施例一所提供的路径敏感检测方法的流程图;
[00
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1