CN104115117B - 对计算机程序施行安全性分析的方法、系统和存储介质 - Google Patents

对计算机程序施行安全性分析的方法、系统和存储介质 Download PDF

Info

Publication number
CN104115117B
CN104115117B CN201380008347.4A CN201380008347A CN104115117B CN 104115117 B CN104115117 B CN 104115117B CN 201380008347 A CN201380008347 A CN 201380008347A CN 104115117 B CN104115117 B CN 104115117B
Authority
CN
China
Prior art keywords
tested
test
computer program
computer
payload
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.)
Active
Application number
CN201380008347.4A
Other languages
English (en)
Other versions
CN104115117A (zh
Inventor
O·特立普
O·塞伽尔
O·威斯曼
D·卡尔曼
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104115117A publication Critical patent/CN104115117A/zh
Application granted granted Critical
Publication of CN104115117B publication Critical patent/CN104115117B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • 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/034Test or assess a computer or a system

Abstract

本发明涉及对待测试计算机程序(CPUT)施行安全性分析。可以对CPUT进行分析,以便识别出与CPUT的潜在安全性弱点相关的数据。可以自动合成被配置成测试CPUT内的特定程序代码单元的至少第一单元测试。所述第一单元测试可以被配置成初始化由CPUT内的所述特定程序代码单元使用的至少一个参数,并且可以为之提供被配置成利用CPUT的至少一项潜在安全性弱点的至少第一测试有效载荷。可以动态地处理第一单元测试,以便向CPUT内的所述特定程序代码单元传送第一测试有效载荷。可以确定第一测试有效载荷是否利用了CPUT的实际安全性弱点,并且可以输出安全性分析报告。

Description

对计算机程序施行安全性分析的方法、系统和存储介质
背景技术
在本说明书中公开的一个或多个实施例涉及软件的安全性测试。
常常使用单元测试来确保软件单元与其功能规格相符。单元测试是这样一种方法,其中对程序代码的各个单独单元进行测试,以便确定其是否正确运作并且按照原定方式运转。通常来说,一个单元是一项应用的最小可测试部分。在程序化编程中,一个单元可以是一整个模块,但是更加常见的情况是一个单独的函数或过程。在面向对象的编程中,一个单元常常是一整个接口(比如类),但是也可以是一种单独的方法。单元测试通常由软件开发人员编写和执行。其实现方式可以包括从非常人工的操作到被形式化为构造自动化的一部分。
发明内容
在本说明书中公开的一个或多个实施例涉及对待测试计算机程序(CPUT)施行安全性测试。
一个实施例可以包括经由处理器对CPUT进行分析,以便识别出与CPUT的潜在安全性弱点相关的数据。所述方法还可以包括自动合成被配置成测试CPUT内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由CPUT内的所述特定程序代码单元使用的至少一个参数。所述方法还可以包括向第一单元测试提供被配置成利用CPUT的至少一项潜在安全性弱点的至少第一测试有效载荷。所述方法还可以包括动态地处理第一单元测试以便向CPUT内的所述特定程序代码单元传送第一测试有效载荷,确定第一测试有效载荷是否利用了CPUT的实际安全性弱点,以及输出表明第一测试有效载荷是否利用了CPUT的实际安全性弱点的安全性分析报告。
另一个实施例可以包括经由处理器对CPUT施行静态分析,以便识别出与CPUT的潜在安全性弱点相关的数据。所述方法还可以包括自动合成被配置成测试CPUT内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由CPUT内的所述特定程序代码单元使用的至少一个参数。所述方法还可以包括向第一单元测试提供被配置成利用CPUT的至少一项潜在安全性弱点的至少第一测试有效载荷,动态地处理第一单元测试以便经由超文本传输协议(HTTP)请求向CPUT内的所述特定程序代码单元传送第一测试有效载荷,确定第一测试有效载荷是否利用了CPUT的实际安全性弱点,以及输出表明第一测试有效载荷是否利用了CPUT的实际安全性弱点的安全性分析报告。
另一个实施例可以包括用于对待测试计算机程序(CPUT)施行安全性分析的计算机程序产品。所述计算机程序产品可以包括随之具体实现计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码包括被配置成施行在本说明书内公开的各项操作和/或功能的计算机可读程序代码。
另一个实施例可以包括一种系统,所述系统可以包括被配置成施行在本说明内描述的操作/可执行操作等等的处理器。
附图说明
图1是示出了根据在本说明书内公开的一个实施例的用于自动合成用于安全性测试的单元测试的系统的方框图。
图2是示出了根据在本说明书内公开的一个实施例的处理器的方框图。
图3是示出了根据在本说明书内公开的另一个实施例的用于对CPUT施行安全性分析的方法的流程图。
具体实施方式
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码,例如存储的代码等等。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或设备,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、固态盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、数字化视频光盘(DVD)、光存储设备、磁存储设备、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者设备使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者设备使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如JavaTM、Smalltalk、C++等,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机、其它可编程数据处理装置的处理器、或者其它设备执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或者其他设备上,从而使得在所述计算机、其他可编程装置或其他设备上施行一系列操作以产生计算机实施的处理,从而使得在计算机或其他可编程装置上执行的指令提供用于实施在流程图和/或方框图的一个或多个方框中规定的功能/动作的处理。
这里所描述的设置涉及对于例如基于web的应用之类的待测试计算机程序(CPUT)的安全性分析和测试。更具体来说,可以提取并且处理与CPUT相关的数据,以便动态地创建被特别配置成测试可能存在于CPUT中的安全性弱点的单元测试。可以基于针对CPUT的程序代码所取回的数据自动合成单元测试。因此,自动创建的单元测试可以是特定于CPUT的,并且可以锻炼CPUT确定安全性弱点。具体来说,可以识别出CPUT的进入点,并且对于每一个进入点可以确定对应于该进入点的超文本传输协议(HTTP)参数。可以利用一项或多项单元测试锻炼这些进入点,以便将测试数据(例如包含恶意程序代码、数值等等的有效载荷)注入到由CPUT的进入点使用的一个或多个参数。相应地,可以使用单元测试对CPUT进行测试,以便确定CPUT对于恶意数据是否脆弱,所述恶意数据潜在地可以由末端用户在CPUT活跃时(即被布置并且正按照其原定方式操作)注入。
这里所使用的单元测试是对CPUT的特定程序代码单元(即CPUT的最小可测试部分)施行测试的计算机可读程序代码,其初始化由所述特定单元使用的至少一个参数。程序代码的实例包括但不限于源代码、字节码(即可移植代码或p代码)、二进制码等等。可以将例如程序代码(例如脚本)、数值等一项或多项有效载荷提供到单元测试,以便注入到CPUT中以用于安全性测试。这里所使用的CPUT的单元是一个函数、模块或者由施行特定操作的一行或更多行CPUT程序代码构成的任何其他组。后面在说明书和/或所附权利要求书内,CPUT的单元可以被称作“程序代码单元”。
图1是示出了根据在本说明书内公开的一个实施例的用于自动合成用于安全性测试的单元测试112的系统100的方框图。所述系统可以包括安全性分析应用110和CPUT 120,其中由安全性分析应用110测试CPUT 120的安全性弱点。
在一个实施例中,安全性分析应用110和CPUT 120可以在同一处理系统上执行。相应地可以消除用于安全性分析应用110与CPUT 120的通信带宽成本。在图示中,通信等待时间可以被最小化,并且支持不同系统之间的通信所需的开销处理可以被取消。
在操作中,安全性分析应用110可以对CPUT 120进行分析以便识别出与CPUT 120的潜在安全性弱点相关的数据。举例来说,安全性分析应用110可以取回对应于CPUT 120的程序代码并且对所述程序代码施行静态分析,以便识别并且提取出与CPUT 120的接收用户输入的单元以及操纵这样的用户输入的方式有关的未经处理的数据。举例来说,安全性分析应用110可以识别出对应于CPUT中的将用户输入读取到CPUT 120中的语句的程序代码,以及对应于CPUT的与处理在所述进入点处接收自用户的数据有关的单元的程序代码。
在其中CPUT 120是web应用的设置中,安全性分析应用110可以分析并取回对应于CPUT的与接收HTTP请求有关的每一个单元(即程序代码单元)的程序代码,以及对应于CPUT的与处理这样的HTTP请求有关的每一个单元的程序代码。换句话说,除了分析与提供用于与CPUT 120进行用户交互的接口有关的程序代码之外,安全性分析应用110可以对于与由CPUT 120施行的后端处理有关的程序代码施行静态分析。相应地,由安全性分析应用110施行的静态分析可以非常全面,并且识别出在仅使用动态分析的情况下可能会错过的潜在安全性弱点。此外,本发明的实施例可以通过在服务器侧合成单元测试而取消对于非常昂贵的HTTP通信的使用。
基于这样的识别,安全性分析应用110可以动态地合成尝试利用可能潜在地存在于CPUT 120的一个或多个单元中的安全性弱点的单元测试112。更具体来说,每一项单元测试112可以被配置成初始化由CPUT 120的特定单元使用的一个或多个参数。
在其中单元测试112生成人为HTTP请求130的一个实施例中,安全性分析应用110可以实施一个模拟框架,其为安全性分析应用110提供支持以便合成生成人为HTTP请求130的单元测试112。这样的模拟框架在本领域内是已知的。在图示中,取代使用末端用户借以与CPUT 120进行交互的由CPUT 120提供的传统用户接口,所述模拟框架可以包括实施模拟对象的模拟类,所述模拟对象适当地构造由(多项)单元测试112生成的HTTP请求以供CPUT120使用。在这方面,所述模拟框架可以模仿传统用户接口接收来自用户的参数并且生成传统HTTP请求的方式。模仿传统用户接口的操作的处理在本领域内常常被称作“模拟”。
此外,可以向每一项单元测试112提供一项或多项测试有效载荷,单元测试112可以将其传送到(例如注入到)CPUT,并且所述测试有效载荷可以在由CPUT 120接收和处理时使得CPUT 120的目标单元按照不合期望的方式执行。安全性分析应用110可以通过任何适当的方式创建测试有效载荷。举例来说,安全性分析应用110可以访问一个测试有效载荷数值库,其可以对应于在静态分析期间识别出的由CPUT 120使用的各种参数。因此,所述有效载荷可以被预先定义,但是本发明在这方面并不受限制。举例来说,用户可以选择将要运行哪些有效载荷,或者可以基于对CPUT程序代码的分析动态地适配有效载荷。
作为举例,假设CPUT 120的一个单元被配置成使用由末端用户提供的参数“名称(name)”,这例如是利用CPUT 120的程序代码中的“获得名称(get name)”指令实现的。由于参数“名称”例如由末端用户利用HTTP请求提供,因此其可以被视为不受信任的参数;某些不道德的末端用户可能会尝试利用该参数将恶意有效载荷注入到CPUT 120中。安全性分析应用110可以基于静态分析识别出这样的不受信任的参数由CPUT 120的一个单元使用,并且合成单元测试112来定义参数“名称”并且初始化该参数。此外,安全性分析应用110可以向单元测试112提供测试有效载荷,以便作为“名称”参数被传送到CPUT 120。有效载荷的一个实例例如可以是脚本标签(例如“<script type=‘text/javascript’name=‘name’>‘alert’</script>”)。因此,测试有效载荷可以被配置成由CPUT 120使用,以便对被测试的CPUT 120的单元中的“获得名称”指令施行特定测试。但是本发明不限于这一具体实例。举例来说,测试有效载荷可以包含被配置成测试CPUT的安全性弱点的任何其他程序代码、(多个)数值等等。
安全性分析应用110可以对(多项)单元测试112进行处理,以便向CPUT 120传送(多项)测试有效载荷。举例来说,在一个实施例中,可以对单元测试112进行处理以便生成一项或多项人为HTTP请求130,并且将所述人为HTTP请求130传送到CPUT 120。每一项人为HTTP请求130可以包括一项或多项测试有效载荷。这里所使用的人为HTTP请求是出于测试CPUT的目的自动生成的HTTP请求,而不是由用户直接生成。
响应于接收到人为HTTP请求130以及包含在人为HTTP请求130中或者与之相关联的任何测试有效载荷,CPUT 120可以生成HTTP响应140。安全性分析应用110可以对HTTP响应140进行分析,以便确定CPUT 120是否以不合期望的方式对人为HTTP请求130做出响应。此外,安全性分析应用110还可以监测由CPUT 120执行的其他处理,以便确定CPUT 120是否以不合期望的方式做出响应。举例来说,安全性分析应用110可以实施验证逻辑以便监测由CPUT 120施行的数据输入/输出活动,例如发送附加的人为HTTP请求、生成数据、存储数据、取回数据等等。
在一种设置中,安全性分析应用110可以对HTTP响应140进行处理,以便识别出与CPUT的潜在安全性弱点相关的附加数据,比如CPUT中的附加安全性弱点,或者已被识别出的特定弱点的附加方面。基于这样的识别,安全性分析应用110可以动态地合成利用可能潜在地存在于CPUT 120中的安全性弱点的一项或多项后续单元测试112。在图示中,安全性分析应用110可以合成包括被配置成测试CPUT的潜在安全性弱点的其他(多项)测试有效载荷的一项或多项其他单元测试112,并且动态地执行所述其他(多项)单元测试112以便经由一项或多项其他人为HTTP请求将其他(多项)测试有效载荷传送到CPUT 120,正如前面所描述的那样。安全性分析应用110可以如前所述地接收后续HTTP响应和/或监测CPUT 120,以便确定CPUT 120是否以不合期望的方式对后续的(多项)单元测试112做出响应。
安全性分析应用110可以对HTTP响应140、接收自CPUT 120的任何其他响应以及/或者由CPUT 120施行的数据输入/输出活动进行分析,以便识别出CPUT 120中的安全性弱点。基于这样的分析,安全性分析应用110可以生成表明与CPUT 120有关的安全性弱点的安全性分析报告150。在图示中,安全性分析应用110可以向用户接口160、计算机可读存储介质等等输出安全性分析报告150。用户接口160可以由安全性分析应用110在其上执行的处理系统呈现,但是并不需要是这种情况。
图2是示出了根据在本说明书内公开的一个实施例的处理系统200的方框图。处理系统200可以包括至少一个处理器205,其通过系统总线215或其他适当电路耦合到存储器元件210。因此,处理系统200可以将计算机可读程序代码存储在存储器元件210内。处理器105可以执行经由系统总线215从存储器元件210访问的计算机可读程序代码。在一个方面中,处理系统200例如可以被实施为适合于存储和/或执行程序代码的计算机。但是应当认识到,处理系统200可以通过能够施行在本说明书内描述的各项功能和/或操作的包括处理器和存储器的任何系统的形式来实施。
存储器元件210可以包括一个或多个物理存储器设备,比如本地存储器220以及一个或多个大容量存储设备225。本地存储器220指的是通常在程序代码的实际执行期间使用的随机存取存储器或其他(多个)非永久性存储器设备。所述(多个)大容量存储设备225可以被实施为硬盘驱动器(HDD)、固态驱动器(SSD)或者其他永久性数据存储设备。处理系统200还可以包括一个或多个高速缓冲存储器(未示出),其提供对于至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储设备225取回程序代码的次数。
例如键盘230、显示器235和指示设备240之类的输入/输出(I/O)设备可选地可以耦合到处理系统200。所述I/O设备可以直接耦合到或者通过中间的I/O控制器耦合到处理系统200。一个或多个网络适配器245也可以耦合到处理系统200,以便使得处理系统200能够通过中间的私有或公共网络变为耦合到其他系统、计算机系统、远程打印机和/或远程存储设备。调制解调器、有线电视调制解调器、以太网卡、无线网络适配器和个人区域网络设备是可以与处理系统200一同使用的不同类型的网络适配器245的实例。
如图2中所示,存储器元件210可以存储安全性分析应用110和CPUT 120。通过可执行程序代码的形式实施的安全性分析应用110可以由处理系统200执行,因此可以被视为处理系统200的一部分。
安全性分析应用110可以由处理器205执行,以便施行这里所描述的方法和处理。举例来说,安全性分析应用110可以被执行来分析CPUT 120以便识别出与CPUT的潜在安全性弱点相关的数据,自动/动态地合成至少一项单元测试112,以及动态地处理(多项)单元测试112以便向CPUT 120传送一项或多项测试有效载荷,从而测试存在于CPUT 120中的潜在安全性弱点。
安全性分析应用110可以将这样的测试的结果输出到存储器元件210并且将所述结果存储在存储器元件210内。这里所使用的“输出”可以是指存储在存储器元件210中(例如写入到存储在存储器元件210中的一个或多个文件)、写入到显示器235或另一外围输出设备、播放可听通知、发送或传送到另一系统、导出等等。在一个实施例中,安全性分析应用110可以被实施为 Source Edition(IBM、Rational和AppScan是美国、其他国家或者同时在美国和其他国家中的国际商业机器公司(International Business Machines Corporation)的商标)。
图3是示出了根据在本说明书内公开的另一个实施例的用于对CPUT施行安全性分析的方法300的流程图。方法300可以由图2的处理系统实施。
在步骤302处,可以经由处理器对CPUT进行分析,以便识别出与CPUT的潜在安全性弱点相关的数据。举例来说,安全性分析应用可以施行对于CPUT的静态分析。更具体来说,安全性分析应用可以分析CPUT的与接收HTTP请求有关的程序代码,并且分析CPUT的与处理HTTP请求有关的程序代码。
在步骤304处,安全性分析应用可以自动合成一项或多项单元测试,其中每一项单元测试被配置成初始化由CPUT的特定程序代码单元使用的一个或多个参数。举例来说,安全性分析应用可以处理与CPUT的潜在安全性弱点相关的数据以便合成(多项)单元测试。安全性分析应用还可以向每一项单元测试提供一项或多项测试有效载荷,其被配置成测试CPUT的一项或多项潜在安全性弱点。正如所提到的那样,测试有效载荷可以包括一个或多个数值、程序代码(例如脚本)等等,其意图复制不道德的末端用户可能在所布置的CPUT的惯常操作期间注入到CPUT中的恶意有效载荷。
在步骤306处,可以动态地处理所述(多项)单元测试,以便向CPUT传送(多项)第一有效载荷。举例来说,可以动态地处理(多项)单元测试以便生成一项或多项人为HTTP请求(其中的每一项人为HTTP请求包括一项或多项测试有效载荷),并且将包括测试有效载荷的人为HTTP请求传送到CPUT。响应于接收到(多项)测试有效载荷,CPUT可以生成一项或多项HTTP响应,并且将HTTP响应传送到安全性分析应用。
在步骤308处,安全性分析应用可以从CPUT接收针对人为HTTP请求的HTTP响应。在步骤310处,安全性分析应用可以确定(多项)测试有效载荷是否利用了CPUT的实际安全性弱点。举例来说,安全性分析应用可以在处理测试有效载荷的同时分析CPUT,并且/或者分析由CPUT生成的(多项)HTTP响应,正如前面所描述的那样。在图示中,如果在处理一项或多项测试有效载荷的同时CPUT以不合期望的方式施行操作,或者如果CPUT生成不合期望的HTTP响应,则可以识别出CPUT的此类行为。
在步骤312处,安全性分析应用可以分析所述(多项)HTTP响应,以便确定是否存在CPUT的附加的潜在安全性弱点。在图示中,HTTP响应可以包括表明在步骤302中可能没有识别出的与CPUT的潜在安全性弱点相关的附加数据的内容。参照判定方框314,如果通过分析(多项)HTTP响应识别出附加的潜在安全性弱点,则在步骤316处可以识别出附加的数据。在步骤318处,安全性分析应用可以合成一项或多项附加的单元测试。可以向每一项附加的单元测试提供被配置成针对CPUT的至少一项潜在安全性弱点对CPUT进行测试的至少一项其他的测试有效载荷。所述处理随后可以继续到步骤306,并且按照所描述的那样继续。
再次参照判定方框314,当没有识别出附加的潜在安全性弱点时,所述处理可以继续到步骤320,并且可以例如基于在步骤310处做出的确定输出安全性分析报告。包含在安全性分析报告中的安全性分析的结果可以表明(多项)测试有效载荷是否利用了CPUT的实际安全性弱点。正如所提到的那样,所述结果可以被输出到显示器、打印机、存储到存储器等等。
整个说明书中相同的数字用于指定相同的项。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
这里所使用的术语仅仅是用于描述特定实施例的目的,而不意图限制本发明。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”和“所述”同样意图包括复数形式。还应当理解的是,在本说明书中使用的术语“包括”表明所述特征、证书、步骤、操作、元件和/或组件的存在,而不排除存在或添加一个或多个其他特征、证书、步骤、操作、元件、组件和/或其组合。
所附权利要求书中的所有装置或步骤加上功能元件的相应结构、材料、动作和等效方案意图包括用于与明确要求保护的其他要求保护的元件相组合来施行所述功能的任何结构、材料或动作。前面对于本发明的描述是出于说明和描述的目的而给出的,其并不意图进行穷举或者把本发明限制到所公开的形式。在不背离本发明的范围和精神的情况下,本领域技术人员将认识到许多修改和变型。前面对于实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且使得本领域技术人员能够理解本发明的具有适合于所设想的特定用途的各种修改的各个实施例。

Claims (19)

1.一种对待测试计算机程序施行安全性分析的方法,所述方法包括:
经由处理器对待测试计算机程序进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的数据;
自动地合成被配置成测试待测试计算机程序内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由待测试计算机程序内的所述特定程序代码单元使用的至少一个参数;
向第一单元测试提供被配置成利用待测试计算机程序的至少一项潜在安全性弱点的至少第一测试有效载荷;
通过向待测试计算机程序传送包括第一测试有效载荷的人为超文本传输协议HTTP请求,来动态地处理第一单元测试,以便向待测试计算机程序内的所述特定程序代码单元传送第一测试有效载荷;
确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点;
输出表明第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点的安全性分析报告;
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
对所述HTTP响应进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的附加数据;
自动地合成至少第二单元测试,所述第二单元测试包括被配置成针对待测试计算机程序的至少一项潜在安全性弱点来测试待测试计算机程序的至少第二测试有效载荷;以及
动态地处理第二单元测试,以便将第二测试有效载荷传送到待测试计算机程序。
2.根据权利要求1所述的方法,其中,确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点包括:
在待测试计算机程序处理第一测试有效载荷的同时分析由待测试计算机程序执行的处理。
3.根据权利要求1所述的方法,其还包括:
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
其中,确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点包括分析所述HTTP响应。
4.根据权利要求1所述的方法,其中,向待测试计算机程序传送人为HTTP请求包括:
第一单元测试自动地生成包括第一测试有效载荷的人为HTTP请求;以及
第一单元测试自动地向待测试计算机程序传送人为HTTP请求。
5.根据权利要求1所述的方法,其中,自动地合成至少第一单元测试包括:
对与待测试计算机程序的潜在安全性弱点相关的数据进行处理,以便合成第一单元测试。
6.根据权利要求1所述的方法,其中,对待测试计算机程序进行分析以便识别出与待测试计算机程序的潜在安全性弱点相关的数据包括:
对待测试计算机程序施行静态分析。
7.根据权利要求6所述的方法,其中,对待测试计算机程序施行静态分析包括:
对待测试计算机程序的与接收超文本传输协议HTTP请求有关的程序代码进行分析;以及
对待测试计算机程序的与处理HTTP请求有关的程序代码进行分析。
8.一种对待测试计算机程序施行安全性分析的方法,所述方法包括:
经由处理器对待测试计算机程序施行静态分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的数据;
自动地合成被配置成测试待测试计算机程序内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由待测试计算机程序内的所述特定程序代码单元使用的至少一个参数;
向第一单元测试提供被配置成利用待测试计算机程序的至少一项潜在安全性弱点的至少第一测试有效载荷;
通过向待测试计算机程序传送包括第一测试有效载荷的人为超文本传输协议HTTP请求,来动态地处理第一单元测试,以便经由超文本传输协议HTTP请求向待测试计算机程序内的所述特定程序代码单元传送第一测试有效载荷;
确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点;以及
输出表明第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点的安全性分析报告;
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
对所述HTTP响应进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的附加数据;
自动地合成至少第二单元测试,所述第二单元测试包括被配置成针对待测试计算机程序的至少一项潜在安全性弱点来测试待测试计算机程序的至少第二测试有效载荷;以及
动态地处理第二单元测试,以便将第二测试有效载荷传送到待测试计算机程序。
9.一种用于对待测试计算机程序施行安全性分析的计算机存储介质,所述计算机存储介质上存储有计算机程序指令,其中所述计算机程序指令当其在计算机上运行时令计算机执行下列步骤,包括:
对待测试计算机程序进行分析以便识别出与待测试计算机程序的潜在安全性弱点相关的数据;
自动地合成被配置成测试待测试计算机程序内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由待测试计算机程序内的所述特定程序代码单元使用的至少一个参数;
向第一单元测试提供被配置成利用待测试计算机程序的至少一项潜在安全性弱点的至少第一测试有效载荷;
通过向待测试计算机程序传送包括第一测试有效载荷的人为超文本传输协议HTTP请求,来动态地处理第一单元测试以便向待测试计算机程序内的所述特定程序代码单元传送第一测试有效载荷;
确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点;以及
输出表明第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点的安全性分析报告;
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
对所述HTTP响应进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的附加数据;
自动地合成至少第二单元测试,所述第二单元测试包括被配置成针对待测试计算机程序的至少一项潜在安全性弱点来测试待测试计算机程序的至少第二测试有效载荷;以及
动态地处理第二单元测试,以便将第二测试有效载荷传送到待测试计算机程序。
10.根据权利要求9所述的计算机存储介质,其中,确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点包括:
在待测试计算机程序处理第一测试有效载荷的同时分析由待测试计算机程序执行的处理。
11.根据权利要求9所述的计算机存储介质,其中所述计算机程序指令当其在计算机上运行时令计算机进一步执行下列步骤:
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
其中,确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点包括分析所述HTTP响应。
12.根据权利要求9所述的计算机存储介质,其中,向待测试计算机程序传送人为HTTP请求包括:
第一单元测试自动地生成包括第一测试有效载荷的人为HTTP请求;以及
第一单元测试自动地向待测试计算机程序传送人为HTTP请求。
13.根据权利要求9所述的计算机存储介质,其中,自动地合成至少第一单元测试包括:
对与待测试计算机程序的潜在安全性弱点相关的数据进行处理以便合成第一单元测试。
14.根据权利要求9所述的计算机存储介质,其中,对待测试计算机程序进行分析以便识别出与待测试计算机程序的潜在安全性弱点相关的数据包括:
对待测试计算机程序施行静态分析。
15.根据权利要求14所述的计算机存储介质,其中,对待测试计算机程序施行静态分析包括:
对待测试计算机程序的与接收超文本传输协议HTTP请求有关的程序代码进行分析;以及
对待测试计算机程序的与处理HTTP请求有关的程序代码进行分析。
16.一种对待测试计算机程序施行安全性分析的计算机存储介质,所述计算机存储介质上存储有计算机程序指令,其中所述计算机程序指令当其在计算机上运行时令计算机执行下列步骤,包括:
对待测试计算机程序施行静态分析以便识别出与待测试计算机程序的潜在安全性弱点相关的数据;
自动地合成被配置成测试待测试计算机程序内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由待测试计算机程序内的所述特定程序代码单元使用的至少一个参数;
向第一单元测试提供被配置成利用待测试计算机程序的至少一项潜在安全性弱点的至少第一测试有效载荷;
通过向待测试计算机程序传送包括第一测试有效载荷的人为超文本传输协议HTTP请求,来动态地处理第一单元测试以便经由超文本传输协议HTTP请求向待测试计算机程序内的所述特定程序代码单元传送第一测试有效载荷;
确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点;以及
输出表明第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点的安全性分析报告;
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
对所述HTTP响应进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的附加数据;
自动地合成至少第二单元测试,所述第二单元测试包括被配置成针对待测试计算机程序的至少一项潜在安全性弱点来测试待测试计算机程序的至少第二测试有效载荷;以及
动态地处理第二单元测试,以便将第二测试有效载荷传送到待测试计算机程序。
17.一种对待测试计算机程序施行安全性分析的系统,其包括:
被配置成发起包括以下可执行操作的处理器:
对待测试计算机程序进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的数据;
自动地合成被配置成测试待测试计算机程序内的特定程序代码单元的至少第一单元测试,所述第一单元测试被配置成初始化由待测试计算机程序内的所述特定程序代码单元使用的至少一个参数;
向第一单元测试提供被配置成利用待测试计算机程序的至少一项潜在安全性弱点的至少第一测试有效载荷;
通过向待测试计算机程序传送包括第一测试有效载荷的人为超文本传输协议HTTP请求,来动态地处理第一单元测试,以便向待测试计算机程序内的所述特定程序代码单元传送第一测试有效载荷;
确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点;以及
输出表明第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点的安全性分析报告;
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
对所述HTTP响应进行分析,以便识别出与待测试计算机程序的潜在安全性弱点相关的附加数据;
自动地合成至少第二单元测试,所述第二单元测试包括被配置成针对待测试计算机程序的至少一项潜在安全性弱点来测试待测试计算机程序的至少第二测试有效载荷;以及
动态地处理第二单元测试,以便将第二测试有效载荷传送到待测试计算机程序。
18.根据权利要求17所述的系统,其中,确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点包括:
在待测试计算机程序处理第一测试有效载荷的同时分析由待测试计算机程序执行的处理。
19.根据权利要求17所述的系统,所述处理器还被配置成发起包括以下各项的可执行操作:
从待测试计算机程序接收针对人为HTTP请求的HTTP响应;
其中,确定第一测试有效载荷是否利用了待测试计算机程序的实际安全性弱点包括分析所述HTTP响应。
CN201380008347.4A 2012-02-07 2013-01-17 对计算机程序施行安全性分析的方法、系统和存储介质 Active CN104115117B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/367,633 US8856935B2 (en) 2012-02-07 2012-02-07 Automatic synthesis of unit tests for security testing
US13/367,633 2012-02-07
PCT/IB2013/050432 WO2013118006A1 (en) 2012-02-07 2013-01-17 Automatic synthesis of unit tests for security testing

Publications (2)

Publication Number Publication Date
CN104115117A CN104115117A (zh) 2014-10-22
CN104115117B true CN104115117B (zh) 2017-09-05

Family

ID=48904092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380008347.4A Active CN104115117B (zh) 2012-02-07 2013-01-17 对计算机程序施行安全性分析的方法、系统和存储介质

Country Status (5)

Country Link
US (3) US8856935B2 (zh)
CN (1) CN104115117B (zh)
DE (1) DE112013000485T5 (zh)
GB (1) GB2512258A (zh)
WO (1) WO2013118006A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856935B2 (en) 2012-02-07 2014-10-07 International Business Machines Corporation Automatic synthesis of unit tests for security testing
US9141807B2 (en) * 2012-09-28 2015-09-22 Synopsys, Inc. Security remediation
US8966636B2 (en) * 2012-10-16 2015-02-24 International Business Machines Corporation Transforming unit tests for security testing
US10521288B2 (en) * 2012-11-07 2019-12-31 International Business Machines Corporation Collaborative application testing
US11057416B2 (en) * 2013-12-19 2021-07-06 Micro Focus Llc Analyze code that uses web framework using local parameter model
US9824222B1 (en) * 2014-05-06 2017-11-21 Synack, Inc. Method of distributed discovery of vulnerabilities in applications
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US10678926B2 (en) * 2017-01-09 2020-06-09 International Business Machines Corporation Identifying security risks in code using security metric comparison
EP3376442A1 (en) 2017-03-16 2018-09-19 Siemens Aktiengesellschaft Apparatus and method for a reusable functional failure test for a specific technical system
US10846410B2 (en) * 2017-12-21 2020-11-24 Microsoft Technology Licensing, Llc Automated fuzzing based on analysis of application execution flow
US10872157B2 (en) * 2017-12-22 2020-12-22 Royal Bank Of Canada Reinforcement-based system and method for detecting system vulnerabilities
CN108256335B (zh) * 2018-02-08 2019-06-18 北京百度网讯科技有限公司 用于检测漏洞的方法和装置
CN109508548B (zh) * 2018-11-19 2022-06-03 四川长虹电器股份有限公司 一种基于仿真器技术的威胁行为搜集系统及方法
US20230351022A1 (en) * 2022-05-02 2023-11-02 Cisco Technology, Inc. Systems and Methods for Merging Performance and Security into a Unit Testing Environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425035A (zh) * 2007-11-01 2009-05-06 韩国电子通信研究院 用于检查软件的漏洞的设备和方法
CN101482846A (zh) * 2008-12-25 2009-07-15 上海交通大学 基于可执行代码逆向分析的漏洞挖掘方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543056B2 (en) * 2002-01-15 2009-06-02 Mcafee, Inc. System and method for network vulnerability detection and reporting
US7039898B2 (en) 2002-07-12 2006-05-02 Netspective Communications, Llc Computer system for performing reusable software application development from a set of declarative executable specifications
US20050273860A1 (en) 2004-06-04 2005-12-08 Brian Chess Apparatus and method for developing, testing and monitoring secure software
WO2006051013A2 (de) 2004-11-15 2006-05-18 Siemens Aktiengesellschaft Verfahren zur handhabung von software-tests
US8281401B2 (en) * 2005-01-25 2012-10-02 Whitehat Security, Inc. System for detecting vulnerabilities in web applications using client-side application interfaces
US7877780B2 (en) 2005-04-01 2011-01-25 Parasoft Corporation System and method for enforcing functionality in computer software through policies
US7849448B2 (en) * 2005-06-01 2010-12-07 Crosscheck Networks Technique for determining web services vulnerabilities and compliance
EP2092424B1 (en) 2006-10-19 2015-12-30 Checkmarx Ltd. Locating security vulnerabilities in source code
US20080115114A1 (en) 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
US8499353B2 (en) * 2007-02-16 2013-07-30 Veracode, Inc. Assessment and analysis of software security flaws
WO2008109770A2 (en) * 2007-03-06 2008-09-12 Core Sdi, Incorporated System and method for providing application penetration testing
US8099787B2 (en) * 2007-08-15 2012-01-17 Bank Of America Corporation Knowledge-based and collaborative system for security assessment of web applications
US9264443B2 (en) * 2008-08-25 2016-02-16 International Business Machines Corporation Browser based method of assessing web application vulnerability
US8516449B2 (en) * 2009-07-14 2013-08-20 International Business Machines Corporation Detecting and localizing security vulnerabilities in client-server application
US8468605B2 (en) 2009-11-30 2013-06-18 International Business Machines Corporation Identifying security vulnerability in computer software
US9507940B2 (en) * 2010-08-10 2016-11-29 Salesforce.Com, Inc. Adapting a security tool for performing security analysis on a software application
CN102136047A (zh) 2011-02-25 2011-07-27 天津大学 一种基于形式化及统一软件模型的软件可信工程方法
US8949992B2 (en) * 2011-05-31 2015-02-03 International Business Machines Corporation Detecting persistent vulnerabilities in web applications
US8695027B2 (en) * 2011-06-30 2014-04-08 Mcafee, Inc. System and method for application security assessment
US9471787B2 (en) * 2011-08-25 2016-10-18 International Business Machines Corporation Detecting stored cross-site scripting vulnerabilities in web applications
US9118713B2 (en) * 2011-09-26 2015-08-25 The Board Of Trustees Of The University Of Illinois System and a method for automatically detecting security vulnerabilities in client-server applications
US10701097B2 (en) * 2011-12-20 2020-06-30 Micro Focus Llc Application security testing
US8856935B2 (en) 2012-02-07 2014-10-07 International Business Machines Corporation Automatic synthesis of unit tests for security testing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425035A (zh) * 2007-11-01 2009-05-06 韩国电子通信研究院 用于检查软件的漏洞的设备和方法
CN101482846A (zh) * 2008-12-25 2009-07-15 上海交通大学 基于可执行代码逆向分析的漏洞挖掘方法

Also Published As

Publication number Publication date
US8856935B2 (en) 2014-10-07
DE112013000485T5 (de) 2014-11-27
US20140298474A1 (en) 2014-10-02
GB201412804D0 (en) 2014-09-03
US20130205398A1 (en) 2013-08-08
WO2013118006A1 (en) 2013-08-15
US8925094B2 (en) 2014-12-30
GB2512258A (en) 2014-09-24
CN104115117A (zh) 2014-10-22
US9892258B2 (en) 2018-02-13
US20130205399A1 (en) 2013-08-08

Similar Documents

Publication Publication Date Title
CN104115117B (zh) 对计算机程序施行安全性分析的方法、系统和存储介质
CN104704472B (zh) 防止侧信道攻击的系统、方法和装置
US20210365445A1 (en) Technologies for collecting, managing, and providing contact tracing information for infectious disease response and mitigation
TWI734038B (zh) 異常資料存取的識別方法和裝置
CN106796638A (zh) 使用飞地认证进行数据验证
CN110084039A (zh) 用于端点安全与网络安全服务之间的协调的框架
CN108255476A (zh) 用于临床数据分析的元数据驱动的程序代码生成
US20190332772A1 (en) Shellcode Detection
US9471790B2 (en) Remediation of security vulnerabilities in computer software
CN107517124A (zh) 基于tcp协议远程配置版本管理软件svn权限的方法及装置
Murad et al. Software testing techniques in iot
CN106575336A (zh) 对敏感代码恶意调用的检测与抑制
CN109240734A (zh) 代码提交方法及装置
US20180176117A1 (en) Method and program product for a private performance network with geographical load simulation
US11720385B2 (en) Automated platform to assess commercial off the shelf (COTS) software assurance
CN108475314A (zh) 使用递增简档分析的信息流跟踪
Nath et al. AI and Blockchain-based source code vulnerability detection and prevention system for multiparty software development
CN117501658A (zh) 安全事件告警的可能性评估
Yi et al. Recurrent semantic learning-driven fast binary vulnerability detection in healthcare cyber physical systems
CN107924440A (zh) 安全计算环境
CN112309565A (zh) 用于匹配药品信息和病症信息的方法、装置、电子设备和介质
US10176087B1 (en) Autogenic test framework
Luo et al. Parameter estimation following an adaptive treatment selection trial design
Olivier et al. BEERR: Bench of Embedded System Experiments for Reproducible Research
Raheman et al. Will zero vulnerability computing (ZVC) ever be possible? Testing the hypothesis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant