CN112106048A - 检测客户端模板系统的注入漏洞 - Google Patents
检测客户端模板系统的注入漏洞 Download PDFInfo
- Publication number
- CN112106048A CN112106048A CN201880093163.5A CN201880093163A CN112106048A CN 112106048 A CN112106048 A CN 112106048A CN 201880093163 A CN201880093163 A CN 201880093163A CN 112106048 A CN112106048 A CN 112106048A
- Authority
- CN
- China
- Prior art keywords
- web page
- data processing
- processing hardware
- attack payload
- vulnerability
- 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
Links
- 238000002347 injection Methods 0.000 title claims abstract description 34
- 239000007924 injection Substances 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims description 113
- 230000006870 function Effects 0.000 claims description 38
- 230000015654 memory Effects 0.000 claims description 37
- 239000013598 vector Substances 0.000 claims description 26
- 238000010200 validation analysis Methods 0.000 claims description 23
- 238000012360 testing method Methods 0.000 claims description 22
- 230000001960 triggered effect Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 5
- 238000012795 verification Methods 0.000 claims description 4
- 230000014509 gene expression Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 4
- 241000242587 Aurelia Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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
-
- 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/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种用于检测客户端模板系统的注入漏洞的方法(800)包括,接收网页(200),确定所述网页实施具有客户端模板的解释编程语言框架(142),以及从所述网页提取所述解释编程语言框架的版本(144)和插值符号(146)。所述方法还包括,基于所述解释编程语言框架的所述版本和所述插值符号,生成所述网页的至少一个注入漏洞情境(210)的攻击有效载荷(152a),对所述网页进行插装,以将所述攻击有效载荷注入到所述网页的所述至少一个注入漏洞情境中,以及执行插装后的所述网页。
Description
技术领域
本公开涉及检测客户端模板系统的注入漏洞。
背景技术
现代解释编程语言框架(诸如JavaScript)将新颖的功能引入到网页应用中。在框架(诸如AngularJS、Polymer、Aurelia或Ractive)中变得流行的一个功能是客户端表达式语言。表达式使得以声明性方式来定义用户界面变得容易。在这些表达式中,某些符号标记表达式的开头和结尾。对于标准网页浏览器,这些符号是无意义的,因此浏览器将该符号解释为文本。然而,现代解释编程语言框架解析网页的内容,如果它们遇到这些所谓的插值符号(符号),则框架使用自定义表达式解析器来解释该内容。表达式的解释发生在用户的浏览器中的客户端上。因此,就应用将表达式解释为代码而言,框架隐式信任表达式。因此,控制表达式等同于能够在网页应用的情境中执行代码。
表达式是要求网页开发者采用新的开发理念的功能。开发者现在需要提供静态模板并且在客户端上将用户输入插入其中,而不是在服务器端上动态地生成超文本标记语言(HTML)。然而,因为许多开发者对此没有经验,所以他们替代地通过在服务器端上插入用户输入来即时(on-the-fly)动态地生成模板。当模板被加载在具有现代解释编程语言框架的应用中时,该框架扫描模板用于寻找插值符号和表达式。这允许跨站点脚本注入漏洞。这些漏洞是特别严重的,因为它们绕过了常见的跨站点脚本缓解方案。
发明内容
本公开的一个方面提供了一种用于检测客户端模板系统的漏洞的方法。所述方法包括,在数据处理硬件处接收应用。所述方法还包括,由所述数据处理硬件确定所述应用是否运行具有客户端模板的编程语言。所述编程语言可以是解释编程语言(例如,JavaScript)。所述方法包括,在所述数据处理硬件处生成攻击有效载荷,以及由所述数据处理硬件对所述应用进行插装以注入所述攻击有效载荷。所述方法还包括,在所述数据处理硬件处执行所述应用。
本公开的另一方面提供了一种用于检测客户端模板系统的注入漏洞的方法。所述方法包括,在数据处理硬件处接收网页,以及由所述数据处理硬件确定所述网页实施具有客户端模板的解释编程语言框架。所述解释编程语言可以是JavaScript。所述方法还包括,由所述数据处理硬件从所述网页提取所述解释编程语言框架的版本和插值符号,由所述数据处理硬件基于所述解释编程语言框架的所述版本和所述插值符号,生成所述网页的至少一个注入漏洞情境的攻击有效载荷,以及由所述数据处理硬件对所述网页进行插装,以将所述攻击有效载荷注入到所述网页的所述至少一个注入漏洞情境中。所述方法还包括,执行插装后的所述网页。
本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,所述方法还包括,在执行插装后的所述网页期间,由所述数据处理硬件捕获由所述攻击有效载荷触发的抛出异常,以及由所述数据处理硬件基于所述抛出异常来识别所述网页的漏洞。在一些示例中,所述方法还包括,由所述数据处理硬件修改所述解释编程语言框架的异常处理程序以拦截所述抛出异常。可选地,所述抛出异常可以包括语法异常。
在一些实施方式中,所述攻击有效载荷包括验证函数,所述验证函数被配置为验证对所述数据处理硬件的所述验证函数的执行。所述方法可以包括,在执行插装后的所述网页期间,由所述数据处理硬件捕获由所述攻击有效载荷触发的所述验证函数的响应。所述方法还可以包括,由所述数据处理硬件基于所述响应来识别所述网页的漏洞。在一些实施方式中,从所述网页提取所述插值符号包括,由所述数据处理硬件执行所述网页,以公开所述解释编程语言框架的应用编程接口(API)。所述方法还可以包括,由所述数据处理硬件修改所述API,以及至少使用修改后的所述API来拦截所述插值符号的重新配置。
在一些示例中,生成所述攻击有效载荷包括,对于所述网页的每个注入漏洞情境,生成被配置用于插装到所述网页中的单个攻击有效载荷。对所述网页进行插装以注入所述攻击有效载荷可以包括,由所述数据处理硬件将所述攻击有效载荷注入到所述网页的可能的输入向量中。在一些实施方式中,对所述网页进行插装以注入所述攻击有效载荷包括,对于所述网页的每个可能的输入向量,由所述数据处理硬件生成单独的测试用例,以及由所述数据处理硬件将所述攻击有效载荷注入到每个测试用例的相应的所述可能的输入向量中。可选地,执行插装后的所述网页包括,对于每个测试用例,执行插装后的所述网页。
在一些实施方式中,所述方法包括,在执行所述网页期间,由所述数据处理硬件确定所述网页的漏洞是否被识别。当所述网页的所述漏洞被识别时,所述方法包括,由所述数据处理硬件基于所述解释编程语言框架的所述版本和所述网页的所述漏洞,生成第二攻击有效载荷。所述第二攻击有效载荷包括指示所述网页的所述漏洞的用户通知。所述方法还包括,由所述数据处理硬件将所述第二攻击有效载荷注入到所述网页中,以及将具有注入的所述第二攻击有效载荷的所述网页从所述数据处理硬件传送到请求所述网页的用户设备。当由所述用户设备接收所述网页时,所述网页使得所述用户设备执行所述网页并且在所述用户设备上执行的用户界面上显示所述用户通知。可选地,对所述网页进行插装以注入所述攻击有效载荷包括,使用原型继承来注入所述攻击有效载荷。
本公开的另一方面提供了一种系统,所述系统包括数据处理硬件以及与所述数据处理硬件进行通信的存储器硬件。所述存储器硬件存储指令,当在所述数据处理硬件上执行所述指令时,所述指令使得所述数据处理硬件进行操作。所述操作包括,接收网页,以及确定所述网页实施具有客户端模板的解释编程语言框架。例如,所述解释编程语言是JavaScript。所述操作还包括,从所述网页提取所述解释编程语言框架的版本和插值符号,基于所述解释编程语言框架的所述版本和所述插值符号,生成所述网页的至少一个注入漏洞情境的攻击有效载荷,以及对所述网页进行插装,以将所述攻击有效载荷注入到所述网页的所述至少一个注入漏洞情境中。所述操作还包括,执行插装后的所述网页。
本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,所述操作还包括,在执行插装后的所述网页期间,捕获由所述攻击有效载荷触发的抛出异常,以及基于所述抛出异常来识别所述网页的漏洞。在一些示例中,所述操作还包括,修改所述解释编程语言框架的异常处理程序以拦截所述抛出异常。可选地,所述抛出异常可以包括语法异常。
在一些实施方式中,所述攻击有效载荷包括验证函数,所述验证函数被配置为验证对所述数据处理硬件的所述验证函数的执行。所述操作可以包括,在执行插装后的所述网页期间,捕获由所述攻击有效载荷触发的所述验证函数的响应。所述操作还可以基于所述响应来识别所述网页的漏洞。在一些实施方式中,从所述网页提取所述插值符号包括,执行所述网页,以公开所述解释编程语言框架的应用编程接口(API)。所述操作还可以修改所述API,以及至少使用修改后的所述API来拦截所述插值符号的重新配置。
在一些示例中,生成所述攻击有效载荷包括,对于所述网页的每个注入漏洞情境,生成被配置用于插装到所述网页中的单个攻击有效载荷。对所述网页进行插装以注入所述攻击有效载荷可以包括,将所述攻击有效载荷注入到所述网页的可能的输入向量中。在一些实施方式中,对所述网页进行插装以注入所述攻击有效载荷包括,对于所述网页的每个可能的输入向量,生成单独的测试用例,以及将所述攻击有效载荷注入到每个测试用例的相应的所述可能的输入向量中。可选地,执行插装后的所述网页包括,对于每个测试用例,执行插装后的所述网页。
在一些实施方式中,所述操作包括,在执行所述网页期间,确定所述网页的漏洞是否被识别。当所述网页的所述漏洞被识别时,所述操作基于所述解释编程语言框架的所述版本和所述网页的所述漏洞,生成第二攻击有效载荷。所述第二攻击有效载荷包括指示所述网页的所述漏洞的用户通知。所述操作还将所述第二攻击有效载荷注入到所述网页中,以及将具有注入的所述第二攻击有效载荷的所述网页从所述数据处理硬件传送到请求所述网页的用户设备。当由所述用户设备接收所述网页时,所述网页使得所述用户设备执行所述网页并且在所述用户设备上执行的用户界面上显示所述用户通知。可选地,对所述网页进行插装以注入所述攻击有效载荷包括,使用原型继承来注入所述攻击有效载荷。
本公开的另一方面提供了另一种用于检测客户端模板系统的注入漏洞的方法。所述方法包括,在数据处理硬件处请求网页。所述方法还包括,在所述数据处理硬件处接收所述网页,所述网页具有被注入到所述网页的漏洞情境中的攻击有效载荷,以及由所述数据处理硬件确定所述网页实施具有客户端模板的解释编程语言框架(诸如JavaScript框架)。所述方法还包括,由所述数据处理硬件执行所述网页,以及由所述数据处理硬件生成由所述攻击有效载荷触发的通知,所述通知指示所述网页的漏洞。
该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,所述方法包括,所述攻击有效载荷基于所述解释编程语言框架的版本和来自所述网页的插值符号。在一些示例中,所述方法包括,使用原型继承将所述攻击有效载荷注入到所述网页的所述漏洞情境中。在一些实施方式中,所述漏洞基于所述网页的所述漏洞情境。
本公开的另一方面提供了一种系统,所述系统包括数据处理硬件、与所述数据处理硬件进行通信的存储器硬件。所述存储器硬件存储指令,当在所述数据处理硬件上执行所述指令时,所述指令使得所述数据处理硬件进行操作。所述操作包括,在数据处理硬件处请求网页。所述操作还包括,接收所述网页,所述网页具有被注入到所述网页的漏洞情境中的攻击有效载荷,以及确定所述网页实施具有客户端模板的解释编程语言框架。所述解释编程语言可以是JavaScript。所述操作还包括,执行所述网页,以及生成由所述攻击有效载荷触发的通知,所述通知指示所述网页的漏洞。
该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,所述操作包括,所述攻击有效载荷基于所述解释编程语言框架的版本和来自所述网页的插值符号。在一些示例中,所述操作包括,使用原型继承将所述攻击有效载荷注入到所述网页的所述漏洞情境中。在一些实施方式中,所述漏洞基于所述网页的所述漏洞情境。
在下面的附图和说明书中阐述了本公开的一个或多个实施方式的细节。根据说明书和附图,以及根据权利要求书,其他方面、特征和优势将是显而易见的。
附图说明
图1是用于检测客户端模板系统的注入漏洞的示例系统的示意图。
图2是与客户端模板系统相关联的示例网页的示意图。
图3是图1的系统的插装器、执行器和识别器的示例组件的示意图。
图4是图1的系统的提取器的示例组件的示意图。
图5是图1的系统的插装器和执行器的示例组件的示意图。
图6是返回处理的示例组件的示意图。
图7是用于检测客户端模板系统的注入漏洞的另一示例系统的示意图。
图8是用于检测客户端模板系统的注入漏洞的示例方法的流程图。
图9是用于检测客户端模板系统的注入漏洞的另一示例方法的流程图。
图10是可以用于实施本文中描述的系统和方法的示例计算设备的示意图。
各个附图中相同的附图标记指示相同的元素。
具体实施方式
现代解释编程语言(例如,JavaScript)框架包括包含使得定义用户界面更有效的客户端表达式的可能性。然而,通过允许第三方在客户的设备处注入和运行函数或代码,这些客户端表达式可能容易受到攻击。这些漏洞可能潜在地允许第三方访问设备和其上包含的信息。这种注入和运行代码的能力不会由跨站点脚本缓解检测到,并且绕过当前安全扫描仪。因此,要解决的技术问题是如何避免客户端模板系统中的这种漏洞,从而提高网页和客户设备的安全性。本公开通过识别潜在漏洞,生成和注入攻击有效载荷以确定实际漏洞,以及向用户警告实际漏洞来解决该技术问题。
本文中的实施方式指向一种检测器,该检测器被配置为确定/检测实施具有客户端模板的解释编程语言框架的网页是否容易受到注入攻击。用户可以通过网页浏览器请求实施解释编程语言框架的网页。解释编程语言框架(诸如像AngularJS、Polymer、Aurelia或Ractive的JavaScript框架)与版本和插值符号相关联。插值符号标记表达式的开头和结尾。例如,在AngularJS框架中,插值符号默认为{{and}}。因此,表达式<h1>Hi{{customer.name}}</h1>将由框架解析,并且将在应用的范围内查找“customer”对象,并且查找客户的“name”。作为结果,框架将向浏览器呈现以下内容(假设name属性被设置为customer 1):<h1>Hi customer1</h1>。然而,这种表达式允许注入漏洞。例如,在没有客户端JavaScript框架的情况下执行时,以下PHP代码是安全的:
<?php echo"<h1>Hi".htmlentities($_GET['username'])."</h1>?>
然而,如果该模板被加载在具有JavaScript框架的应用中,则该模板可能被扫描用于寻找插值符号和表达式。如果示例中的username参数包含插值符号(该插值符号不是由htmlentities编码的),则框架可以将包含的表达式作为代码执行。例如,如果username是{{constructor.constructor("alert(1)")}},则JS框架可以调用alert函数。在这种情况下,alert(1)用作攻击者可以执行的任意有效载荷的示例。这是跨站点脚本的形式。
为了模拟这一点,在一些示例中,检测器将攻击有效载荷注入到网页的注入漏洞情境中,并且在执行网页期间,网页执行该有效载荷。检测器可以配置攻击有效载荷以向请求网页的用户传递通知,该通知警告用户来自注入漏洞情境的漏洞。
参考图1,在一些实施方式中,示例系统100包括一个或多个用户设备102,102a-n,每个用户设备102,102a-n与相应的用户10相关联并且经由网络112与远程系统114进行通信。每个用户设备102可以对应于计算设备(诸如台式电脑工作站或笔记本电脑工作站)。远程系统114可以是单个计算机、多个计算机或分布式系统(例如,云环境),该分布式系统具有可伸缩/弹性的计算资源118(例如,数据处理硬件)和/或存储资源116(例如,存储器硬件)。通过经由网络112从用户设备102向远程系统114发送网页请求110,用户10可以从远程系统114请求网页200。网页请求110可以包括网页标识符111,该网页标识符111识别请求的网页200或者识别与网页应用202相关联的多个网页200。网页标识符111可以例如是识别网页200或网页应用202的网页/应用统一资源定位符(URL)或因特网协议(IP)地址。
在一些实施方式中,远程系统114的数据处理硬件118执行检测器120以接收请求的网页200,并且当网页200实施具有客户端模板的解释编程语言框架142(例如,JavaScript)时,在将网页200返回到用户设备102之前确定网页200是否容易受到注入攻击。在其它实施方式中,检测器120在用户设备102上执行,并且在加载网页200以供用户10查看之前,确定请求的网页200是否容易受到攻击。
在一些示例中,检测器120被配置为确定由用户设备102请求的多个网页200中的一个或多个网页200是否容易受到攻击。例如,用户10可以发送与对应的网页应用202相关联的多个网页200的网页请求110,并且检测器120可以确定/检测相关联的网页应用202的每个网页200的漏洞。在一些示例中,检测器120响应于接收到对应的网页请求110来确定/检测网页200是否容易受到攻击。在其它示例中,检测器120在从用户设备102接收对应的网页请求110之前,首先确定/检测网页200容易受到攻击。在这些示例中,检测器120在存储器硬件116中存储记录113,该记录113指示哪些网页200容易受到攻击,并且一旦从用户设备102接收到网页请求110就访问记录113。
在一些实施方式中,检测器120实施提取器400,该提取器400接收实施具有客户端模板的解释编程语言框架142的请求的网页200,并且从解释编程语言框架142提取解释编程语言版本144和插值符号146。有效载荷生成器150使用解释编程语言版本144和插值符号146来生成网页200的一个或多个注入漏洞情境210的攻击有效载荷152a。此后,插装器310通过将由有效载荷生成器150生成的攻击有效载荷152注入到网页200的每个漏洞情境210中来对网页200进行插装,并且执行器320执行插装后的网页200(例如,修改后的网页200)。在一些示例中,执行修改后的网页200使得修改后的网页200抛出异常182。在这些示例中,识别器330可以捕获抛出异常182并且基于抛出异常182来识别网页200的漏洞192。
图2示出了实施具有客户端模板的解释编程语言框架142的示例网页200。解释编程语言框架142具有相关联的解释编程语言版本144和相关联的插值符号146。解释编程语言版本144指的是分配给解释编程语言框架142版本的唯一版本名或版本号。相同的解释编程语言框架142的不同版本可以提供不同的功能或特征,并且版本144可能对正常访问或以其它方式使用解释编程语言框架142是必需的。插值符号146是由解释编程语言框架142用来识别浏览器否则会忽略(或视为纯文本)的客户端表达式的特定符号。例如,解释编程语言框架142可以解析网页200,寻找插值符号146,并且执行在符号内找到的表达式。插值符号146可以采取浏览器否则会忽略的任何符号的形式。插值符号146可以例如是{}、[[]]或////。网页200还可以与一个或多个漏洞情境210相关联。漏洞情境210表示注入攻击的潜在途径。每个解释编程语言框架142可能具有一组不同的注入漏洞情境210。例如,漏洞情境210可以包括纯HTML 210a(例如,<h1>Hello"injection here"</h1>)、属性210b(例如,<div ng-if="injection here"></div>)和现有表达式210c(例如,<h1>Hello{{injectionvulnerability}}</h1>)。在被注入攻击有效载荷152a时,这些情境210可以允许解释编程语言框架142执行攻击有效载荷152a。
图3示出了插装器310通过修改解释编程语言框架142的异常处理程序312来对网页200进行部分插装的示意图300。解释编程语言框架142的异常处理程序312可以拦截在执行插装后的网页200期间由攻击有效载荷152a触发的异常182。然而,这些处理程序312经常混淆抛出异常182和一般错误处理程序(诸如window.onerror),从而允许抛出异常182在执行网页200期间不被检测到。因此,插装器310可以修改异常处理程序312以生成修改后的异常处理程序314,该修改后的异常处理程序314确保在执行网页200期间抛出的任何异常182都由识别器330识别。具体地,由执行器320使用解释编程语言框架142的修改后的异常处理程序314来执行网页200,允许识别器330拦截抛出异常182并且确定抛出异常182是否由被注入到漏洞情境210中的攻击有效载荷152a触发。抛出异常182可以包括例如语法或解析异常182a。识别器330可以首先解析异常182以确定攻击有效载荷152a是否触发了异常182。如果是,则识别器330可以确认由用户设备102请求的网页200包括漏洞192。
一些解释编程语言框架142允许插值符号146的重新配置。换句话说,网页200的开发者可以对网页200进行编程以改变用于插值符号146的符号。这种改变可以在整个网页200设计中多次发生并且在多个地方发生。参考图4,提取器400从远程系统114接收网页200,并且如果网页200实施具有客户端模板的解释编程语言框架142,则提取器400提取解释编程语言框架版本144和插值符号146。在一些实施方式中,提取器400实施提取器执行器410,该提取器执行器410执行网页200以公开解释编程语言框架142的应用编程接口(API)412。此后,修改器420可以修改公开的API 412并且输出修改后的API 414。重新配置拦截器430可以使用修改后的API 414来检测插值符号146的重新配置。
参考图5,示意图500示出了插装器310通过将攻击有效载荷152a注入到每个漏洞情境210中来对网页200进行插装。插装器310可以通过原型继承来注入攻击有效载荷152a。例如,插装器310可以向JavaScript对象原型添加函数,通常所有JavaScript对象(包括范围)从该JavaScript对象原型继承。该函数通常可以在所有表达式范围中获得,并且可以在攻击有效载荷152a成功时通知检测器120。攻击有效载荷152a可以包括验证函数154。检测器120可以配置验证函数154以验证验证函数154的执行。换句话说,当验证函数154执行时,验证函数154可以通过警告检测器120来自我验证。例如,检测器120可以等待来自验证函数154的调用。插装器310将具有验证函数154的攻击有效载荷152a注入到与网页200的对应的注入漏洞情境210相关联的一个或多个可能的输入向量510,510a-n中。可能的输入向量510包括例如文本框、URL、按钮、列表和其它输入设备。
在一些实施方式中,有效载荷生成器150生成单个攻击有效载荷152a,用于经由插装器330的插装注入到网页200的每个可能的输入向量510(即,每个注入漏洞情境510),以生成对应的测试情况520,520a-n。虽然有效载荷生成器150可以针对每个漏洞情境210(即,针对每个可能的输入向量510)生成单独的攻击有效载荷152,但是生成单个攻击有效载荷152a用于注入到所有输入向量510中提高了检测器120的速度和效率。例如,如果有效载荷可以被注入到HTML 210a、属性210b和表达式210c中,则攻击有效载荷可以是(对于AngularJS):
validationFunction('{{validationFunction()}}')该攻击有效载荷152a可以在所有三个漏洞情境210中执行。对于HTLM 210a,解释编程语言框架142可以执行表达式210a的内部部分,因此执行攻击有效载荷152a。对于属性210b,内部表达式被视为外部函数调用的字符串参数,因此外部函数被调用,这导致再次执行攻击有效载荷152a。对于表达式210c,第一对闭合插值符号146可以结束表达式210c。作为结果,解析的表达式可以引起语法异常182a,该语法异常182a可以由检测器120捕获。
因此,因为每个测试用例520与对应的可能的输入向量510相关联时,所以每个测试用例520指示具有被注入到对应的可能的输入向量510中的攻击有效载荷152a的网页200。检测器120可以使用模糊技术将攻击有效载荷152a注入到可能的输入向量510中。这种模糊技术可以使用自动化软件测试,该自动化软件测试将伪随机数据插入到程序、应用、网页等中。
在对具有被注入到输入向量510中的攻击有效载荷152的网页200进行插装之后,执行器320可以执行每个测试用例520并且输出对应的响应530,530a-n,该响应530,530a-n指示对应的测试用例520是否与漏洞192或无漏洞194相关联。检测器120可以将响应530基于在执行测试用例520期间触发的攻击有效载荷152a的验证函数154。例如,响应530可以验证验证函数154的执行,以便识别网页200的漏洞192。使用模糊技术来生成用于在浏览器中执行的测试用例520,可以模拟代码在现实环境中的执行。以这种方式,检测器120可以探索现实的注入漏洞。
图6示出了当检测器120识别出网页200的漏洞192时,检测器120执行返回处理600,用于返回由用户设备102请求的网页200。例如,如上面图1中讨论的,用户设备102可以发送网页200的网页请求110,并且识别器330可以基于抛出异常182来识别网页200的漏洞192。在示出的示例中,返回处理600使得有效载荷生成器150基于解释编程语言框架142的版本144和网页200的漏洞192来生成第二攻击有效载荷152b。第二攻击有效载荷152b包括指示先前识别的网页200的漏洞192的用户通知642。因为检测器120已经识别出网页200的漏洞192,所以不需要第二次对网页200进行插装,以将第二攻击有效载荷152b注入到注入漏洞情境210中。相反,返回处理600采用注入器610,该注入器610将第二攻击有效载荷152b直接注入到网页200的漏洞192中。
在将第二攻击有效载荷152b注入到网页200中之后,返回处理600将具有注入的第二攻击有效载荷152b的网页200传送到用户设备102。响应于接收到网页200,用户设备102可以执行网页200。在一些示例中,用户设备102执行用户界面(例如,图形用户界面(GUI))104,该用户界面104在用户设备102上在执行网页200期间显示用户通知642。因此,在用户界面104上显示用户通知642可以包括向用户10通知网页200的漏洞192的对话框、弹出窗口、字形或其他图形。另外地或替代地,用户通知642可以包括指示网页200的漏洞192的音频警报(例如,语音话语)。在一些实施方式中,被注入到网页200中的第二攻击有效载荷152b被配置为在用户设备102上执行网页200时用户界面104上的用户通知642的触发呈现(例如,显示/音频)。
参考图7,在一些实施方式中,示例系统700包括一个或多个用户设备102,102a-n,每个用户设备102,102a-n与相应的用户10相关联并且经由网络112与远程系统114进行通信。在接收到包括识别网页200的标识符111的网页请求110之后,远程系统114可以将请求的网页200返回到用户设备102。在示出的示例中,第二攻击有效载荷152b被注入到网页200的漏洞情境中。可以使用原型继承来注入攻击有效载荷152b。然后,用户设备102可以确定网页200实施具有客户端模板的解释编程语言框架142。攻击有效载荷152b可以基于解释编程语言框架142的版本144和来自网页200的插值符号146。当由用户设备102接收到网页200时,该网页200可以使得用户设备102执行网页200,并且在执行网页200期间生成由第二攻击有效载荷152b触发的通知642。通知642可以图形地显示指示网页200的漏洞192的警告。具体地,通知642可以基于攻击有效载荷152b或由攻击有效载荷152b利用来警告漏洞192。通知642可以另外地或替代地包括指示网页200的漏洞192的音频警报/警告。
图8是用于检测客户端模板系统的注入漏洞的示例方法800的流程图。在操作802,流程图开始,在数据处理硬件118处从与用户10相关联的用户设备102接收网页200的网页请求110。在操作804,方法800包括由数据处理硬件118确定网页200实施具有客户端模板的解释编程语言框架142。解释编程语言可以是JavaScript。
在操作806,方法800包括由数据处理硬件118从网页200提取解释编程语言框架142的解释编程语言框架版本144和插值符号146。在操作808,方法800还包括由数据处理硬件118基于解释编程语言框架142的版本144和插值符号146来生成网页200的至少一个注入漏洞情境210的攻击有效载荷152a。攻击有效载荷152a可以包括验证函数154。数据处理硬件118可以配置验证函数154以验证对数据处理硬件118的验证函数154的执行。当生成攻击有效载荷152a时,数据处理硬件118可以生成单个攻击有效载荷152a,数据处理硬件118针对网页200的每个注入漏洞情境210配置该单个攻击有效载荷152a用于插装到网页200中。数据处理硬件118可以通过执行网页200来提取插值符号146,以公开解释编程语言框架142的API。然后,数据处理硬件118可以修改API 412并且至少使用修改后的API 414来拦截插值符号146的重新配置。
在操作810,方法800包括由数据处理硬件118对网页200进行插装,以将攻击有效载荷152a注入到网页200的至少一个注入漏洞情境210中。数据处理硬件118可以通过将攻击有效载荷152a注入到网页的一个或多个可能的输入向量510,每个可能的输入向量510与对应的注入漏洞情境210相关联,来对网页200进行插装以注入攻击有效载荷152a。当对网页200进行插装以注入攻击有效载荷152a时,数据处理硬件118可以对于网页200的每个可能的输入向量510生成单独的测试用例520。方法800还可以包括将攻击有效载荷152a注入到每个测试用例520的相应的可能的输入向量510中,并且对于每个测试用例520执行插装后的网页200。数据处理硬件118可以原型继承以将攻击有效载荷152a注入到可能的输入向量510中。
在操作812,方法800包括由数据处理硬件118执行插装后的网页200。在一些示例中,方法800还包括在执行插装后的网页200期间由数据处理硬件118捕获由攻击有效载荷152a触发的抛出异常182,以及由数据处理硬件118基于抛出异常182来识别网页200的漏洞192。在执行插装后的网页200期间,数据处理硬件118还可以捕获由攻击有效载荷152a触发的验证函数154的响应530。此后,数据处理硬件118可以基于响应530来识别网页200的漏洞192。在一些示例中,数据处理硬件118修改解释编程语言框架142的异常处理程序312以拦截抛出异常182。抛出异常182可以包括语法异常182a。
在一些实施方式中,在识别出漏洞192之后,数据处理硬件118基于解释编程语言框架142的版本144和网页200的漏洞192来生成第二攻击有效载荷152b。第二攻击有效载荷152b可以包括用户通知642,该用户通知642(图形地/可听地)指示网页200的漏洞192。数据处理硬件118可以将第二攻击有效载荷152b直接注入到网页200中,而不必对网页200进行插装,因为漏洞192已经被识别。此后,数据处理硬件118可以将具有注入的第二攻击有效载荷152b的网页200传送到用户设备102,这使得用户设备在用户设备102上执行的用户界面104上显示用户通知642。
图9是用于检测客户端模板系统的注入漏洞的示例方法900的流程图。在操作902,流程图开始,从数据处理硬件1010发送网页200的网页请求110。在操作904,方法900包括在数据处理硬件1010处接收网页200(即,修改后的网页200),该网页200具有被注入到网页200的漏洞情境210中的攻击有效载荷152b。攻击有效载荷152b可以基于解释编程语言框架142(诸如JavaScript)的版本144和来自网页200的插值符号146。数据处理硬件1010可以使用原型继承将攻击有效载荷152b注入到网页200的漏洞情境210中。
在操作906,方法900包括由数据处理硬件1010确定网页200实施具有客户端模板的解释编程语言框架142。在操作908,方法900包括由数据处理硬件1010执行网页200。在操作910,方法900包括在执行网页200期间由数据处理硬件1010生成由攻击有效载荷152b触发的通知642。通知642指示可以基于漏洞情境210的网页200的漏洞192。
图10是可以用于实施本文档中描述的系统和方法的示例计算设备1000的示意图。计算设备1000可以在图1的系统100的远程系统114和/或用户设备102上实施。计算设备1000旨在表示各种形式的数字计算机,诸如是膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。本文示出的组件,它们的连接和关系以及它们的功能仅意味着是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实施方式。
计算设备1000包括处理器1010(例如,数据处理硬件1020)、存储器1020(例如,存储器硬件)、存储设备1030、连接到存储器1020和高速扩展端口1050的高速接口/控制器1040、以及连接到低速总线1070和存储设备1030的低速接口/控制器1060。组件1010、1020、1030、1040、1050和1060中的每一个使用各种总线来互连,并且可以被安装在通用主板上或以其它适当的方式来安装。处理器1010可以处理用于在计算设备1000内执行的指令,包括在存储器1020中或存储设备1030上存储的指令,以在外部输入/输出设备上显示图形用户界面(GUI)的图形信息,该外部输入/输出设备诸如是被耦接到高速接口1040的显示器1080。在其他实施方式中,多个处理器和/或多个总线可以适当地与多个存储器和存储器类型一起被使用。而且,可以连接多个计算设备1000,其中,每个设备提供必要操作的部分(例如,作为服务器阵列(server bank)、一组刀片服务器、或多处理器系统)。
存储器硬件1020在计算设备1000内非暂时性地存储信息。存储器1020可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器1020可以是用于临时或永久地存储程序(例如,指令的序列)或数据(例如,程序状态信息)以由计算设备1000使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及盘或带。
存储设备1030能够为计算设备1000提供大容量存储。在一些实施方式中,存储设备1030是计算机可读介质。在各种不同的实施方式中,存储设备1030可以是软盘设备、硬盘设备、光盘设备或带设备,闪存或其他类似的固态存储器设备,或设备的阵列,包括在存储区域网络或其他配置中的设备。在其他实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,当该指令被执行时,进行一个或多个方法,诸如是上述那些方法。信息载体是计算机或机器可读介质,诸如存储器1020、存储设备1030、或处理器1010上的存储器。
高速控制器1040管理计算设备1000的带宽密集操作,而低速控制器1060管理较低的带宽密集操作。这样的职责的分配仅是示例性的。在一些实施方式中,高速控制器1040被耦接到存储器1020、显示器1080(例如,通过图形处理器或加速器)以及高速扩展端口1050,该高速扩展端口1050可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器1060被耦接到存储设备1030和低速扩展端口1090。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口1090可以例如通过网络适配器被耦接到一个或多个输入/输出设备,该一个或多个输入/输出设备诸如是键盘、指示设备、扫描仪或者诸如交换机或路由器的网络设备。
如图中所示,计算设备1000可以以数个不同的形式来实施。例如,它可以被实施为标准服务器500a或以一组这样的服务器1000a被多次实施、被实施为膝上型计算机1000b、或者被实施为机架服务器系统1000c的一部分。
软件应用(即,软件资源)可以指代引起计算设备进行任务的计算机软件。在一些示例中,软件应用可以被称为“应用”、“app”或“程序”。示例应用包括但不限于系统诊断应用、系统管理应用、系统维护应用、文字处理应用、电子表格应用、消息应用、媒体流应用、社交网络应用和游戏应用。
这些计算机程序(也被已知为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级的面向过程和/或面向对象的编程语言、和/或以汇编/机器语言来实施。如本文中使用的,术语“机器可读介质”和“计算机可读介质”指的是用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),该可编程处理器包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指的是用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中所描述的处理和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器(也被称为数据处理硬件)来进行,以通过对输入数据进行操作并且生成输出来进行功能。处理和逻辑流程也可以由专用逻辑电路进行,该专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,适用于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于进行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,或者可操作地被耦接为从该大容量存储设备接收数据或向该大容量存储设备传输数据,或者这两者,该大容量存储设备例如是磁盘、磁光盘或光盘。然而,计算机不必具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或者被并入专用逻辑电路中。
为了提供与用户的交互,本公开的一个或多个方面可以被实施在具有显示设备并且可选地具有键盘和指示设备的计算机上,显示设备例如是CRT(阴极射线管)监视器、LCD(液晶显示器)监视器或用于向用户显示信息的触摸屏,指示设备例如是鼠标或轨迹球,用户可以通过键盘和指示设备向计算机提供输入。其他种类的设备也可以用于提供与用户的交互;例如,向用户所提供的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向由用户所使用的设备发送文档以及从由用户所使用的设备接收文档来与用户进行交互;例如,通过响应于从用户的客户端设备上的网页浏览器所接收的请求而向网页浏览器发送网页。
可以以数字电子和/或光电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现本文中描述的系统和技术的各种实施方式。这些各种实施方式可以包括一个或多个计算机程序的实施方式,该一个或多个计算机程序可以在包括至少一个可编程处理器的可编程系统上执行和/或解释,该至少一个可编程处理器可以是专用的或通用的,被耦合为从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令并且向存储系统、至少一个输入设备和至少一个输出设备传送数据和指令。
已经描述了数个实施方式。然而,应该理解的是,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其他实施方式在以下权利要求的范围内。
Claims (38)
1.一种方法(800),其特征在于,包括:
在数据处理硬件(118)处接收网页(200);
由所述数据处理硬件(118)确定所述网页(200)实施具有客户端模板的解释编程语言框架(142);
由所述数据处理硬件(118)从所述网页(200)提取所述解释编程语言框架(142)的版本(144)和插值符号(146);
由所述数据处理硬件(118)基于所述解释编程语言框架(142)的所述版本(144)和所述插值符号(146),生成所述网页(200)的至少一个注入漏洞情境(210)的攻击有效载荷(152a);
由所述数据处理硬件(118)对所述网页(200)进行插装,以将所述攻击有效载荷(152a)注入到所述网页(200)的所述至少一个注入漏洞情境(210)中;以及
由所述数据处理硬件(118)执行插装后的所述网页(200)。
2.根据权利要求1所述的方法(800),其特征在于,进一步包括:
在执行插装后的所述网页(200)期间,由所述数据处理硬件(118)捕获由所述攻击有效载荷(152a)触发的抛出异常(182);以及
由所述数据处理硬件(118)基于所述抛出异常(182)来识别所述网页(200)的漏洞(192)。
3.根据权利要求2所述的方法(800),其特征在于,进一步包括,由所述数据处理硬件(118)修改所述解释编程语言框架(142)的异常处理程序(312)以拦截所述抛出异常(182)。
4.根据权利要求2或3所述的方法(800),其特征在于,所述抛出异常(182)包括语法异常(182a)。
5.根据权利要求1所述的方法(800),其特征在于,所述攻击有效载荷(152a)包括验证函数(154),所述验证函数(154)被配置为验证对所述数据处理硬件(118)的所述验证函数(154)的执行。
6.根据权利要求5所述的方法(800),其特征在于,进一步包括:
在执行插装后的所述网页(200)期间,由所述数据处理硬件(118)捕获由所述攻击有效载荷(152a)触发的所述验证函数(154)的响应(530a);以及
由所述数据处理硬件(118)基于所述响应(530a)来识别所述网页(200)的漏洞(192)。
7.根据权利要求1-6中任一项所述的方法(800),其特征在于,从所述网页(200)提取所述插值符号(146)包括:
由所述数据处理硬件(118)执行所述网页(200),以公开所述解释编程语言框架(142)的应用编程接口API(412);
由所述数据处理硬件(118)修改所述API(412);以及
由所述数据处理硬件(118)至少使用修改后的所述API(414)来拦截所述插值符号(146)的重新配置。
8.根据权利要求1-7中任一项所述的方法(800),其特征在于,生成所述攻击有效载荷(152a)包括,对于所述网页(200)的每个注入漏洞情境(210),生成被配置用于插装到所述网页(200)中的单个攻击有效载荷(152a)。
9.根据权利要求1-7中任一项所述的方法(800),其特征在于,对所述网页(200)进行插装以注入所述攻击有效载荷(152a)包括,由所述数据处理硬件(118)将所述攻击有效载荷(152a)注入到所述网页(200)的可能的输入向量(510a)中。
10.根据权利要求1-7中任一项所述的方法(800),其特征在于,对所述网页(200)进行插装以注入所述攻击有效载荷(152a)包括:
对于所述网页(200)的每个可能的输入向量(510),由所述数据处理硬件(118)生成单独的测试用例(520);以及
由所述数据处理硬件(118)将所述攻击有效载荷(152a)注入到每个测试用例(520)的相应的所述可能的输入向量(510)中。
11.根据权利要求10所述的方法(800),其特征在于,执行插装后的所述网页(200)包括,对于每个测试用例(520),执行插装后的所述网页(200)。
12.根据权利要求1-11中任一项所述的方法(800),其特征在于,进一步包括:
在执行所述网页(200)期间,由所述数据处理硬件(118)确定所述网页(200)的漏洞(192)是否被识别;
当所述网页(200)的所述漏洞(192)被识别时:
由所述数据处理硬件(118)基于所述解释编程语言框架(142)的所述版本(144)和所述网页(200)的所述漏洞(192),生成第二攻击有效载荷(152b),所述第二攻击有效载荷(152b)包括指示所述网页(200)的所述漏洞(192)的用户通知(642);
由所述数据处理硬件(118)将所述第二攻击有效载荷(152b)注入到所述网页(200)中;以及
将具有注入的所述第二攻击有效载荷(152b)的所述网页(200)从所述数据处理硬件(118)传送到请求所述网页(200)的用户设备(102),当由所述用户设备(102)接收所述网页(200)时,所述网页(200)使得所述用户设备(102)执行所述网页(200)并且在所述用户设备(102)上执行的用户界面(104)上显示所述用户通知(642)。
13.根据权利要求1-12中任一项所述的方法(800),其特征在于,对所述网页(200)进行插装以注入所述攻击有效载荷(152a)包括,使用原型继承来注入所述攻击有效载荷(152a)。
14.根据权利要求1-13中任一项所述的方法(800),其特征在于,所述解释编程语言包括JavaScript。
15.一种系统(100),其特征在于,包括:
数据处理硬件(118);以及
与所述数据处理硬件(118)进行通信的存储器硬件(1020),所述存储器硬件(1020)存储指令,当在所述数据处理硬件(1020)上执行所述指令时,所述指令使得所述数据处理硬件(118)进行操作,包括:
接收网页(200);
确定所述网页(200)实施具有客户端模板的解释编程语言框架(142);
从所述网页(200)提取所述解释编程语言框架(142)的版本(144)和插值符号(146);
基于所述解释编程语言框架(142)的所述版本(144)和所述插值符号(146),生成所述网页(200)的至少一个注入漏洞情境(210)的攻击有效载荷(152a);
对所述网页(200)进行插装,以将所述攻击有效载荷(152a)注入到所述网页(200)的所述至少一个注入漏洞情境(210)中;以及
执行插装后的所述网页(200)。
16.根据权利要求14所述的系统(100),其特征在于,所述操作进一步包括:
在执行插装后的所述网页(200)期间,捕获由所述攻击有效载荷(152a)触发的抛出异常(182);以及
基于所述抛出异常(182)来识别所述网页(200)的漏洞(192)。
17.根据权利要求16所述的系统(100),其特征在于,所述操作进一步包括,修改所述解释编程语言框架(142)的异常处理程序(312)以拦截所述抛出异常(182)。
18.根据权利要求16或17所述的系统(100),其特征在于,所述抛出异常(182)包括语法异常(182a)。
19.根据权利要求15所述的系统(100),其特征在于,所述攻击有效载荷(152a)包括验证函数(154),所述验证函数(154)被配置为验证对所述数据处理硬件(118)的所述验证函数(154)的执行。
20.根据权利要求19所述的系统(100),其特征在于,所述操作进一步包括:
在执行插装后的所述网页(200)期间,捕获由所述攻击有效载荷(152a)触发的所述验证函数(154)的响应(530a);以及
基于所述响应(530a)来识别所述网页(200)的漏洞(192)。
21.根据权利要求15-20中任一项所述的系统(100),其特征在于,从所述网页(200)提取所述插值符号(146)包括:
执行所述网页(200),以公开所述解释编程语言框架(142)的应用编程接口API(412);
修改所述API(412);以及
至少使用修改后的所述API(414)来拦截所述插值符号(146)的重新配置。
22.根据权利要求15-21中任一项所述的系统(100),其特征在于,生成所述攻击有效载荷(152a)包括,对于所述网页(200)的每个注入漏洞情境(210),生成被配置用于插装到所述网页(200)中的单个攻击有效载荷(152a)。
23.根据权利要求15-21中任一项所述的系统(100),其特征在于,对所述网页(200)进行插装以注入所述攻击有效载荷(152a)包括,由所述数据处理硬件(118)将所述攻击有效载荷(152a)注入到所述网页(200)的可能的输入向量(510a)中。
24.根据权利要求15-21中任一项所述的系统(100),其特征在于,对所述网页(200)进行插装以注入所述攻击有效载荷(152a)包括:
对于所述网页(200)的每个可能的输入向量(510),生成单独的测试用例(520);以及
将所述攻击有效载荷(152a)注入到每个测试用例(520)的相应的所述可能的输入向量(510)中。
25.根据权利要求24所述的系统(100),其特征在于,执行插装后的所述网页(200)包括,对于每个测试用例(520),执行插装后的所述网页(200)。
26.根据权利要求15-25中任一项所述的系统(100),其特征在于,所述操作进一步包括:
在执行所述网页(200)期间,确定所述网页(200)的漏洞(192)是否被识别;
当所述网页(200)的所述漏洞(192)被识别时:
基于所述解释编程语言框架(142)的所述版本(144)和所述网页(200)的所述漏洞(192),生成第二攻击有效载荷(152b),所述第二攻击有效载荷(152b)包括指示所述网页(200)的所述漏洞(192)的用户通知(642);
将所述第二攻击有效载荷(152b)注入到所述网页(200)中;以及
将具有注入的所述第二攻击有效载荷(152b)的所述网页(200)从所述数据处理硬件(118)传送到请求所述网页(200)的用户设备(102),当由所述用户设备(102)接收所述网页(200)时,所述网页(200)使得所述用户设备(102)执行所述网页(200)并且在所述用户设备(102)上执行的用户界面(104)上显示所述用户通知(642)。
27.根据权利要求15-26中任一项所述的系统(100),其特征在于,对所述网页(200)进行插装以注入所述攻击有效载荷(152a)包括,使用原型继承来注入所述攻击有效载荷(152a)。
28.根据权利要求26-27中任一项所述的系统(100),其特征在于,所述解释编程语言包括JavaScript。
29.一种方法(900),其特征在于,包括:
在数据处理硬件(1010)处请求网页(200);
在所述数据处理硬件(1010)处接收所述网页(200),所述网页(200)具有被注入到所述网页(200)的漏洞情境(210)中的攻击有效载荷(152b);
由所述数据处理硬件(1010)确定所述网页(200)实施具有客户端模板的解释编程语言框架(142);
由所述数据处理硬件(1010)执行所述网页(200);以及
由所述数据处理硬件(1010)生成由所述攻击有效载荷(152b)触发的通知(642),所述通知(642)指示所述网页(200)的漏洞(192)。
30.根据权利要求29所述的方法(900),其特征在于,所述攻击有效载荷(152b)基于所述解释编程语言框架(142)的版本(144)和来自所述网页(200)的插值符号(146)。
31.根据权利要求29或30所述的方法(900),其特征在于,使用原型继承将所述攻击有效载荷(152b)注入到所述网页(200)的所述漏洞情境(210)中。
32.根据权利要求29-31中任一项所述的方法(900),其特征在于,所述漏洞(192)基于所述网页(200)的所述漏洞情境(210)。
33.根据权利要求29-32中任一项所述的方法(900),其特征在于,所述解释编程语言包括JavaScript。
34.一种系统(700),其特征在于,包括:
数据处理硬件(1010);以及
与所述数据处理硬件(1010)进行通信的存储器硬件(1020),所述存储器硬件(1020)存储指令,当在所述数据处理硬件(1010)上执行所述指令时,所述指令使得所述数据处理硬件(1020)进行操作,包括:
请求网页(200);
接收所述网页(200),所述网页(200)具有被注入到所述网页(200)的漏洞情境(210)中的攻击有效载荷(152b);
确定所述网页(200)实施具有客户端模板的解释编程语言框架(142);
执行所述网页(200);以及
生成由所述攻击有效载荷(152b)触发的通知(642),所述通知(642)指示所述网页(200)的漏洞(192)。
35.根据权利要求34所述的系统(700),其特征在于,所述攻击有效载荷(152b)基于所述解释编程语言框架(142)的版本(144)和来自所述网页(200)的插值符号(146)。
36.根据权利要求34或35所述的系统(700),其特征在于,使用原型继承将所述攻击有效载荷(152b)注入到所述网页(200)的所述漏洞情境(210)中。
37.根据权利要求34-36中任一项所述的系统(700),其特征在于,所述漏洞(192)基于所述漏洞情境(210)。
38.根据权利要求34-37中任一项所述的系统(700),其特征在于,所述解释编程语言包括JavaScript。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2018/031147 WO2019212565A1 (en) | 2018-05-04 | 2018-05-04 | Detecting injection vulnerabilities of client-side templating systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112106048A true CN112106048A (zh) | 2020-12-18 |
Family
ID=62236016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880093163.5A Pending CN112106048A (zh) | 2018-05-04 | 2018-05-04 | 检测客户端模板系统的注入漏洞 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11640471B2 (zh) |
EP (2) | EP3961452A1 (zh) |
CN (1) | CN112106048A (zh) |
WO (1) | WO2019212565A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113158197A (zh) * | 2021-05-26 | 2021-07-23 | 北京安普诺信息技术有限公司 | 一种基于主动iast的sql注入漏洞检测方法、系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11201896B1 (en) * | 2019-05-07 | 2021-12-14 | Rapid7, Inc. | Vulnerability validation using lightweight offensive payloads |
CN111770079B (zh) * | 2020-06-24 | 2022-09-02 | 绿盟科技集团股份有限公司 | 一种web框架注入漏洞检测方法及装置 |
CN113162945B (zh) * | 2021-05-07 | 2021-12-14 | 北京安普诺信息技术有限公司 | 漏洞检测分析方法、装置及基于此的漏洞验证方法、系统 |
CN114785581B (zh) * | 2022-04-14 | 2023-08-11 | 深圳开源互联网安全技术有限公司 | 一种攻击载荷生成方法、装置及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100299754A1 (en) * | 2009-05-20 | 2010-11-25 | International Business Machines Corporation | Identifying Security Breaches Caused by Web-Enabled Software Applications |
US20120260344A1 (en) * | 2009-12-15 | 2012-10-11 | Ofer Maor | Method and system of runtime analysis |
CN107506649A (zh) * | 2017-08-25 | 2017-12-22 | 福建中金在线信息科技有限公司 | 一种html网页的漏洞检测方法、装置及电子设备 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020097268A1 (en) * | 2001-01-22 | 2002-07-25 | Dunn Joel C. | Method, system, and program for a platform-independent, browser-based, client-side, test automation facility for verifying web site operation |
US20050273860A1 (en) * | 2004-06-04 | 2005-12-08 | Brian Chess | Apparatus and method for developing, testing and monitoring secure software |
JP4745819B2 (ja) * | 2005-12-26 | 2011-08-10 | 三菱電機株式会社 | 脆弱性判定システム及び検査装置 |
US9686288B2 (en) * | 2008-01-25 | 2017-06-20 | Ntt Docomo, Inc. | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks |
US8413239B2 (en) * | 2009-02-22 | 2013-04-02 | Zscaler, Inc. | Web security via response injection |
CN101964025B (zh) * | 2009-07-23 | 2016-02-03 | 北京神州绿盟信息安全科技股份有限公司 | Xss检测方法和设备 |
US9058489B2 (en) * | 2010-01-25 | 2015-06-16 | Samsung Electronics Co., Ltd. | Marking documents with executable text for processing by computing systems |
US8966446B1 (en) * | 2010-09-29 | 2015-02-24 | A9.Com, Inc. | Systems and methods of live experimentation on content provided by a web site |
US9032528B2 (en) * | 2011-06-28 | 2015-05-12 | International Business Machines Corporation | Black-box testing of web applications with client-side code evaluation |
US8695027B2 (en) * | 2011-06-30 | 2014-04-08 | Mcafee, Inc. | System and method for application security assessment |
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 |
US8683596B2 (en) * | 2011-10-28 | 2014-03-25 | International Business Machines Corporation | Detection of DOM-based cross-site scripting vulnerabilities |
EP2820583A4 (en) * | 2012-02-29 | 2015-11-25 | Hewlett Packard Development Co | NETWORK SERVICE INTERFACE ANALYSIS |
US9135147B2 (en) * | 2012-04-26 | 2015-09-15 | International Business Machines Corporation | Automated testing of applications with scripting code |
US9117084B2 (en) * | 2012-05-15 | 2015-08-25 | Ixia | Methods, systems, and computer readable media for measuring detection accuracy of a security device using benign traffic |
WO2014041561A2 (en) * | 2012-08-31 | 2014-03-20 | Iappsecure Solutions Pvt. Ltd. | A system for analyzing applications accurately for finding security and quality issues |
US9256511B2 (en) * | 2012-09-04 | 2016-02-09 | International Business Machines Corporation | Computer software application self-testing |
US20140351796A1 (en) * | 2013-05-24 | 2014-11-27 | Microsoft Corporation | Accessibility compliance testing using code injection |
US20140373158A1 (en) * | 2013-06-18 | 2014-12-18 | International Business Machines Corporation | Detecting security vulnerabilities on computing devices |
US9231975B2 (en) * | 2013-06-27 | 2016-01-05 | Sap Se | Safe script templating to provide reliable protection against attacks |
US9154492B2 (en) * | 2013-09-27 | 2015-10-06 | The University Of North Carolina At Charlotte | Moving target defense against cross-site scripting |
US9262311B1 (en) * | 2013-12-03 | 2016-02-16 | Amazon Technologies, Inc. | Network page test system and methods |
US9363284B2 (en) * | 2013-12-11 | 2016-06-07 | International Business Machines Corporation | Testing web applications for security vulnerabilities with metarequests |
CN106663171B (zh) * | 2014-08-11 | 2019-12-10 | 日本电信电话株式会社 | 浏览器模拟器装置、构建装置、浏览器模拟方法以及构建方法 |
US9195809B1 (en) * | 2014-08-14 | 2015-11-24 | Synack, Inc. | Automated vulnerability and error scanner for mobile applications |
WO2016041084A1 (en) * | 2014-09-18 | 2016-03-24 | Immun.io Inc. | Prevention of cross site scripting attacks using automatic generation of content security policy headers and splitting of content to enable content security policy enforcement |
CN106796637B (zh) * | 2014-10-14 | 2020-08-25 | 日本电信电话株式会社 | 分析装置、分析方法 |
US9529994B2 (en) * | 2014-11-24 | 2016-12-27 | Shape Security, Inc. | Call stack integrity check on client/server systems |
CN106155877B (zh) * | 2015-03-23 | 2019-07-09 | Tcl集团股份有限公司 | 一种Android应用的模糊测试方法及系统 |
US9986058B2 (en) * | 2015-05-21 | 2018-05-29 | Shape Security, Inc. | Security systems for mitigating attacks from a headless browser executing on a client computer |
US10142204B2 (en) * | 2015-07-27 | 2018-11-27 | Datagrid Systems, Inc. | Techniques for evaluating server system reliability, vulnerability and component compatibility using crowdsourced server and vulnerability data |
GB2545895B (en) * | 2015-12-21 | 2020-01-01 | F Secure Corp | A method and apparatus for detecting exploits |
US10127386B2 (en) * | 2016-05-12 | 2018-11-13 | Synopsys, Inc. | Systems and methods for adaptive analysis of software |
WO2018006241A1 (en) * | 2016-07-04 | 2018-01-11 | Mcafee, Inc. | Method and apparatus to detect security vulnerabilities in web application |
US10498761B2 (en) * | 2016-08-23 | 2019-12-03 | Duo Security, Inc. | Method for identifying phishing websites and hindering associated activity |
EP3287930A1 (en) * | 2016-08-26 | 2018-02-28 | Entit Software LLC | Javascript security testing |
CN110268410A (zh) * | 2016-12-15 | 2019-09-20 | 爱迪德技术有限公司 | 软件完整性验证 |
US11019096B2 (en) * | 2017-01-11 | 2021-05-25 | Nippon Telegraph And Telephone Corporation | Combining apparatus, combining method, and combining program |
US11314862B2 (en) * | 2017-04-17 | 2022-04-26 | Tala Security, Inc. | Method for detecting malicious scripts through modeling of script structure |
US10740464B2 (en) * | 2017-06-02 | 2020-08-11 | Veracode, Inc. | Self-scanning of deployed software applications |
US10503910B2 (en) * | 2017-06-06 | 2019-12-10 | Sap Se | Security testing framework including virtualized server-side platform |
AU2018298640B2 (en) * | 2017-07-12 | 2021-01-07 | Nippon Telegraph And Telephone Corporation | Determination device, determination method, and determination program |
-
2018
- 2018-05-04 CN CN201880093163.5A patent/CN112106048A/zh active Pending
- 2018-05-04 WO PCT/US2018/031147 patent/WO2019212565A1/en unknown
- 2018-05-04 US US16/981,253 patent/US11640471B2/en active Active
- 2018-05-04 EP EP21204345.9A patent/EP3961452A1/en active Pending
- 2018-05-04 EP EP18726892.5A patent/EP3776316B1/en active Active
-
2021
- 2021-10-07 US US17/450,202 patent/US11847231B2/en active Active
-
2023
- 2023-04-19 US US18/303,097 patent/US20230259637A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100299754A1 (en) * | 2009-05-20 | 2010-11-25 | International Business Machines Corporation | Identifying Security Breaches Caused by Web-Enabled Software Applications |
US20120260344A1 (en) * | 2009-12-15 | 2012-10-11 | Ofer Maor | Method and system of runtime analysis |
CN107506649A (zh) * | 2017-08-25 | 2017-12-22 | 福建中金在线信息科技有限公司 | 一种html网页的漏洞检测方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
顾明昌等: "一种基于攻击向量自动生成的XSS漏洞渗透测试方法", 软件导刊, vol. 15, no. 07, 31 July 2016 (2016-07-31), pages 173 - 177 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113158197A (zh) * | 2021-05-26 | 2021-07-23 | 北京安普诺信息技术有限公司 | 一种基于主动iast的sql注入漏洞检测方法、系统 |
CN113158197B (zh) * | 2021-05-26 | 2022-05-17 | 北京安普诺信息技术有限公司 | 一种基于主动iast的sql注入漏洞检测方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3961452A1 (en) | 2022-03-02 |
EP3776316A1 (en) | 2021-02-17 |
US11847231B2 (en) | 2023-12-19 |
WO2019212565A1 (en) | 2019-11-07 |
US20230259637A1 (en) | 2023-08-17 |
US20210044617A1 (en) | 2021-02-11 |
EP3776316B1 (en) | 2021-11-17 |
US20220030028A1 (en) | 2022-01-27 |
US11640471B2 (en) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112106048A (zh) | 检测客户端模板系统的注入漏洞 | |
US9946871B2 (en) | Isolation and presentation of untrusted data | |
TWI603600B (zh) | 利用運行期代理器及網路探查器判定漏洞之技術 | |
US9405899B2 (en) | Software protection mechanism | |
US9785776B2 (en) | High risk program identification based on program behavior | |
US20110289582A1 (en) | Method for detecting malicious javascript | |
US9892258B2 (en) | Automatic synthesis of unit tests for security testing | |
JP2018502351A (ja) | スクリプト言語用のrasp | |
CN109347882B (zh) | 网页木马监测方法、装置、设备及存储介质 | |
US9507933B2 (en) | Program execution apparatus and program analysis apparatus | |
MX2013013970A (es) | Sistema y metodo para conservar referencias en los aislamientos de procesos. | |
US10310956B2 (en) | Techniques for web service black box testing | |
JP6434646B2 (ja) | 解析装置、解析方法、および解析プログラム | |
Wang et al. | A new cross-site scripting detection mechanism integrated with HTML5 and CORS properties by using browser extensions | |
Groß et al. | Pianalyzer: A precise approach for pendingintent vulnerability analysis | |
EP3506136B1 (en) | Detecting stack cookie utilization in a binary software component using binary static analysis | |
Zhang et al. | XAS: Cross-API scripting attacks in social ecosystems | |
CN116074052A (zh) | 漏洞模拟方法及装置 | |
Rafnsson et al. | Fixing vulnerabilities automatically with linters | |
Felsch et al. | How private is your private cloud? Security analysis of cloud control interfaces | |
Chadalawada | Static Taint Analysis via Type-checking in TypeScript | |
Junaid | Stateful Detection of Stealthy Behaviors in Android Apps | |
CN114268498A (zh) | 一种WebSocket检测方法、装置及介质 | |
Viopoulou | MSc Dissertation: An investigation of JavaScript isolation mechanisms: Sandboxing implementations | |
WO2016001814A1 (en) | System and method for determining the behavioral integrity of an application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |