[发明专利]路径敏感检测方法和装置有效
申请号: | 201410064881.3 | 申请日: | 2014-02-25 |
公开(公告)号: | CN104866417B | 公开(公告)日: | 2018-01-02 |
发明(设计)人: | 衷璐洁;霍玮;李丰;张兆庆 | 申请(专利权)人: | 华为技术有限公司;中国科学院计算技术研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同立钧成知识产权代理有限公司11205 | 代理人: | 刘芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 路径 敏感 检测 方法 装置 | ||
技术领域
本发明实施例涉及领域计算机技术,尤其涉及一种路径敏感检测方法和装置。
背景技术
程序中存在的值流错误是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在,值流错误是指在定值点存在错误定值,且错误定值随值流到达引用点时引发的错误。为保障计算机系统安全运行,消除值流错误非常重要。
目前主要采用静态方法检测值流错误。静态方法不需要运行程序,仅需静态扫描源程序即可发现程序中的错误能够尽早地发现程序中的错误。而为了提高错误检测的精度,通常是通过逐一分析程序中所有可能执行的路径,然后检测值流错误。此类方法具有高检测精度,但由于路径空间的指数级膨胀问题,该分析方法的可扩展性并不理想,无法有效应用于大规模的应用程序。
发明内容
本发明实施例提供一种路径敏感检测方法和装置,从而解决现有技术中检测值流错误的方案存在的可扩展性不理想,无法有效应用于大规模的应用程序的问题。
第一方面,本发明实施例提供一种路径敏感检测方法,包括:
根据值流错误类型为变量设置初始的与错误相关的属性;
沿着定值引用链传播所述初始的与错误相关的属性,所述定值引用链为所有可能流经所述定值点的引用点所组成的集合;
在潜在错误语句处识别所述变量的与错误相关的属性;
根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,所述可能错误语句表示所述变量的定值语句经由部分路径到达会导致错误的引用语句;
根据所述可能错误语句获得路径敏感检测的语句输入集;
根据所述路径敏感检测的语句输入集进行路径敏感检测。
在第一方面的第一种可能的实现方式中,所述根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述潜在错误语句为可能错误语句,包括:
根据所述在潜在错误语句处识别的所述变量的与错误相关的属性,确定所述变量的与错误相关的属性是否为不安全的属性;
若所述变量的与错误相关的属性为不安全的属性,则通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句,所述控制节点为所述潜在错误语句相对于所述变量的定值语句的控制流图上的控制节点;
若存在检查语句,则查找是否存在特殊控制流;
若不存在特殊控制流,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤;
在检查过的所有控制节点中都不存在检查语句和特殊控制流的情况下,确定所述潜在错误语句为可能错误语句。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
若不存在检查语句,则将下一个控制节点作为当前控制节点,并执行所述通过检查当前的控制节点确定所述当前的控制节点中是否存在检查语句的步骤。
根据第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,还包括:
若存在特殊控制流,则确定所述潜在错误语句为一定不错语句。
根据第一方面、第一方面的第一种至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述根据所述可能错误语句获得路径敏感检测的语句输入集,包括:
对所述可能错误语句进行程序切片,以获得与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
根据第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述对所述可能错误语句进行程序切片,以获得与可能错误语句相关的语句集合,包括:
对所述可能错误语句进行后向切片,以获得语句集合SBT;
对所述变量的定值语句进行前向切片,以获得语句集合SFS;
计算所述SBT与所述SFS的交集STS,并对所述变量的定值语句进行后向切片,以获得对所述变量的定值语句进行后向切片的结果;
计算获得的对所述变量的定值语句进行后向切片的结果与所述STS的并集,并将所述对所述变量的定值语句进行后向切片的结果与所述STS的并集作为与所述可能错误语句相关的语句集合,并将所述与所述可能错误语句相关的语句集合作为路径敏感检测的语句输入集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;中国科学院计算技术研究所,未经华为技术有限公司;中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410064881.3/2.html,转载请声明来源钻瓜专利网。