CN113688395A - web应用程序的漏洞检测方法、设备及计算机可读存储介质 - Google Patents
web应用程序的漏洞检测方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113688395A CN113688395A CN202110863694.1A CN202110863694A CN113688395A CN 113688395 A CN113688395 A CN 113688395A CN 202110863694 A CN202110863694 A CN 202110863694A CN 113688395 A CN113688395 A CN 113688395A
- Authority
- CN
- China
- Prior art keywords
- request data
- function
- web application
- application program
- propagation
- 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
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种web应用程序的漏洞检测方法、设备及计算机可读存储介质,其中,方法包括:获取待测web应用程序的请求数据;通过n个传播函数对请求数据进行传播,得到n条新请求数据,其中,n为大于1的正整数,传播函数的输出为新请求数据,第n个传播函数的输入为第n‑1个传播函数的输出;第n个传播函数获取第n‑1个传播函数的输出前,将n‑1个传播函数及相应输出从当前线程变量复制到全局变量,且当第n个传播函数获取不到第n‑1个传播函数的输出时,从全局变量中获取第n‑1个传播函数的输出;获取执行参数;根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞。本发明能够提升对待测web应用程序进行漏洞检测时的全面性和准确性。
Description
【技术领域】
本发明涉及计算机技术领域,尤其涉及一种web应用程序的漏洞检测方法、设备及计算机可读存储介质。
【背景技术】
相关技术中,web应用程序的安全测试技术一般包括DAST(Dynamic ApplicationSecurity Testing,动态应用程序安全测试)技术、SAST(Static Application SecurityTesting,静态应用程序安全测试)技术以及IAST(Interactive Application SecurityTesting,交互式应用程序安全测试)技术。在IAST技术中,对待测web应用程序进行漏洞检测时,通常会对污点数据以及相应的函数流进行跟踪;其中,污点数据是指位于待测web应用程序的前端由用户所输入的数据。在跟踪过程中,由于污点数据以及相应的函数流都会被存储在当前的线程变量内,从而使得在多线程切换时,容易出现由对污点数据以及相应的函数流的跟踪丢失所引起的漏洞漏检的现象,进而导致对待测web应用程序进行漏洞检测时的全面性和准确性均较低。
因此,有必要对上述web应用程序的漏洞检测方法进行改进。
【发明内容】
本发明提供了一种web应用程序的漏洞检测方法、设备及计算机可读存储介质,旨在解决相关技术中对待测web应用程序进行漏洞检测时的全面性和准确性均较低的问题。
为了解决上述技术问题,本发明实施例第一方面提供了一种web应用程序的漏洞检测方法,包括:
通过输入函数获取待测web应用程序的请求数据;所述请求数据与用户在所述待测web应用程序的前端的操作相关;
通过n个传播函数对所述请求数据进行传播,得到n条新请求数据;其中,n为大于1的正整数;第一个所述传播函数的输入为所述请求数据,第n个所述传播函数的输入为第n-1个所述传播函数的输出,且每一个所述传播函数的输出均为一条所述新请求数据,每一条所述新请求数据的数据类型均与所述请求数据不同;
第n个所述传播函数对第n-1个所述传播函数输出的所述新请求数据进行获取前,将n-1个所述传播函数以及相应输出的所述新请求数据从当前线程变量复制到全局变量,且当第n个所述传播函数获取不到第n-1个所述传播函数输出的所述新请求数据时,从所述全局变量中获取第n-1个所述传播函数输出的所述新请求数据;
通过执行函数获取执行参数;所述执行函数用于基于所述执行参数执行关键动作,所述关键动作与所述用户在所述待测web应用程序的前端的操作相关;
根据所述执行参数、所述请求数据以及各所述新请求数据,判断所述待测web应用程序是否存在漏洞。
本发明实施例第二方面提供了一种web应用程序的漏洞检测设备,包括:存储装置及一个或多个处理器,所述存储装置用于存储一个或多个程序,其中,当一个或多个所述程序被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如本发明实施例第一方面所述的web应用程序的漏洞检测方法。
本发明实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行指令,所述可执行指令被执行时执行如本发明实施例第一方面所述的web应用程序的漏洞检测方法。
从上述描述可知,与相关技术相比,本发明的有益效果在于:
先通过输入函数获取待测web应用程序的请求数据;再通过n个传播函数对请求数据进行传播,得到n条新请求数据,其中,第一个传播函数的输入为请求数据,第n个传播函数的输入为第n-1个传播函数的输出,且每一个传播函数的输出均为一条新请求数据;之后又通过执行函数获取执行参数;最后根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞。在此过程中,第n个传播函数对第n-1个传播函数的输出进行获取前,本发明会将n-1个传播函数以及相应的输出从当前线程变量复制到全局变量,且当第n个传播函数获取不到第n-1个传播函数的输出时,本发明会从全局变量中获取第n-1个传播函数的输出。基于此,在多线程切换时,即使发生了对当前线程变量中的请求数据以及相应的函数流的跟踪丢失(也即第n个传播函数获取不到第n-1个传播函数的输出),但是由于全局变量中仍然存储有第n-1个传播函数的输出,所以也不会引起漏洞漏检的现象,从而能够有效地提升对待测web应用程序进行漏洞检测时的全面性和准确性。
【附图说明】
为了更清楚地说明相关技术或本发明实施例中的技术方案,下面将对相关技术或本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,而并非是全部实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的web应用程序的漏洞检测方法的流程示意图;
图2为本发明实施例提供的web应用程序的漏洞检测设备的模块方框图;
图3为本发明实施例提供的计算机可读存储介质的模块方框图。
【具体实施方式】
为了使本发明的目的、技术方案以及优点更加的明显和易懂,下面将结合本发明实施例以及相应的附图,对本发明进行清楚、完整地描述,其中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。应当理解的是,下面所描述的本发明的各个实施例仅仅用以解释本发明,并不用于限定本发明,也即基于本发明的各个实施例,本领域的普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。此外,下面所描述的本发明的各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
在相关技术中,由于污点数据以及相应的函数流都会被存储在当前的线程变量内,从而使得在多线程切换时,容易出现由对污点数据以及相应的函数流的跟踪丢失所引起的漏洞漏检的现象,进而导致对待测web应用程序进行漏洞检测时的全面性和准确性均较低。为此,本发明实施例提供了一种web应用程序的漏洞检测方法。
请参阅图1,图1为本发明实施例提供的web应用程序的漏洞检测方法的流程示意图。
如图1所示,本发明实施例提供一种web应用程序的漏洞检测方法,该web应用程序的漏洞检测方法包括如下步骤101至105。
步骤101、通过输入函数获取待测web应用程序的请求数据;其中,请求数据与用户在待测web应用程序的前端的操作相关。
在本发明实施例中,需要通过输入函数获取待测web应用程序的请求数据,该请求数据与用户在待测web应用程序的前端的操作相关;其中,该请求数据中可以包括但不限于污点数据,该污点数据为用户在待测web应用程序的前端输入的数据。可以理解,待测web应用程序的执行过程可以分为三个阶段,分别为输入阶段、传播阶段以及执行阶段;其中,上述输入函数实际上便存在于待测web应用程序的输入阶段,该输入阶段主要用于通过输入函数获取待测web应用程序的请求数据。
比如,用户在浏览器中进行登录操作,并在登录页面输入了用户名以及密码;那么,浏览器便属于待测web应用程序的前端,用户所输入的用户名以及密码便属于污点数据。此处,有必要进行说明的是,请求数据中并非仅限于包括污点数据,请求数据中还可以包括与用户在待测web应用程序的前端的操作相关的数据,比如表征用户在待测web应用程序的前端的操作为登录操作的数据等。
在一个实施方式中,输入函数可以为基于HTTP(Hyper Text Transfer Protocol,超文本传输协议)的HTTP Request函数。当然,也并非仅限于此,在其他实施方式中,输入函数也可以为本领域内常用的除HTTP Request函数外的其他函数,比如基于SMTP(SimpleMail Transfer Protocol,简单邮件传输协议)的函数和基于NETTY的channelRead函数等;或者,输入函数还可以为用户自定义的函数。
在一个实施方式中,待测web应用程序可以基于B/S架构;所谓B/S架构是指利用浏览器进行交互的应用程序,这种应用程序一般通过HTTP协议作为载体进行通信。当然,也并非仅限于此,在其他实施方式中,待测web应用程序也可以基于C/S架构;所谓C/S架构是指利用编程语言本身的特性进行交互的应用程序,这种应用程序一般通过独有的协议作为载体进行通信,比如SMTP协议,以及Java编程语言框架中的NETTY、DUBBO等。
在一个实施方式中,当通过输入函数获取到待测web应用程序的请求数据后,还可以基于当前线程创建线程容器,并将所获取的请求数据作为键值对的关键字,所利用的输入函数作为键值对的值,关联存储至所创建的线程容器中。此处,有必要进行说明的是,一条请求数据依次经过输入阶段、传播阶段以及执行阶段并结束后,可以理解为一个线程;那么,当存在多条请求数据时,便会存在多个线程,相应的,也会存在分别基于多个线程的多个线程容器。
应当理解的是,上述实施方式仅作为本发明实施例的优选实现,并非是本发明实施例对与步骤101相关的技术特征的唯一限定;对此,本领域技术人员可以在本发明实施例的基础上,根据实际应用场景进行灵活设定。
步骤102、通过n个传播函数对请求数据进行传播,得到n条新请求数据;其中,n为大于1的正整数;第一个传播函数的输入为请求数据,第n个传播函数的输入为第n-1个传播函数的输出,且每一个传播函数的输出均为一条新请求数据,每一条新请求数据的数据类型均与请求数据不同。
在本发明实施例中,通过输入函数获取到待测web应用程序的请求数据后,还需要通过传播函数对请求数据进行传播,以得到新请求数据。可以理解,由于请求数据中包括污点数据,所以通过传播函数对请求数据进行传播实质上也是通过传播函数对污点数据进行传播,相应的,新请求数据中必然也会包括新污点数据。
前文中提到,待测web应用程序的执行过程可以分为三个阶段,分别为输入阶段、传播阶段以及执行阶段;那么,上述传播函数实际上便存在于待测web应用程序的传播阶段,该传播阶段主要用于通过传播函数对请求数据进行传播。此处,有必要进行说明的是,传播阶段中的传播函数一般包括若干个,比如包括10-100个传播函数等;基于此,本发明实施例将传播函数设置为n个(n为大于1的正整数)。而且,传播阶段中的传播函数并非仅限于本领域内常用的函数,其还可以为用户自定义的函数。
当通过n个传播函数对请求数据进行传播时,第一个传播函数会以请求数据作为输入,第n个传播函数会以第n-1个传播函数的输出作为输入。比如,当n等于3时,第一个传播函数会以请求数据作为输入,第二个传播函数会以第一个传播函数的输出作为输入,第三个传播函数会以第二个传播函数的输出作为输入;而且,第一个传播函数的输出、第二个传播函数的输出以及第三个传播函数的输出均为新请求数据,且这三条新请求数据的数据类型均与请求数据存在区别。可以理解,n个传播函数对请求数据的传播,实质上是对请求数据的数据类型的不断转换。
在一个实施方式中,以第一个传播函数对请求数据进行传播为例,第一个传播函数对请求数据进行传播,可以为:通过第一个传播函数对请求数据中的字符串或类对象进行编辑或处理。其中,“字符串或类对象”实际上是指请求数据在待测web应用程序中的表达形式;比如,请求数据中包括两个字段(name=lee以及pwd=123456),那么,由于不同的待测web应用程序或者语言框架的内部的处理机制不同,所以服务端(与待测web应用程序所表征的客户端相对应)既可以以字符串的形式接受请求数据,也可以构建一个包括两个字段(name=lee以及pwd=123456)的类对象接受请求数据。
对于该实施方式,请求数据所受到的编辑或处理,可以是对请求数据中字符串的长度进行截取,比如截取字符串的前255位等;也可以是对请求数据中字符串的某一个或者某几个字符进行大小写的更换,比如将字符串中的a更换为A等;还可以是对请求数据中字符串的某几个或者某几段字符进行位置的调换,比如将字符串中的Abd与kHR进行位置的调换等。对于请求数据所受到的编辑或处理,本发明实施例在此不再一一列举。
相应的,第n个传播函数对第n-1个传播函数的输出进行传播,便可以为:第n个传播函数对第n-1个传播函数输出的新请求数据进行编辑或处理。
在一个实施方式中,第n个传播函数对第n-1个传播函数的输出进行获取前,可以将n-1个传播函数以及相应输出的新请求数据关联存储至基于当前线程的线程容器中。
在一个实施方式中,由于某些原因,可能导致传播阶段出现第n个传播函数的输入不是第n-1个传播函数的输出的现象。基于此,在第n个传播函数对第n-1个传播函数的输出进行传播时,可以先判断第n个传播函数的输入是否为第n-1个传播函数的输出;并且,在第n个传播函数的输入不为第n-1个传播函数的输出时,直接跳过第n个传播函数;在第n个传播函数的输入为第n-1个传播函数的输出时,将第n个传播函数以及相应输出的新请求数据关联存储至基于当前线程的线程容器中。
在一个实施方式中,传播函数可以包括两种,分别为常规传播函数以及净化传播函数;其中,净化传播函数表征已对净化传播函数的输入进行检测,且检测结果为净化传播函数的输入不存在漏洞攻击代码。在此基础上,如果发现传播阶段中存在至少一个净化传播函数,也即n个传播函数中至少包括一个净化传播函数,那么可以直接确认待测web应用程序不存在漏洞,以此来提升对待测web应用程序进行漏洞检测时的检测效率。
应当理解的是,上述实施方式仅作为本发明实施例的优选实现,并非是本发明实施例对与步骤102相关的技术特征的唯一限定;对此,本领域技术人员可以在本发明实施例的基础上,根据实际应用场景进行灵活设定。
步骤103、第n个传播函数对第n-1个传播函数输出的新请求数据进行获取前,将n-1个传播函数以及相应输出的新请求数据从当前线程变量复制到全局变量,且当第n个传播函数获取不到第n-1个传播函数输出的新请求数据时,从全局变量中获取第n-1个传播函数输出的新请求数据。
在本发明实施例中,通过n个传播函数对请求数据进行传播的过程中,在第n个传播函数对第n-1个传播函数的输出进行获取前,还需要将n-1个传播函数以及相应的输出从当前线程变量复制到全局变量。在此基础上,当第n个传播函数获取不到第n-1个传播函数的输出时,便可以从全局变量中获取第n-1个传播函数的输出。可以理解,由于当前的线程容器是基于当前线程的,所述位于当前的线程容器中的请求数据、输入函数、传播函数以及新请求数据,实质上就是位于当前线程变量中的请求数据、输入函数、传播函数以及新请求数据。
此处,有必要进行说明的是,任意一个线程结束后,基于该线程的线程容器中的请求数据、输入函数、传播函数以及新请求数据会自动删除。或者是说,任意一个线程结束后,该线程变量中的请求数据、输入函数、传播函数以及新请求数据会自动删除。
步骤104、通过执行函数获取执行参数;其中,执行函数用于基于执行参数执行关键动作,关键动作与用户在待测web应用程序的前端的操作相关。
在本发明实施例中,通过n个传播函数对请求数据进行传播,并得到n条新请求数据后,还需要通过执行函数获取执行参数,该执行函数用于基于执行参数执行关键动作,该关键动作与用户在待测web应用程序的前端的操作相关。
前文中提到,待测web应用程序的执行过程可以分为三个阶段,分别为输入阶段、传播阶段以及执行阶段;那么,上述执行函数实际上便存在于待测web应用程序的执行阶段,该执行阶段主要用于通过执行函数获取执行参数,并基于执行参数执行关键动作。现以用户在浏览器中进行登录操作,并在登录页面输入了用户名以及密码为例,此时,包括用户名以及密码的请求数据会依次经过输入阶段以及传播阶段到达执行阶段;在执行阶段中,执行函数会获取相应的执行参数(所获取的执行参数会与请求数据中的用户名以及密码相关),并对执行参数与预设的用户数据库进行结合,以判断当前用户是否为合法用户(如果当前用户为合法用户,则允许当前用户的登录操作;如果当前用户为非法用户,则禁止当前用户的登录操作)。在这个例子中,对执行参数与预设的用户数据库进行结合以判断当前用户是否为合法用户,便相当于执行函数所执行的关键动作。
在一个实施方式中,执行函数所执行的关键动作可以为与数据库进行交互。当然,也并非仅限于此,在其他实施方式中,执行函数所执行的关键动作也可以为与操作系统进行交互,或者,与文件系统进行交互等。
对于该实施方式,当所执行的关键动作为与数据库进行交互时,执行参数可以为与数据库交互时的sql语句;当所执行的关键动作为与操作系统进行交互时,执行参数可以为与操作系统交互时的命令语句;当所执行的关键动作为与文件系统进行交互时,执行参数可以为与文件系统交互时的文件命令。
在一个实施方式中,通过执行函数获取到执行参数后,还可以将执行函数以及所获取的执行参数关联存储至基于当前线程的线程容器中。
对于该实施方式,在当前线程结束后,基于该线程的线程容器中的执行函数以及执行参数会自动删除。或者是说,在当前线程结束后,该线程变量中的执行函数以及执行参数会自动删除。
应当理解的是,上述实施方式仅作为本发明实施例的优选实现,并非是本发明实施例对与步骤104相关的技术特征的唯一限定;对此,本领域技术人员可以在本发明实施例的基础上,根据实际应用场景进行灵活设定。
步骤105、根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞。
在本发明实施例中,通过执行函数获取执行参数后,还需要根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞。
在一个实施方式中,根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞,可以为:判断执行参数中是否存在漏洞攻击代码;若不存在,则确认待测web应用程序不存在漏洞;若存在,则参考执行参数与请求数据的第一相关性评价指标,以及执行参数与各新请求数据的第二相关性评价指标,判断待测web应用程序是否存在漏洞。
对于该实施方式,第一相关性评价指标表征执行参数与请求数据间的相关性;第二相关性评价指标表征执行参数与新请求数据间的相关性。其中,第一相关性评价指标可以为但不限于以英文字母表示的相关性等级,以及以数值表示的相关性值;相应的,第二相关性评价指标也可以为但不限于以英文字母表示的相关性等级,以及以数值表示的相关性值。其中,第一相关性评价指标可以根据执行参数的位置与请求数据的位置是否一致得到,或者也可以根据执行参数中的相应字符与请求数据中的相应字符的对比得到;第二相关性评价指标可以根据执行参数的位置与新请求数据的位置是否一致得到,或者也可以根据执行参数中的相应字符与新请求数据中的相应字符的对比得到。
在另一个实施方式中,根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞,也可以为:判断执行参数中是否存在漏洞攻击代码;若不存在,则确认待测web应用程序不存在漏洞;若存在,则获取执行参数与请求数据的第一相关性评价指标,以及执行参数与各新请求数据的第二相关性评价指标;当第一相关性评价指标大于或等于第一相关性阈值,以及各第二相关性评价指标均大于或等于第二相关性阈值时,确认待测web应用程序存在漏洞。
对于该实施方式,若第一相关性评价指标大于或等于第一相关性阈值,则表征执行参数与请求数据具有相关性;若各第二相关性评价指标均大于或等于第二相关性阈值,则表征执行参数与各新请求数据均具有相关性。若执行参数与请求数据具有相关性,以及执行参数与各新请求数据均具有相关性,则表明执行参数经过了输入阶段以及传播阶段,也即表明执行参数是由请求数据依次通过输入函数以及n个传播函数得来的;此时,相当于输入阶段中的输入函数以及传播阶段中的n个传播函数都被请求数据中的污点数据污染了。若执行参数与请求数据不具有相关性,以及执行参数与各新请求数据均不具有相关性,则表明执行参数没有经过输入阶段以及传播阶段,也即表明执行参数为待测web应用程序的内置参数,比如定时器任务等;此时,可以直接确认待测web应用程序不存在漏洞;这能够有效地避免待测web应用程序的内置参数对漏洞检测的干扰。
在又一个实施方式中,根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞,还可以为:判断执行参数中是否存在漏洞攻击代码;若不存在,则确认待测web应用程序不存在漏洞;若存在,则获取执行参数与请求数据的第一相关性评价指标,以及执行参数与各新请求数据的第二相关性评价指标;当第一相关性评价指标大于或等于第一相关性阈值,以及各第二相关性评价指标均大于或等于第二相关性阈值时,确认待测web应用程序存在漏洞;若确认待测web应用程序存在漏洞,则对执行函数执行关键动作进行拦截,并输出告警提示。
对于该实施方式,当确认待测web应用程序存在漏洞时,可以对执行函数执行关键动作进行拦截,并输出告警提示,以此来警示漏洞检测人员,当前的待测web应用程序存在漏洞。
应当理解的是,上述实施方式仅作为本发明实施例的优选实现,并非是本发明实施例对与步骤105相关的技术特征的唯一限定;对此,本领域技术人员可以在本发明实施例的基础上,根据实际应用场景进行灵活设定。
作为一种可行的实施例,可以以当前线程结束的时刻作为参考时刻,对全局变量中的传播函数以及相应输出的新请求数据进行删除。或者是说,可以在当前线程结束时,对全局变量中的传播函数以及相应输出的新请求数据进行删除。
作为一种可行的实施例,由于输入阶段中的输入函数、传播阶段中的传播函数以及执行阶段中的执行函数,实际上是为了实现对请求数据依次经过输入阶段、传播阶段以及执行阶段的整个过程进行跟踪,所以在进行步骤101之前,可以通过插桩工具对输入函数、传播函数以及执行函数进行插桩,以此来实现对请求数据依次经过输入阶段、传播阶段以及执行阶段的整个过程的跟踪。
综合前文所述,本发明实施例先通过输入函数获取待测web应用程序的请求数据;再通过n个传播函数对请求数据进行传播,得到n条新请求数据,其中,第一个传播函数的输入为请求数据,第n个传播函数的输入为第n-1个传播函数的输出,且每一个传播函数的输出均为一条新请求数据;之后又通过执行函数获取执行参数;最后根据执行参数、请求数据以及各新请求数据,判断待测web应用程序是否存在漏洞。在此过程中,第n个传播函数对第n-1个传播函数的输出进行获取前,本发明实施例会将n-1个传播函数以及相应的输出从当前线程变量复制到全局变量,且当第n个传播函数获取不到第n-1个传播函数的输出时,本发明实施例会从全局变量中获取第n-1个传播函数的输出。基于此,在多线程切换时,即使发生了对当前线程变量中的请求数据以及相应的函数流的跟踪丢失(也即第n个传播函数获取不到第n-1个传播函数的输出),但是由于全局变量中仍然存储有第n-1个传播函数的输出,所以也不会引起漏洞漏检的现象,从而能够有效地提升对待测web应用程序进行漏洞检测时的全面性和准确性。
请进一步参阅图2,图2为本发明实施例提供的web应用程序的漏洞检测设备的模块方框图。
如图2所示,本发明实施例还提供一种web应用程序的漏洞检测设备200,包括存储装置210及一个或多个处理器220,其中,存储装置210用于存储一个或多个程序,当一个或多个程序被一个或多个处理器220执行时,使得一个或多个处理器220执行如本发明实施例所提供的上述web应用程序的漏洞检测方法。
在一个实施方式中,web应用程序的漏洞检测设备200还可以包括总线230,用于存储装置210与一个或多个处理器220间的通信连接。
请进一步参阅图3,图3为本发明实施例提供的计算机可读存储介质的模块方框图。
如图3所示,本发明实施例还提供一种计算机可读存储介质300,该计算机可读存储介质300上存储有可执行指令310,该可执行指令310被执行时执行如本发明实施例所提供的上述web应用程序的漏洞检测方法。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk)等。
需要说明的是,本发明内容中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于产品类实施例而言,由于其与方法类实施例相似,所以描述的比较简单,相关之处参见方法类实施例的部分说明即可。
还需要说明的是,在本发明内容中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明内容。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本发明内容中所定义的一般原理可以在不脱离本发明内容的精神或范围的情况下,在其它实施例中实现。因此,本发明内容将不会被限制于本发明内容所示的这些实施例,而是要符合与本发明内容所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种web应用程序的漏洞检测方法,其特征在于,包括:
通过输入函数获取待测web应用程序的请求数据;所述请求数据与用户在所述待测web应用程序的前端的操作相关;
通过n个传播函数对所述请求数据进行传播,得到n条新请求数据;其中,n为大于1的正整数;第一个所述传播函数的输入为所述请求数据,第n个所述传播函数的输入为第n-1个所述传播函数的输出,且每一个所述传播函数的输出均为一条所述新请求数据,每一条所述新请求数据的数据类型均与所述请求数据不同;
第n个所述传播函数对第n-1个所述传播函数输出的所述新请求数据进行获取前,将n-1个所述传播函数以及相应输出的所述新请求数据从当前线程变量复制到全局变量,且当第n个所述传播函数获取不到第n-1个所述传播函数输出的所述新请求数据时,从所述全局变量中获取第n-1个所述传播函数输出的所述新请求数据;
通过执行函数获取执行参数;所述执行函数用于基于所述执行参数执行关键动作,所述关键动作与所述用户在所述待测web应用程序的前端的操作相关;
根据所述执行参数、所述请求数据以及各所述新请求数据,判断所述待测web应用程序是否存在漏洞。
2.如权利要求1所述的web应用程序的漏洞检测方法,其特征在于,所述根据所述执行参数、所述请求数据以及各所述新请求数据,判断所述待测web应用程序是否存在漏洞之后,还包括:
以当前线程结束的时刻作为参考时刻,对所述全局变量中的所述传播函数以及相应输出的所述新请求数据进行删除。
3.如权利要求1所述的web应用程序的漏洞检测方法,其特征在于,所述根据所述执行参数、所述请求数据以及各所述新请求数据,判断所述待测web应用程序是否存在漏洞,包括:
判断所述执行参数中是否存在漏洞攻击代码;
若不存在,则确认所述待测web应用程序不存在漏洞;
若存在,则参考所述执行参数与所述请求数据的第一相关性评价指标,以及所述执行参数与各所述新请求数据的第二相关性评价指标,判断所述待测web应用程序是否存在漏洞;其中,若所述第一相关性评价指标大于或等于第一相关性阈值,以及各所述第二相关性评价指标均大于或等于第二相关性阈值,则确认所述待测web应用程序存在漏洞。
4.如权利要求3所述的web应用程序的漏洞检测方法,其特征在于,所述根据所述执行参数、所述请求数据以及各所述新请求数据,判断所述待测web应用程序是否存在漏洞之后,还包括:
若确认所述待测web应用程序存在漏洞,则对所述执行函数执行所述关键动作进行拦截,并输出告警提示。
5.如权利要求1所述的web应用程序的漏洞检测方法,其特征在于,所述传播函数包括常规传播函数以及净化传播函数;其中,所述净化传播函数表征已对所述净化传播函数的输入进行检测,且检测结果为所述净化传播函数的输入不存在漏洞攻击代码;
所述通过n个传播函数对所述请求数据进行传播,还包括:
若n个所述传播函数中至少包括一个所述净化传播函数,则直接确认所述待测web应用程序不存在漏洞。
6.如权利要求1所述的web应用程序的漏洞检测方法,其特征在于,所述通过输入函数获取待测web应用程序的请求数据之后,还包括:
创建基于当前线程的线程容器;
将所述请求数据以及所述输入函数关联存储至所述线程容器。
7.如权利要求6所述的web应用程序的漏洞检测方法,其特征在于,所述通过n个传播函数对所述请求数据进行传播,得到n条新请求数据,还包括:
在第n个所述传播函数对第n-1个所述传播函数输出的所述新请求数据进行获取前,将n-1个所述传播函数以及相应输出的所述新请求数据关联存储至所述线程容器;
所述通过执行函数获取执行参数之后,还包括:
将所述执行函数以及所述执行参数关联存储至所述线程容器。
8.如权利要求1所述的web应用程序的漏洞检测方法,其特征在于,所述关键动作包括:与数据库进行交互、与操作系统进行交互以及与文件系统进行交互中的至少一种;
当所述关键动作为与数据库进行交互时,所述执行参数为与数据库交互时的sql语句;当所述关键动作为与操作系统进行交互时,所述执行参数为与操作系统交互时的命令语句;当所述关键动作为与文件系统进行交互时,所述执行参数为与文件系统交互时的文件命令。
9.一种web应用程序的漏洞检测设备,其特征在于,包括:存储装置及一个或多个处理器,所述存储装置用于存储一个或多个程序,其中,当一个或多个所述程序被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有可执行指令,所述可执行指令被执行时执行如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110863694.1A CN113688395B (zh) | 2021-07-29 | 2021-07-29 | web应用程序的漏洞检测方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110863694.1A CN113688395B (zh) | 2021-07-29 | 2021-07-29 | web应用程序的漏洞检测方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113688395A true CN113688395A (zh) | 2021-11-23 |
CN113688395B CN113688395B (zh) | 2023-08-11 |
Family
ID=78578203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110863694.1A Active CN113688395B (zh) | 2021-07-29 | 2021-07-29 | web应用程序的漏洞检测方法、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688395B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080184208A1 (en) * | 2007-01-30 | 2008-07-31 | Sreedhar Vugranam C | Method and apparatus for detecting vulnerabilities and bugs in software applications |
CN101923618A (zh) * | 2010-08-19 | 2010-12-22 | 中国航天科技集团公司第七一○研究所 | 一种基于隐马尔可夫模型的汇编指令级漏洞检测方法 |
CN104778413A (zh) * | 2015-04-15 | 2015-07-15 | 南京大学 | 一种基于模拟攻击的软件漏洞检测方法 |
CN107704377A (zh) * | 2016-09-28 | 2018-02-16 | 华侨大学 | 二阶污点传播型漏洞的检测方法 |
CN110196815A (zh) * | 2019-07-26 | 2019-09-03 | 中国人民解放军国防科技大学 | 一种软件模糊测试方法 |
CN111046396A (zh) * | 2020-03-13 | 2020-04-21 | 深圳开源互联网安全技术有限公司 | web应用测试数据流跟踪方法及系统 |
CN111259399A (zh) * | 2020-04-28 | 2020-06-09 | 深圳开源互联网安全技术有限公司 | 用于web应用的动态检测漏洞攻击的方法及系统 |
WO2020252698A1 (zh) * | 2019-06-19 | 2020-12-24 | 深圳开源互联网安全技术有限公司 | 一种数据流跟踪方法、系统、存储介质和服务器 |
-
2021
- 2021-07-29 CN CN202110863694.1A patent/CN113688395B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080184208A1 (en) * | 2007-01-30 | 2008-07-31 | Sreedhar Vugranam C | Method and apparatus for detecting vulnerabilities and bugs in software applications |
CN101923618A (zh) * | 2010-08-19 | 2010-12-22 | 中国航天科技集团公司第七一○研究所 | 一种基于隐马尔可夫模型的汇编指令级漏洞检测方法 |
CN104778413A (zh) * | 2015-04-15 | 2015-07-15 | 南京大学 | 一种基于模拟攻击的软件漏洞检测方法 |
CN107704377A (zh) * | 2016-09-28 | 2018-02-16 | 华侨大学 | 二阶污点传播型漏洞的检测方法 |
WO2020252698A1 (zh) * | 2019-06-19 | 2020-12-24 | 深圳开源互联网安全技术有限公司 | 一种数据流跟踪方法、系统、存储介质和服务器 |
CN110196815A (zh) * | 2019-07-26 | 2019-09-03 | 中国人民解放军国防科技大学 | 一种软件模糊测试方法 |
CN111046396A (zh) * | 2020-03-13 | 2020-04-21 | 深圳开源互联网安全技术有限公司 | web应用测试数据流跟踪方法及系统 |
CN111259399A (zh) * | 2020-04-28 | 2020-06-09 | 深圳开源互联网安全技术有限公司 | 用于web应用的动态检测漏洞攻击的方法及系统 |
Non-Patent Citations (3)
Title |
---|
ACHMAD FAHRURROZI MASKUR等: "Static Code Analysis Tools with the Taint Analysis Method for Detecting Web Application Vulnerability", pages 1 - 6 * |
印鸿吉等: "采用图遍历算法的服务端请求伪造漏洞检测", vol. 56, no. 19, pages 114 - 119 * |
程诚等: "基于模糊测试的Web应用漏洞检测优化方法", pages 198 - 202 * |
Also Published As
Publication number | Publication date |
---|---|
CN113688395B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
He et al. | Understanding and detecting evolution-induced compatibility issues in Android apps | |
US7860842B2 (en) | Mechanism to detect and analyze SQL injection threats | |
CN101661543B (zh) | 软件源代码安全漏洞的检测方法及检测装置 | |
CN100461132C (zh) | 基于源代码静态分析的软件安全代码分析器及其检测方法 | |
AU2014240232B2 (en) | Testing framework for policy-based workflows | |
US20160371494A1 (en) | Software Vulnerabilities Detection System and Methods | |
US10055590B2 (en) | Rule matching in the presence of languages with no types or as an adjunct to current analyses for security vulnerability analysis | |
He et al. | Sofi: Reflection-augmented fuzzing for javascript engines | |
CN116842531B (zh) | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 | |
Scalco et al. | On the feasibility of detecting injections in malicious npm packages | |
CN115033894B (zh) | 一种基于知识图谱的软件组件供应链安全检测方法及装置 | |
CN110958221A (zh) | 动态检测xml外部实体注入漏洞的方法及装置 | |
de Poel et al. | Automated security review of PHP web applications with static code analysis | |
CN113961930A (zh) | Sql注入漏洞检测方法、装置及电子设备 | |
CN114021051A (zh) | web应用的漏洞检测方法、设备及计算机可读存储介质 | |
Wang et al. | Scaling static taint analysis to industrial soa applications: A case study at alibaba | |
EP2107484A2 (en) | A method and device for code audit | |
Zhu et al. | Detecting privilege escalation attacks through instrumenting web application source code | |
Jaeger et al. | Normalizing security events with a hierarchical knowledge base | |
Ma et al. | Code analysis with static application security testing for python program | |
CN113688395B (zh) | web应用程序的漏洞检测方法、设备及计算机可读存储介质 | |
US9098623B2 (en) | Static analysis of validator routines | |
CN114238244B (zh) | 一种结果集生成方法、装置、设备及存储介质 | |
CN113779589B (zh) | 一种安卓智能手机应用误配置检测方法 | |
CN114691197A (zh) | 代码分析方法、装置、电子设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |