分析目标软件的安全漏洞的制作方法_3

文档序号:8947479阅读:来源:国知局
息结合进单一分析平台将使得本系统和方法能够实现本发明所述的若干目标。
[0031]计算设备(102)可以进一步包括安全缺陷优先级处理模块(148),当被处理器(121)执行时,安全缺陷优先级处理模块(148)通过把安全漏洞与已知是复杂或不稳定的目标软件的区域相关而按优先顺序列出静态分析中发现的安全漏洞,观察一段时间安全缺陷的模式,以把诸如,例如似乎来来去去的问题的、不能持续确定的问题除去或不再优先考虑(de-pr1ritize),提高出现在展示了显著的再利用的目标软件的区域中的问题的优先级,并提高出现在已知被频繁地访问或者在运行时环境中脆弱的目标软件的区域中的问题的优先级。在一个示例中,安全缺陷优先级处理模块(148)获得的安全缺陷优先级处理信息被存储到诸如,例如计算设备(102)的数据存储设备(122)或历史扫描数据库(108)的数据存储设备中。
[0032]计算设备(102)可以进一步包括安全缺陷预测模块(150),当被处理器(121)执行时,安全缺陷预测模块(150)把展示了高复杂度或搅动(churn)的目标软件的代码的区域中的安全漏洞的出现率相关,来预测并警告代码的区域正在趋向于变得更加有风险,把展示了运行时环境中的频繁访问或安全攻击的目标软件的代码的区域中的安全漏洞的出现率相关,并且根据软件代码复杂度和稳定性度量与过去分析中发现的安全缺陷之间的相关的模式,预测目标软件中的安全缺陷。在一个示例中,安全缺陷预测模块(150)获得的安全缺陷预测信息被存储到诸如,例如计算设备(102)的数据存储设备(122)或历史扫描数据库(108)的数据存储设备中。
[0033]图2为示出根据本发明所述的原理的一个示例的、分析目标软件的安全漏洞的方法(200)的流程图。图2的方法(200)可以通过以处理器(图1,121)执行静态分析模块(140),利用静态分析扫描,在一段时间,若干次迭代扫描(块202)代码库,而开始。如上所述,静态分析模块(图1,140)对代码库进行数据流分析,以确定从外界取得输入的若干程序位置,诸如,例如通过用户输入。静态分析模块(图1,140)通过由目标软件进行的分配、函数调用和操作来跟踪输入的实例。若干代码规则可以与数据流分析一起被应用。这些代码规则指示数据流分析内的污染值的安全违规。在一个示例中,计算设备(图1,102)报告根据数据流分析和代码规则得到的安全违规的数目。
[0034]方法(200)可以通过以处理器(图1,121)执行代码度量模块(142),在一段时间,若干次迭代计算(块204)代码库的若干代码度量,而继续。在一个示例中,处理器(图1,121)计算(块204)整个代码库的若干代码度量。在一个示例中,代码度量可以是指示代码的复杂度、可理解性、可测试性、说明和代码复杂性的任何软件代码质量的测量。在一个示例中,代码度量可以包括目标软件的圈复杂度、被定义为代码的一部分被再次使用或被其它部分调用有多频繁的代码重用,定义代码随时间的改变的测量的代码搅动,其它代码度量,及其组合。在另一示例中,代码度量是代码库的非安全相关的属性。
[0035]处理器(图1,121)执行安全相关模块(146),分析(块206)安全缺陷演变和若干代码度量之间的若干相关。安全相关模块(146)在一段时间的若干扫描中,结合这三个安全数据源中的每个数据源、静态分析结果、软件代码度量和运行时安全信息。在一个示例中,处理器(图1,121)把安全相关模块(146)决定的分析输出给输出设备(图1,130)以供用户检查。以这种方式,为例如目标软件的开发者的用户可以使用安全相关模块(146)提供的分析来按优先顺序列出与安全缺陷相关联的目标软件代码改变,预测目标软件代码中的软件安全缺陷,或其组合。
[0036]图3为示出根据本发明所述的原理的另一示例的、分析目标软件的安全漏洞的方法(300)的流程图。如上面连同图2所述地,图3的方法(300)可以通过以处理器(图1,121)执行静态分析模块(140),利用静态分析扫描,在一段时间,若干次迭代扫描(块302)代码库,而开始。
[0037]如上面连同图2所述地,处理器(图1,121)执行运行时安全模块(144),从一个版本的目标软件的运行时环境获得(块304)运行时安全信息。在一个示例中,如包围块304的虚线所示,从一个版本的目标软件的运行时环境获得(块304)运行时安全信息是可选的。从一个版本的目标软件的运行时环境获得(块304)运行时安全信息通过提供另外的分析数据,增强了本系统和方法的功能性,但是如下面将更详细地讨论地,安全缺陷的优先级处理(图3,块314)和与代码库相关联的风险的预测(图3,块316)不需要从一个版本的目标软件的运行时环境获得(块304)运行时安全信息。
[0038]如上面连同图2所述地,方法(300)可以通过以处理器(图1,121)执行代码度量模块(142),在一段时间,若干次迭代计算(块306)代码库的若干代码度量,而继续。计算设备(102)确定(块308)是否已经达到通过块302、304和308获得统计数据(即,静态分析结果、软件代码度量和运行时安全信息)的迭代的目标次数。在一个示例中,用户可以定义计算设备(102)将在获得统计数据中使用的迭代的次数。在另一示例中,计算设备(102)将在获得统计数据中使用的迭代的次数由安全相关模块(图1,146)定义。可以进行任何次数的迭代,以获得静态分析结果、软件代码度量和运行时安全信息。在一个示例中,迭代的次数为多次迭代。在一个示例中,迭代的次数可以在I和1000之间。在另一示例中,迭代的次数可以在10和100之间。然而,可以进行通过块302、304和306获得统计数据的任何次数的迭代。
[0039]在另一示例中,计算设备(102)将在获得统计数据中使用的迭代的次数可以以用户或安全相关模块(图1,146)定义的迭代之间的时段进行。在此示例中,可以在若干规则的或不规则的事件中进行若干次迭代的通过块302、304和306获得统计数据,事件之间的中间时间段是规则的或不规则的。在一个示例中,若干次迭代的通过块302、304和306获得统计数据可以按例如诸如每天,每周,每月或每年的规则的时间表进行。在另一示例中,若干次迭代的通过块302、304和306获得统计数据可以在不规则的时间进行,例如当处理资源可用时的实例。在另一示例中,若干次迭代的通过块302、304和306获得统计数据可以以规则的间隔进行,实例之间为若干秒,若干分,若干小时,若干天,若干周,若干月,或其部分。在又一示例中,若干次迭代的通过块302、304和306获得统计数据可以根据上述时间参数的组合来进行。在又一示例中,若干次迭代的通过块302、304和306获得统计数据可以根据定义的迭代次数和定义的一段时间的组合来进行。
[0040]如果不满足(块308,确定为否)目标迭代次数,那么方法返回到块302。然而,如果满足(块308,确定为是)目标迭代次数,那么方法继续进行另外的处理。在一个示例中,方法可以以计算设备(102)把统计数据存储(块310)到数据库中,而继续。统计数据可以被称为历史扫描。在一个示例中,历史扫描被存储到历史扫描数据库(108)中以进行之后的处理。在一个示例中,块310的过程可以在系统(图1,100)获得数据的任何时间进行。在一个示例中,历史扫描可以在块302、304和306的各个迭代之后,或在分别获得静态分析结果、软件代码度量和运行时安全信息之后,被存储。
[0041]如上面连同图2的块206所述地,处理器(图1,121)执行安全相关模块(图1,146),分析(块312)安全缺陷演变和若干代码度量之间的若干相关。安全相关模块(148)在一段时间的若干扫描中,结合三个安全数据源中的每个数据源、静态分析结果、软件代码度量和运行时安全信息。
[0042]当被处理器(图1,121)执行时,安全缺陷优先级处理模块(148)按优先顺序列出(框314)由安全相关模块(146)在框312处确定的安全缺陷,以协助目标软件的开发者确定出现在目标软件中或由目标软件产生的最大的安全威胁。在一个示例中,被
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1