CN105791261A - 一种跨站脚本攻击的检测方法和检测设备 - Google Patents
一种跨站脚本攻击的检测方法和检测设备 Download PDFInfo
- Publication number
- CN105791261A CN105791261A CN201511000768.XA CN201511000768A CN105791261A CN 105791261 A CN105791261 A CN 105791261A CN 201511000768 A CN201511000768 A CN 201511000768A CN 105791261 A CN105791261 A CN 105791261A
- Authority
- CN
- China
- Prior art keywords
- data
- propagation path
- memory address
- stain
- input data
- 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.)
- Granted
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
- 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/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供一种跨站脚本攻击的检测方法和检测设备,涉及通信领域,能够解决攻击行为不能被及时检测的问题。其方法为:将用户在页面中的输入数据标记为污点数据;跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。本发明实施例用于检测XSS漏洞。
Description
技术领域
本发明涉及通信领域,尤其涉及一种跨站脚本攻击(CrossSiteScripting,XSS)的检测方法和检测设备。
背景技术
XSS通常是攻击者通过输入接口向Web页面中插入恶意脚本代码实施攻击,例如包括窃取cookie、会话劫持、篡改网页和蠕虫传播等攻击行为。目前,在大多数的Web网页中存在该类攻击的主要原因是程序中对Web请求中所包含的用户输入数据缺乏有效的验证及过滤机制,使得攻击者可以通过构造特殊的输入数据实施攻击。
现有技术中,在XSS漏洞检测方法中,通常是通过网络爬虫技术对网站进行遍历,并找出其中的交互式页面存入待检测页面列表中,对检测页面列表中任一页面来说,浏览器从页面中获取可以进行测试的表单项,在测试数据生成器根据页面信息产生测试数据后,将测试数据作为表单项内容向服务器提交,服务器确定该测试数据与预先构建的攻击模式库中的模式是否匹配,如果匹配,则确定存在XSS漏洞,保存当前检测页面信息和使用的测试数据,并向攻击检测器反馈信息,以通知攻击检测器当前检测的页面中存在XSS漏洞;如果不匹配,则继续对下一页面进行检测。
上述方法是通过匹配预先定义的攻击模式进行XSS漏洞检测的,但是攻击模式库的完善度直接影响了攻击检测时的准确性,一旦出现新的攻击模式,且该新的攻击模式未被录入攻击模式库中时,就无法及时检测到攻击行为,使得用户终端的网络安全性差。
发明内容
本发明实施例提供一种XSS的检测方法和检测设备,能够解决攻击行为不能被及时检测的问题。
第一方面,提供一种XSS的检测方法,包括:
将用户在页面中的输入数据标记为污点数据;具体可以获取页面中的输入数据的第一内存地址,所述第一内存地址用于指示所述输入数据或所述其它数据的存储位置,建立并保存为所述输入数据分配的第二内存地址与所述第一内存地址的映射关系,所述第二内存地址用于标记所述输入数据或所述其它数据为污点数据;
跟踪所述输入数据在客户端脚本语言的字节码指令中的传播,将执行所述字节码指令过程中使用所述输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径,且按照生成所述传播路径的顺序排列所述传播路径的队列;例如可以通过数据流分析和控制流分析,按照执行所述字节码指令的顺序依次获取执行所述字节码指令过程中使用所述输入数据的其它数据;传播路径可以是同一信息流中的所述输入数据和所述其它数据对应的所述第二内存地址的顺序生成的;
检测所述传播路径,若所述传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。例如,n为2,当有n个数据被作为用户身份信息或会话信息、或包括在链接信息中发送至第三方,则确定发生XSS漏洞。
也即,本申请是通过标记污点数据,和XSS的行为即所述传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞。
在将所述用户在所述页面中的输入数据标记为污点数据之前,所述方法还包括:
通过网络爬虫技术获取服务器向客户端发送的页面的统一资源定位符(UniformResourceLocator,URL)以及所述页面中的所有可触发事件对应的URL。这样在确定服务器发送的页面的URL以及页面中可触发事件发送请求时的URL后,就可以对URL对应的页面中的输入数据进行监控。
上述过程中,所述检测所述传播路径,若所述传播路径上有n个污点数据用于指定的操作行为,则确定发生XSS漏洞,n为正整数且大于或等于1包括:
按照所述队列中所述传播路径的顺序依次读取所述传播路径;
根据当前读取的所述传播路径中所述第二内存地址的顺序,检测与所述传播路径中第一个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若否,则确定所述当前读取的所述传播路径未发生所述XSS漏洞,并停止检测所述当前读取的所述传播路径,继续读取所述队列中的下一所述传播路径;
若是,则继续检测与所述当前读取的所述传播路径中第二个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若是,则停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞;
若否,则继续检测所述传播路径中的下一个所述第二内存地址对应的污点数据是否被发送至所述第三方,直至检测出与所述第二内存地址对应的n个污点数据被发送至所述第三方时,停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞,否则,确定所述当前读取的所述传播路径未发生所述XSS漏洞。
其中,若所述第二内存地址标记的污点数据在所述队列的所有所述传播路径中均未被发送至所述第三方,则删除所述第二内存地址与所述第一内存地址的映射关系。这样对于确定不存在恶意行为的污点数据对应的第二内存地址就可以被复用,以便下一次被分配用于标记污点数据和建立映射关系。
上述污点数据被发送至第三方可以包括:污点数据包括在用于识别用户的身份信息或会话信息中被发送至所述第三方、污点数据包括在邀请链接中发送至所述第三方以及污点数据包括在请求资源的请求消息中发送至所述第三方中的至少一个。
第二方面,提供一种检测设备,包括:
标记单元,用于将用户在页面中的输入数据标记为污点数据;
所述标记单元,还用于跟踪所述输入数据在客户端脚本语言的字节码指令中的传播,将执行所述字节码指令过程中使用所述输入数据的其它数据标记为污点数据;
生成单元,用于生成由污点数据构成的传播路径;
检测单元,用于检测所述传播路径,若所述传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。
结合第二方面,在第二方面的第一种可能实现的方式中,还可以包括:
获取单元,用于通过网络爬虫技术获取服务器向客户端发送的页面的统一资源定位符UR以及所述页面中的所有可触发事件对应的URL。
结合第二方面的第一种可能实现的方式,在第二方面的第二种可能实现的方式中,所述标记单元用于:
获取所述用户在所述URL对应页面中的输入数据的第一内存地址,所述第一内存地址用于指示所述输入数据或所述其它数据的存储位置;
建立并保存为所述输入数据分配的第二内存地址与所述第一内存地址的映射关系,所述第二内存地址用于标记所述输入数据或所述其它数据为污点数据。
结合第二方面的第二种可能实现的方式,在第二方面的第三种可能实现的方式中,所述标记单元用于:
通过数据流分析和控制流分析,按照执行所述字节码指令的顺序依次获取执行所述字节码指令过程中使用所述输入数据的其它数据;所述数据流分析用于获取与所述输入数据存在赋值预算、算术运算和逻辑运算的数据;所述控制流分析用于获取所述字节码指令的条件分支语句中使用所述输入数据的其它数据;
根据获取的所述其它数据的顺序,依次建立并保存为所述其它数据分配的所述第二内存地址与所述其它数据的所述第一内存地址的映射关系;
所述生成单元用于:
根据同一信息流中建立所述输入数据和所述其它数据对应的映射关系的顺序,生成包括所述第二内存地址的所述传播路径,并按照生成所述传播路径的顺序对所述传播路径进行队列排序。
结合第二方面的第三种可能实现的方式,在第二方面的第四种可能实现的方式中,所述检测单元用于:
按照所述队列中所述传播路径的顺序依次读取所述传播路径;
根据当前读取的所述传播路径中所述第二内存地址的顺序,检测与所述传播路径中第一个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若否,则确定所述当前读取的所述传播路径未发生所述XSS漏洞,并停止检测所述当前读取的所述传播路径,继续读取所述队列中的下一所述传播路径;
若是,则继续检测与所述当前读取的所述传播路径中第二个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若是,则停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞;
若否,则继续检测所述传播路径中的下一个所述第二内存地址对应的污点数据是否被发送至所述第三方,直至检测出与所述第二内存地址对应的n个污点数据被发送至所述第三方时,停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞,否则,确定所述当前读取的所述传播路径未发生所述XSS漏洞。
结合第二方面的第四种可能实现的方式,在第二方面的第五种可能实现的方式中,还包括:
删除单元,用于若所述第二内存地址标记的污点数据在所述队列的所有所述传播路径中均未被发送至所述第三方,则删除所述第二内存地址与所述第一内存地址的映射关系。
结合第二方面或第二方面的第一种可能实现的方式至第五种可能实现的方式中的任一种,在第二方面的第六种可能实现的方式中,
所述检测单元用于:检测污点数据包括在用于识别用户的身份信息或会话信息中被发送至所述第三方、污点数据包括在邀请链接中发送至所述第三方以及污点数据包括在请求资源的请求消息中发送至所述第三方中的至少一个。
结合第二方面或第二方面的第一种可能实现的方式至第五种可能实现的方式中的任一种,在第二方面的第七种可能实现的方式中,还包括:
发送单元,用于当确定发生所述XSS漏洞时,向所述URL对应的页面发送警告信息,所述警告信息包括用于确定发生所述XSS漏洞的传播路径对应的污点数据。
本发明实施例提供一种XSS的检测方法和检测设备,将用户在页面中的输入数据标记为污点数据;跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。也即,本申请是通过标记污点数据,和XSS的行为即传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞,能够解决攻击行为不能被及时检测的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种网络架构图;
图2为本发明实施例提供的一种XSS的检测方法的流程示意图;
图3为本发明实施例提供的一种XSS的检测方法的流程示意图;
图4为本发明实施例提供的一种检测设备的结构示意图;
图5为本发明实施例提供的一种检测设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例可用于检测XSS漏洞,通过将用户在页面中的输入数据标记为污点数据,再通过监控客户端脚本语言(JavaScript)的字节码指令跟踪输入数据的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径,再检测传播路径,确定是传播路径上的n个污点数据是否被发送至第三方,若是,则确定发生XSS漏洞,n为正整数且大于或等于1。也即,本申请是通过标记污点数据,和XSS的行为即传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞,能够解决攻击行为不能被及时检测的问题。
如图1所示,本发明实施例中的方法步骤可用于包括检测设备和服务器的网络架构,检测设备和服务器可以为有线连接或无线连接,检测设备可以从服务器接收页面信息,检测设备再根据页面中的输入信息和与输入信息在字节码指令的执行过程中存在依赖关系的其它数据确定污点数据,以对污点数据进行检测。检测设备可以是一个或多个,当检测设备为多个时,通过多个检测设备之间的合作执行本发明实施例中的方法步骤。例如一台检测设备用于标记污点数据,然后将污点数据发送给另一台检测设备来检测污点数据是否被发送至第三方,以确定是否发生XSS漏洞,本申请不做限定。本发明实施例以一台检测设备为例进行说明。检测设备例如可以为用户终端,所述用户终端可以为(PersonalComputer,PC)、手机、平板电脑、笔记本电脑等。
检测设备可以包括用户接口、网络接口、存储器、处理器和通信总线等。用户接口用于接收用户输入的输入数据;网络接口用于与服务器通信;存储器用于存储软件程序以及模块和数据库等,如本发明实施例中的XSS的检测方法对应的程序指令;处理器通过运行在存储器内的软件程序,从而执行各种功能应用以及数据处理,例如,处理器用于调用存储器中的XSS的检测方法的应用程序,以解决攻击行为不能被及时检测的问题。
本发明实施例中的方法步骤可通过运行在检测设备上的应用程序实现,与检测设备中的浏览器等客户端的应用程序进行交互来实现对客户端的XSS攻击检测。本发明实施例以客户端为浏览器进行说明。
本发明实施例提供过一种XSS的检测方法,如图2所示,包括:
201、检测设备将用户在页面中的输入数据标记为污点数据。
在将用户在页面中的输入数据标记为污点数据之前,可以先通过网络爬虫技术获取服务器向客户端发送的页面的URL以及页面中的所有可触发事件对应的URL。这样可以在确定浏览器中当前页面和当前页面中的所有可触发事件对应的页面的URL后,就可以对URL对应的页面中的输入数据进行监控。
在一个示例中,将用户在页面中的输入数据标记为污点数据可以包括:获取用户在URL对应页面中的输入数据的第一内存地址,第一内存地址用于指示输入数据或其它数据的存储位置;建立并保存为输入数据分配的第二内存地址与第一内存地址的映射关系,第二内存地址用于标记输入数据或其它数据为污点数据。第二内存地址为逻辑地址。检测设备中可预先建立有影子内存,该影子内存中包括有多个第二内存地址,在获取到输入数据对应的第一内存地址之后,将第二内存地址分配一个给输入数据并与第一内存地址映射,即建立第二内存地址与第一内存地址的映射关系。通过映射关系的建立,第二内存地址就可以用于标记输入数据或其它数据,记为污点数据。其中,影子内存是一个内存地址到另一个内存地址的映射,即使用另一个内存地址来标记存放数据的内存地址。
202、检测设备跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径。
在一个示例中,可以通过数据流分析和控制流分析,按照执行字节码指令的顺序依次获取执行字节码指令过程中使用输入数据的其它数据;数据流分析用于获取与输入数据存在赋值预算、算术运算和逻辑运算的数据;控制流分析用于获取字节码指令的条件分支语句中使用输入数据的其它数据;根据获取的其它数据的顺序,依次建立并保存为其它数据分配的第二内存地址与其它数据的第一内存地址的映射关系;根据同一信息流中建立输入数据和其它数据对应的映射关系的顺序,生成包括第二内存地址的传播路径,并按照生成传播路径的顺序对传播路径进行队列排序。
203、检测设备检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。
在一个示例中,可以按照队列中传播路径的顺序依次读取传播路径;根据当前读取的传播路径中第二内存地址的顺序,检测与传播路径中第一个第二内存地址对应的污点数据是否被发送至第三方;
若否,则确定当前读取的传播路径未发生XSS漏洞,并停止检测当前读取的传播路径,继续读取队列中的下一传播路径;若是,则继续检测与当前读取的传播路径中第二个第二内存地址对应的污点数据是否被发送至第三方;若是,则停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞;若否,则继续检测传播路径中的下一个第二内存地址对应的污点数据是否被发送至第三方,直至检测出与第二内存地址对应的n个污点数据被发送至第三方时,停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞,否则,确定当前读取的传播路径未发生XSS漏洞。
若第二内存地址标记的污点数据在队列的所有传播路径中均未被发送至第三方,则删除第二内存地址与第一内存地址的映射关系。这样可以使得第二内存地址被复用分配。
当确定发生XSS漏洞时,向URL对应的页面发送警告信息,警告信息包括用于确定发生XSS漏洞的传播路径对应的污点数据,这样可以根据污点数据的结构链来检查污点数据是如何传播的,可以再现XSS攻击。
其中,第三方可以是第三方网站,如搜狐网站、腾讯网站等。
因此,本发明实施例提供一种XSS的检测方法中,将用户在页面中的输入数据标记为污点数据;跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。也即,本申请是通过标记污点数据,和XSS的行为即传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞,能够解决攻击行为不能被及时检测的问题。
下面对本发明实施例具体进行说明,本发明实施例提供一种XSS的检测方法,如图3所示,包括:
301、服务器向检测设备发送页面。
例如服务器是应检测设备中的浏览器的请求向检测设备发送浏览器所请求的页面。
302、检测设备通过网络爬虫技术获取服务器向客户端发送的页面的URL以及页面中的所有可触发事件对应的URL。
当检测设备接收到服务器发送的页面时,将接收到的页面内容顺序传送到超文本标记语言(HyperTextMarkupLanguage,HTML)解析器,由于网页页面的本质为HTML,HTML解析器可获取网页的详细信息,链接分析信息和源码等,其中链接分析包括URL指针,通过激活URL指针可使得浏览器获取新的页面。
因此,为了更全面的获取客户端接收到的页面中包含的URL,通过HTML解析器获取到浏览器接收到的页面的URL后,还可以通过网络爬虫技术获取页面中所有可触发事件对应的URL。例如可以读取页面中的内容,并模拟浏览器触发页面中可触发的事件(例如onclick事件,即事件在用户点击时发生),获取事件向服务器请求时的URL,即获取到页面中的其它链接地址,然后通过这些链接地址寻找下一个页面,这样一直循环下去,直到将这个客户端所有的页面的URL都获取到为止。
网络爬虫(又被称为网页蜘蛛,网络机器人)用于按照一定的规则,自动的抓取万维网信息的程序或者脚本。
303、检测设备获取用户在URL对应页面中的输入数据的第一内存地址,第一内存地址用于指示输入数据或其它数据的存储位置。
当用户在获取到的URL对应的页面中输入数据时,检测设备中的JavaScript引擎可以分析URL对应的页面中的输入数据,即获取输入数据的第一内存地址,该第一内存地址为检测设备的随机存取存储器(randomaccessmemory,RAM)为输入数据分配的内存地址,用于指示输入数据或其它数据的存储位置。
304、检测设备建立并保存为输入数据分配的第二内存地址与第一内存地址的映射关系,第二内存地址用于标记输入数据或其它数据为污点数据。
检测设备中可预先建立有影子内存,该影子内存的具体实现方式可以参见上述步骤201中的说明,此处不再赘述。305、检测设备通过数据流分析和控制流分析,按照执行字节码指令的顺序依次获取执行字节码指令过程中使用输入数据的其它数据,以便于其它数据被标记为污点数据。
数据流分析的目的是提供执行JavaScript字节码指令过程怎样操作数据的信息,本申请是借助数据流分析技术识别出与输入数据存在依赖关系的显式的信息流,获取与输入数据存在赋值预算、算术运算和逻辑运算的数据。
例如对于赋值运算来说,如果等号右边的数据被标记为污点数据,那么就获取等号左边的变量;对于算术运算和逻辑运算来说,如果所使用的某个操作数被标记为污点数据,那么获取运算结果。
控制流分析用于识别出字节码指令执行过程中的条件分支语句使用输入数据的其它数据,即隐式的信息流,包括标记的污点数据用于控制结构和循环、函数调用和eval函数等条件分支语句。
例如对于控制结构与循环来说,如果控制结构的判断条件为测试某个污点数据,就会产生一个覆盖整个控制结构的污点作用域,在这个污点作用域中的所有操作和赋值都会被标记为污点数据。譬如在if-else结构中,如果if语句的判断条件中包含污点数据,那么在if块和else块里的所有操作和赋值都会被标记为污点数据;在switch结构中,如果switch的判断条件包含有污点数据并执行了判断条件,则整个switch作用域内的所有操作和赋值都会被标记为污点数据;在do-while循环中,只有当指令执行到while语句,并确认while条件中包含污点数据时,do后面的语句块内的所有操作和赋值才会被标记为污点数据;在for循环中,只有for循环的判断条件中包含污点数据并执行了判断条件,则for循环语句块里的所有操作和赋值都会被标记为污点数据,也就是说,在程序的实际执行过程中当某个变量的值被修改,才会标记变量的值为污点数据;在try-catch-finally语句中,当try块中抛出的异常包含污点数据时,catch块内的所有操作和赋值都会被标记为污点数据,其它控制语句的处理方法类似。
再例如在函数调用中,如果某个函数的定义位于污点作用域中,那么也要对该函数进行污点标记。举例来说,如下程序所示:
由于if结构的判断条件中包含污点数据,例如污点数据为用户在文本输入框中输入的值,那么上述代码第1行至第5行被标记为一个污点作用域。而在第3行代码定义了函数x,位于污点作用域中,所以该函数也会被标记为污点函数。一旦被定位于污点函数,那么该函数内的所有操作以及返回值都被标记为污点数据。在第13行代码中,调用了一个带实参的函数func1,由于该实参被标记为污点数据,从而使得第9行的形参arg也被标记为污点数据。从该例子的15-19行可以看出,如果参数列表中的一个参数被标记为污点数据,那么该函数列表的长度arguments.length也被标记为污点数据。也就是说,第19行代码中的第二个参数是污点数据,从而使得第17行中的返回值也被污点标记,即变量x为污点数据。
再例如,eval函数的基本语法为eval(string),如果其参数string中包含要计算的表达式或语句,它会被当做JavaScript程序执行。如果eval函数的参数被标记为污点,或者调用eval函数的代码位于一个污点作用域张,那么这段执行代码会被标记为污点作用域,要对该程序中的每一个操作都要进行跟踪。
可以看出,污点数据可以是与输入数据有直接运算关系的数据,也可以是与输入数据有间接运算关系的数据,即当与输入数据有直接关系的数据被标记为污点数据时,与被标记的污点数据还有直接或间接运算关系的数据也被标记为污点数据。
306、检测设备根据获取的其它数据的顺序,依次建立并保存为其它数据分配的第二内存地址与其它数据的第一内存地址的映射关系。
在获取到与输入数据有直接或间接关系的其它数据之后,按照获取的其它数据的顺序,依次为其它数据分配第二内存地址,并建立第二内存地址与其它数据对应的第一内存地址的映射关系,然后保存所建立的映射关系,以标记获取的其它数据也为污点数据。
307、检测设备根据同一信息流中建立输入数据和其它数据对应的映射关系的顺序,生成包括第二内存地址的传播路径,并按照生成传播路径的顺序对传播路径进行队列排序。
在获取到输入数据和其它数据的第二内存地址与第一内存地址的映射关系后,可以将同一信息流中的输入数据和其它数据,按照建立输入数据和其它数据的映射关系的先后顺序,生成同一信息流对应的传播路径,该传播路径用于表征第二内存地址对应的数据的先后顺序。在获取到不同信息流对应的传播路径后,按照生成的传播路径的顺序对传播路径进行队列排队,得到传播路径的队列,例如可以将不同传播路径以标识标记其顺序。
下面对队列中的传播路径进行XSS漏洞检测。
308、检测设备检测队列中的传播路径是否已检测完毕,若是,则执行步骤317,若否,则执行步骤309。
在执行检测传播路径的程序之前,首先确定是否已检测完所有传播路径,例如上一次检测过的传播路径的标识是否表示该传播路径为最后一条传播路径,若是,则执行结束,若否,则根据上一次检测过侧传播路径的标识获取下一次将要读取的传播路径,例如按照预设规则在上一次检测过侧传播路径的标识上加1或其它数据获取下一次将要读取的传播路径的标识。
309、检测设备按照队列中传播路径的顺序读取传播路径。
即按照队列中传播路径的顺序读取第一条传播路径中的第二内存地址。
310、检测设备根据当前读取的传播路径中第二内存地址的顺序,选取与传播路径中的第二内存地址对应的污点数据。
在获取到当前读取的传播路径中的第二内存地址之后,按照第二内存地址的顺序,选取第一个第二内存地址,并根据映射关系获取与第二内存地址映射的第一内存地址对应的污点数据。如果根据检测的程序指令,需要继续选取下一个污点数据时,则根据下一第二内存地址映射的第一内存地址获取对应的下一个污点数据。
311、检测设备检测选取的污点数据是否被发送至第三方,若否,则执行步骤308,若是,则执行步骤312。
在获取到传播路径上的第一个第二内存地址对应的污点数据后,则判断获取到的污点数据是否存在恶意行为,具体为判断污点数据是否被发送至第三方,若否,则确定污点数据不可疑,那么这个污点数据对应的传播路径上的其余污点数据不需要再检测了,即确定其余污点数据不可疑,这是由于传播路径上的污点数据是具有控制依赖关系的,如果传播路径上的第一个污点数据不可疑,那么确定这条传播路径上的其余污点数据也不可疑,然后判断传播路径是否被检测完毕,若没有,在继续读取下一条传播路径;若是,则确定获取到的污点数据可疑,需要继续检测当前读取的传播路径。
其中,污点数据是否被发送至第三方可以包括:污点数据是否包括在用于识别用户的身份信息(例如cookie)或会话信息等敏感信息中被发送至第三方;或,污点数据是否包括在邀请链接中的发送至第三方,例如用户的好友等;或,污点数据是否包括在向第三方网站请求资源的请求消息中等,还可以包括其它有可能构成恶意操作的行为,本申请不做限定。
312、检测设备确定当前读取的传播路径中的第二内存地址是否读取完毕,若是,则执行步骤309,若否,则执行步骤313。
313、检测设备选取与当前读取的传播路径中下一个第二内存地址对应的污点数据。
如果传播路径中的上一个污点数据可疑,则继续根据传播路径中的下一个第二内存地址映射的第一内存地址获取下一个污点数据。
314、检测设备检测选取的污点数据是否被发送至第三方,若是,则执行步骤315;若否,则执行步骤312。
在获取到下一个污点数据时,检测下一个污点数据是否也被发送至第三方,若是,则确定下一个污点数据也可疑;若否,则继续读取下一个污点数据,判断其是否被发送至第三方,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞。一般来说,n的取值可以为2,即有2个污点数据被发送至第三方,则确定发生XSS漏洞。这是由于,当确定一个污点数据可疑时,可能存在误报即误认为发生XSS漏洞,当有这条路径上有2个污点数据可疑,由于传播路径上的污点数据是具有控制依赖关系的,就确定这条传播路径上的其余污点数据也都很可疑,这时确定发生XSS漏洞,这条传播路径上的其余未检测的污点数据可以不需要再检测了,这样也可以提高检测系统性能,减少不必要的检测工作。
315、检测设备停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞。
例如传播路径上连续的有2个污点数据被发送至第三方,则检测设备停止检测当前读取的传播路径上还未检测的污点数据,并确定发生XSS漏洞。
316、检测设备向URL对应的页面发送警告信息。
在确定发生XSS漏洞后,检测设备可以向当前URL对应的页面发送告警信息,该告警信息可以包括发生XSS漏洞的传播路径对应的污点数据,这样可以让用户根据污点数据之间的链路结构确定污点数据是如何传播的,即具备再现XSS漏洞的能力。
317、检测设备结束检测。
此外,当检测完队列中的所有传播路径后,若第二内存地址标记的污点数据在队列的所有传播路径中均未被发送至第三方,则删除第二内存地址与第一内存地址的映射关系。这样可以使得第二内存地址在不存在映射关系时复用,即下一次可以继续分配给其它数据用以标记数据为污点数据,也提升了内存的读取性能。
本发明实施例提供一种XSS的检测方法,当浏览器解释执行JavaScript代码的时候,JavaScript引擎通过对现有污点数据进行标记,污点标记能够随着数据流和控制流进行传播,通过对污点数据的数据流和控制流进行跟踪和分析,检测出程序中所有类型的控制依赖关系,从而通过第二内存地址标记新的污点数据。结合已有污点数据和新污点数据形成一条条由第二内存地址也即污点数据组成的传播路径;检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。也即,本申请是通过标记污点数据,和XSS的行为即传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞,能够解决攻击行为不能被及时检测的问题。
本发明实施例提供一种检测设备40,如图4所示,包括:
标记单元401,用于将用户在页面中的输入数据标记为污点数据;
标记单元401,还用于跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据;
生成单元402,用于生成由污点数据构成的传播路径;
检测单元403,用于检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。
可选的,还可以包括:
获取单元404,用于通过网络爬虫技术获取服务器向客户端发送的页面的统一资源定位符URL以及页面中的所有可触发事件对应的URL。
可选的,标记单元401可以用于:
获取用户在URL对应页面中的输入数据的第一内存地址,第一内存地址用于指示输入数据或其它数据的存储位置;
建立并保存为输入数据分配的第二内存地址与第一内存地址的映射关系,第二内存地址用于标记输入数据或其它数据为污点数据。
可选的,标记单元401可以用于:
通过数据流分析和控制流分析,按照执行字节码指令的顺序依次获取执行字节码指令过程中使用输入数据的其它数据;数据流分析用于获取与输入数据存在赋值预算、算术运算和逻辑运算的数据;控制流分析用于获取字节码指令的条件分支语句中使用输入数据的其它数据;
根据获取的其它数据的顺序,依次建立并保存为其它数据分配的第二内存地址与其它数据的第一内存地址的映射关系;
生成单元402可以用于:
根据同一信息流中建立输入数据和其它数据对应的映射关系的顺序,生成包括第二内存地址的传播路径,并按照生成传播路径的顺序对传播路径进行队列排序。
可选的,检测单元403可以用于:
按照队列中传播路径的顺序依次读取传播路径;
根据当前读取的传播路径中第二内存地址的顺序,检测与传播路径中第一个第二内存地址对应的污点数据是否被发送至第三方;
若否,则确定当前读取的传播路径未发生XSS漏洞,并停止检测当前读取的传播路径,继续读取队列中的下一传播路径;
若是,则继续检测与当前读取的传播路径中第二个第二内存地址对应的污点数据是否被发送至第三方;
若是,则停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞;
若否,则继续检测传播路径中的下一个第二内存地址对应的污点数据是否被发送至第三方,直至检测出与第二内存地址对应的n个污点数据被发送至第三方时,停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞,否则,确定当前读取的传播路径未发生XSS漏洞。
可选的,还可以包括:
删除单元405,用于若第二内存地址标记的污点数据在队列的所有传播路径中均未被发送至第三方,则删除第二内存地址与第一内存地址的映射关系。
可选的,所述检测单元403可以用于:检测污点数据包括在用于识别用户的身份信息或会话信息中被发送至所述第三方、污点数据包括在邀请链接中发送至所述第三方以及污点数据包括在请求资源的请求消息中发送至所述第三方中的至少一个。
可选的,还可以包括:
发送单元406,用于当确定发生XSS漏洞时,向URL对应的页面发送警告信息,警告信息包括用于确定发生XSS漏洞的传播路径对应的污点数据。
本发明实施例提供一种XSS的检测设备,将用户在页面中的输入数据标记为污点数据;跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。也即,本申请是通过标记污点数据,和XSS的行为即传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞,能够解决攻击行为不能被及时检测的问题。
本发明实施例提供一种检测设备50,如图5所示,包括:用户接口501、网络接口502、存储器503、处理器504和通信总线505等。用户接口501用于接收用户输入的输入数据;网络接口502用于与服务器通信,例如接收服务器发送的页面;存储器503用于存储软件程序以及模块和数据库等,数据库包括本发明中标记为污点数据的输入数据和其它数据、以及映射关系和传播路径,如本发明实施例中的XSS的检测方法对应的程序指令;处理器504执行该指令用于将用户在页面中的输入数据标记为污点数据;处理器504执行该指令用于跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;处理器504执行该指令用于检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。
在本发明实施例中,可选的,处理器504执行该指令还可以用于:通过网络爬虫技术获取服务器向客户端发送的页面的统一资源定位符URL以及页面中的所有可触发事件对应的URL。
在本发明实施例中,可选的,处理器504执行该指令用于将用户在页面中的输入数据标记为污点数据包括:获取用户在URL对应页面中的输入数据的第一内存地址,第一内存地址用于指示输入数据或其它数据的存储位置;
建立为输入数据分配的第二内存地址与第一内存地址的映射关系,第二内存地址用于标记输入数据或其它数据为污点数据,并由存储器502保存该映射关系。
在本发明实施例中,可选的,处理器504执行该指令用于跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径包括:
通过数据流分析和控制流分析,按照执行字节码指令的顺序依次获取执行字节码指令过程中使用输入数据的其它数据;数据流分析用于获取与输入数据存在赋值预算、算术运算和逻辑运算的数据;控制流分析用于获取字节码指令的条件分支语句中使用输入数据的其它数据;
根据获取的其它数据的顺序,依次建立并保存为其它数据分配的第二内存地址与其它数据的第一内存地址的映射关系;
根据同一信息流中建立输入数据和其它数据对应的映射关系的顺序,生成包括第二内存地址的传播路径,并按照生成传播路径的顺序对传播路径进行队列排序。
在本发明实施例中,可选的,处理器504执行该指令用于检测传播路径,若传播路径上有n个污点数据用于指定的操作行为,则确定发生XSS漏洞,n为正整数且大于或等于1包括:
按照队列中传播路径的顺序读取传播路径;
根据当前读取的传播路径中第二内存地址的顺序,检测与传播路径中第一个第二内存地址对应的污点数据是否被发送至第三方;
若否,则确定当前读取的传播路径未发生XSS漏洞,并停止检测当前读取的传播路径,继续读取队列中的下一条传播路径;
若是,则继续检测与当前读取的传播路径中第二个第二内存地址对应的污点数据是否被发送至第三方;
若是,则停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞;
若否,则继续检测传播路径中的下一个第二内存地址对应的污点数据是否被发送至第三方,直至检测出与第二内存地址对应的n个污点数据被发送至第三方时,停止检测当前读取的传播路径,并确定当前读取的传播路径发生XSS漏洞,否则,确定当前读取的传播路径未发生XSS漏洞。
在本发明实施例中,可选的,处理器504执行该指令用于:
若第二内存地址标记的污点数据在队列的所有传播路径中均未被发送至第三方,则删除第二内存地址与第一内存地址的映射关系。
在本发明实施例中,可选的,处理器504执行该指令用于污点数据被发送至第三方包括:检测污点数据包括在用于识别用户的身份信息或会话信息中被发送至所述第三方、污点数据包括在邀请链接中发送至所述第三方以及污点数据包括在请求资源的请求消息中发送至所述第三方中的至少一个。
在本发明实施例中,可选的,处理器504执行该指令用于:当确定发生XSS漏洞时,向URL对应的页面发送警告信息,警告信息包括确定发生XSS漏洞的传播路径对应的污点数据。
本发明实施例提供一种XSS的检测设备,将用户在页面中的输入数据标记为污点数据;跟踪输入数据在客户端脚本语言的字节码指令中的传播,将执行字节码指令过程中使用输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;检测传播路径,若传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。也即,本申请是通过标记污点数据,和XSS的行为即传播路径上是否有n个污点数据被发送至第三方来确定是否发生XSS漏洞,而不是通过匹配预先定义的攻击模式进行XSS漏洞检测的,因此,即使攻击值采用编码、加密和混淆等技术绕过攻击模式的匹配,也仍然可以检测出XSS漏洞,能够解决攻击行为不能被及时检测的问题。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
1.一种跨站脚本攻击XSS的检测方法,其特征在于,包括:
将用户在页面中的输入数据标记为污点数据;
跟踪所述输入数据在客户端脚本语言的字节码指令中的传播,将执行所述字节码指令过程中使用所述输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径;
检测所述传播路径,若所述传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。
2.根据权利要求1所述的方法,其特征在于,在将所述用户在所述页面中的输入数据标记为污点数据之前,所述方法还包括:
通过网络爬虫技术获取服务器向客户端发送的页面的统一资源定位符URL以及所述页面中的所有可触发事件对应的URL。
3.根据权利要求2所述的方法,其特征在于,所述将用户在页面中的输入数据标记为污点数据包括:
获取所述用户在所述URL对应页面中的输入数据的第一内存地址,所述第一内存地址用于指示所述输入数据或所述其它数据的存储位置;
建立并保存为所述输入数据分配的第二内存地址与所述第一内存地址的映射关系,所述第二内存地址用于标记所述输入数据或所述其它数据为污点数据。
4.根据权利要求3所述的方法,其特征在于,所述跟踪所述输入数据在客户端脚本语言的字节码指令中的传播,将执行所述字节码指令过程中使用所述输入数据的其它数据标记为污点数据,并生成由污点数据构成的传播路径包括:
通过数据流分析和控制流分析,按照执行所述字节码指令的顺序依次获取执行所述字节码指令过程中使用所述输入数据的其它数据;所述数据流分析用于获取与所述输入数据存在赋值预算、算术运算和逻辑运算的数据;所述控制流分析用于获取所述字节码指令的条件分支语句中使用所述输入数据的其它数据;
根据获取的所述其它数据的顺序,依次建立并保存为所述其它数据分配的所述第二内存地址与所述其它数据的所述第一内存地址的映射关系;
根据同一信息流中建立所述输入数据和所述其它数据对应的映射关系的顺序,生成包括所述第二内存地址的所述传播路径,并按照生成所述传播路径的顺序对所述传播路径进行队列排序。
5.根据权利要求4所述的方法,其特征在于,所述检测所述传播路径,若所述传播路径上有n个污点数据用于指定的操作行为,则确定发生XSS漏洞,n为正整数且大于或等于1包括:
按照所述队列中所述传播路径的顺序读取所述传播路径;
根据当前读取的所述传播路径中所述第二内存地址的顺序,检测与所述传播路径中第一个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若否,则确定所述当前读取的所述传播路径未发生所述XSS漏洞,并停止检测所述当前读取的所述传播路径,继续读取所述队列中的下一条所述传播路径;
若是,则继续检测与所述当前读取的所述传播路径中第二个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若是,则停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞;
若否,则继续检测所述传播路径中的下一个所述第二内存地址对应的污点数据是否被发送至所述第三方,直至检测出与所述第二内存地址对应的n个污点数据被发送至所述第三方时,停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞,否则,确定所述当前读取的所述传播路径未发生所述XSS漏洞。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述第二内存地址标记的污点数据在所述队列的所有所述传播路径中均未被发送至所述第三方,则删除所述第二内存地址与所述第一内存地址的映射关系。
7.根据权利要求1-6任一项所述的方法,其特征在于,污点数据被发送至第三方包括:污点数据包括在用于识别用户的身份信息或会话信息中被发送至所述第三方、污点数据包括在邀请链接中发送至所述第三方以及污点数据包括在请求资源的请求消息中发送至所述第三方中的至少一个。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
当确定发生所述XSS漏洞时,向所述URL对应的页面发送警告信息,所述警告信息包括确定发生所述XSS漏洞的传播路径对应的污点数据。
9.一种检测设备,其特征在于,包括:
标记单元,用于将用户在页面中的输入数据标记为污点数据;
所述标记单元,还用于跟踪所述输入数据在客户端脚本语言的字节码指令中的传播,将执行所述字节码指令过程中使用所述输入数据的其它数据标记为污点数据;
生成单元,用于生成由污点数据构成的传播路径;
检测单元,用于检测所述传播路径,若所述传播路径上有n个污点数据被发送至第三方,则确定发生XSS漏洞,n为正整数且大于或等于1。
10.根据权利要求9所述的检测设备,其特征在于,还包括:
获取单元,用于通过网络爬虫技术获取服务器向客户端发送的页面的统一资源定位符URL以及所述页面中的所有可触发事件对应的URL。
11.根据权利要求10所述的检测设备,其特征在于,所述标记单元用于:
获取所述用户在所述URL对应页面中的输入数据的第一内存地址,所述第一内存地址用于指示所述输入数据或所述其它数据的存储位置;
建立并保存为所述输入数据分配的第二内存地址与所述第一内存地址的映射关系,所述第二内存地址用于标记所述输入数据或所述其它数据为污点数据。
12.根据权利要求11所述的检测设备,其特征在于,所述标记单元用于:
通过数据流分析和控制流分析,按照执行所述字节码指令的顺序依次获取执行所述字节码指令过程中使用所述输入数据的其它数据;所述数据流分析用于获取与所述输入数据存在赋值预算、算术运算和逻辑运算的数据;所述控制流分析用于获取所述字节码指令的条件分支语句中使用所述输入数据的其它数据;
根据获取的所述其它数据的顺序,依次建立并保存为所述其它数据分配的所述第二内存地址与所述其它数据的所述第一内存地址的映射关系;
所述生成单元用于:
根据同一信息流中建立所述输入数据和所述其它数据对应的映射关系的顺序,生成包括所述第二内存地址的所述传播路径,并按照生成所述传播路径的顺序对所述传播路径进行队列排序。
13.根据权利要求12所述的检测设备,其特征在于,所述检测单元用于:
按照所述队列中所述传播路径的顺序依次读取所述传播路径;
根据当前读取的所述传播路径中所述第二内存地址的顺序,检测与所述传播路径中第一个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若否,则确定所述当前读取的所述传播路径未发生所述XSS漏洞,并停止检测所述当前读取的所述传播路径,继续读取所述队列中的下一所述传播路径;
若是,则继续检测与所述当前读取的所述传播路径中第二个所述第二内存地址对应的污点数据是否被发送至所述第三方;
若是,则停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞;
若否,则继续检测所述传播路径中的下一个所述第二内存地址对应的污点数据是否被发送至所述第三方,直至检测出与所述第二内存地址对应的n个污点数据被发送至所述第三方时,停止检测所述当前读取的所述传播路径,并确定所述当前读取的所述传播路径发生所述XSS漏洞,否则,确定所述当前读取的所述传播路径未发生所述XSS漏洞。
14.根据权利要求13所述的检测设备,其特征在于,还包括:
删除单元,用于若所述第二内存地址标记的污点数据在所述队列的所有所述传播路径中均未被发送至所述第三方,则删除所述第二内存地址与所述第一内存地址的映射关系。
15.根据权利要求9-14任一项所述的检测设备,其特征在于,所述检测单元用于:检测污点数据包括在用于识别用户的身份信息或会话信息中被发送至所述第三方、污点数据包括在邀请链接中发送至所述第三方以及污点数据包括在请求资源的请求消息中发送至所述第三方中的至少一个。
16.根据权利要求9-14任一项所述的检测设备,其特征在于,还包括:
发送单元,用于当确定发生所述XSS漏洞时,向所述URL对应的页面发送警告信息,所述警告信息包括用于确定发生所述XSS漏洞的传播路径对应的污点数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000768.XA CN105791261B (zh) | 2015-12-28 | 2015-12-28 | 一种跨站脚本攻击的检测方法和检测设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000768.XA CN105791261B (zh) | 2015-12-28 | 2015-12-28 | 一种跨站脚本攻击的检测方法和检测设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105791261A true CN105791261A (zh) | 2016-07-20 |
CN105791261B CN105791261B (zh) | 2019-06-21 |
Family
ID=56390354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511000768.XA Active CN105791261B (zh) | 2015-12-28 | 2015-12-28 | 一种跨站脚本攻击的检测方法和检测设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105791261B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322458A (zh) * | 2018-01-30 | 2018-07-24 | 深圳壹账通智能科技有限公司 | Web应用入侵检测方法、系统、计算机设备和存储介质 |
CN108664793A (zh) * | 2017-03-30 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 一种检测漏洞的方法和装置 |
CN110059481A (zh) * | 2019-04-23 | 2019-07-26 | 中国人民解放军战略支援部队信息工程大学 | 一种恶意网页检测方法及系统 |
CN110399723A (zh) * | 2018-06-22 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 漏洞检测方法和装置、存储介质及电子装置 |
CN111259399A (zh) * | 2020-04-28 | 2020-06-09 | 深圳开源互联网安全技术有限公司 | 用于web应用的动态检测漏洞攻击的方法及系统 |
CN111949992A (zh) * | 2020-08-17 | 2020-11-17 | 中国工商银行股份有限公司 | Web应用程序的自动化安全监测方法及系统 |
CN112966274A (zh) * | 2021-03-11 | 2021-06-15 | 北京长亭未来科技有限公司 | Web安全漏洞检测方法、扫描器、存储介质及电子设备 |
CN113632432A (zh) * | 2019-09-12 | 2021-11-09 | 奇安信安全技术(珠海)有限公司 | 一种攻击行为的判定方法、装置及计算机存储介质 |
CN115277062A (zh) * | 2022-06-13 | 2022-11-01 | 深圳开源互联网安全技术有限公司 | 一种恶意攻击拦截方法、装置、设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7289449B1 (en) * | 2001-03-20 | 2007-10-30 | 3Com Corporation | Device and method for managing fault detection and fault isolation in voice and data networks |
CN101616151A (zh) * | 2009-07-31 | 2009-12-30 | 中国科学院软件研究所 | 一种自动化的网络攻击特征生成方法 |
CN103870752A (zh) * | 2012-12-18 | 2014-06-18 | 百度在线网络技术(北京)有限公司 | 一种用于检测Flash XSS漏洞的方法、装置与设备 |
CN103995782A (zh) * | 2014-06-17 | 2014-08-20 | 电子科技大学 | 一种基于污点不变集的污点分析方法 |
CN104268474A (zh) * | 2014-09-30 | 2015-01-07 | 电子科技大学 | 一种基于浏览器脚本行为的入侵检测方法及装置 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
CN104766013A (zh) * | 2015-04-10 | 2015-07-08 | 北京理工大学 | 一种基于跳表的跨站脚本攻击防御方法 |
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN104901962A (zh) * | 2015-05-28 | 2015-09-09 | 北京椒图科技有限公司 | 一种网页攻击数据的检测方法及装置 |
-
2015
- 2015-12-28 CN CN201511000768.XA patent/CN105791261B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7289449B1 (en) * | 2001-03-20 | 2007-10-30 | 3Com Corporation | Device and method for managing fault detection and fault isolation in voice and data networks |
CN101616151A (zh) * | 2009-07-31 | 2009-12-30 | 中国科学院软件研究所 | 一种自动化的网络攻击特征生成方法 |
CN103870752A (zh) * | 2012-12-18 | 2014-06-18 | 百度在线网络技术(北京)有限公司 | 一种用于检测Flash XSS漏洞的方法、装置与设备 |
CN103995782A (zh) * | 2014-06-17 | 2014-08-20 | 电子科技大学 | 一种基于污点不变集的污点分析方法 |
CN104268474A (zh) * | 2014-09-30 | 2015-01-07 | 电子科技大学 | 一种基于浏览器脚本行为的入侵检测方法及装置 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
CN104766013A (zh) * | 2015-04-10 | 2015-07-08 | 北京理工大学 | 一种基于跳表的跨站脚本攻击防御方法 |
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN104901962A (zh) * | 2015-05-28 | 2015-09-09 | 北京椒图科技有限公司 | 一种网页攻击数据的检测方法及装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664793B (zh) * | 2017-03-30 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 一种检测漏洞的方法和装置 |
CN108664793A (zh) * | 2017-03-30 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 一种检测漏洞的方法和装置 |
CN108322458B (zh) * | 2018-01-30 | 2020-05-19 | 深圳壹账通智能科技有限公司 | Web应用入侵检测方法、系统、计算机设备和存储介质 |
CN108322458A (zh) * | 2018-01-30 | 2018-07-24 | 深圳壹账通智能科技有限公司 | Web应用入侵检测方法、系统、计算机设备和存储介质 |
CN110399723A (zh) * | 2018-06-22 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 漏洞检测方法和装置、存储介质及电子装置 |
CN110059481A (zh) * | 2019-04-23 | 2019-07-26 | 中国人民解放军战略支援部队信息工程大学 | 一种恶意网页检测方法及系统 |
CN113632432A (zh) * | 2019-09-12 | 2021-11-09 | 奇安信安全技术(珠海)有限公司 | 一种攻击行为的判定方法、装置及计算机存储介质 |
CN113632432B (zh) * | 2019-09-12 | 2023-09-19 | 奇安信安全技术(珠海)有限公司 | 一种攻击行为的判定方法、装置及计算机存储介质 |
CN111259399A (zh) * | 2020-04-28 | 2020-06-09 | 深圳开源互联网安全技术有限公司 | 用于web应用的动态检测漏洞攻击的方法及系统 |
CN111949992A (zh) * | 2020-08-17 | 2020-11-17 | 中国工商银行股份有限公司 | Web应用程序的自动化安全监测方法及系统 |
CN111949992B (zh) * | 2020-08-17 | 2023-09-29 | 中国工商银行股份有限公司 | Web应用程序的自动化安全监测方法及系统 |
CN112966274A (zh) * | 2021-03-11 | 2021-06-15 | 北京长亭未来科技有限公司 | Web安全漏洞检测方法、扫描器、存储介质及电子设备 |
CN112966274B (zh) * | 2021-03-11 | 2024-03-19 | 北京长亭未来科技有限公司 | Web安全漏洞检测方法、扫描器、存储介质及电子设备 |
CN115277062A (zh) * | 2022-06-13 | 2022-11-01 | 深圳开源互联网安全技术有限公司 | 一种恶意攻击拦截方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105791261B (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105791261A (zh) | 一种跨站脚本攻击的检测方法和检测设备 | |
CN101964025B (zh) | Xss检测方法和设备 | |
CN103699480B (zh) | 一种基于java的web动态安全漏洞检测方法 | |
US20110289582A1 (en) | Method for detecting malicious javascript | |
CN109347882B (zh) | 网页木马监测方法、装置、设备及存储介质 | |
JP2018502351A (ja) | スクリプト言語用のrasp | |
US9846781B2 (en) | Unused parameters of application under test | |
US20220207140A1 (en) | Automated threat model generation | |
CN111309620B (zh) | 一种游戏协议测试方法、装置、电子设备和存储介质 | |
US10515220B2 (en) | Determine whether an appropriate defensive response was made by an application under test | |
CN103647678A (zh) | 一种网站漏洞在线验证方法及装置 | |
CN106022132A (zh) | 一种基于动态内容分析的网页木马实时检测方法 | |
CN105095759A (zh) | 文件的检测方法及装置 | |
Dong et al. | A comprehensive client-side behavior model for diagnosing attacks in ajax applications | |
CN112653709A (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
Hou et al. | A dynamic detection technique for XSS vulnerabilities | |
CN113190839A (zh) | 一种基于SQL注入的web攻击防护方法及系统 | |
CN111859380A (zh) | Android App漏洞的零误报检测方法 | |
CN112671605A (zh) | 一种测试方法、装置及电子设备 | |
CN114357457A (zh) | 漏洞检测方法、装置、电子设备和存储介质 | |
Xie et al. | JTaint: finding privacy-leakage in chrome extensions | |
US20160267277A1 (en) | Application test using attack suggestions | |
CN107800692A (zh) | 一种基于web浏览器的XSS漏洞检测方法及系统 | |
CN107026854A (zh) | 漏洞验证方法及装置 | |
Mostafa et al. | Netdroid: Summarizing network behavior of android apps for network code maintenance |
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 |