CN104715204B - 利用元请求对web应用程序进行安全漏洞测试 - Google Patents
利用元请求对web应用程序进行安全漏洞测试 Download PDFInfo
- Publication number
- CN104715204B CN104715204B CN201410686955.7A CN201410686955A CN104715204B CN 104715204 B CN104715204 B CN 104715204B CN 201410686955 A CN201410686955 A CN 201410686955A CN 104715204 B CN104715204 B CN 104715204B
- Authority
- CN
- China
- Prior art keywords
- application program
- meeting point
- response
- execution
- branch
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种利用元请求对web应用程序进行安全漏洞测试的方案。一种方法,其包括:响应于执行应用程序的请求,实例化具有一个或多个未初始化字段的输入数据对象,并且朝向所述执行应用程序中的汇点遍历路径至所述应用程序的分支点。响应于到达所述分支点,为所述输入数据对象的所述一个或多个未初始化字段中的一些或所有字段提供一个或多个参数,其中,在所述执行应用程序开始执行之前确定所述一个或多个参数以使所述执行应用程序将要采用的分支朝向所述汇点。至少通过在所述执行应用程序中循所述分支而行,来朝向所述汇点遍历所述路径。本发明还公开了一种装置和计算机程序产品。
Description
技术领域
本发明大体上涉及程序代码的分析,更具体地,涉及程序代码的静态和运行期的分析。
背景技术
该部分用于为下面公开的发明提供背景或上下文。本文的描述可包括可能力求的概念,但并不一定是先前已经构思、实施或描述过的概念。因此,除非另有明确表示,否则,该部分中所描述的不是关于本申请中描述的现有技术,并且并非通过被包含在该部分中而被认为是现有技术。
关于web应用程序的安全状态的统计资料向人们敲响了警钟。每年大约有100,000份漏洞报告,并且该数量不断增加。最近的IBM(国际商业机器)研究显示40%的财富500强web应用程序存在漏洞。参见国际商业机器,“Close encounters of the third kind:Alook at the prevalence of client-side JavaScript vulnerabilities in webapplications”2010年白皮书。这种不幸的情况使得web应用程序的安全测试问题非常必要。
存在丰富而多样的具有不同复杂源的测试技术。这些测试技术包括:例如,下列技术:使用静态分析指导测试(见Hewlett Packard,“HP Fortify Software SecurityCenter:Proactively Eliminate Risk in Software”,2011);基于过去失败的测试的基于反馈的测试(见“XSS Analyzer Gives You 700 Million Reasons To Feel Secure”,2012年7月2日);以及,基于指纹识别提示的测试(例如,启发式试图推测该应程序使用了何种框架和后端数据库)(见“Web Application Fingerprinting”选自Penetration TestingLab)。
所有这些技术的主要缺点是:在测试系统可决定其测试策略中的下一个步骤之前,各轮测试必须完成,从而产生具体的反馈(例如,按照来自受测应用程序的响应的形式)。具体地,已经离开测试系统的测试具有固定的、完全指定的行为,这可能导致在该系统收敛于演示漏洞的适当测试之前的多轮测试。
发明内容
下面的概要仅仅是示范性的。该概要并不旨在限制权利要求书的范围。
一种方法,其包括:响应于执行应用程序的请求,实例化具有一个或多个未初始化字段的输入数据对象,并且朝向所述执行应用程序中的汇点(sink)遍历路径至所述应用程序的分支点。响应于到达所述分支点,为所述输入数据对象的所述一个或多个未初始化字段中的一些或所有字段提供一个或多个参数,其中,在所述执行应用程序开始执行之前确定所述一个或多个参数以使所述执行应用程序将要采用的分支朝向所述汇点。至少通过在所述执行应用程序中循所述分支而行,来朝向所述汇点遍历所述路径。本发明还公开了一种装置和计算机程序产品。
附图说明
图1A是适用于执行本文中的示例性实施例的系统的示例的框图;
图1B是示例性实施例中的图1A中的系统的逻辑图;
图2是用于说明漏洞的Java程序代码的简单示例和本文中示例性实施例所用的示例性方法;以及
图3,包括图3A和图3B,是由利用元请求对web应用程序进行安全漏洞测试的数据流引擎所执行的逻辑流程图,并且图示了根据示例性实施例的示例性方法的操作、计算机可读存储器上包含的计算机程序指令的执行结果、和/或由硬件中实施的逻辑执行的功能。
具体实施方式
如上所述,所有这些技术的主要缺点是:在测试系统可决定其测试策略中的下一个步骤之前,各轮测试必须完成,从而产生具体的反馈。相比之下,使用本文描述的方法,测试请求可具有“未指定的”行为:该测试请求并非仅仅是具有具体参数值的具体请求,而是可通过目标程序“具体化”为测试请求进程,从而成为“元请求”。让最初的测试请求行为(例如,准确参数值)未指定的重要性是:基于该请求的处理流程,这些值可实时确定以便最大化演示漏洞的似然性。在示例性提出的方法中,关于怎样具体化请求的“规则”源于目标应用程序的静态分析。
结合附图对示例性实施例进行附加描述。参考图1A,该图提供了适用于与本文中示例性实施例一起使用的计算系统100的概述。计算系统100包括一个或多个存储器145、一个或多个处理器110、一个或多个I/O接口120、以及一个或多个有线或无线网络接口130。二者择一地或除了一个或多个处理器110之外,计算系统100可包括电路系统115。计算系统100耦合至或包括一个或多个显示器176和一个或多个外部装置190。在一个示例中,一个或多个存储器145包括web应用程序107、web容器170、仪表型web容器171、静态分析分支规则177、路径偏置oracle 175、分析结果185、以及安全分析工具140。安全分析工具140包括静态分析工具150和动态分析工具165。在示例性实施例中,安全分析工具140经由可由一个或多个处理器110执行的计算机可读程序代码来实施,以使计算系统100执行本文中描述的一项或多项操作。在另一示例中,这些操作也可以部分地或全部由电路系统115执行,电路系统115实施逻辑以便实行这些操作。电路系统115可以作为一个或多个处理器110的一部分来实施,也可以与一个或多个处理器110分开。处理器110可以是任何处理单元,诸如,数字信号处理器和/或单核或多核通用处理器。电路系统115可以是任何电子电路,诸如,专用集成电路或可编程逻辑。存储器145可包括非易失性和/或易失性RAM(随机存取存储器)、闪速存储器、基于NAND的闪速存储器、长期存储(例如,硬盘驱动器)、和/或只读存储器。一个或多个I/O接口120可包括可供用户与计算系统100交互的接口。显示器176可以是例如触摸屏、平板显示器、监控器、电视、投影仪。
在一个示例性实施例中,用户通过显示器176上的UI(用户接口)180与安全分析工具140交互,或,在另一非限制实施例中,通过网络接口130与安全分析工具140交互。在一个示例性实施例中,外部装置190能够使用户与计算系统100交互,并且可包括鼠标、轨迹球、键盘、触摸屏等等。网络接口130可以是有线和/或无线的,并且可以实施若干个协议,诸如,蜂窝或局域网协议。计算系统100中的元件可以通过任何技术互相连接,注入,总线、板上迹线、半导体上的互连结构等等。
在本示例中,安全分析工具140包括在web应用程序107上进行静态分析的静态分析工具150。虽然本文描述的是web应用程序,但是本文介绍的技术对于具有源和汇点(sink)的任何类型的应用程序都有用。静态分析是在不执行程序的情况下对该程序(例如,web应用程序107)进行的分析,并且相反是通过分析该程序的代码(例如,源代码、目标代码)并建立该程序的操作来进行分析。有许多工具可以用于进行静态分析。例如,国际商业机器(IBM)具有若干种对程序(例如,web应用程序)进行静态分析的工具。其中一种工具称为Rational Appscan。还存在许多其他的静态分析工具。
举例说明,安全分析工具140包括动态分析工具165,该动态分析工具165包括请求生成器部155。动态分析是一种检查执行程序(例如,执行web应用程序107)是否存在漏洞的技术。当前,有许多工具可用于对程序进行动态分析。一个示例是IMB的Rational Appscan。
一种方法包括如下步骤:利用图1B对本示例性简要方法进行说明,图1B是示例性实施例中的图1A中的系统的逻辑图。
1)为请求参数定义“实例化可能性”空间,从而,未指定的参数可以变成具体参数。其间交织有某类安全相关令牌(例如,<script>跨站脚本、XXS、测试有效负载)。在示例性实施例中,实例化可能性是打包在工具(例如,安全分析工具140和静态分析工具150其中一个或两者)内的知识。这需要考虑安全相关选项,尤其是由于安全专家可以对该知识作出贡献。然而,其他选项也是可能的,诸如,使用户选择一些或所有实例化可能性。
2)静态分析是在目标web应用程序107中的控制流分支点方面进行的,以便在本地针对实例化可能性的不同配置决定采用哪个分支和如何实例化相关参数。静态分析创建静态分析分支规则177。
3)web容器170被仪表化以创建仪表型web容器171,从而使得不是将传入的HTTP(超文本传输协议)业务(示出为请求字符串198)从“客户端”侧反序列化为标准请求对象,而是将会创建请求“模板”199。
4)由于请求模板在获知由静态分析在2)中计算出的静态分析分支规则177时通过目标web应用程序107的控制流前进,所以允许请求模板199逐渐具体化成具体请求。
更具体地,图1B的逻辑图通常是在“黑盒”中进行的,从而使得分析是在与“外界”没有接触的情况下进行的。因此,请求字符串198所图示的“客户端”请求是由请求生成器部155响应于执行应用程序(app)107的请求197而创建的。请求197是由该应用程序中的源语句创建的。“客户端”请求通常形成为完全序列化的请求字符串198,虽然也可能是其他输入。请求字符串198并不是具有作为用户输入的数据的真实请求,相反,请求字符串198包含空值,由此是空字符串。仪表型web容器171接收(例如,序列化的)请求字符串198,对请求字符串198进行反序列化(如果必要的话)并且创建一个或多个请求模板199。见框210。请求模板198可被视为元请求,因为它们是以被未初始化而开始的而且请求模板198的值随着时间而具体化。
随着web应用程序107执行,动态分析工具165通过使用请求发生器部分155生成附加请求字符串198,来响应来自web应用程序107的请求。此外,动态分析工具165通过web应用程序107遵循请求模板199(利用静态分析的规则),并且创建针对任何漏洞的分析结果185。见框220。下面将对这些概念进行更加详细地描述。
以Java语法通过简单示例来说明示例性方法,如图2所示。Java是一种编程语言和计算平台,由Sun Microsystems在1995首次发行。代码230是web应用程序107的一部分,具有若干条语句,并且有漏洞。本文有两种源,(“request.getParameter(“name”)的)getParameter 240-1和(“request.getParameter(“familyname”)的)getParameter 240-2,以及一个汇点250getWriter。源240是读取(非信任的)用户提供的数据的语句。源240创建一个或多个请求197。汇点(SNK)250是利用向汇点250提供的内容进行安全敏感操作的语句。存在从读取用户提供的HTTP参数“familyname”的值的getParameter源240-2(源简写为“SRC”)到PrintWriter.write汇点(向响应HTML呈现内容)的流程(即,路径)。内容是“Welcome,Mr.”,无论对象中的姓氏是什么。进一步地,如果输入的有效负载包含脚本块,如“ScRiPT”(字符并非全都为小写),那么对姓氏进行大小写敏感检查(不正确)成功。由此,存在XSS(跨站脚本)漏洞。跨站脚本是一种通常在web应用程序中发现的计算机安全漏洞。XSS能够使攻击者将客户端侧脚本注入到其他用户浏览的网页中。攻击者可以使用跨站脚本漏洞来避开访问控制。代码230的分析是为了例如指出在汇点response.getWriter().write(“Welcome,Mr.“+lastname)处的漏洞,并且,将参考图3对其相应的语句进行进一步地描述。漏洞指示可以例如输出至存储器145,至UI 180或至网络接口130。
转到图3,包括图3A和图3B,示出了由利用元请求对web应用程序进行安全漏洞测试的数据流引擎所执行的逻辑流程图。图3图示了根据示例性实施例的示例性方法的操作、计算机可读存储器上保函的计算机程序指令的执行结果、和/或由在硬件中实施的逻辑执行的功能。图3中的框可以认为是用于执行框中功能的互连装置。假设图3中的框例如是在安全分析工具140的控制之下由计算系统100执行。
上述代码有漏洞。存在从读取用户提供的HTTP参数“familyname”的值的getParameter源到PrintWriter.write汇点(向响应HTML呈现内容)的流程,并且,如果输入的有效负载包含脚本块,如“ScRiPT”(字符并非全都为小写),那么对姓氏进行的大小写敏感检查(错误)成功。
在示例性方法中,第一个步骤允许请求,以将其参数值(图2所示示例中的用户名和姓氏)实例化为可变长度的字符串,其中,一些字符串也包括不同的XXS有效负载变型(诸如,采用不同大小写的<script>)。这发生在框305中,在框305中,计算系统100执行为测试请求参数值定义“实例化可能性”空间的操作。框305作为静态分析301的一部分来执行(例如,由静态分析工具150执行)。静态分析301也包括框315。此外,在框310中,计算系统100执行将某类安全相关令牌交织到参数值中的操作。在本示例中,空间303示出为映射到姓氏对象中,并且还示出了三个示例性令牌302-1至302-3。由于姓氏对象是要输入到汇点250的内容,所以,姓氏需要定义为(潜在地)引起漏洞的有效负载。这就是说,安全相关令牌将基于所到达汇点的特定漏洞并且被创建以产生该特定漏洞,从而使得用于XXS的令牌与用于其他类型漏洞的令牌不同。当web应用程序接受来源于用户的数据并且在没有对数据进行首次验证或解码的情况下将该数据发送给另一个用户的浏览器时,会发生XSS攻击。其他漏洞包括注入缺陷,最常见的注入缺陷是结构化查询语言注入(SOLi)。结构化查询语言注入发生在web应用程序接受来自用户的输入并且在没有对该输入进行首次验证的情况下将该输入作为命令或查询的一部分发送至注释器时。
在框315中,计算系统100通过在web应用程序中的控制流分支点上进行静态分析。在框317中,例如,计算系统100可以在本地决定针对实例化可能性的不同配置将采用哪个分支以及如何实例化相关参数值以便到达汇点250。框314的另一种可能实施方式是框318,在框318中,创建具有规则319的数据库316的路径偏置oracle 175。在示例性实施例中,路径偏置oracle 174可以是例如由动态分析工具165(例如,和/或由如下面描述的输入数据对象等的请求模板)可调用的对象。因此,路径偏置oracle175可以对与例如代码230中的语句相对应的查询做出响应,利用适当的规则319做出响应。
在图2的示例中,静态分析301检测至少下列各项:
1)如果采用假分支,那么外部条件语句(“if(username.length()<6)”)可以导致安全汇点250,即,参数值的长度大于等于6;
2)如果采用不包含精确字符串“<script>”的值用于参数“familyname”,那么内部条件语句(“if(!lastname.contains(‘<script>’)”)变为安全汇点250;以及
3)汇点250操作使用参数“familyname”。
基于上面检测到的信息,路径偏置oracle 175具有包括两条规则319的数据库316。规则139-1如下:对于“username.lengh()<6”,使username.length大于6。规则319-2如下:对于“familyname”的请求,选择并应用令牌。要注意,这些示例性规则仅用于说明之目的和便于描述,许多其他的选项也是可能的。
在框320中,计算系统100使web容器170仪表化以创建仪表型web容器171。框320可以是也可以不是静态分析301的一部分。框320可以如下执行。对于该仪表化步骤,修改(框322)web容器(即,WebSphere、JBoss或Apache Tomcat)的行为,以将HTTP请求反序列化为元请求(例如,请求197)而非标准请求对象。在示例性实施例中,元请求能够例如通过咨询规则319(例如,或使用通过数据库319来咨询规则316的路径偏置oracle),来访问来自先前的静态分析的元数据。
图3中的其余框例如是在动态分析工具165的控制下由计算系统100执行的动态分析324的一部分。在框325中,计算系统100开始执行web应用程序107。在框330中,计算系统100执行在web应用程序107中的语句。如果无请求到达(框335=否),那么流程在框320中继续。如果有请求到达(框325=是),那么在框340中创建(例如,通过请求生成器部155)测试请求(或多个测试请求)。例如,对于源240-1的语句,生成测试请求(例如,图2中的请求字符串198)。在框345中创建如请求模板198所示的相应元请求。要注意,在下面的流程中,web应用程序107与动态分析工具165之间存在交互。这种交互可以仅基于配置为与动态分析工具165交互的输入数据对象346(例如,元请求),诸如,如果到达了汇点250那么能够进行报告。在另一示例性实施例中,可以使web应用程序107仪表化以提供这种交互。请求模板198可视为元请求,这是因为该模板可以是具有未初始化字段的输入数据对象346而且这些字段是当在应用程序中遵循请求模板198时被完成的。输入数据对象346能够在朝向汇点的路径中被遵循,并且能够与路径偏置oracle 175交互(如下所述)以确定例如要采用的路径、要初始化的字段、以及用何种方法初始化用于web应用程序107中相应语句的字段。在框350中,计算系统100在执行web应用程序107中遵循请求模板199(因此,遵循应用程序采用的路径)。在框355中,计算系统100在到达参考未初始化字段的语句时,咨询路径偏置oracle174以使字段实例化。在一个示例中,这可以通过使输入数据对象346咨询路径偏置oracle175来执行。
框357和359是对框355的可能的改进。在框357中,计算系统100说明利用先前的输入的执行以提高覆盖范围。除了静态分析做出的用于当前运行的建议范围之外,框357还说明来自先前的运行的过往信息。例如,先前的运行可能已经表明特定分支的流程总是在无漏洞的汇点(或有漏洞的汇点)处结束,但是,在该流程中未采用其他分支。在框357中,可采用这些其他分支中的一个或多个分支。例如,在图2所示的示例中,如果return.errorPage()语句(外部条件语句)被在汇点中结束的语句所替代,那么存在两种可能的分支,一种用于外部条件语句,而另一种用于内部条件语句(经由“else”到达)。因此,动态分析工具165可跟踪用于一个执行的一个分支和用于另一个执行的另一个分支。实现这个的一种方式是增广搜索启发法,例如,从而使规则自身可被修改,或使储存在规则319中的用于一个(先前的)执行的一些指示信息指示两个分支中的哪一个是先前被采用的。
在框359中,计算系统100说明完整性约束。该框说明这样的想法,其包含用于请求字段的值的某个组合可能是不可实行的(例如,将参数“role”设置成“student”而将参数“age”设置成“3”)并且确保这些组合不被实例化。
在框360中,计算系统100基于路径偏置oracle 175使字段实例化。在示例性实施例中,这可以通过使输入数据对象346基于来自路径偏置oracle 175的输入使字段实例化来实现。在框365中,基于实例化的字段来循路径而行,并且,在框370中,执行附加语句(若存在)。在框375中,计算系统100确定请求是否已经到达。如果已经到达(框375=是),那么流程进入框340。如果没有到达(框375=否),那么计算系统100接下来在框380中确定是否已经到达汇点250。如果没有到达(框380=否),那么流程进入框365。如果已经到达(框380=是),那么执行框385,其中,计算系统100确定汇点250是否存在漏洞。在示例性实施例中,如果以具有已知会引起漏洞的值的有效负载到达了汇点250,那么计算系统100确定存在漏洞。另一方面,如果以具有已知不会引起漏洞的值的有效负载到达了汇点250,那么计算系统100确定存在漏洞。在图2和图3所示的具体示例中,如果令牌到达getWriter语句的汇点250,那么任何一个令牌302都应该会引起漏洞。在这种情况下,由于令牌(例如,“<ScRipT>”302-1)确实到达了汇点250,所以存在漏洞。反之,如果存在在汇点205之前将所有输入变为小写字母的方法,那么不会到达(getWriter语句的)汇点250。如果框390=是,那么在框395中形成指示汇点漏洞的输出。流程进入框396。如果框390=否,那么流程也会进入框396,在框396中,确定是否到达应用程序107的结尾。如果没有(框396=否),那么流程进入框330;否则(框396=是),流程进入框397,在框397中,动态分析工具165停止执行web应用程序107。
将图3应用到图2中的代码203中(并且,也见图1A和图1B),源240-1的语句使测试请求字符串198得以创建(例如,通过请求生成器部155)(框340)。仪表型web容器170创建请求模板198(框345),该请求模板198被转发至web应用程序107。动态分析工具165跟踪该请求模板(也称为元请求)。当元请求在外部条件语句之前立刻达到图2中读取的(源240-1的)第一参数时,要求参数“用户名”的值,在框355中,计算系统100查询先前由静态分析创建的规则319并且用长度至少为6的值进行答复。即,基于规则319-1,计算系统100可确定username.length应该大于6,从而使应用程序(和/或输入数据对象346)能够沿着路径朝汇点(在本示例中为汇点250)行进。
接下来,当请求参数“familyname”时,再一次跟踪该过程,并且,例如在框365中,计算系统100(例如,作为输入数据对象346的元请求)再次咨询静态分析,这次用令牌值(如“ScRipT”)进行答复(例如,使用已经具体选择以在汇点中产生XXS漏洞的规则319-2)。
上述混合方法的示例性优点包括如下:
1)不依靠全球静态分析,相反,依靠由分析计算得到的本地提示;以及,相应地,
2)动态分析可以在测试请求进程的处理中实时修正其行为,这能够使静态分析使用本地提示。
这胜于传统混合模型,在传统混合模型中,静态分析首先计算全球——由此高度接近和不精确——规则,然后动态分析修正完全具体的请求并且发送该请求,在该请求发送之后动态分析不能控制其行为。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,本文可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或上述的任何合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或器件使用或与其结合使用。计算机可读存储介质不包括传播波。
计算机可读的信号介质可包括在基带中或作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任何合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或传输用于由指令执行系统、装置或器件使用或与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或上述的任何合适的组合。
可以以一种或多种程序设计语言的任何组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上将参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其他可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可加载在计算机、其他可编程数据处理装置或其他器件上,以在计算机、其他可编程数据处理装置或其他器件上执行一系列操作步骤以产生计算机实施过程,从而使得在计算机或其他可编程装置上执行的指令提供用于实施流程图和/或框图的框中指定的功能/动作的过程。
本文中使用的术语仅为了描述特定实施例,不旨在限制本发明。如在本文中所用的,单数形式“一”、“一个”和“该”还可包括复数形式,除非本文另有明确说明。应该进一步理解的是,本说明书中使用的术语“包括(comprises)”和/或“包括(comprising)”指存在所陈述的特征、整体、步骤、操作、元件和/或部件,但并不排除存在或增添一个或多个其他特征、整体、步骤、操作、元件、部件和/或上述的组合。
所有装置或步骤的相应结构、材料、动作和在下面权利要求书中的所有装置或步骤加功能的单元的等效物旨在包括用于结合如具体要求的其他要求元件来实施该功能的任何结构、材料或动作。本发明的描述是为了图示和说明之目的,并不旨在是以所公开的形式来穷举或限制本发明。对本领域中的普通技术人员来说显而易见的是,在不脱离本发明的范围和精神的情况下,可以做出许多修改和变化。对实施例进行选择并说明是为了最佳地阐释本发明的原理及其实际应用,从而使本领域的技术人员能够最佳地利用本发明,具有各种修改形式的各种实施例适用于预期的特定用途。
Claims (18)
1.一种利用元请求对WEB应用程序进行安全漏洞测试的方法,其包括:
响应于执行应用程序的请求,实例化具有一个或多个未初始化字段的输入数据对象;
朝向所述执行应用程序中的汇点遍历路径至所述应用程序的分支点;
响应于到达所述分支点,为所述输入数据对象的所述一个或多个未初始化字段中的部分或所有字段提供一个或多个参数,其中,在所述执行应用程序开始执行之前确定所述一个或多个参数以使所述执行应用程序将要采用的分支朝向所述汇点;以及
至少通过在所述执行应用程序中循所述分支而行,来朝向所述汇点继续遍历所述路径;
其中,实例化具有一个或多个未初始化字段的输入数据对象是由web容器执行的,所述web容器先前已经被仪表化以便响应于所述请求将传入流量反序列化为包括输入数据对象和所述一个或多个未初始化字段的请求模板。
2.如权利要求1所述的方法,其进一步包括:在到达所述汇点时,响应于所述汇点利用所述执行应用程序提供给所述汇点的有效负载执行安全敏感操作,来确定是否存在漏洞,以及,响应于针对所述汇点确定存在漏洞,输出所述汇点有漏洞的指示。
3.如权利要求1所述的方法,其进一步包括:
在到达参考所述一个或多个未初始化字段中的至少一个未初始化字段的所述执行应用程序中的一个或多个语句中的具体语句时,咨询在开始执行所述应用程序之前确定的规则集,选择与所述具体语句相对应的规则,并且基于所选择的规则实例化所述至少一个未初始化字段以创建至少一个初始化字段;
将所述至少一个初始化字段应用到所述具体语句;以及
继续朝向所述汇点遍历所述路径。
4.如权利要求3所述的方法,其中:
所述至少一个初始化字段包括特定初始化字段,所述特定初始化字段是在开始执行所述应用程序之前选择的用以在到达汇点时产生特定漏洞的令牌;以及
所述方法进一步包括:
在经由路径到达所述汇点时,其中所述特定初始化字段是针对所述路径中的源的输入,响应于以所述执行应用程序提供给所述汇点的有效负载达到所述汇点,确定是否存在漏洞;以及
响应于确定存在关于所述汇点的漏洞,输出所述汇点有漏洞的指示。
5.如权利要求4所述的方法,其中,确定是否存在漏洞进一步包括:
响应于以具有所述令牌的值的有效负载达到所述汇点,确定存在所述漏洞;以及
响应于以不具有所述令牌的值的有效负载达到所述汇点,确定不存在所述漏洞。
6.如权利要求3所述的方法,其中:
所述方法进一步包括:在开始执行所述应用程序之前,定义请求参数值的实例化可能性空间,并且将一个或多个令牌置于所述空间内,其中,所述一个或多个令牌被选择以在到达汇点时致使特定漏洞;以及
其中,所选择的在实例化所述至少一个未初始化字段时使用的规则包括所述一个或多个令牌中的其中一个令牌。
7.如权利要求3所述的方法,其进一步包括:在开始执行所述应用程序之前,对所述应用程序进行静态分析,所述静态分析包括:在本地针对用于所述应用程序中的分支可能性的实例化可能性的不同配置,决定将采用何分支当作所述应用程序中的分支,并且确定如何实例化相关参数值以到达穿过分支的路径的汇点,以及基于所述决定和确定如何实例化来生成所述规则集。
8.如权利要求3所述的方法,其中,咨询所述规则集说明利用先前的输入的执行,其中,对于当前执行选择一个或多个分支,所选择的一个或多个分支并不是在先前的执行中选择的。
9.如权利要求3所述的方法,其中,咨询所述规则集进一步包括:至少通过确定实例化字段中使用的值的特定组合是否是不可行的并且不对这些特定组合进行实例化,来说明完整性约束。
10.一种利用元请求对WEB应用程序进行安全漏洞测试的装置,其包括:
包括计算机可读代码的一个或多个存储器;以及
一个或多个处理器,
所述一个或多个处理器配置以响应于所述计算机可读代码的执行使所述装置执行以下操作:
响应于执行应用程序的请求,实例化具有一个或多个未初始化字段的输入数据对象;
朝向所述执行应用程序中的汇点遍历路径至所述应用程序的分支点;
响应于到达所述分支点,为所述输入数据对象的所述一个或多个未初始化字段中的部分或所有字段提供一个或多个参数,其中,在所述执行应用程序开始执行之前确定所述一个或多个参数以使所述执行应用程序将要采用的分支朝向所述汇点;以及
至少通过在所述执行应用程序中循所述支点而行,来朝向所述汇点继续遍历所述路径;
其中,实例化具有一个或多个未初始化字段的输入数据对象是由web容器执行的,所述web容器先前已经被仪表化以便响应于所述请求将传入流量反序列化为包括输入数据对象和所述一个或多个未初始化字段的请求模板。
11.如权利要求10所述的装置,其中,所述一个或多个处理器进一步配置以响应于所述计算机可读代码的执行使所述装置执行以下操作:在到达所述汇点时,响应于所述汇点利用所述执行应用程序提供给所述汇点的有效负载执行安全敏感操作,确定是否存在漏洞,以及,响应于针对所述汇点确定存在漏洞,输出所述汇点有漏洞的指示。
12.如权利要求10所述的装置,其中,所述一个或多个处理器进一步配置以响应于所述计算机可读代码的执行使所述装置执行以下操作:
在到达参考所述一个或多个未初始化字段中的至少一个未初始化字段的所述执行应用程序中的一个或多个语句中的具体语句之后,咨询在开始执行所述应用程序之前确定的规则集,选择与所述具体语句相对应的规则,并且基于所选择的规则实例化所述至少一个未初始化字段以创建至少一个初始化字段;
将所述至少一个初始化字段应用到所述具体语句;以及
继续朝向所述汇点遍历所述路径。
13.如权利要求12所述的装置,其中:
所述至少一个初始化字段包括特定初始化字段,所述特定初始化字段是在开始执行所述应用程序之前选择的用以在到达汇点时产生特定漏洞的令牌;以及
其中,所述一个或多个处理器进一步配置以响应于所述计算机可读代码的执行使所述装置执行以下操作:
在经由路径到达所述汇点时,其中所述特定初始化字段是针对所述路径中的源的输入,响应于以所述执行应用程序提供给所述汇点的有效负载达到所述汇点,确定是否存在漏洞;以及
响应于确定存在关于所述汇点的漏洞,输出所述汇点有漏洞的指示。
14.如权利要求13所述的装置,其中,确定是否存在漏洞进一步包括:
响应于以具有所述令牌的值的有效负载达到所述汇点,确定存在所述漏洞;以及
响应于以不具有所述令牌的值的有效负载达到所述汇点,确定不存在所述漏洞。
15.如权利要求12所述的装置,其中:
其中,所述一个或多个处理器进一步配置以响应于所述计算机可读代码的执行使所述装置执行以下操作:在开始执行所述应用程序之前,定义请求参数值的实例化可能性空间,并且将一个或多个令牌置于所述空间内,其中,所述一个或多个令牌被选择以在到达汇点时致使特定漏洞;以及
其中,所选择的在实例化所述至少一个未初始化字段时使用的规则包括所述一个或多个令牌中的其中一个令牌。
16.如权利要求12所述的装置,其中,所述一个或多个处理器进一步配置以响应于所述计算机可读代码的执行使所述装置执行以下操作:在开始执行所述应用程序之前,在所述应用程序上进行静态分析,所述静态分析包括:在本地针对引用所述应用程序中的分支可能性的实例化可能性的不同配置,决定将采用何分支当作是所述应用程序中的分支,并且确定如何实例化相关参数值以到达穿过分支的路径的汇点,以及基于所述决定和确定如何实例化来生成所述的规则集。
17.如权利要求12所述的装置,其中,咨询所述规则集说明利用先前的输入的执行,其中,对于当前执行选择一个或多个分支,所选择的一个或多个分支并不是在先前的执行中选择的。
18.如权利要求12所述的装置,其中,咨询所述规则集进一步包括:至少通过确定实例化字段中使用的值的特定组合是否是不可行的并且不对这些特定组合进行实例化,来说明完整性约束。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/103,221 US9363284B2 (en) | 2013-12-11 | 2013-12-11 | Testing web applications for security vulnerabilities with metarequests |
US14/103,221 | 2013-12-11 | ||
US14/103221 | 2013-12-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104715204A CN104715204A (zh) | 2015-06-17 |
CN104715204B true CN104715204B (zh) | 2017-10-24 |
Family
ID=53272332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410686955.7A Active CN104715204B (zh) | 2013-12-11 | 2014-11-25 | 利用元请求对web应用程序进行安全漏洞测试 |
Country Status (2)
Country | Link |
---|---|
US (3) | US9363284B2 (zh) |
CN (1) | CN104715204B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223533B2 (en) * | 2014-10-21 | 2019-03-05 | Veracode, Inc. | Systems and methods for analysis of cross-site scripting vulnerabilities |
JP6434646B2 (ja) * | 2015-10-19 | 2018-12-05 | 日本電信電話株式会社 | 解析装置、解析方法、および解析プログラム |
CN106874176B (zh) * | 2015-12-14 | 2021-04-27 | 创新先进技术有限公司 | 智能测试方法和装置 |
WO2018006241A1 (en) * | 2016-07-04 | 2018-01-11 | Mcafee, Inc. | Method and apparatus to detect security vulnerabilities in web application |
KR101885615B1 (ko) * | 2016-07-19 | 2018-08-06 | 주식회사 스패로우 | 공격 문자열 생성 방법 및 장치 |
CN107808097A (zh) | 2016-09-09 | 2018-03-16 | 安提特软件有限责任公司 | JavaScript 路径枚举 |
CN108874656A (zh) * | 2017-05-16 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 代码测试方法、装置、可读存储介质及计算机设备 |
CN107330332A (zh) * | 2017-05-23 | 2017-11-07 | 成都联宇云安科技有限公司 | 一种针对安卓手机app的漏洞检测方法 |
CN112106048B (zh) * | 2018-05-04 | 2024-08-20 | 谷歌有限责任公司 | 检测客户端模板系统的注入漏洞 |
CN110955899B (zh) * | 2019-12-13 | 2022-02-22 | 中国工商银行股份有限公司 | 安全测试方法、装置、测试设备以及介质 |
CN113111005A (zh) * | 2021-05-06 | 2021-07-13 | 腾讯科技(深圳)有限公司 | 应用程序测试方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141956A (zh) * | 2010-01-29 | 2011-08-03 | 国际商业机器公司 | 用于开发中的安全漏洞响应管理的方法和系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040002907A1 (en) | 2002-06-28 | 2004-01-01 | Tosswill Andrew R. | Template for inputting customized processing features in an electronic bill presentment and payment system |
US20050177635A1 (en) | 2003-12-18 | 2005-08-11 | Roland Schmidt | System and method for allocating server resources |
US20060253739A1 (en) * | 2005-05-03 | 2006-11-09 | Godefroid Patrice I | Method and apparatus for performing unit testing of software modules with use of directed automated random testing |
US7673189B2 (en) | 2006-02-06 | 2010-03-02 | International Business Machines Corporation | Technique for mapping goal violations to anamolies within a system |
US8302080B2 (en) * | 2007-11-08 | 2012-10-30 | Ntt Docomo, Inc. | Automated test input generation for web applications |
US8387017B2 (en) * | 2009-09-03 | 2013-02-26 | International Business Machines Corporation | Black box testing optimization using information from white box testing |
US8468605B2 (en) * | 2009-11-30 | 2013-06-18 | International Business Machines Corporation | Identifying security vulnerability in computer software |
EP2354994A1 (en) | 2009-12-30 | 2011-08-10 | Gemalto SA | Secure signature creation application using a TPM comprising a middleware stack |
CN103562923B (zh) * | 2011-05-31 | 2016-09-07 | 惠普发展公司,有限责任合伙企业 | 应用程序安全测试 |
US9015831B2 (en) * | 2012-08-08 | 2015-04-21 | Synopsys, Inc | Method and apparatus for static taint analysis of computer program code |
US8869287B2 (en) * | 2012-12-31 | 2014-10-21 | International Business Machines Corporation | Hybrid analysis of vulnerable information flows |
-
2013
- 2013-12-11 US US14/103,221 patent/US9363284B2/en active Active
-
2014
- 2014-11-25 CN CN201410686955.7A patent/CN104715204B/zh active Active
-
2016
- 2016-04-14 US US15/098,419 patent/US9705910B2/en active Active
-
2017
- 2017-04-03 US US15/477,257 patent/US9900340B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141956A (zh) * | 2010-01-29 | 2011-08-03 | 国际商业机器公司 | 用于开发中的安全漏洞响应管理的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104715204A (zh) | 2015-06-17 |
US20160234246A1 (en) | 2016-08-11 |
US20170208087A1 (en) | 2017-07-20 |
US9363284B2 (en) | 2016-06-07 |
US20150163237A1 (en) | 2015-06-11 |
US9900340B2 (en) | 2018-02-20 |
US9705910B2 (en) | 2017-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104715204B (zh) | 利用元请求对web应用程序进行安全漏洞测试 | |
US20190311133A1 (en) | Auto-remediation workflow for computer security testing | |
US11562267B2 (en) | Chatbot for defining a machine learning (ML) solution | |
US11663523B2 (en) | Machine learning (ML) infrastructure techniques | |
McIntosh et al. | Inadequacies of large language model benchmarks in the era of generative artificial intelligence | |
US11868242B1 (en) | Method, apparatus, and computer program product for predictive API test suite selection | |
CN110383238B (zh) | 用于基于模型的软件分析的系统和方法 | |
US9792443B1 (en) | Position analysis of source code vulnerabilities | |
Li et al. | Two decades of Web application testing—A survey of recent advances | |
CN105940654B (zh) | 特权静态被托管的web应用 | |
US9286063B2 (en) | Methods and systems for providing feedback and suggested programming methods | |
CN105793862B (zh) | 动态程序在隔离环境中的受指导执行 | |
US20210392144A1 (en) | Automated and adaptive validation of a user interface | |
US9959193B2 (en) | Increasing accuracy of traceability links and structured data | |
Menegassi et al. | Automated tests for cross‐platform mobile apps in multiple configurations | |
Ferreira et al. | RuleKeeper: GDPR-aware personal data compliance for web frameworks | |
Khandelwal et al. | Cookieenforcer: Automated cookie notice analysis and enforcement | |
Tóth et al. | LLMs in Web-Development: Evaluating LLM-Generated PHP code unveiling vulnerabilities and limitations | |
US20210334395A1 (en) | System and Method for Implementing and testing Security Protections in Computer Software | |
Ahsan et al. | A systematic literature review on software security testing using metaheuristics | |
US12111747B1 (en) | Dynamic input-sensitive validation of machine learning model outputs and methods and systems of the same | |
US20240192837A1 (en) | Detecting keyboard accessibility issues in web applications | |
US20240211528A1 (en) | System, method, and computer program product for securely enabling rendering of a hybrid website interface based on trusted and untrusted code components | |
Dubey et al. | A nested model for AI design and validation | |
Thool et al. | Harnessing the Power of LLMs: LLM Summarization for Human-Centric DAST Reports |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190916 Address after: Yin Du Xindeli Patentee after: HCL Technology Co., Ltd. Address before: American New York Patentee before: International Business Machines Corp. |