CN104685477B - 应用程序安全测试 - Google Patents

应用程序安全测试 Download PDF

Info

Publication number
CN104685477B
CN104685477B CN201280076151.4A CN201280076151A CN104685477B CN 104685477 B CN104685477 B CN 104685477B CN 201280076151 A CN201280076151 A CN 201280076151A CN 104685477 B CN104685477 B CN 104685477B
Authority
CN
China
Prior art keywords
real time
application program
function
aut
leak
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.)
Expired - Fee Related
Application number
CN201280076151.4A
Other languages
English (en)
Other versions
CN104685477A (zh
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 Enterprise Development 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 Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN104685477A publication Critical patent/CN104685477A/zh
Application granted granted Critical
Publication of CN104685477B publication Critical patent/CN104685477B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本文公开的示例性实施例涉及待测应用程序(AUT)的实时修改。对AUT执行安全测试。实时修改器确定待由AUT执行的函数的一部分是不安全的。该实时修改器修改AUT的执行,以不执行该部分。

Description

应用程序安全测试
背景技术
软件安全测试用于识别应用程序(如网页应用程序)中的漏洞。对基于网页的软件的传统黑盒安全测试通过使用通常称为扫描器的安全测试应用程序进行工作,扫描器以攻击者的身份出现。在黑盒方法中,扫描器通过进行HTTP请求并且评价HTTP响应或响应缺失以找出待测应用程序(AUT)接受输入的所有URL,对AUT进行评估。AUT接受输入的URL可以被称作AUT的攻击面。然后,根据该攻击面及可能的漏洞类别,扫描器生成攻击。扫描器施加这些攻击,以通过评价程序的HTTP响应来诊断漏洞的存在或不存在。
附图说明
下面的详细描述参照附图,其中:
图1是根据一个示例的、能够通过确定和修改不安全的执行来修改待测应用程序的执行的计算***的框图;
图2是根据一个示例的、示出能够修改待测应用程序的执行的测试***配置的框图;
图3是根据一个示例的、示出基于安全性修改待测应用程序的操作的示例的框图;
图4是根据一个示例的、用于基于待测应用程序的执行的安全性来修改待测应用程序的执行的方法的流程图;以及
图5是根据一个示例的、能够响应于安全测试动作而基于安全性修改待测应用程序的计算设备的框图。
具体实施方式
本文描述的实施例提供用于执行应用程序(如网页应用程序)的测试的技术。当公司想知道该公司生产中的或即将付诸生产的网页应用程序有多安全时,该公司通常使用安全测试方案,如渗透测试方案(例如,使用扫描器)、模糊测试、漏洞测试、软件安全测试、网站安全测试及其结合等等。该公司可能希望使用生产中的应用程序的副本作为待测应用程序(AUT)。使用生产中的应用程序或即将付诸生产的应用程序去作测试的原因是:该公司可能想要测试同样的代码。在质量保证阶段使用即将成为生产中的应用程序的AUT,确保在生产中使用的应用程序已被测试。在本说明书全文中提到了扫描器,然而应当注意,可以类似地使用其它测试方案。
在动态网页应用程序扫描期间,扫描器模拟利用该应用程序工作的用户的动作,来发现应用程序攻击面并对所发现的攻击向量执行大量攻击。由于扫描器不知道该扫描器正在测试的应用程序的逻辑,所以那些操作中的一些可能有害于AUT或其环境。
在一个示例中,在企业应用程序的扫描期间,一旦扫描器发现“联系我们”页面,该应用程序就可以向各个员工发送多封电子邮件。然而,在扫描器的角度看来,该测试仅是另一超文本传输协议(HTTP)POST攻击向量。
在另一示例中,拒绝服务(DoS)攻击的目的是为了使应用程序挂起或崩溃。渗透测试方案想要找出这些漏洞,并且通过发出能使应用程序崩溃的这些攻击来进行寻找。当成功时,该应用程序崩溃或挂起,这有损于进一步的测试。
扫描的危险和破坏性属性可能导致顾客将大量时间花费在待测应用程序的沙箱测试(sandboxing)。由于应用程序的内部复杂性和缺少对其功能性的完整了解,这可能是不成功的。在每次扫描后将应用程序复原至其原始状态的任务可能是耗时的,并且在此过程期间的任何错误都可能导致扫描之间的不一致,从而把漏洞报告的顾客弄糊涂。此外,如果安全测试破坏了AUT的状态,那么测试可能例如由于AUT崩溃、变得无响应、应用程序逻辑被攻击扭曲等而过早地失败。因此,安全测试可能不能发现AUT的重要漏洞,这是因为AUT可能在执行这样的测试以前就失败。
因此,本文介绍的方法的益处可能包括固定进行中的DoS问题但仍将问题报告给测试方案,并且动态地修改AUT的执行来防止AUT执行被认为不安全的动作。该方法可以保证该应用程序保持并运行,同时其仍指出攻击者可以如何利用该应用程序中的任何问题。其它有危害的或不安全的操作可以包括抹掉数据库记录、修改数据库记录、利用在应用程序爬行(crawling)和审核期间创建的多个记录污染数据库、利用服务器侧文件***的意料外操作、服务器侧资源(例如,可用插槽)的耗尽等。
AUT可以运行于实时修改器环境中。因此,可以改变或修改AUT内的函数的结果。例如,通过在应用程序中插装应用程序编程接口(API),可以在进行中修改AUT的行为。例如,如果调用不安全的程序,那么实时修改器可以模拟该程序的执行,而实际上不执行危险的操作。在特定示例中,实时修改器的环境可以访问由AUT使用的API。实时修改器方案的示例可以促进包括Java和.NET框架的实现。这些框架可以用于向开发者提供数据库、电子邮件和通信服务。
图1是根据一个示例的、能够通过确定和修改不安全的执行来修改待测应用程序的执行的计算***的框图。该***通常用附图标记100指示。本领域技术人员应理解,图1中示出的功能块和设备可以包括含有电路的硬件组件、含有存储在非瞬态机器可读介质上的计算机代码的软件组件或硬件组件和软件组件二者的结合。此外,该配置不局限于图1中所示出的那种,如可以在本发明的实施例中使用任意数量的功能块和设备。本领域技术人员基于对特定电子设备的设计考虑,将能够容易限定特定功能块。
如图1中图示的,***100可以包括计算设备102,计算设备102可以包括通过总线106与像显示器108这样的呈现设备、键盘110以及诸如鼠标、触摸屏或键盘之类的一个或多个输入设备112连接的处理器104。在实施例中,计算设备102是通用计算设备,例如台式机、便携式计算机、服务器等等。计算设备102还可以具有一种或多种非瞬态计算机可读介质,如可以在各种操作程序(包括本发明的实施例中使用的操作程序)执行期间使用的存储器114。存储器114可以包括只读存储器(ROM)、随机存取存储器(RAM)等等。计算设备102还可以包括其它非瞬态计算机可读介质,如长期存储操作程序和数据(包括在本发明的实施例中使用的操作程序和数据)的储存器***116。
在实施例中,计算设备102包括网络接口控制器(NIC)118,网络接口控制器(NIC)118用于将计算设备102连接至服务器120。计算设备102可以通过诸如互联网、局域网(LAN)、广域网(WAN)或其它网络构造之类的网络通信地联接至服务器120。服务器120可以具有用于存储数据、缓冲通信以及存储服务器120的操作程序的非瞬态计算机可读介质,如存储设备。可以利用像超文本传输协议(HTTP)在内的请求-响应协议或另一API进行计算设备102与服务器120之间的通信。
服务器120可以是主管AUT 124的应用程序服务器。服务器120还包括实时修改器126,实时修改器126能够监视和/或修改AUT 124的执行。在特定示例中,实时修改器126担当供AUT 124执行的环境。可以利用诸如.NET框架、Java虚拟机或其它类似引擎之类的软件框架实现实时修改器126。在其它示例中,可以使用面向方面编程或其它软件。在一些示例中,服务器可以被实现为计算设备,如计算设备500、便携式计算机、台式计算机、工作站或其它计算设备。
在一个示例中,使用Java虚拟机规范(instrumentation)。API调用仪器可以用于监视和/或管理被调用的API。这里,当调用特定API或特定一组API时,该仪器可以将代码、变量等替换为AUT 124的执行和/或以其它方式修改AUT 124的执行。例如,如果调用API的一部分,则可以执行与实时修改器相关联的代码,以帮助选择期望路径。类似方法可以用于其它软件框架,如‘.NET’。这里,在存储器中可以执行改变。因此,不需要直接修改AUT 124。
在另一示例中,可以使用面向方面的编程特征。可以指定要监视的API。在运行时,可以基于编程设置在进行时实现改变。
计算设备102可以包括对AUT 124执行安全测试的安全测试模块128,如扫描器,模糊测试、漏洞测试器等等。在一个示例中,漏洞测试器寻找AUT 124中的已知漏洞并报告潜在的暴露。在另一示例中,渗透测试器或扫描器是对利用与AUT 124相关联的正常商业途径的方式进行寻找的测试。在又一示例中,模糊测试可以是涉及对AUT的输入提供无效数据、意外数据或随机数据的技术。然后,可以监视AUT 124以发现问题。
安全测试模块128可以通过网络向AUT 124发送HTTP请求,其中HTTP请求被配置为尝试暴露AUT 124的漏洞。HTTP请求可以包括HTTPS请求,HTTPS请求将超文本传输协议与SSL(安全套接字层)和TSL(传输层安全)协议结合在一起,以提供加密的通信以及网络网页服务器的安全识别。
在AUT 124处理HTTP请求期间,观察器(未示出)可以监视由AUT 124执行的内部过程。例如,观察器可以识别由AUT 124执行的多行代码,被访问的文件,被执行的数据库查询,等等。观察器和AUT 124均可以被配置为通过同样的HTTP通道与安全测试模块128通信。
如进一步参照图2描述的,从安全测试模块128向服务器120发送的一些请求可以以AUT 124为目标,以根据AUT 124的程序编制从AUT 124引出响应。从安全测试模块128向服务器120发送的其它请求可以以观察器为目标,以获得与特定请求对由AUT 124执行的操作的影响有关的附加信息,或与AUT 124、观察器或主管AUT 124的服务器120相关的其它信息。由安全测试模块128响应于应用程序请求及服务请求而接收到的数据可以由安全测试模块128用于生成漏洞报告。漏洞报告可以通过由安全测试模块128提供的用户界面向用户显示。
如上面提到的,在特定场景中,安全测试模块128对与计算设备102通信联接的AUT124执行安全测试。在测试期间,实时修改器126可以监视AUT 124的执行,并且能够确定AUT124要执行的函数或函数一部分是安全的还是不安全的。实时修改器126可以确定由AUT124执行的函数是不安全的。因此,在一个实施例中,实时修改器126可以通过不执行该函数中被认为不安全的部分,修改AUT124的执行。在一个实施例中,该部分是全部的函数。在另一示例中,该部分可以是该函数中的一部分。
识别模块130可以确定AUT 124要调用的函数是安全的还是不安全的。在一个示例中,基于该函数和/或该部分要执行的过程的类型,可以认为该函数或该部分是不安全的。在一个实施例中,如果一部分执行不想要的动作,则可以认为该部分是不安全的。该不想要的动作可以与通信和/或存储相关。此外,该不想要的动作可以与修改测试床以使执行附加测试更困难相关。在特定示例中,如果使用的过程的类型被配置为执行下面中的至少一个或多个:删除数据库记录、修改另一数据库记录、污染数据库、发送传出消息(例如,电子邮件、文本消息等)、耗尽服务器120的一个或多个资源等,那么该过程可以认为是不安全的。在一个示例中,成功攻击的结果可能导致服务器120上文件的删除。在另一示例中,移除数据库条目可能是成功攻击的结果。此外,兜售外部电子邮箱和/或文本消息收发电话可以是应用程序表面发现和攻击的结果。此外,一些不安全的函数可以解决已知会使AUT崩溃的特定攻击(例如,Java环境中的parseDouble)。
在另一环境中,基于由该函数调用的API,认为该函数是不安全的。在此示例中,该API可以被标记为调用不安全。示例API可以与数据库和/或与外部环境的通信的修改相关联。
实时修改器126可以模拟该部分,而不执行该函数中被认为不安全的该部分。在一个示例中,这可以通过确定AUT 124想要对安全测试模块128做出什么响应并且发送该响应来实现。因此,调用要向特定人或实体(例如,具有联系页面上可获得的电子邮件地址的公司***)发送的电子邮件的函数(控制电子邮件的那部分)可以在执行期间被修改为不发送该邮件,而发送对安全测试模块128的响应。该响应可以包括例如该电子邮件已经发送的确认。这样的模拟可以针对被认为不安全的其它类型的过程,通过返回预期结果而不执行被认为不安全的部分来执行。通过防止破坏性操作发生以及通过保持AUT的剩余部分完整(例如,通过模拟不安全操作的动作,使得高层代码将保持正常工作)可以帮助确保受安全测试的AUT的稳定。
在其它场景中,实时修改器126不执行该函数中被认为不安全的那个部分。相反,实时修改器126阻挡该部分被执行。在一些示例中,这可以通过阻挡整个函数来完成。在其它示例中,这可以通过防止调用或执行代码的多个部分(例如,通过防止调用和/或执行对I/O、储存器或外部通信的API调用)来执行。
此外,在一些场景中,服务器120的实时修改器126和/或另一部分(如观察器应用程序(其可以被包含作为实时修改器126的一部分))可以向安全测试模块128报告与该部分相关联的漏洞。如上面提到的,安全测试可以是渗透测试。在一个示例中,当调用不安全的函数时,观察器可以留意该不安全的函数的可能结果是什么并且记录该可能结果。如果该不安全的函数也是一漏洞,那么可以报告该不安全的函数。此外,一个以上函数的活动在被组合时可以表示漏洞。例如,对相同函数的多次调用可能用于消耗过多***资源。因此,在一些示例中,实时修改器126和/或观察器可以执行服务器资源使用的模拟作为模拟的一部分。
图2是根据一个示例的、示出能够修改待测应用程序的执行的测试***构造的框图。***200可以包括扫描器202、实时修改器204、AUT 206以及观察器208。
AUT 206可以以任意合适的基于网页的计算机语言(如JAVA或.NET等)编码。AUT206可以操作于合适的软件框架中,如Struts、Struts 2、ASP.NET MVC、甲骨文(Oracle)的WebLogic以及Spring MVC等等。该软件框架包括提供通用功能的一组公共代码模块,该通用功能可以被用于提供特定功能的用户代码选择性地覆写或特殊化。AUT 206可以配置为执行Java虚拟机(JVM)、通用语言运行时(CLR)和/或用于处理来自扫描器202的请求的其它运行时环境的一个或多个实例。由软件框架或运行时环境的公共代码模块提供的编程指令可以称为容器代码。专用于AUT 206的定制编程指令可以称为用户代码。
在测试期间,扫描器202可以通过作出HTTP请求并评价HTTP响应或HTTP响应缺失以找出AUT接受输入的所有URL,来对AUT 206进行评估。响应缺失可以提供有用信息,例如,用于确定被测试的应用程序发生故障和/或主管该应用程序的服务器发生故障的信息。尽管本文讨论的示例针对扫描器202,但是预想到能够使用其它安全测试引擎、模块和/或技术。
AUT 206包括网络接口(未示出),该网络接口用于使能通过网络进行扫描器202和AUT 206之间的通信。网络接口暴露AUT 206的攻击面,并且是在AUT 206可用于常规使用时将最终被用于提供对AUT 206的访问的同一接口。扫描器202和AUT206之间通过网络接口的通信可以通过从扫描器202向AUT 206发出的应用程序(例如,经由HTTP)请求以及从AUT206向扫描器202发出的HTTP响应来进行。以AUT206为目标的请求可以称为应用程序请求,并且从AUT 206接收的响应可以称为应用程序响应。由扫描器202生成的应用程序请求可以被配置,以暴露AUT 206的潜在漏洞、对由AUT 206做出的测试进行响应等等。
实时修改器204和/或观察器208可以在AUT 206的执行环境中运行,且有权访问由AUT 206执行的内部操作。例如,实时修改器204可以通过在各个程序点注入其它代码(如JAVA类)来修改AUT 206的字节码。所注入的代码用作观察AUT 206的监视器。所注入的监视器代码可以位于AUT 206的关键程序点,例如执行可能被认为不安全的特定操作(如数据库的修改、与外部个体的通信等等)的应用程序编程接口(API)调用。
可以通过定制请求和响应头的使用来实现扫描器202和观察器208之间的通信。定制头可以由扫描器202添加至应用程序请求,并且定制头可以由观察器208添加至应用程序响应。以这样的方式,扫描器202和观察器208之间的通信中至少一些可以被背负在与AUT206的正常通信上。使用单个通信信道消除了与开启第二专用信道相关的任何问题,并且增加HTTP头通常不干扰AUT 206的正常操作。
在一个示例中,扫描器202对AUT 206执行测试。可以向AUT 206发送应用程序请求,并且可以接收应用程序响应。扫描器202可以发送应用程序请求并且接收响应,以找出可能的安全漏洞区域,例如可以向AUT 206提供输入的位置。然后,扫描器202可以使用攻击向量来攻击这些位置。攻击向量可以包括尝试使AUT 206执行不安全的函数。
在一个示例中,扫描器202请求AUT 206执行不安全的函数。实时修改器204可以检测可以调用该不安全的函数或该函数的一部分。因此,实时修改器204可以修改AUT 206的执行,来防止执行该不安全的部分。这样修改的示例在图3中进一步详细介绍并且如上描述。此外,如上面提到的,观察器208可以跟踪对不***分的调用并且向扫描器202提供测试信息和/或分析。此外,实时修改器204可以模拟来自该部分的响应,而不执行不安全的功能。
观察器208可以用于向扫描器202提供该信息/分析,以帮助AUT 206的测试。扫描器202可以通过利用服务请求和响应来与观察器208通信。该服务请求和响应可以使用例如定制头来实现。
在一些示例中,实时修改器204还可以用于修改AUT 206在执行期间的其它方面。例如,如果动态地编译一个或多个函数或程序段,则可以向AUT 206的执行添加用于调试的代码。因此,进行中的编译器能够利用调试信息来编译代码。通过此方法,观察器208能够访问与所执行的代码相关的详细信息。可以向扫描器202提供该详细信息。扫描器202能够在其对AUT 206的测试中使用该调试信息。
图3是根据一个示例的、示出基于安全性修改待测应用程序的操作的示例的框图。实时修改器300可以执行待测应用程序302。可以通过像扫描器这样的安全测试引擎来测试该应用程序。AUT 302可以向安全测试引擎发送消息并从安全测试引擎接收消息以进行通信。此外,AUT 302可以通过这样的通信提供测试,如验证测试。该测试可以通过API向安全测试引擎提供。
在测试期间,可以执行AUT 302的代码。当执行函数或该函数的一部分时,在特定决策点处,实时修改器300可以行动来确定该函数的下一操作是安全的还是不安全的。如上面提到的,API调用的仪器或类似工具可以用于监视和/或管理由该函数调用的API。
在特定示例中,执行代码,并且实时修改器300确定该操作是安全的还是不安全的。在一个示例中,实时修改器300确定操作是不安全的操作304。由于该操作不安全,所以实时修改器300改变执行为返回,而不进一步扩展。在一些示例中,实时修改器300还可以***待执行的代码,来模拟不安全的操作,而不执行该不安全的操作,或者返回预期值来模拟该不安全的操作。此外,实时修改器300可以向扫描器提供报告,该报告具有要执行不安全操作的信息。在另一示例中,可以确定该操作为安全操作306。由于确定该操作是安全的,所以实时修改器300可以允许该代码继续扩展去进行处理。因此,在调用API时,可以调用相关的安全API 308。
图4是根据一个示例的、用于基于待测应用程序的执行的安全性来修改待测应用程序的执行的方法的流程图。尽管下面参考计算***100描述方法400的执行,但是可以使用用于执行方法400的其它合适组件(例如,计算设备500)。此外,用于执行方法400的组件可以散布在多个设备中。方法400可以以在机器可读存储介质(如存储介质520)上存储的可执行指令的形式和/或以电路的形式实现。
在402处,服务器102可以使用实时修改器126主管AUT 124。服务器120可以与其它设备和/或程序通信,例如通过网络与其它设备和/或程序通信。在一个示例中,安全测试模块128可以用于与AUT 124通信。
安全测试模块128可以使用计算设备102通信,以对AUT 124执行安全测试。因此,在404处,服务器120可以接收来自计算设备102的通信,计算设备102可以通信地联接至AUT124,以执行安全测试。如所提到的,安全测试可以包括单元测试、渗透测试、模糊测试、漏洞测试、软件安全测试、网址安全测试或它们的组合等等。
在测试期间,AUT 124可以执行各种任务,接收来自安全测试模块128的通信,并且对安全测试模块128做出响应。在一个示例中,这些任务的执行可以通往AUT 124已经准备执行实时修改器126可能确定为不安全的任务的阶段。因此,在406处,实时修改器126的识别模块130可以基于待由AUT 124执行的函数的一部分所导致的活动的类型,确定该部分是不安全的。在一个示例中,该活动可以被测试者预标记为不安全。在另一示例中,基于被测试者、另一人、开发者等标记为不安全的一组API,可以确定该活动是不安全的。因为该活动牵涉与测试以外的实体通信,该活动牵涉数据库的直接修改,该活动包括已知漏洞或者执行其它不想要的活动,所以该活动可以被认为不安全。示例活动包括污染数据库、使测试床在没有恢复的情况下不可使用、发送文本消息和/或垃圾电子邮件等。
在408处,实时修改器126然后可以修改AUT 124的执行,以不执行该部分。如上面提到的,该修改可以包括:立即返回而不执行该部分,用其它代码替代该部分,返回预期结果,模拟该部分而不执行该不安全的操作等。因此,在特定场景中,实时修改器126可以模拟该部分的一个或多个功能,以提供对安全测试的响应。此外,如上面提到的,该服务器可以例如使用观察器来监视和/或向该安全测试报告由该部分导致的一个或多个漏洞。
图5是根据一个示例的、能够响应于安全测试动作而基于安全性修改待测应用程序的计算设备的框图。计算设备500例如包括:处理器510以及包括指令522、524、526的机器可读存储介质520,指令522、524、526用于根据要执行的代码的一部分是否安全而修改待测应用程序的执行。计算设备500可以是例如笔记本计算机、台式计算机、服务器、工作站或任何其它计算设备。在特定示例中,计算设备500可以用于实现服务器120的一个或多个特征。
处理器510可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、适用于获取并执行在机器可读存储介质520中存储的指令的其它硬件设备或以上的结合。例如,处理器510可以包括位于芯片上的多个核,包括位于多个芯片之间的多个核、多个设备之间的多个核(例如,如果计算设备500包括多个节点设备)或以上的结合。处理器510可以获取、解码并执行指令522、524、526,以实现例如在方法400中的、基于要执行的代码的安全性的确定而修改AUT的执行。作为获取并执行指令的替代或者除获取并执行指令之外,处理器510可以包括至少一个集成电路(IC)、其它控制逻辑、其它电路或以上的结合,至少一个集成电路(IC)、其它控制逻辑、其它电路或以上的结合包括用于执行指令522、524、526的功能的多个电子组件。
机器可读存储介质520可以是包含或存储可执行指令的任意电子的、磁性的、光学的或其它物理储存设备。因此,机器可读存储介质可以是例如随机存取存储器(RAM)、电可擦写可编程只读存储器(EEPROM)、存储驱动器、光盘只读存储器(CD-ROM),等等。因此,机器可读存储介质可以是非瞬态的。如本文详细描述的,机器可读存储介质520可以编码有用于实现方法400的一系列可执行指令。
处理器510可以执行指令以主管AUT。在一些示例中,可以利用标记编译该AUT,该标记被设置为使能调试/观察待执行的代码。在其它示例中,该AUT可以执行于能执行该调试/观察的运行时环境中。可以对该AUT执行安全测试,例如渗透测试或扫描。
通信指令524可以用于与安全测试通信。因此,计算设备500可以接收来自主管该安全测试的计算设备的通信。这些通信可以用于导致执行该AUT的做出响应的部分(例如,函数、API、代码的多个部分等)。
在AUT的执行期间,可以执行识别指令526来确定代码的部分是否是安全的。识别指令526可以促使处理器510确定(例如在实时修改器处)由AUT执行的函数的一部分是不安全的。
在一个示例中,确定该部分是不安全的是基于与该部分相关联的过程的类型(例如,文件删除、外部通信等)的。不安全过程的示例可以包括以下至少一种:删除数据库记录、修改数据库记录、污染数据库、发送外出消息以及耗尽计算设备500的资源。在另一示例中,确定该部分是不安全的可以基于由上面描述的函数调用的API。
可以执行修改指令522,以通过实时修改器修改AUT的执行,以不执行被确定为不安全的那部分。此外,在一些示例中,实时修改器可以模拟该函数,而不执行该函数中被认为不安全的那部分。此外,计算设备500可以生成可能与代码的不***分相关联的漏洞并且跟踪这些漏洞。在特定场景中,计算设备500可以向安全测试报告与该部分相关联的一个或多个漏洞。
通过上面的方法,实时修改器在动态安全扫描或其它安全测试过程中通过不允许执行有害代码同时保持原始应用程序逻辑完整,来防止AUT损害其自己和/或其同伴。此外,此方法可以防止尝试与测试床以外的世界通信。此外,这些方法可以通过保持环境完整,而排除应用程序状态和环境的附加人工和/或自动维护。

Claims (15)

1.一种用于修改待测应用程序的执行的计算***,包括:
服务器,主管在通信联接至计算设备的实时修改器中执行的待测应用程序,
其中所述计算设备用于对所述待测应用程序执行安全测试,
其中所述实时修改器确定待由所述待测应用程序执行的函数包括漏洞,并且其中所述实时修改器防止所述函数中包括漏洞的部分被执行。
2.根据权利要求1所述的计算***,所述实时修改器包括:
识别模块,用于识别所述函数是否包括漏洞。
3.根据权利要求1所述的计算***,其中所述函数基于待由所述部分执行的过程的类型被认为包括漏洞。
4.根据权利要求3所述的计算***,其中所述过程的类型被配置为执行以下至少之一:删除数据库记录,修改另一数据库记录,污染数据库,发送传出消息以及耗尽所述服务器的资源。
5.根据权利要求1所述的计算***,其中所述函数基于由所述函数调用的应用程序编程接口被认为包括漏洞。
6.根据权利要求1所述的计算***,其中所述实时修改器模拟所述函数,而不执行所述函数中包括漏洞的所述部分。
7.根据权利要求1所述的计算***,其中当所述实时修改器不执行所述函数中包括漏洞的所述部分时,所述实时修改器阻止所述部分被执行。
8.根据权利要求1所述的计算***,其中所述安全测试是渗透测试,并且其中与所述实时修改器相关联的观察器进一步向所述渗透测试报告与所述部分相关联的漏洞。
9.一种非瞬态机器可读存储介质,用于存储指令,所述指令如果被设备的至少一个处理器执行则促使所述设备:
接收来自通信联接至利用实时修改器主管待测应用程序的服务器的计算设备的通信,以对所述待测应用程序执行安全测试;
通过所述实时修改器确定待由所述待测应用程序执行的函数的部分包括漏洞;以及
通过所述实时修改器修改所述待测应用程序的执行,以防止所述部分的执行。
10.根据权利要求9所述的非瞬态机器可读存储介质,进一步包括指令,所述指令如果被设备的至少一个处理器执行则促使所述设备:
基于与所述部分相关联的过程的类型,确定所述部分包括漏洞,
其中所述过程的类型被配置为执行以下至少之一:删除数据库记录,修改另一数据库记录,污染数据库,发送传出消息以及耗尽所述设备的资源。
11.根据权利要求9所述的非瞬态机器可读存储介质,进一步包括指令,所述指令如果被设备的至少一个处理器执行则促使所述设备:
基于由所述函数调用的应用程序编程接口,确定所述部分包括漏洞,
其中所述实时修改器模拟所述函数,而不执行所述函数中包括漏洞的所述部分。
12.根据权利要求9所述的非瞬态机器可读存储介质,进一步包括指令,所述指令如果被设备的至少一个处理器执行则促使所述设备:
向所述安全测试报告与所述部分相关联的所述漏洞,
其中所述安全测试是渗透测试。
13.一种用于修改待测应用程序的执行的方法,包括:
在服务器上利用实时修改器主管待测应用程序;
接收来自通信联接至所述服务器的计算设备的通信,以对所述待测应用程序执行安全测试;
基于待由所述待测应用程序执行的函数的部分所导致的活动的类型,通过所述实时修改器确定所述部分包括漏洞;以及
通过所述实时修改器修改所述待测应用程序的执行,以防止所述部分的执行。
14.根据权利要求13所述的方法,进一步包括:
模拟所述部分的功能,以提供对所述安全测试的响应。
15.根据权利要求14所述的方法,进一步包括:
向所述安全测试报告由所述部分导致的所述漏洞。
CN201280076151.4A 2012-09-28 2012-09-28 应用程序安全测试 Expired - Fee Related CN104685477B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/057691 WO2014051597A1 (en) 2012-09-28 2012-09-28 Application security testing

Publications (2)

Publication Number Publication Date
CN104685477A CN104685477A (zh) 2015-06-03
CN104685477B true CN104685477B (zh) 2018-01-19

Family

ID=50388788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280076151.4A Expired - Fee Related CN104685477B (zh) 2012-09-28 2012-09-28 应用程序安全测试

Country Status (7)

Country Link
US (1) US9438617B2 (zh)
EP (1) EP2901346A4 (zh)
JP (1) JP2015535997A (zh)
KR (1) KR20150063439A (zh)
CN (1) CN104685477B (zh)
BR (1) BR112015006653A2 (zh)
WO (1) WO2014051597A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104303189B (zh) 2012-07-25 2018-07-20 安提特软件有限责任公司 用于确定应用程序漏洞的***及方法
US10032659B2 (en) * 2012-12-28 2018-07-24 Sunedison Semiconductor Limited (Uen201334164H) Methods and systems for preventing unsafe operations
CN104134034B (zh) * 2013-06-13 2015-10-21 腾讯科技(深圳)有限公司 控制应用运行的方法和装置
US10515219B2 (en) 2014-07-18 2019-12-24 Micro Focus Llc Determining terms for security test
US10515220B2 (en) * 2014-09-25 2019-12-24 Micro Focus Llc Determine whether an appropriate defensive response was made by an application under test
EP3202090A4 (en) * 2014-09-29 2018-06-13 Hewlett-Packard Enterprise Development LP Detection of email-related vulnerabilities
EP3234791A4 (en) * 2014-12-16 2018-07-11 Entit Software LLC Determining permissible activity based on permissible activity rules
US9619372B2 (en) * 2015-02-10 2017-04-11 Wipro Limited Method and system for hybrid testing
US9767291B2 (en) * 2015-10-06 2017-09-19 Netflix, Inc. Systems and methods for security and risk assessment and testing of applications
US10419401B2 (en) 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US9473523B1 (en) 2016-02-04 2016-10-18 International Business Machines Corporation Execution of test inputs with applications in computer security assessment
US10122750B2 (en) * 2017-01-30 2018-11-06 XM Cyber Ltd Setting-up penetration testing campaigns
US10592677B2 (en) * 2018-05-30 2020-03-17 Paypal, Inc. Systems and methods for patching vulnerabilities
US11200154B2 (en) * 2019-03-11 2021-12-14 International Business Machines Corporation Function modification for software application testing
CN113722717B (zh) * 2021-07-21 2024-04-05 中国科学院信息工程研究所 一种安全漏洞测试方法、装置、设备及可读存储介质
CN117411955A (zh) * 2023-10-13 2024-01-16 中科驭数(北京)科技有限公司 健壮性测试方法、装置、电子设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571829A (zh) * 2009-06-19 2009-11-04 北京航空航天大学 一种实时嵌入式软件自动化闭环测试方法
CN101901184A (zh) * 2009-05-31 2010-12-01 西门子(中国)有限公司 检查应用程序漏洞的方法、装置和***

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983348A (en) 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
ATE414943T1 (de) * 2000-03-03 2008-12-15 Ibm System zur bestimmung von schwächen von web- anwendungen
JP2002328896A (ja) * 2001-04-27 2002-11-15 Nippon Telegr & Teleph Corp <Ntt> 不正アクセス対処ルール自動設定装置
US20030056116A1 (en) * 2001-05-18 2003-03-20 Bunker Nelson Waldo Reporter
US7099663B2 (en) 2001-05-31 2006-08-29 Qualcomm Inc. Safe application distribution and execution in a wireless environment
US20040123117A1 (en) * 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
JP2005134995A (ja) * 2003-10-28 2005-05-26 Recruit Co Ltd セキュリティ管理システム及びセキュリティ管理方法ならびにセキュリティ管理プログラム
US7207065B2 (en) * 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
JP2006018765A (ja) * 2004-07-05 2006-01-19 Infocom Corp ソフトウエアの一時的な修正方法およびプログラム
US8185877B1 (en) 2005-06-22 2012-05-22 Jpmorgan Chase Bank, N.A. System and method for testing applications
US20070107057A1 (en) * 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US7652749B2 (en) * 2006-02-14 2010-01-26 Asml Netherlands B.V. Software upgrades in a lithographic apparatus
US20070203973A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Fuzzing Requests And Responses Using A Proxy
JP2007241906A (ja) * 2006-03-11 2007-09-20 Hitachi Software Eng Co Ltd Webアプリケーション脆弱性動的検査方法およびシステム
US7814544B1 (en) 2006-06-22 2010-10-12 Symantec Corporation API-profile guided unpacking
US20080162687A1 (en) * 2006-12-28 2008-07-03 David Alan Scott Data acquisition system and method
WO2008109770A2 (en) * 2007-03-06 2008-09-12 Core Sdi, Incorporated System and method for providing application penetration testing
US20100064178A1 (en) * 2008-09-10 2010-03-11 Microsoft Corporation World-Readiness and Globalization Testing Assemblies
US8141158B2 (en) 2008-12-31 2012-03-20 International Business Machines Corporation Measuring coverage of application inputs for advanced web application security testing
US9262306B2 (en) * 2010-01-27 2016-02-16 Hewlett Packard Enterprise Development Lp Software application testing
US20110219449A1 (en) * 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
JP5725529B2 (ja) * 2010-07-21 2015-05-27 日本電気株式会社 Web脆弱性補修システム、Web脆弱性補修方法、及びプログラム
NL2007180C2 (en) * 2011-07-26 2013-01-29 Security Matters B V Method and system for classifying a protocol message in a data communication network.
US9143530B2 (en) * 2011-10-11 2015-09-22 Citrix Systems, Inc. Secure container for protecting enterprise data on a mobile device
JP4927231B1 (ja) * 2011-12-22 2012-05-09 株式会社フォティーンフォティ技術研究所 プログラム、情報機器、及び不正アクセス検出方法
US10296409B2 (en) * 2012-05-15 2019-05-21 International Business Machines Corporation Forecasting workload transaction response time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901184A (zh) * 2009-05-31 2010-12-01 西门子(中国)有限公司 检查应用程序漏洞的方法、装置和***
CN101571829A (zh) * 2009-06-19 2009-11-04 北京航空航天大学 一种实时嵌入式软件自动化闭环测试方法

Also Published As

Publication number Publication date
US9438617B2 (en) 2016-09-06
JP2015535997A (ja) 2015-12-17
EP2901346A1 (en) 2015-08-05
EP2901346A4 (en) 2016-06-08
WO2014051597A1 (en) 2014-04-03
KR20150063439A (ko) 2015-06-09
BR112015006653A2 (pt) 2017-07-04
US20150264074A1 (en) 2015-09-17
CN104685477A (zh) 2015-06-03

Similar Documents

Publication Publication Date Title
CN104685477B (zh) 应用程序安全测试
CN104272270B (zh) 应用程序安全测试
TWI575397B (zh) 利用運行期代理器及動態安全分析之應用程式逐點保護技術
Curphey et al. Web application security assessment tools
Finifter Exploring the relationship between web application development tools and security
US9846781B2 (en) Unused parameters of application under test
CN110674506B (zh) 快速验证应用程序漏洞状态的方法及***
CN108595952A (zh) 一种电力移动应用软件漏洞的检测方法及***
TWI574173B (zh) 決定受測應用程式安全活動之技術
Zech et al. Knowledge-based security testing of web applications by logic programming
Keng et al. Graph-aided directed testing of android applications for checking runtime privacy behaviours
CN113158197A (zh) 一种基于主动iast的sql注入漏洞检测方法、***
Aloraini et al. Evaluating state-of-the-art free and open source static analysis tools against buffer errors in android apps
US20230044951A1 (en) Guided Micro-Fuzzing through Hybrid Program Analysis
Meghanathan Identification and Removal of Software Security Vulnerabilities using Source Code Analysis: A Case Study on a Java File Writer Program with Password Validation Features.
Vimpari An evaluation of free fuzzing tools
US10650148B2 (en) Determine protective measure for data that meets criteria
Mohammadi et al. Systematic Risk Assessment of Cloud Computing Systems using a Combined Model-based Approach.
WO2021250827A1 (ja) セキュリティ検査装置、セキュリティ検査方法、及びプログラム
Dimov et al. Classification of software security tools
Juhola Security testing process for React Native applications
CN116756747A (zh) 程序代码的漏洞检测方法、***、装置及存储介质
김태훈 Breaking Ad-hoc Runtime Integrity Protection Mechanisms in Android Financial Apps
CHAN et al. Graph-aided directed testing of Android applications for checking runtime privacy behaviours.(2016)
Avancini Security Testing of Web and Smartphone Applications

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: 20160930

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

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

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180608

Address after: American California

Patentee after: Antite Software Co., Ltd.

Address before: American Texas

Patentee before: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180119

Termination date: 20200928