CN105164690A - 分析目标软件的安全漏洞 - Google Patents

分析目标软件的安全漏洞 Download PDF

Info

Publication number
CN105164690A
CN105164690A CN201380076132.6A CN201380076132A CN105164690A CN 105164690 A CN105164690 A CN 105164690A CN 201380076132 A CN201380076132 A CN 201380076132A CN 105164690 A CN105164690 A CN 105164690A
Authority
CN
China
Prior art keywords
code
software
target software
module
security
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201380076132.6A
Other languages
English (en)
Inventor
迈克尔·杰森·施米特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Antite Software Co., Ltd.
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105164690A publication Critical patent/CN105164690A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种分析目标软件的安全漏洞的方法包括:以处理器,利用静态分析扫描扫描目标软件的代码库以确定若干安全缺陷,和在一段时间,若干次迭代计算该目标软件的该代码库的若干代码度量以获取若干历史扫描。

Description

分析目标软件的安全漏洞
背景技术
业务越来越依赖信息技术。信息系统正变得越来越复杂、动力更高、相互连接并且在极大分布式的网络上对合作伙伴和客户开放地可访问。商业环境已经越来越多地从面对面的交互向在很大程度上匿名的电子交易转变。软件开发本身正在通过离岸开发布置和公司内部协同计算而变得更加分散。这些趋势使得组织保证和保护数字数据免遭误用或未经授权的访问的能力充分发挥功能。使用这些计算机技术中涉及的安全威胁和风险可能被证明是必须依靠技术来实现个人和企业的目标的任何个人或任何组织的经济责任。
附图说明
附图示出了本发明所述的原理的各种示例,是说明书的一部分。示出的示例仅为了说明而给出,不限制权利要求的范围。
图1为根据本发明所述的原理的一个示例的、用于预测软件安全缺陷的系统的框图。
图2为示出根据本发明所述的原理的一个示例的、分析目标软件的安全漏洞的方法的流程图。
图3为示出根据本发明所述的原理的另一示例的、分析目标软件的安全漏洞的方法的流程图。
在整个附图中,相同的标记表示相似但是未必相同的元件。
具体实施方式
尽管软件和应用使能的针对它们的安全攻击的频率不断增加,但是难以确定软件中存在的所有的安全漏洞。安全是软件的突现特征,这在于它是软件的设计和工程的副产品,而非建立到软件中的有意设计的方面。由于这个原因,软件开发和安全团队依赖尝试但经常不能在系统的完全覆盖和结果中的高保真精度之间达到平衡的分析技术和手动测试。大多数的分析和测试是在软件已经建立以后进行的,这时候,它太晚了,太贵了,或是组织上难以自圆其说修复安全漏洞。为了预测安全缺陷将出现在哪里,软件开发和安全团队将从具有一种理解软件的安全性如何随时间演变的方式中受益。如果可以得到这样的理解,那么软件和开发团队就能够优先考虑把他们补救这些安全缺陷的时间和精力集中到哪里。
目前,软件开发和安全团队盲目地作业,连同解决潜在的安全缺陷同时与软件的开发。这产生了这样一种环境,在此环境中,软件开发和安全团队依赖对何时何地要专注于解决正在开发的软件中的安全缺陷的猜测。几乎每一个现在部署的主要的关键业务应用都包含可以被用来造成对业务或对其管理资产相当大的危害的漏洞。这些漏洞可以被利用来盗取重要信息,破坏计算机系统,或影响对利润或攻击者的恶意的处理。
对于一个有经验的黑客或恶意业内人士来说,由于可在线获得多种信息和工具,为此目的操纵软件变得特别容易。攻击者面临的最大挑战是简单地在大型业务应用环境中找到漏洞。另外,主流的计算机安全解决方案,如防火墙,是基于这样的前提:暴露的和脆弱的软件可以通过把它与外界的危险隔离而被保护。业务需求决定了很少关键业务应用能真正地被隔离。大多数关键业务应用具有通过数据传输接口、远程过程调用以及内部和远程用户的许多接入点。防火墙和其它面向网络的安全解决方案不会阻止关键业务应用需要的访问类型。事实上,今天的业务功能依赖于这种访问到了这样的程度:如果访问被拒绝,那么它们将不能运行。攻击者利用这些事实,来每天攻击系统。
综上,一个问题自然地把它自己提出来:为什么基于网络的计算机安全解决方案被应用到显然是一个软件问题的问题中?一个答案是,大多数信息安全从业人员具有网络安全背景,并且由于解决运营安全问题都变瘦了,留下很少时间来与核心软件开发过程进行交互。与此同时,在投入很少的资源给安全考虑的同时,应用程序开发人员由于在时间紧迫的情况下生产新功能而被奖励。很少有任何一个人拥有对应用本身的安全元素的责任。在大多数情况下,软件开发使得关键业务应用被装运,而网络运营团队将保护它。这些角色的二分法为攻击者创造了一个非同寻常的优势,具有讽刺意味的是,攻击者可能是仅有的真正经历了并专注于软件安全和关键业务应用的漏洞的人。
软件开发内和周围的专家们越来越认识到,关于软件安全必须采取一些措施。然而,尚未确定连贯和实用的解决方案。有使得解决方案难以确定的若干因素。例如,软件安全漏洞是难以描述的,逻辑错误可能跨越数千行代码,使得具有合理性能的精确检测极其困难。乍一看,技术挑战使得这样的解决方案看起来更像是编译器或定位开发工具。但是,大型的软件开发工具供应商还没有使得安全称为其产品的核心部分。它们的客户群仍主要集中在如何提高特性和功能的创造,并且供应商的内部团队在它们工作以改进其单一用途的产品的功能集时,不能轻易地认识到变化的模式。这是一个常见的软件创新者的困境。此外,大量的开发工具提供商并不擅长提供风险管理体系要求的企业级的解决方案,或承受支持这样的解决方案所需的价格点。事实上,开发工具定价的当前状态已普遍阻碍了安全团体构建面向开发人员的解决方案。
除了软件开发工具中固有的不足之处,软件安全可能需要一个不断变化的领域中的专门知识。问题不只是寻找用于扫描代码的技术,还包括创建和不断地更新用于检测漏洞的规则。提出规则需要不断增长的研究主体的专业知识和导致关键业务应用中的漏洞的现实世界体系结构、框架、使用模式等诸多其它因素。例如,操作系统或库应用程序编程接口(API)的每一个版本都引入新的使得导致安全漏洞的错误的方式。
此外,软件安全能够由单点解决方案来完成,这不太可能。同样,软件安全能够单独在开发者一级加以解决,这不太可能。软件安全在很大程度上是风险管理问题。解决上述情况可能包括随时间收集的详细信息和保持软件开发人员象以前一样富有成效,还要使得安全度量在开发、测试和部署期间对管理可见的方法。解决上述情况还可以包括给管理人员和组织的企业软件式的解决方案。
本发明公开用于通过在一段时间分析和关联若干软件信息的来源,来预测软件安全缺陷并把软件安全缺陷区分优先次序的方法和系统。这些软件信息的来源可以包括例如静态分析安全漏洞的结果、软件代码复杂性和稳定性度量以及关于漏洞、访问频率和攻击频率的运行时安全信息等。
如在本说明书和所附权利要求书中所使用地,术语“目标软件”或类似的语言旨在被广泛地理解为被分析以检测安全缺陷的任何软件及其相关联的代码。
更进一步地,如在本说明书和所附权利要求书中使用的,术语“若干”或类似语言旨在被广义地理解为任何正数,包括1到无限大;零不是数字而是没有数字。
在接下来的说明书中,出于说明目的,阐述了大量的具体细节从而提供对本发明的系统和方法的全面理解。但是,对本领域技术人员来说将是很明显的,可以在没有这些具体细节的情况下,实践本发明的装置、系统和方法。说明书中提及“示例”或类似语言表示如所说明地,包括了连同这个示例所说明的特定特征、结构或特性,而这一特定特征、结构或特性可能没有被包括在其它示例中。
图1为根据本发明所述的原理的一个示例的、用于预测软件安全缺陷的系统(100)的框图。系统可以包括计算设备(102)、应用服务器(106)和历史扫描数据库(108)。在一个示例中,计算设备(102)、应用服务器(106)和历史扫描数据库(108)可以通过网络(104)彼此通信。在另一示例中,计算设备(102)、应用服务器(106)和历史扫描数据库(108)可以被在没有中间网络(104)的情况下,与彼此直接联接。在又一示例中,计算设备(102)、应用服务器(106)和历史扫描数据库(108)可以被在若干设备中集成到一起。网络(104)可以是局域网,内联网,或因特网等其它形式的网络。
该系统(100)可以被用在包括例如,诸如软件即服务(SaaS)的云计算服务,平台即服务(PaaS),基础设施即服务(IaaS),应用程序接口(API)即服务(APIaaS),其它形式的网络服务,或其组合的任何数据处理方案中。此外,系统(100)可以被用在公共云网络,私有云网络,混合云网络,其它形式的网络,或其组合中。在一个示例中,由系统(100)提供的方法被提供为例如第三方的通过网络的服务。在另一示例中,由系统(100)提供的方法由本地管理员执行。此外,系统(100)可以被用在单个计算设备中。在这一数据处理方案中,单个计算装置可以利用本发明所述装置和相关联的方法在软件开发期间和开发后,确定、按优先顺序列出和预测安全缺陷。
为了实现其想要的功能性,计算设备(102)包括各种硬件组件。这些硬件组件中可以有若干处理器(121)、若干数据存储设备(122)、若干外围设备适配器(127)和若干网络适配器(126)。这些硬件组件可以通过使用若干总线和/或网络连接互连。在一个示例中,处理器(121)、数据存储设备(122)、外围设备适配器(127)和网络适配器(126)可以通过总线(128)通信联接。
处理器(121)可以包括从数据存储设备(122)检索可执行代码并执行可执行代码的硬件架构。当被处理器(121)执行时,可执行代码可以使得处理器(121)根据本发明所述的本说明书的方法,在软件的开发期间和开发后,至少实现确定、按优先顺序列出和预测安全缺陷的功能性。在执行代码的过程中,处理器(121)可以从若干其余的硬件单元接收输入并向它们提供输出。
数据存储设备(122)可以存储诸如由处理器(121)或其它处理设备执行的可执行程序代码的数据。如将要讨论的,数据存储设备(122)可以具体地存储被处理器(121)执行以至少实现本发明所述功能性的多个应用。
数据存储设备(122)可以包括各种类型的存储器模块,包括易失性和非易失性存储器。例如,本示例的数据存储设备(122)包括随机存取存储器(RAM)(123)、只读存储器(ROM)(124)和硬盘驱动器(HDD)存储器(125)。也可以使用很多其它类型的存储器,只要可以适应本发明所述的原理的特定应用程序,本说明书考虑在数据存储设备(122)中使用许多不同类型的存储器。在某些示例中,数据存储设备(122)中的不同类型的存储器可以被用于不同的数据存储需要。例如,在某些示例中,处理器(121)可以从只读存储器(ROM)(124)启动,在硬盘驱动器(HDD)存储器(125)中保持非易失性存储,并且执行随机存取存储器(RAM)(123)中存储的程序代码。
一般而言,数据存储设备(122)可以包括计算机可读介质,计算机可读存储介质,或非暂时性计算机可读介质等。例如,数据存储设备(122)可以是,但不限于,电的、磁的、光的、电磁的、红外的或半导体系统、装置或设备,或上述的任何合适的组合。例如,计算机可读存储介质的更多具体例子包括如下:具有若干导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或Flash存储器)、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备,或者上述的任何合适的组合。在本发明的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与之有关的程序的有形介质。在另一示例中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与之有关的程序的非暂时性介质。
系统(100)中的硬件适配器(126,127)使处理器(121)能够与系统(100)的外部和内部的各种其它的硬件元素接合。例如,外围设备适配器(127)可以提供到诸如,例如键盘、鼠标、打印设备、和显示设备,以及其它输入/输出设备的输入设备(130)和输出设备(131)的接口。此外,外围设备适配器(127)可以提供接口来访问其它外部设备,例如外部存储设备。输入设备(130)和输出设备(131)可以被提供来允许用户与系统(100)的功能性交互并实现该功能性。网络适配器(126)可以提供到例如网络内的其它计算设备的接口,从而实现位于网络内的计算设备(102)和其它设备之间的数据传输。
计算设备(102)进一步包括用于在软件的开发期间和开发后,确定、按优先顺序列出和预测安全缺陷的若干模块(140,142,144,146,148,150)。计算设备(102)内的各个模块可以被单独地执行。在此示例中,各个模块可以被存储为分离的计算机程序产品。在另一示例中,计算设备(102)内的各个模块可以被结合在若干计算机程序产品内,每个计算机程序产品都包括若干模块。在一个示例中,模块(140,142,144,146,148,150)被存储在系统(100)的数据存储设备(122)内,并且可由处理器(121)访问和执行。在另一示例中,如上所述,为了系统(100)的用户的利益,模块(140,142,144,146,148,150)通过云计算设备,在例如服务器设备,诸如服务器(108)上被存储并执行。在又一示例中,模块(140,142,144,146,148,150)在诸如,例如历史扫描数据库(108)的数据存储设备上被存储并执行。在又一示例中,模块(140,142,144,146,148,150)在诸如计算设备(102),服务器(108)或历史扫描数据库(108)的各种计算设备上,作为一组模块(140,142,144,146,148,150),或作为分离的多组模块或单独模块,被存储和执行。然而,为了便于解释,模块(140,142,144,146,148,150)在这里将被说明为在计算设备(102)上被存储和执行。
计算设备(102)可以包括用于当被处理器(121)执行时,在不执行软件的情况下,分析目标软件的安全漏洞的静态分析模块(140)。在一个示例中,静态分析模块(140)对目标软件的代码库进行数据流分析,以确定从外界取得输入的若干程序位置,诸如,例如通过用户输入。静态分析模块(140)通过由目标软件进行的分配、函数调用和操作来跟踪输入的实例。这一过程可以被称为“污点传播”。若干代码规则可以与数据流分析一起被应用。这些代码规则指示数据流分析内的污染值的安全违规。计算设备(102)报告根据数据流分析和代码规则得到的安全违规的数目。在一个示例中,静态分析模块(140)获得的静态分析扫描被存储在诸如,例如历史扫描数据库(108)的数据存储设备中。
计算设备(102)可以进一步包括用于当被处理器(121)执行时,测量若干代码度量的代码度量模块(142)。在一个示例中,代码度量模块(142)测量程序复杂度,诸如,例如圈复杂度、被定义为代码的一部分被再次使用或被其它部分调用有多频繁的代码重用,定义代码随时间的改变的测量的代码搅动(codechurn),其它代码度量,及其组合。在另一示例中,代码度量是代码库的非安全相关的属性。这些代码度量表明不相称的复杂度,暴露,或代码的特定部分中的不稳定性。计算设备(102)把代码度量模块(142)测量的代码度量存储到诸如,例如历史扫描数据库(108)的数据存储设备中。
计算设备(102)可以进一步包括用于当被处理器(121)执行时,从一个版本的目标软件的运行时环境获得运行时安全信息的运行时安全模块(144)。运行时安全信息可以包括通过正在运行的应用,环境配置和运行时环境中应用的行为特征的动态分析或手动测试,检测到的安全漏洞,诸如,例如测试软件的特定区域被访问或攻击的频率,其它运行时安全信息,及其组合。在一个示例中,运行时安全模块(144)获得的运行时安全信息被存储在诸如,例如历史扫描数据库(108)的数据存储设备中。
计算设备(102)可以进一步包括用于当被处理器(121)执行时,分析由静态分析模块(140)和运行时安全模块(144)获得的数据所示的安全缺陷演变与代码度量模块(142)获得的若干代码度量之间的若干相关的安全相关模块(146)。如上所述,静态分析模块(140)获得的静态分析扫描、运行时安全模块(144)获得的运行时安全信息和代码度量模块(142)获得的代码度量被存储在诸如,例如历史扫描数据库(108)的数据存储设备中。安全相关模块(146)在一段时间的若干扫描中,结合这三个安全数据源中的每个数据源、静态分析结果、软件代码度量和运行时安全信息。把此信息结合进单一分析平台将使得本系统和方法能够实现本发明所述的若干目标。
计算设备(102)可以进一步包括安全缺陷优先级处理模块(148),当被处理器(121)执行时,安全缺陷优先级处理模块(148)通过把安全漏洞与已知是复杂或不稳定的目标软件的区域相关而按优先顺序列出静态分析中发现的安全漏洞,观察一段时间安全缺陷的模式,以把诸如,例如似乎来来去去的问题的、不能持续确定的问题除去或不再优先考虑(de-prioritize),提高出现在展示了显著的再利用的目标软件的区域中的问题的优先级,并提高出现在已知被频繁地访问或者在运行时环境中脆弱的目标软件的区域中的问题的优先级。在一个示例中,安全缺陷优先级处理模块(148)获得的安全缺陷优先级处理信息被存储到诸如,例如计算设备(102)的数据存储设备(122)或历史扫描数据库(108)的数据存储设备中。
计算设备(102)可以进一步包括安全缺陷预测模块(150),当被处理器(121)执行时,安全缺陷预测模块(150)把展示了高复杂度或搅动(churn)的目标软件的代码的区域中的安全漏洞的出现率相关,来预测并警告代码的区域正在趋向于变得更加有风险,把展示了运行时环境中的频繁访问或安全攻击的目标软件的代码的区域中的安全漏洞的出现率相关,并且根据软件代码复杂度和稳定性度量与过去分析中发现的安全缺陷之间的相关的模式,预测目标软件中的安全缺陷。在一个示例中,安全缺陷预测模块(150)获得的安全缺陷预测信息被存储到诸如,例如计算设备(102)的数据存储设备(122)或历史扫描数据库(108)的数据存储设备中。
图2为示出根据本发明所述的原理的一个示例的、分析目标软件的安全漏洞的方法(200)的流程图。图2的方法(200)可以通过以处理器(图1,121)执行静态分析模块(140),利用静态分析扫描,在一段时间,若干次迭代扫描(块202)代码库,而开始。如上所述,静态分析模块(图1,140)对代码库进行数据流分析,以确定从外界取得输入的若干程序位置,诸如,例如通过用户输入。静态分析模块(图1,140)通过由目标软件进行的分配、函数调用和操作来跟踪输入的实例。若干代码规则可以与数据流分析一起被应用。这些代码规则指示数据流分析内的污染值的安全违规。在一个示例中,计算设备(图1,102)报告根据数据流分析和代码规则得到的安全违规的数目。
方法(200)可以通过以处理器(图1,121)执行代码度量模块(142),在一段时间,若干次迭代计算(块204)代码库的若干代码度量,而继续。在一个示例中,处理器(图1,121)计算(块204)整个代码库的若干代码度量。在一个示例中,代码度量可以是指示代码的复杂度、可理解性、可测试性、说明和代码复杂性的任何软件代码质量的测量。在一个示例中,代码度量可以包括目标软件的圈复杂度、被定义为代码的一部分被再次使用或被其它部分调用有多频繁的代码重用,定义代码随时间的改变的测量的代码搅动,其它代码度量,及其组合。在另一示例中,代码度量是代码库的非安全相关的属性。
处理器(图1,121)执行安全相关模块(146),分析(块206)安全缺陷演变和若干代码度量之间的若干相关。安全相关模块(146)在一段时间的若干扫描中,结合这三个安全数据源中的每个数据源、静态分析结果、软件代码度量和运行时安全信息。在一个示例中,处理器(图1,121)把安全相关模块(146)决定的分析输出给输出设备(图1,130)以供用户检查。以这种方式,为例如目标软件的开发者的用户可以使用安全相关模块(146)提供的分析来按优先顺序列出与安全缺陷相关联的目标软件代码改变,预测目标软件代码中的软件安全缺陷,或其组合。
图3为示出根据本发明所述的原理的另一示例的、分析目标软件的安全漏洞的方法(300)的流程图。如上面连同图2所述地,图3的方法(300)可以通过以处理器(图1,121)执行静态分析模块(140),利用静态分析扫描,在一段时间,若干次迭代扫描(块302)代码库,而开始。
如上面连同图2所述地,处理器(图1,121)执行运行时安全模块(144),从一个版本的目标软件的运行时环境获得(块304)运行时安全信息。在一个示例中,如包围块304的虚线所示,从一个版本的目标软件的运行时环境获得(块304)运行时安全信息是可选的。从一个版本的目标软件的运行时环境获得(块304)运行时安全信息通过提供另外的分析数据,增强了本系统和方法的功能性,但是如下面将更详细地讨论地,安全缺陷的优先级处理(图3,块314)和与代码库相关联的风险的预测(图3,块316)不需要从一个版本的目标软件的运行时环境获得(块304)运行时安全信息。
如上面连同图2所述地,方法(300)可以通过以处理器(图1,121)执行代码度量模块(142),在一段时间,若干次迭代计算(块306)代码库的若干代码度量,而继续。计算设备(102)确定(块308)是否已经达到通过块302、304和308获得统计数据(即,静态分析结果、软件代码度量和运行时安全信息)的迭代的目标次数。在一个示例中,用户可以定义计算设备(102)将在获得统计数据中使用的迭代的次数。在另一示例中,计算设备(102)将在获得统计数据中使用的迭代的次数由安全相关模块(图1,146)定义。可以进行任何次数的迭代,以获得静态分析结果、软件代码度量和运行时安全信息。在一个示例中,迭代的次数为多次迭代。在一个示例中,迭代的次数可以在1和1000之间。在另一示例中,迭代的次数可以在10和100之间。然而,可以进行通过块302、304和306获得统计数据的任何次数的迭代。
在另一示例中,计算设备(102)将在获得统计数据中使用的迭代的次数可以以用户或安全相关模块(图1,146)定义的迭代之间的时段进行。在此示例中,可以在若干规则的或不规则的事件中进行若干次迭代的通过块302、304和306获得统计数据,事件之间的中间时间段是规则的或不规则的。在一个示例中,若干次迭代的通过块302、304和306获得统计数据可以按例如诸如每天,每周,每月或每年的规则的时间表进行。在另一示例中,若干次迭代的通过块302、304和306获得统计数据可以在不规则的时间进行,例如当处理资源可用时的实例。在另一示例中,若干次迭代的通过块302、304和306获得统计数据可以以规则的间隔进行,实例之间为若干秒,若干分,若干小时,若干天,若干周,若干月,或其部分。在又一示例中,若干次迭代的通过块302、304和306获得统计数据可以根据上述时间参数的组合来进行。在又一示例中,若干次迭代的通过块302、304和306获得统计数据可以根据定义的迭代次数和定义的一段时间的组合来进行。
如果不满足(块308,确定为否)目标迭代次数,那么方法返回到块302。然而,如果满足(块308,确定为是)目标迭代次数,那么方法继续进行另外的处理。在一个示例中,方法可以以计算设备(102)把统计数据存储(块310)到数据库中,而继续。统计数据可以被称为历史扫描。在一个示例中,历史扫描被存储到历史扫描数据库(108)中以进行之后的处理。在一个示例中,块310的过程可以在系统(图1,100)获得数据的任何时间进行。在一个示例中,历史扫描可以在块302、304和306的各个迭代之后,或在分别获得静态分析结果、软件代码度量和运行时安全信息之后,被存储。
如上面连同图2的块206所述地,处理器(图1,121)执行安全相关模块(图1,146),分析(块312)安全缺陷演变和若干代码度量之间的若干相关。安全相关模块(148)在一段时间的若干扫描中,结合三个安全数据源中的每个数据源、静态分析结果、软件代码度量和运行时安全信息。
当被处理器(图1,121)执行时,安全缺陷优先级处理模块(148)按优先顺序列出(框314)由安全相关模块(146)在框312处确定的安全缺陷,以协助目标软件的开发者确定出现在目标软件中或由目标软件产生的最大的安全威胁。在一个示例中,被按优先顺序列出的安全缺陷通过输出设备(130)被呈现给用户。在此示例中,安全缺陷可以以指示最高优先级的安全缺陷的顺序,被呈现在输出设备(130)上。安全缺陷优先级处理模块(148)通过把安全漏洞与已知是复杂或不稳定的目标软件的区域相关,来按优先顺序列出静态分析模块(140)获得的静态分析扫描中发现的漏洞。此外,安全缺陷优先级处理模块(148)观察安全缺陷的模式一段时间,以把不能持续确定的安全缺陷,那些来来去去的问题的安全缺陷除去或不再优先考虑。更进一步地,安全缺陷优先级处理模块(148)提高出现在展示了显著的再利用的目标软件的区域中的问题的优先级。再更进一步地,安全缺陷优先级处理模块(148)提高出现在被频繁地访问或者在运行时环境中脆弱的目标软件的区域中的问题的优先级。
该方法可以以处理器(121)执行安全缺陷预测模块(15),预测目标软件的代码内的若干安全缺陷,而继续。在一个示例中,安全相关模块(146)把安全漏洞在展示了高复杂度或搅动的代码的区域中的出现率相关,安全缺陷预测模块(150)使用此信息来预测和警告用户代码的区域正在趋向于变得更加有风险。在另一示例中,安全相关模块(146)把安全漏洞的在展示了运行时环境中的频繁访问或安全攻击的代码的区域中的出现率相关,安全缺陷预测模块(150)使用此信息来预测和警告用户代码的区域正在趋向于变得更加有风险。在又一示例中,根据软件代码复杂度和稳定性度量与历史扫描数据库(108)中包含的数据内发现的安全缺陷之间的相关的模式,安全缺陷预测模块(150)预测软件中的安全缺陷。
在这里参照根据本发明所述原理的示例的方法、装置(系统)和计算机程序产品的流程图和/或框图,说明了本系统和方法的各个方面。流程图和框图的各个块,与流程图和框图中块的组合可以由计算机可用程序代码实现。计算机可用程序代码可以被提供给通用计算机,专用计算机,或其它可编程数据处理装置的处理器以产生机器,致使当被通过例如计算设备(102)的处理器(121)或其它可编程数据处理装置执行时,计算机可用程序代码实现流程图和/或框图的块或多个块中指定的功能或动作。在一个示例中,计算机可用程序代码可以被体现在计算机可读存储介质内,计算机可读存储介质是计算机程序产品的一部分。在一个示例中,计算机可读存储介质是非暂时性计算机可读介质。
说明书和附图说明用于分析目标软件的安全漏洞的方法和系统。本系统和方法利用静态分析扫描扫描目标软件的代码库以确定若干安全缺陷,和在一段时间,若干次迭代计算该目标软件的该代码库的若干代码度量以获取若干历史扫描。安全缺陷演变和若干代码度量之间的若干相关被分析来根据安全缺陷演变和代码度量之间的相关,按优先顺序列出若干安全缺陷,并且根据安全缺陷演变和代码度量之间的相关,预测与代码库相关联的风险。
本系统和方法可以具有若干优点,包括:(1)通过把安全漏洞与已知是复杂或不稳定的应用的区域关联,为按优先顺序列出静态分析中发现的漏洞的能力作准备;(2)为观察一段时间安全缺陷的模式,以把诸如,例如难以找到的或似乎来来去去的问题的、不能持续确定的问题除去或不再优先考虑的能力作准备;(3)为提高出现在展示了显著的再利用的应用的区域中的问题的优先级的能力作准备;(4)为提高出现在已知被频繁地访问或者在运行时环境中脆弱的应用的区域中的问题的优先级的能力作准备;(5)把展示了高复杂度或搅动的代码的区域中的安全漏洞的出现率相关,来预测并警告代码的区域正在趋向于变得更加有风险;(6)把展示了运行时环境中的频繁访问或安全攻击的代码的区域中的安全漏洞的出现率相关;和(7)根据软件代码复杂度和稳定性度量、过去分析中发现的安全缺陷等之间的相关的模式,预测软件中的安全缺陷。
已经给出了前述说明来示出并描述所述原理的示例。此说明并不旨在是穷尽的或将这些原理限制为所公开的任何精确形式。根据上述教导,可以有很多修改和变型。

Claims (15)

1.一种分析目标软件的安全漏洞的方法,包括:以处理器:
利用静态分析扫描来扫描目标软件的代码库以确定若干安全缺陷,以及在一段时间,若干次迭代计算该目标软件的该代码库的若干代码度量以获取若干历史扫描;和
分析安全缺陷演变和该若干代码度量之间的若干相关。
2.根据权利要求1所述的方法,其中扫描该目标软件的该代码库进一步包括在一段时间,从一个版本的该目标软件的运行时环境,若干次迭代获得运行时安全信息,以获得若干另外的历史扫描。
3.根据权利要求1所述的方法,进一步包括根据该安全缺陷演变和该代码度量之间的所述相关,按优先顺序列出若干安全缺陷。
4.根据权利要求1所述的方法,进一步包括根据该安全缺陷演变和该代码度量之间的所述相关,预测与该代码库相关联的风险。
5.根据权利要求1所述的方法,进一步包括把所述历史扫描存储到历史扫描数据库中。
6.根据权利要求1所述的方法,其中该迭代的次数为多次迭代。
7.一种用于分析目标软件的安全漏洞的系统,包括:
处理器;
被联接到该处理器上的数据存储设备,该数据存储设备包括:
用于扫描目标软件的代码库以确定若干安全缺陷的静态分析模块;
用于从一个版本的该目标软件的运行时环境获得运行时安全信息的运行时安全模块;和
用于计算该目标软件的该代码库的若干代码度量的代码度量模块;和
用于存储一段时间、若干次迭代的若干历史扫描的历史扫描数据库,所述历史扫描包括该静态分析模块、运行时安全模块和代码度量模块中的至少一个模块的结果。
8.根据权利要求7所述的系统,进一步包括用于分析安全缺陷演变和该历史扫描数据库内的若干所述代码度量之间的若干相关的安全相关模块。
9.根据权利要求7所述的系统,进一步包括用于根据该安全缺陷演变和所述代码度量之间的若干相关,按优先顺序列出若干安全缺陷的安全缺陷优先级处理模块。
10.根据权利要求7所述的系统,进一步包括用于根据该安全缺陷演变和该代码度量之间的所述相关,预测与该代码库相关联的风险的安全缺陷预测模块。
11.根据权利要求7所述的系统,进一步包括服务器,其中该系统的功能性被通过该服务器提供为软件即服务(SaaS),平台即服务(PaaS),基础设施即服务(IaaS),应用程序接口(API)即服务(APIaaS),或其组合。
12.一种用于分析目标软件的安全漏洞的计算机程序产品,该计算机程序产品包括:
包括与之体现的计算机可用程序代码的非暂时性计算机可读存储介质,该计算机可用程序代码包括:
用于当被至少一个处理器执行时,分析从目标软件确定的若干静态分析扫描、若干代码度量和若干运行时安全扫描之间的若干相关的计算机可用程序代码;和
用于当被所述至少一个处理器执行时,根据所述相关,按优先顺序列出若干安全缺陷的计算机可用程序代码;
13.根据权利要求11所述的计算机程序产品,进一步包括用于当被所述至少一个处理器执行时,根据所述相关,预测与该目标软件相关联的安全缺陷的计算机可用程序代码。
14.根据权利要求11所述的计算机程序产品,进一步包括:
用于当被所述至少一个处理器执行时,利用静态分析扫描该目标软件的代码库以确定所述静态分析扫描中的若干安全缺陷的计算机可用程序代码;和
用于当被所述至少一个处理器执行时,计算该目标软件的代码库的若干代码度量的计算机可用程序代码。
15.根据权利要求11所述的计算机程序产品,进一步包括用于当被所述至少一个处理器执行时,从该目标软件的运行时环境获得运行时安全信息的计算机可用程序代码。
CN201380076132.6A 2013-07-12 2013-07-12 分析目标软件的安全漏洞 Pending CN105164690A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/050331 WO2015005936A1 (en) 2013-07-12 2013-07-12 Analyzing target software for security vulnerabilities

Publications (1)

Publication Number Publication Date
CN105164690A true CN105164690A (zh) 2015-12-16

Family

ID=52280436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380076132.6A Pending CN105164690A (zh) 2013-07-12 2013-07-12 分析目标软件的安全漏洞

Country Status (4)

Country Link
US (1) US9892262B2 (zh)
EP (1) EP3019994A4 (zh)
CN (1) CN105164690A (zh)
WO (1) WO2015005936A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107634945A (zh) * 2017-09-11 2018-01-26 平安科技(深圳)有限公司 网站漏洞扫描方法、装置、计算机设备及存储介质
CN109547401A (zh) * 2017-09-21 2019-03-29 通用汽车环球科技运作有限责任公司 网络安全漏洞优先化和修复
CN109697159A (zh) * 2017-10-23 2019-04-30 上海仪电(集团)有限公司中央研究院 一种基于混合云平台的自动化开发运维系统
CN111666203A (zh) * 2020-04-17 2020-09-15 北京百度网讯科技有限公司 风险软件的定位处理方法、装置、电子设备及存储介质

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990499B2 (en) * 2013-08-05 2018-06-05 Netflix, Inc. Dynamic security testing
EP3130123B1 (en) * 2014-04-11 2021-07-07 HDIV Security, S.L. Detection of manipulation of applications
US10229273B2 (en) * 2015-02-25 2019-03-12 Veracode, Inc. Identifying components for static analysis of software applications
US10165004B1 (en) 2015-03-18 2018-12-25 Cequence Security, Inc. Passive detection of forged web browsers
US11418520B2 (en) 2015-06-15 2022-08-16 Cequence Security, Inc. Passive security analysis with inline active security device
US9823912B2 (en) * 2015-10-15 2017-11-21 Semmle Limited Data flow analysis with collapsed contexts
JP6656388B2 (ja) 2016-02-04 2020-03-04 テレフオンアクチーボラゲット エルエム エリクソン(パブル) アクター・マイグレーション
US10931713B1 (en) 2016-02-17 2021-02-23 Cequence Security, Inc. Passive detection of genuine web browsers based on security parameters
CN107545178B (zh) * 2016-06-23 2021-01-15 华为技术有限公司 一种云应用的检测方法及云应用检测装置
US10073975B2 (en) * 2016-08-11 2018-09-11 International Business Machines Corporation Application integrity verification in multi-tier architectures
US10931686B1 (en) 2017-02-01 2021-02-23 Cequence Security, Inc. Detection of automated requests using session identifiers
US10684851B2 (en) * 2017-11-03 2020-06-16 Vmware, Inc. Predicting software build outcomes
US12130878B1 (en) 2017-11-27 2024-10-29 Fortinet, Inc. Deduplication of monitored communications data in a cloud environment
US10742524B2 (en) * 2018-01-11 2020-08-11 Monza Cloud, LLC Framework for standardizing development and deployment of services
CN110197072B (zh) * 2018-06-04 2023-03-21 腾讯科技(深圳)有限公司 软件安全漏洞的发掘方法及系统、存储介质和计算机设备
CN110096431A (zh) * 2019-03-19 2019-08-06 深圳壹账通智能科技有限公司 页面权限测试方法、装置、计算机设备及存储介质
US11269622B2 (en) * 2019-06-28 2022-03-08 Intel Corporation Methods, systems, articles of manufacture, and apparatus for a context and complexity-aware recommendation system for improved software development efficiency
US11640465B2 (en) * 2019-11-13 2023-05-02 Vmware, Inc. Methods and systems for troubleshooting applications using streaming anomaly detection
US11698977B1 (en) * 2019-11-13 2023-07-11 Ivanti, Inc. Predicting and quantifying weaponization of software weaknesses
US11568279B2 (en) * 2020-06-09 2023-01-31 Sap Se Anomaly detection for automated information technology processes
CN112906006B (zh) * 2021-02-09 2023-06-09 建信金融科技有限责任公司 一种软件开发管理方法和平台
US11785015B2 (en) 2021-02-24 2023-10-10 Bank Of America Corporation Information security system for detecting unauthorized access requests
CN113157314B (zh) * 2021-04-30 2023-10-13 云南电网有限责任公司 一种高效智能源代码安全管理平台
US11775272B1 (en) 2022-03-24 2023-10-03 International Business Machines Corporation Deployment of software programs based on security levels thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144698A1 (en) * 2007-11-29 2009-06-04 Microsoft Corporation Prioritizing quality improvements to source code
US20110093955A1 (en) * 2009-10-19 2011-04-21 Bank Of America Corporation Designing security into software during the development lifecycle
CN102129538A (zh) * 2011-03-04 2011-07-20 北京邮电大学 传感器网络源代码缓冲区溢出漏洞检测系统和方法
US20120072968A1 (en) * 2007-02-16 2012-03-22 Wysopal Christopher J Assessment and analysis of software security flaws in virtual machines

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895577B1 (en) * 1999-05-13 2005-05-17 Compuware Corporation Risk metric for testing software
US20050223361A1 (en) * 2004-04-01 2005-10-06 Belbute John L Software testing based on changes in execution paths
US7975306B2 (en) 2004-06-04 2011-07-05 Hewlett-Packard Development Company, L.P. Apparatus and method for monitoring secure software
US7487545B2 (en) 2004-06-17 2009-02-03 International Business Machines Corporation Probabilistic mechanism to determine level of security for a software package
US7779399B2 (en) 2005-05-16 2010-08-17 Armorize Technologies, Inc. System and method for securing web application code and verifying correctness of software
WO2008103286A2 (en) * 2007-02-16 2008-08-28 Veracode, Inc. Assessment and analysis of software security flaws
US8392997B2 (en) 2007-03-12 2013-03-05 University Of Southern California Value-adaptive security threat modeling and vulnerability ranking
US8464207B2 (en) 2007-10-12 2013-06-11 Novell Intellectual Property Holdings, Inc. System and method for tracking software changes
US8516449B2 (en) 2009-07-14 2013-08-20 International Business Machines Corporation Detecting and localizing security vulnerabilities in client-server application
US20120254829A1 (en) 2011-04-01 2012-10-04 Infotek Solutions Inc. doing business as Security Compass Method and system to produce secure software applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072968A1 (en) * 2007-02-16 2012-03-22 Wysopal Christopher J Assessment and analysis of software security flaws in virtual machines
US20090144698A1 (en) * 2007-11-29 2009-06-04 Microsoft Corporation Prioritizing quality improvements to source code
US20110093955A1 (en) * 2009-10-19 2011-04-21 Bank Of America Corporation Designing security into software during the development lifecycle
CN102129538A (zh) * 2011-03-04 2011-07-20 北京邮电大学 传感器网络源代码缓冲区溢出漏洞检测系统和方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107634945A (zh) * 2017-09-11 2018-01-26 平安科技(深圳)有限公司 网站漏洞扫描方法、装置、计算机设备及存储介质
CN107634945B (zh) * 2017-09-11 2018-06-22 平安科技(深圳)有限公司 网站漏洞扫描方法、装置、计算机设备及存储介质
CN109547401A (zh) * 2017-09-21 2019-03-29 通用汽车环球科技运作有限责任公司 网络安全漏洞优先化和修复
CN109547401B (zh) * 2017-09-21 2021-07-06 通用汽车环球科技运作有限责任公司 网络安全漏洞优先化和修复
CN109697159A (zh) * 2017-10-23 2019-04-30 上海仪电(集团)有限公司中央研究院 一种基于混合云平台的自动化开发运维系统
CN111666203A (zh) * 2020-04-17 2020-09-15 北京百度网讯科技有限公司 风险软件的定位处理方法、装置、电子设备及存储介质
CN111666203B (zh) * 2020-04-17 2023-10-27 北京百度网讯科技有限公司 风险软件的定位处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US9892262B2 (en) 2018-02-13
US20160110549A1 (en) 2016-04-21
WO2015005936A1 (en) 2015-01-15
EP3019994A1 (en) 2016-05-18
EP3019994A4 (en) 2017-05-10

Similar Documents

Publication Publication Date Title
CN105164690A (zh) 分析目标软件的安全漏洞
Giagopoulos et al. Structural health monitoring and fatigue damage estimation using vibration measurements and finite element model updating
Pascarella et al. How is video game development different from software development in open source?
Panichella et al. Would static analysis tools help developers with code reviews?
Wang Information security models and metrics
Couto et al. Predicting software defects with causality tests
Kochhar et al. Code coverage and postrelease defects: A large-scale study on open source projects
WO2007041242A2 (en) Systems and methods for monitoring software application quality
Patouillard et al. Prioritizing regionalization efforts in life cycle assessment through global sensitivity analysis: a sector meta-analysis based on ecoinvent v3
Abusafiya et al. Causes and effects of cost overrun on construction project in Bahrain: part 2 (PLS-SEM path modelling)
Diesch et al. Prerequisite to measure information security
Schreiber et al. Towards visual analytics dashboards for provenance-driven static application security testing
Nelson et al. What makes a code review trustworthy?
Sharma et al. An empirical approach for early estimation of software testing effort using SRS document
Tagharobi et al. Introducing a Framework for Code based Fairness Audits of Learning Analytics Systems on the Example of Moodle Learning Analytics.
US20140350995A1 (en) Characterizing Statistical Time-Bounded Incident Management Systems
Chen An investigation and evaluation of risk assessment methods in Information systems
Turhan et al. Regularities in learning defect predictors
Bokova et al. Stages and procedures for forming a method to assess reliability of the information security systems in automated systems and main areas of its implementation in the normative-technical documentation
Syed-Mohamad et al. Visualizing test-defect coverage information to support analytical reasoning and testing
Berardi et al. Architecting out software intellectual property lock-in: A method to advance the efficacy of BBP
Silva et al. Predicting prime path coverage using regression analysis
Moraes et al. Component-based software certification based on experimental risk assessment
Yassir et al. Development Of The Lakip Information System Using The Waterfall Method
Albeanu et al. Total quality for software engineering management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161117

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180622

Address after: American California

Applicant after: Antite Software Co., Ltd.

Address before: American Texas

Applicant before: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20151216