CN110929264B - 漏洞检测方法、装置、电子设备及可读存储介质 - Google Patents
漏洞检测方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN110929264B CN110929264B CN201911154446.9A CN201911154446A CN110929264B CN 110929264 B CN110929264 B CN 110929264B CN 201911154446 A CN201911154446 A CN 201911154446A CN 110929264 B CN110929264 B CN 110929264B
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- attack
- application program
- information
- source file
- 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
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
-
- 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
-
- 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/1425—Traffic logging, e.g. anomaly detection
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种漏洞检测方法,包括:根据应用程序的源文件,生成针对应用程序的攻击脚本;根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞;以及在确定应用程序存在漏洞的情况下:根据源文件,在源文件中插入检测函数;根据攻击脚本向应用程序发起二次攻击请求,以依据插入检测函数的源文件运行应用程序,得到第一运行信息;以及根据第一运行信息,确定漏洞的漏洞信息。本公开还提供了一种漏洞检测装置、一种电子设备及一种计算机可读存储介质。
Description
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种漏洞检测方法、装置、电子设备及可读存储介质。
背景技术
随着计算机技术的发展,实现不同功能的各种应用程序已成为生活中不可或缺的一部分。但在应用程序促进社会发展的同时,也可能因为漏洞问题而影响到用户隐私信息和财产的安全性。为了发现应用程序的漏洞和缺陷,确定应用程序在使用中是安全的,就需要利用应用安全测试技术识别应用程序中的行为薄弱点和漏洞。
在实现本公开构思的过程中,发明人发现相关技术中至少存在以下问题:
传统的动态应用安全测试是一种黑盒测试技术,在测试或运行阶段分析应用程序的动态运行状态,模拟黑客主要测试应用程序的功能点,无需了解应用程序内部的逻辑结构。采用攻击特征库来做漏洞发现与验证,是业界应用安全测试使用非常普遍的一种安全测试方案。但其一方面需要测试人员尽可能的把应用程序的结构爬取完整,另一方面需要对被测应用程序发送攻击漏洞包。再者,动态应用安全测试在发现漏洞后需要较长时间来进行漏洞定位和原因分析。
考虑到大部分漏洞是由错误的编码产生的,因此可以考虑采用静态安全测试技术从语义上理解程序的代码、依赖关系和配置文件。但该静态安全测试只能对源代码进行检测。考虑到程序运行时会有不同的路径,测试基于代码,只能测试代码的正确性,不能覆盖功能设计的正确性。因此,静态安全测试的代码分析具有局限性。
发明内容
有鉴于此,本公开提供了一种能够对应用程序的漏洞进行有效检测的漏洞检测方法、装置、电子设备及介质。
在本公开的一个方面提供了一种漏洞检测方法,该方法包括:根据应用程序的源文件,生成针对应用程序的攻击脚本;根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞;以及在确定应用程序存在漏洞的情况下:根据源文件,在源文件中插入检测函数;根据攻击脚本向应用程序发起二次攻击请求,以依据插入检测函数的源文件运行应用程序,得到第一运行信息;以及根据第一运行信息,确定漏洞的漏洞信息。
根据本公开的实施例,上述生成针对应用程序的攻击脚本包括:根据源文件,从特征库中获取与源文件匹配的攻击向量;以及根据攻击向量及攻击脚本模板,生成攻击脚本。
根据本公开的实施例,上述根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞包括:根据攻击脚本向应用程序发起一次攻击请求,以依据源文件运行应用程序,得到第二运行信息;以及在第二运行信息存在异常的情况下,确定应用程序存在漏洞。
根据本公开的实施例,上述在源文件中插入检测函数包括:加载运行应用程序时调用的源文件中的方法类;确定调用的源文件中的方法类中属于预定方法类的已定义方法类;以及向源文件中已定义方法类的位置处插入检测函数。其中,预定方法类包括独立于应用程序的代理程序中定义的方法类。
根据本公开的实施例,上述确定漏洞的漏洞信息包括:根据第一运行信息,确定应用程序运行过程中插入检测函数的源文件是否存在异常调用;以及在存在异常调用的情况下,确定源文件中源文件发起异常调用依据的代码的属性信息为漏洞信息。
根据本公开的实施例,上述漏洞检测方法还包括在确定漏洞的漏洞信息之后:根据漏洞信息,确定漏洞的危险等级和/或应用程序的风险等级;以及展示漏洞信息、漏洞的危险等级和/或应用程序的风险等级。
根据本公开的实施例,上述漏洞检测方法还包括在确定漏洞的漏洞信息之后:向为应用程序的运行提供支持的服务器发送告警信息,以指示服务器在接收到应用程序的请求时,丢弃应用程序的请求。
根据本公开的实施例,上述漏洞检测方法还包括在确定漏洞的漏洞信息后:获取与漏洞信息匹配的补丁信息;以及根据补丁信息,解决所匹配的漏洞。
根据本公开的实施例,上述漏洞检测方法还包括构建特征库,该构建特征库包括:获取针对多个漏洞样本的攻击特征报文;提取攻击特征报文的攻击特征,得到多个攻击特征;根据预定规则,生成针对多个攻击特征的多个攻击向量;以及根据多个漏洞样本的上下文信息,建立多个攻击向量与上下文信息的映射关系。
本公开的另一方面提供了一种漏洞检测装置,包括:攻击脚本生成模块,用于根据应用程序的源文件,生成针对应用程序的攻击脚本;漏洞确定模块,用于根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞;检测函数插入模块,用于在确定应用程序存在漏洞的情况下,根据源文件,在源文件中插入检测函数;运行信息获得模块,用于根据攻击脚本向应用程序发起二次攻击请求,以依据插入检测函数的源文件运行应用程序,得到第一运行信息;以及漏洞信息确定模块,用于根据第一运行信息,确定漏洞的漏洞信息。
本公开的另一方面提供了一种电子设备,包括一个或多个处理器以及存储装置,存储装置用于存储一个或多个程序。其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述的漏洞检测方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的漏洞检测方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的漏洞检测方法。
根据本公开的实施例,通过根据源文本自动化的生成针对应用程序的攻击脚本,并通过向源文件中插入检测函数进行二次攻击,可以实现根据运行信息动态分析代码运行流,从而可以在保证检测准确率的同时,有效定位漏洞位置。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的漏洞检测方法、装置、电子设备及可读存储介质的应用场景图;
图2示意性示出了根据本公开示意性实施例一的漏洞检测方法的流程图;
图3示意性示出了根据本公开示意性实施例二的漏洞检测方法的流程图;
图4示意性示出了根据本公开实施例的构建特征库的流程图;
图5示意性示出了根据本公开实施例的生成针对应用程序的攻击脚本的流程图;
图6示意性示出了根据本公开实施例的确定应用程序是否存在漏洞的流程图;
图7示意性示出了根据本公开实施例的在源文件中插入检测函数的流程图;
图8示意性示出了根据本公开实施例的确定漏洞的漏洞信息的流程图;
图9示意性示出了根据本公开示意性实施例三的漏洞检测方法的流程图;
图10示意性示出了根据本公开示意性实施例四的漏洞检测方法的流程图;
图11示意性示出了根据本公开示意性实施例五的漏洞检测方法的流程图;
图12示意性示出了根据本公开实施例的漏洞检测装置的结构框图;以及
图13示意性示出了根据本公开实施例的适于执行漏洞检测方法的电子设备的结构框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开的实施例提供了一种漏洞检测方法,该方法包括:首先根据应用程序的源文件,生成针对应用程序的攻击脚本。然后根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞。最后仅在确定应用程序存在漏洞的情况下:先根据源文件,在源文件中插入检测函数;然后根据攻击脚本向应用程序发起二次攻击请求,以依据插入检测函数的源文件运行应用程序,得到第一运行信息,最后根据第一运行信息,确定漏洞的漏洞信息。
图1示意性示出了根据本公开实施例的漏洞检测方法、装置、电子设备及可读存储介质的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的应用场景100例如可以包括终端设备101、配置有代理的至少一个应用程序102及服务器103。
该终端设备101可以是具有处理功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等。该终端设备101中可以安装有所述配置有代理的至少一个应用程序102及其他应用程序。该至少一个应用程序和/或其他应用程序例如可以包括网页浏览器应用、搜索类应用、即时通信类应用、支付类应用等(仅为示例)。
根据本公开的实施例,至少一个应用程序中的每个应用程序设置有代理,该代理配置有连通性,以用于采集每个应用程序的运行信息,并将运行信息发送给终端设备101或服务器103,以使得终端设备101或服务器103根据该运行信息确定应用程序是否存在漏洞,并在存在漏洞的情况下,根据运行信息对应用程序的漏洞进行定位。
根据本公开的实施例,终端设备101与服务器103之间例如可以通过网络进行通信。该网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等。该服务器103可以是为至少一个应用程序的运行提供支持的后台管理服务器。
根据本公开的实施例,该应用场景100例如还可以包括运维人员,终端设备101例如可以具有显示屏,用于向运维人员展示定位得到漏洞的漏洞信息。该漏洞信息例如可以包括漏洞在应用程序中的位置信息、漏洞类型、漏洞风险等级等。
需要说明的是,本公开实施例所提供的漏洞检测方法一般可以由终端设备101或服务器103执行。相应地,本公开实施例所提供的漏洞检测装置一般可以设置于终端设备101或服务器103中。
应该理解,上述终端设备101、应用程序102和服务器103的类型仅仅是示意性的,根据实现需要,可以具有任意类型的终端设备101、应用程序102和服务器103。
以下将结合图2~图11对本公开提供的漏洞检测方法进行详细描述。
图2示意性示出了根据本公开示意性实施例一的漏洞检测方法的流程图。
如图2所示,本公开实施例的漏洞检测方法可以包括操作S210~操作S250。
在操作S210,根据应用程序的源文件,生成针对应用程序的攻击脚本。
根据本公开的实施例,应用程序的源文件例如可以为应用程序的运行脚本。针对应用程序的攻击脚本例如可以根据应用程序的功能来生成,或者可以根据源文件包括的代码类型等生成。例如,若应用程序具有查询功能,考虑到可能存在SQL注入漏洞,因此生成的攻击脚本可以为SQL注入脚本。
根据本公开的实施例,在生成攻击脚本前,例如还可以统计得到受到过攻击的多个应用程序的源文件及该多个应用程序所受攻击对应的攻击特征报文。然后先根据当前待检测的应用程序的源文件,从统计分析得到多个应用程序的源文件中与待检测应用程序的源文件相似度最高的第一源文件,然后将攻击该第一源文件所属的应用程序的攻击特征报文作为待检测应用程序的攻击脚本。
根据本公开的实施例,该操作S210例如可以通过图5描述的操作S511~操作S512来实现,在此不再赘述。
在操作S220,根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞。
根据本公开的实施例,该根据攻击脚本向应用程序发起攻击请求例如可以包括:在应用程序运行的过程中,将攻击脚本插入源文本中,通过运行插入攻击脚本的源文件,得到运行信息,然后根据运行信息确定应用程序是否存在漏洞。根据本公开的实施例,该操作S220例如可以通过图6描述的操作S621~操作S622来实现,在此不再赘述。
在操作S230,在确定应用程序存在漏洞的情况下,根据源文件,在源文件中插入检测函数。
根据本公开的实施例,检测函数例如可以为用于扫描和检测代码的函数,以用于对源文件中的代码进行扫描和检测。根据本公开的实施例,在向源文件中插入检测函数时,例如可以先根据源文件中的代码的上下文信息来设定插入点,然后在插入点的位置处插入检测函数。根据本公开的实施例,该操作S230例如可以通过图7描述的操作S731~操作S733来实现,在此不再赘述。
在操作S240,根据攻击脚本向应用程序发起二次攻击请求,以依据插入检测函数的源文件运行应用程序,得到第一运行信息。
根据本公开的实施例,该操作S240例如可以包括:采用类似于操作S220的方法,在应用程序运行的过程中,将攻击脚本插入已经插入有检测函数的源文本中,得到第一运行信息。该第一运行信息例如可以通过在应用程序中设置的代理获取。
根据本公开的实施例,第一运行信息例如可以包括:运行过程中调用的功能、运行过程中调用的函数、运行过程中调用的方法类、弹出的对话框信息等。
在操作S250,根据第一运行信息,确定漏洞的漏洞信息。
根据本公开的实施例,该操作S250例如可以包括:先确定第一运行信息中是否存在异常信息。若存在异常信息,则确定源文件中产生异常信息的代码为存在漏洞的代码。最后根据存在漏洞的代码,得到漏洞信息。
根据本公开的实施例,漏洞信息例如可以包括:存在漏洞的代码的URL(统一资源定位符)、存在漏洞的源文件的文件名Filename、存在漏洞的代码在运行过程中调用的函数method、存在漏洞的代码涉及的参量Parameters和/或存在漏洞的代码在源文件中的行数line number等。
根据本公开的实施例,该操作S350例如可以通过图8描述的操作S851~操作S852实现,在此不再赘述。
综上可知,本公开实施例的漏洞检测方法,可以根据源文本自动化的生成针对应用程序的攻击脚本,并通过向源文件中插入检测函数进行二次攻击,可以实现根据运行信息动态分析代码运行流,从而可以在保证检测准确率的同时,有效定位漏洞位置。
根据本公开的实施例,为了便于生成攻击脚本,还可以收集已受到攻击的应用程序对应的攻击特征报文,以分析得到生成针对应用程序的攻击脚本的规则和逻辑。或者也可以分析该收集的攻击特征报文,得到攻击脚本中包括的攻击向量,并综合所有攻击向量得到特征库。此种情况下,在生成对待检测应用程序进行攻击的攻击脚本之前,还应包括构建该特征库的操作。
图3示意性示出了根据本公开示意性实施例二的漏洞检测方法的流程图,图4示意性示出了根据本公开实施例的构建特征库的流程图
如图3所示,本公开实施例的漏洞检测方法除了操作S210~操作S250外,还可以包括操作S360:构建特征库。
根据本公开的实施例,该特征库中可以包括有前述根据收集的攻击特征报文提取得到的多个特征向量。
根据本公开的实施例,为了提高该特征库的精确度,提高根据特征向量生成的攻击脚本的攻击效率,该多个特征向量例如还可以分为多个类别,该类别例如可以使用机器学习分类算法分类得到。机器学习分类算法例如可以根据特征向量所属的攻击特征报文所针对的漏洞对多个特征向量进行分类。例如,若攻击特征报文所针对的漏洞为SQL注入漏洞时,从该攻击特征报文中提取得到的特征向量可以划分为SQL类别等。
根据本公开的实施例,如图4所示,该构建特征库的操作S360例如可以通过操作S461~操作S464来实现。
在操作S461,获取针对多个漏洞样本的攻击特征报文。在操作S462,提取攻击特征报文的攻击特征,得到多个攻击特征。
根据本公开的实施例,服务器130中例如可以存储有大量的攻击特征报文和漏洞样本的组合,每个组合中的攻击特征报文是对该组合中的漏洞样本发起过攻击的攻击脚本。或者,该攻击特征报文也可以是实时检测到的对其他应用程序发起攻击的攻击脚本。
根据本公开的实施例,操作S462例如可以包括:采用基于网络的攻击特征自动提取(NSG)方法、白盒方法、灰盒方法或黑盒方法等进行攻击特征的提取。提取得到的攻击特征例如可以包括字符型的特征、数字型的特征等。其中,字符型的特征指通过字符串(二进制串)的组成、分布或频率来描述攻击。
在操作S463,根据预定规则,生成针对多个攻击特征的多个攻击向量。根据本公开的实施例,该操作S463例如可以包括:将多个攻击特征根据预定的命名规则进行命名。或者,可以将提取的多个攻击特征根据攻击脚本模板的格式要求,进行格式转换,得到能够直接传入攻击脚本模板的多个攻击向量。
在操作S464,根据多个漏洞样本的上下文信息,建立多个攻击向量与上下文信息的映射关系。
根据本公开的实施例,该操作S464例如可以包括:先获取多个漏洞样本的上下文信息,然后再将由与每个漏洞样本属于同一组合的攻击特征报文提取的攻击特征所针对的攻击向量及该每个漏洞样本的上下文信息之间建立映射关系。其中,上下文信息例如可以包括:漏洞样本中调用函数的信息、各个功能在漏洞样本中的前后关系、漏洞样本中调用的方法类的类信息等。
根据本公开的实施例,在一实施例中,操作S461~操作S464例如可以包括:先收集现有的攻击脚本,然后根据攻击类型对现有的攻击脚本进行分类。例如,若收集的攻击脚本包括SQL注入脚本,可以通过预定规则将从SQL注入脚本提取得到的多个攻击特征存储为多个SQL注入特征以作为攻击向量,并由该多个SQL注入特征形成SQL注入特征库。最后将该多个SQL注入特征与应用程序中的查询功能建立映射关系。可以理解的是,上述收集的攻击脚本仅作为示例以利于理解本公开,本公开对此不作限定。例如,收集的攻击脚本还可以包括跨站脚本攻击的脚本。
根据本公开的实施例,为了对攻击特征进行分类,例如可以首先对攻击特征报文进行分类,将属于同一类别的攻击特征报文提取到的攻击特征划分为同一类别的攻击特征。或者,对攻击特征进行分类例如可以包括在对攻击特征报文进行特征提取后,再对提取得到的所有攻击特征进行分类。
根据本公开的实施例,在创建了特征库之后,考虑到特征库中的攻击向量与应用程序的上下文信息建立有映射关系,因此就可以将与待检测的应用程序的源文本具有映射关系的攻击向量来生成攻击脚本,从而提高生成的攻击脚本的准确性。
图5示意性示出了根据本公开实施例的生成针对应用程序的攻击脚本的流程图。
如图5所示,本公开实施例的生成针对应用程序的攻击脚本的操作S210例如可以包括操作S511~操作S512。
在操作S511,根据源文件,从特征库中获取与源文件匹配的攻击向量。根据本公开的实施例,该操作S511例如可以包括:先确定源文件中定义的功能,然后将特征库中与源文件中定义的功能具有映射关系的攻击向量作为与源文件匹配的攻击向量。
在操作S512,根据攻击向量及攻击脚本模板,生成攻击脚本。
根据本公开的实施例,对于属于不同类别的攻击向量,例如可以具有不同的攻击脚本模板。该攻击脚本模板例如可以为攻击脚本的框架,该框架中设定有攻击向量注入空间,例如通过将操作S511中获取的攻击向量传入该攻击脚本框架中的攻击向量注入空间,即可生成攻击脚本。
根据本公开的实施例,对于具有查询功能的应用程序,确定的攻击向量例如可以为SQL注入特征name=admin’和pass=’1234,通过将该SQL注入特征admin’及应用程序IP地址传入作为示例的攻击脚本模板http://XXXXXX/login.asp?name=XX&pass=XXXX中,可以得到攻击脚本http://172.18.2.11/http://XXXXXX/login.asp?name=admin’&pass=’1234。可以理解的是,上述的攻击向量、攻击脚本模板、生成的攻击脚本仅作为示例以利于理解本公开,本公开对此不作限定。
图6示意性示出了根据本公开实施例的确定应用程序是否存在漏洞的流程图。
如图6所示,本公开实施例的确定应用程序是否存在漏洞的操作S220例如可以包括操作S621~操作S622。
在操作S621,根据攻击脚本向应用程序发起一次攻击请求,以依据源文件运行应用程序,得到第二运行信息。根据本公开的实施例,该第二运行信息与前述的第一运行信息类似,在此不再赘述。
在操作S622,在第二运行信息存在异常的情况下,确定应用程序存在漏洞。
根据本公开的实施例,该操作S622例如可以包括:将第二运行信息与待检测的应用程序的标准运行信息进行比对,来确定第二运行信息是否存在异常。其中,标准运行信息例如可以为预设定的不存在漏洞的应用程序的运行信息。例如,若应用程序完成查询功能时需要调用的方法类包括依次调用的A、B、C,则标准运行信息中包括该依次调用A、B、C的信息。此时,若操作S621得到的第二运行信息中实现检索功能时调用的方法类为依次调用的B、A、C,则可以确定第二运行信息存在异常,应用程序存在漏洞。或者,若第二运行信息中调用的某个类为应用程序发给服务器的请求中构造的非法类,则可以确定第二运行信息存在异常,应用程序存在漏洞。或者,若第二运行信息中包括弹出多余对话框的运行信息,则可以确定第二运行信息存在异常,应用程序存在漏洞。
根据本公开的实施例,为了在源文件中插入检测函数,例如可以引入Instrumentation,该Instrumentation是独立于应用程序之外的代理程序,该代理程序用于检测和协助运行在JVM上的应用程序。该Instrumentation中可以定义有多个方法类,其能够动态改变方法类的定义。根据本公开的实施例,例如可以通过-javaagent参数指定一个特定的jar文件来启动Instrumentation的代理程序。
图7示意性示出了根据本公开实施例的在源文件中插入检测函数的流程图。
如图7所示,本公开实施例的在源文件中插入检测函数的操作S230例如可以包括操作S731~操作S733。
在操作S731,加载运行应用程序时调用的源文件中的方法类。根据本公开的实施例,该操作S731例如可以包括:根据源文件,确定应用程序在运行过程中需要调用的所有方法类。
在操作S732,确定调用的源文件中的方法类中属于预定类的已定义方法类。该操作S732可以包括:判断操作S731中得到的所有方法类中是否包括Instrumentation中定义的方法类。若包括,则将所有方法类中在Instrumentation中有定义的方法类作为已定义方法类。
在确定了已定义方法类之后,即可执行操作S733,向源文件中已定义方法类的位置处插入检测函数。
根据本公开的实施例,整个插入检测函数的流程例如可以包括:在一个普通Java程序运行时,启动Instrumentation的代理程序。该代理程序可以使运维人员获取并访问JVM运行时的字节码,并提供对字节码进行编辑的操作,因此,运维人员可以将自己的代码注入。JVM虚拟机启动,在应用程序运行时,如果启动过程中加载的方法类有在代理程序中定义,则走hook流程进行插桩,在类的特定位置插入检测函数的代码。
图8示意性示出了根据本公开实施例的确定漏洞的漏洞信息的流程图。
如图8所示,本公开实施例的确定漏洞的漏洞信息的操作S250例如可以包括操作S851~操作S852。
在操作S851,根据第一运行信息,确定插入检测函数的源文件是否存在异常调用。
根据本公开的实施例,确定插入检测函数的源文件是否存在异常调用的方法与前述的操作S622中确定第二运行信息是否存在异常的方法类似。例如,若应用程序的运行过程产生了具体的文件读写数据库查询等行为,正常调用流程中会调用到一个被ASM修改后插入检测函数的方法类,从而检测代码分析是否合法。如果从第一运行信息得到的调用流程与前述正常调用流程不一致,则可以确定存在对插入检测函数的源文件的异常调用。
在操作S852,在存在异常调用的情况下,确定源文件中发起异常调用依据的代码的属性信息为漏洞信息。
根据本公开的实施例,在存在异常调用的情况下,则可以说明应用程序存在漏洞,该漏洞是由于源代码中发起异常调用的代码引起的。因此确定源文件中发起操作S851中确定的异常调用所依据的代码为引起漏洞的代码。通过获取该引起漏洞的代码的属性信息即可得到漏洞信息。该漏洞信息包括引起漏洞的代码调用的函数信息、调用的方法类信息、引起漏洞的代码的URL、在源文件中的行号等。
根据本公开的实施例,例如对于反序列化漏洞,无论通过何种方法绕过补丁,最终都需要调用反序列化方法,并且调用java的执行命令代码。因此,若源文件存在对反序列化方法的调用,则可以确定存在异常调用。将源文件中调用反序列化方法的代码的属性信息作为漏洞信息。
根据本公开的实施例,在确定存在漏洞并得到漏洞信息后,为了便于运维人员对漏洞进行修补,例如还可以对漏洞进行危险等级的划分,或者对应用程序进行风险等级的划分,从而在存在多个漏洞、或对多个应用程序进行检测时,便于开发人员确定漏洞修补的轻重缓急。
图9示意性示出了根据本公开示意性实施例三的漏洞检测方法的流程图。
如图9所示,本公开实施例的漏洞检测方法除了操作S210~操作S230外,例如还可以包括操作S970~操作S980。该操作S970~操作S980可以在操作S250之后执行。
在操作S970,根据漏洞信息,确定漏洞的危险等级和/或应用程序的风险等级。在操作S980,展示漏洞信息、漏洞的危险等级和/或应用程序的风险等级。
根据本公开的实施例,该操作S970例如可以包括:先根据漏洞信息,确定漏洞的类型,然后根据漏洞类型确定漏洞的危险等级。根据本公开的实施例,在确定漏洞的类型时,例如可以通过将漏洞信息与漏洞对照表进行比对来确定。漏洞对照表中包括漏洞信息列和漏洞类型列。
根据本公开的实施例,漏洞的危险等级例如可以包括高危、中危、低危。其中,高危漏洞例如可以包括可远程利用并能直接获取系统权限(例如服务器端权限、客户端权限)或者能够导致严重的信息泄露的漏洞,例如命令注入、远程命令执行、上传获取WebShell、SQL注入、缓冲区溢出、绕过认证直接访问管理后台、核心业务非授权访问、核心业务后台弱密码等。中危漏洞例如可以包括直接盗取用户身份信息或者能够导致普通级别的信息泄漏的漏洞,包括但不限于存储型XSS漏洞、客户端明文密码存储等。低危漏洞例如可以包括能够导致轻微信息泄露的安全漏洞,包括但不限于反射型XSS(包括反射型DOM-XSS)、JSONHijacking、CSRF(跨站请求伪造)、路径信息泄露、SVN信息泄露、phpinfo等。
根据本公开的实施例,应用程序的风险等级例如可以根据应用程序的源文件中包括的漏洞的个数及漏洞的类别确定。例如,若应用程序的源文件包括高危漏洞或漏洞个数较多,则可以确定应用程序的风险等级较高。或者,若应用程序的源文件只要存在高危漏洞,则将该应用程序的风险等级设定为最高。若应用程序仅包括一个漏洞且该一个漏洞为低危漏洞,则确定该应用程序的风险等级最低等。
在确定漏洞的危险等级和/或应用程序的风险等级后,例如可以通过终端设备101的显示屏进行展示,以便于运维人员确定漏洞修补的紧急程度。根据本公开的实施例,在展示该危险等级和/或风险等级的同时,例如还可以展示漏洞信息,以便于运维人员定位到需要修补的漏洞所在的位置等。
根据本公开的实施例,在确定应用程序存在漏洞之后,为了避免恶意攻击,还应及时向服务器103反馈告警信息,以防止在对漏洞的修补过程中服务器103或终端设备101被恶意攻击。另外,为了保证漏洞信息的正常获取,该告警信息例如可以在通过操作S250得到漏洞信息之后反馈。
图10示意性示出了根据本公开示意性实施例四的漏洞检测方法的流程图。
如图10所示,本公开实施例的漏洞检测方法除了操作S210~操作S250外,还可以包括操作S1090,该操作S1090可以在操作S250之后执行,以在保证能够得到告警信息的同时,尽可能避免恶意攻击。
在操作S1090,向为应用程序的运行提供支持的服务器发送告警信息,以指示服务器在接收到应用程序的请求时,丢弃应用程序的请求。通过该操作S1090,即使受到恶意攻击,也不会造成信息的泄露等。
根据本公开的实施例,该告警信息例如还可以同时发送给终端设备101的操作系统,以使得操作系统在接收到应用程序的请求时丢弃该请求,避免终端设备101本地信息的泄露。
根据本公开的实施例,在确定了漏洞信息后,本公开实施例的漏洞检测方法例如还可以提供补丁策略,以对漏洞进行自动修补。
图11示意性示出了根据本公开示意性实施例五的漏洞检测方法的流程图。
如图11所示,本公开实施例的信息处理方法除了操作S210~操作S250外,还可以包括操作S1100~操作S1110。该操作S1100~操作S1110可以在操作S250之后执行。
在操作S1100,获取与漏洞信息匹配的补丁信息。
根据本公开的实施例,该补丁信息例如可以是根据攻击特征库中各个攻击特征预先设定的补丁信息,或者可以是对已受到攻击的应用程序进行修补时使用的补丁脚本。根据历史漏洞信息与补丁信息例如可以构建有补丁对照表。因此,操作S1100例如可以包括:根据漏洞信息,确定补丁对照表中与该漏洞信息对应的补丁信息,然后再从服务器103中获取对应的补丁信息。
在操作S1110,根据补丁信息,解决所匹配的漏洞。根据本公开的实施例,该操作S1110例如可以包括:通过运行补丁信息,实现对与该补丁信息匹配的漏洞的修补。
根据本公开的实施例,在服务器103和/或终端设备101根据告警信息停止响应应用程序的请求后,且完成漏洞的修补后,本公开实施例的漏洞检测方法例如还可以向服务器103和/或终端设备101发送恢复请求,以恢复服务器103和/或终端设备101对应用程序的请求的响应,保证修补漏洞后的应用程序的正常运行。
综上可知,本公开实施例的漏洞检测方法,由于可以根据运行信息动态分析代码运行流,因此可以有效发现漏洞。再者,由于本公开实施例的漏洞检测方法可以确定漏洞的危险等级和/或应用程序的风险等级,并可展示漏洞信息和该危险等级、风险等级,因此可以向运维提供全方位多角度的可视化分析结果,便于运维人员准确掌握应用系统的安全状况。
另外,通过上述的漏洞监测方法,可以在完成应用程序的功能测试的同时完成漏洞检测,而不会受软件复杂度的影响。因此,本公开实施例的漏洞检测方法可以适用于各种复杂度的软件产品,不但可以检测应用程序本身的安全弱点,还可以检测应用程序中依赖第三方软件的版本信息和包含的漏洞。
图12示意性示出了根据本公开实施例的漏洞检测装置的结构框图。
如图12所示,本公开实施例的漏洞检测装置1200例如可以包括攻击脚本生成模块1210、漏洞确定模块1220、检测函数插入模块1230、运行信息获得模块1240和漏洞信息确定模块1250。
攻击脚本生成模块1210用于根据应用程序的源文件,生成针对应用程序的攻击脚本(操作S210)。
漏洞确定模块1220用于根据攻击脚本向应用程序发起一次攻击请求,以确定应用程序是否存在漏洞(操作S220)。
检测函数插入模块1230用于在确定应用程序存在漏洞的情况下,根据源文件,在源文件中插入检测函数(操作S230)。
运行信息获得模块1240用于根据攻击脚本向应用程序发起二次攻击请求,以依据插入检测函数的源文件运行应用程序,得到第一运行信息(操作S240)。
漏洞信息确定模块1250用于根据第一运行信息,确定漏洞的漏洞信息(操作S250)。
根据本公开的实施例,如图12所示,上述攻击脚本生成模块1210例如可以包括攻击向量获取子模块1211和攻击脚本生成子模块1212。攻击向量获取子模块1211用于根据源文件,从特征库中获取与源文件匹配的攻击向量(操作S511)。攻击脚本生成子模块1212用于根据攻击向量及攻击脚本模板,生成攻击脚本(操作S512)。
根据本公开的实施例,如图12所示,上述漏洞确定模块1220例如可以包括运行信息获得子模块1221和漏洞确定子模块1222。运行信息获得子模块1221用于根据攻击脚本向应用程序发起一次攻击请求,以依据源文件运行应用程序,得到第二运行信息(操作S621)。漏洞确定子模块1222用于在第二运行信息存在异常的情况下,确定应用程序存在漏洞(操作S622)。
根据本公开的实施例,上述检测函数插入模块1230例如可以包括方法类加载子模块1231、方法类确定子模块1232和检测函数插入子模块1233。方法类加载子模块1231用于加载运行应用程序时调用的源文件中的方法类(操作S731)。方法类确定子模块1232用于确定调用的源文件中的方法类中属于预定方法类的已定义方法类(操作S732)。检测函数插入子模块1233用于向源文件中已定义方法类的位置处插入检测函数(操作S733)。其中,预定方法类包括独立于应用程序的代理程序中定义的方法类。
根据本公开的实施例,如图12所示,上述运行信息获得模块1240例如可以包括异常调用确定子模块1241和漏洞信息确定子模块1242。异常调用确定子模块1241例如可以用于根据第一运行信息,确定应用程序运行过程中插入检测函数的源文件是否存在异常调用(操作S851)。漏洞信息确定子模块1242用于在存在异常调用的情况下,确定源文件中发起异常调用依据的代码的属性信息为漏洞信息(操作S852)。
根据本公开的实施例,如图12所示,上述漏洞检测装置1200还包括特征库构建模块1260,用于构建特征库(操作S360)。其中,特征库构建模块1260例如可以包括报文获取子模块1261、特征提取子模块1262、向量生成子模块1263和关系建立子模块1264。报文获取子模块1261用于获取针对多个漏洞样本的攻击特征报文(操作S461)。特征提取子模块1262用于提取攻击特征报文的攻击特征,得到多个攻击特征(操作S462)。向量生成子模块1263用于根据预定规则,生成针对多个攻击特征的多个攻击向量(操作S463)。关系建立子模块1264用于根据多个漏洞样本的上下文信息,建立多个攻击向量与上下文信息的映射关系(操作S464)。
根据本公开的实施例,如图12所示,上述漏洞检测装置1200例如还可以包括等级确定模块1270和展示模块1280。等级确定模块1270用于在漏洞信息确定模块1250确定漏洞的漏洞信息之后,根据漏洞信息,确定漏洞的危险等级和/或应用程序的风险等级(操作S970)。展示模块1280用于展示漏洞信息、漏洞的危险等级和/或应用程序的风险等级(操作S980)。
根据本公开的实施例,如图12所示,上述漏洞检测装置1200例如还可以包括告警信息发送模块1290,用于在漏洞信息确定模块1250确定漏洞的漏洞信息之后,向为应用程序的运行提供支持的服务器发送告警信息,以指示服务器在接收到应用程序的请求时,丢弃应用程序的请求(操作S1090)。
根据本公开的实施例,如图12所示,上述漏洞检测装置1200例如还可以包括补丁信息获取模块12100和漏洞解决模块12110。补丁信息获取模块12100用于获取与漏洞信息匹配的补丁信息(操作S1100)。漏洞解决模块12110用于根据补丁信息,解决所匹配的漏洞(操作S1110)。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图13示意性示出了根据本公开实施例的适于执行漏洞检测方法的电子设备的结构框图。图13示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图13所示,根据本公开实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1303中,存储有电子设备1300操作所需的各种程序和数据。处理器1301、ROM 1302以及RAM 1303通过总线1304彼此相连。处理器1301通过执行ROM 1302和/或RAM1303中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1302和RAM 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1300还可以包括输入/输出(I/O)接口1305,输入/输出(I/O)接口1305也连接至总线1304。电子设备1000还可以包括连接至I/O接口1305的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被处理器1301执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1302和/或RAM 1303和/或ROM 1302和RAM 1303以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (10)
1.一种漏洞检测方法,包括:
根据应用程序的源文件,生成针对所述应用程序的攻击脚本;
其中,所述生成针对所述应用程序的攻击脚本包括:
构建特征库,其中,所述构建特征库包括:
获取针对多个漏洞样本的攻击特征报文;
提取所述攻击特征报文的攻击特征,得到多个攻击特征;
根据预定规则,生成针对所述多个攻击特征的多个攻击向量;以及
根据所述多个漏洞样本的上下文信息,建立所述多个攻击向量与所述上下文信息的映射关系;
根据所述源文件,从特征库中获取与所述源文件匹配的攻击向量;以及
根据所述攻击向量及攻击脚本模板,生成所述攻击脚本;
根据所述攻击脚本向所述应用程序发起一次攻击请求,以确定所述应用程序是否存在漏洞;以及
在确定所述应用程序存在漏洞的情况下:
根据所述源文件,在所述源文件中插入检测函数;
其中,在所述源文件中插入检测函数包括:
根据所述源文件中的代码的上下文信息设置插入点;
在所述插入点的位置插入检测函数;
根据所述攻击脚本向所述应用程序发起二次攻击请求,以依据插入所述检测函数的源文件运行所述应用程序,得到第一运行信息;以及
根据所述第一运行信息,确定所述漏洞的漏洞信息。
2.根据权利要求1所述的方法,其中,所述根据所述攻击脚本向所述应用程序发起一次攻击请求,以确定所述应用程序是否存在漏洞包括:
根据所述攻击脚本向所述应用程序发起一次攻击请求,以依据所述源文件运行所述应用程序,得到第二运行信息;以及
在所述第二运行信息存在异常的情况下,确定所述应用程序存在漏洞。
3.根据权利要求1所述的方法,其中,所述在所述源文件中插入检测函数包括:
加载运行所述应用程序时调用的所述源文件中的方法类;
确定所述调用的所述源文件中的方法类中属于预定方法类的已定义方法类;以及
向所述源文件中所述已定义方法类的位置处插入所述检测函数,
其中,所述预定方法类包括独立于所述应用程序的代理程序中定义的方法类。
4.根据权利要求1所述的方法,其中,所述确定所述漏洞的漏洞信息包括:
根据所述第一运行信息,确定所述应用程序运行过程中插入所述检测函数的源文件是否存在异常调用;以及
在存在所述异常调用的情况下,确定所述源文件中发起所述异常调用依据的代码的属性信息为所述漏洞信息。
5.根据权利要求1所述的方法,还包括在确定所述漏洞的漏洞信息之后:
根据所述漏洞信息,确定所述漏洞的危险等级和/或所述应用程序的风险等级;以及
展示所述漏洞信息、所述漏洞的危险等级和/或所述应用程序的风险等级。
6.根据权利要求1所述的方法,还包括在确定所述漏洞的漏洞信息之后:
向为所述应用程序的运行提供支持的服务器发送告警信息,以指示所述服务器在接收到所述应用程序的请求时,丢弃所述应用程序的请求。
7.根据权利要求1所述的方法,还包括在确定所述漏洞的漏洞信息之后:
获取与所述漏洞信息匹配的补丁信息;以及
根据所述补丁信息,解决所匹配的所述漏洞。
8.一种漏洞检测装置,包括:
攻击脚本生成模块,用于根据应用程序的源文件,生成针对所述应用程序的攻击脚本;
漏洞确定模块,用于根据所述攻击脚本向所述应用程序发起一次攻击请求,以确定所述应用程序是否存在漏洞;
检测函数插入模块,用于在确定所述应用程序存在漏洞的情况下,根据所述源文件,在所述源文件中插入检测函数,包括:根据所述源文件中的代码的上下文信息设置插入点;在所述插入点的位置插入检测函数;
运行信息获得模块,用于根据所述攻击脚本向所述应用程序发起二次攻击请求,以依据插入所述检测函数的源文件运行所述应用程序,得到第一运行信息;以及
漏洞信息确定模块,用于根据所述第一运行信息,确定所述漏洞的漏洞信息;
其中,所述生成针对所述应用程序的攻击脚本包括:
构建特征库,其中,所述构建特征库包括:
获取针对多个漏洞样本的攻击特征报文;
提取所述攻击特征报文的攻击特征,得到多个攻击特征;
根据预定规则,生成针对所述多个攻击特征的多个攻击向量;以及
根据所述多个漏洞样本的上下文信息,建立所述多个攻击向量与所述上下文信息的映射关系;
根据所述源文件,从特征库中获取与所述源文件匹配的攻击向量;以及
根据所述攻击向量及攻击脚本模板,生成所述攻击脚本。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求1~7中任一项所述的漏洞检测方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行权利要求1~7中任一项所述的漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911154446.9A CN110929264B (zh) | 2019-11-21 | 2019-11-21 | 漏洞检测方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911154446.9A CN110929264B (zh) | 2019-11-21 | 2019-11-21 | 漏洞检测方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110929264A CN110929264A (zh) | 2020-03-27 |
CN110929264B true CN110929264B (zh) | 2022-08-30 |
Family
ID=69851598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911154446.9A Active CN110929264B (zh) | 2019-11-21 | 2019-11-21 | 漏洞检测方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110929264B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865979A (zh) * | 2020-07-20 | 2020-10-30 | 北京丁牛科技有限公司 | 一种漏洞信息处理方法及网络攻防平台 |
CN112329021B (zh) * | 2020-11-09 | 2024-03-26 | 杭州安恒信息技术股份有限公司 | 一种排查应用漏洞的方法、装置、电子装置和存储介质 |
CN114564945B (zh) * | 2020-11-27 | 2024-08-13 | 北京字跳网络技术有限公司 | 一种字段处理方法、装置、设备及存储介质 |
CN113114680B (zh) * | 2021-04-13 | 2023-04-07 | 中国工商银行股份有限公司 | 用于文件上传漏洞的检测方法和检测装置 |
CN113162945B (zh) * | 2021-05-07 | 2021-12-14 | 北京安普诺信息技术有限公司 | 漏洞检测分析方法、装置及基于此的漏洞验证方法、系统 |
CN113158191B (zh) * | 2021-05-26 | 2022-01-07 | 北京安普诺信息技术有限公司 | 基于智能探针的漏洞验证方法及相关iast方法、系统 |
CN113254944B (zh) * | 2021-06-08 | 2022-08-09 | 工银科技有限公司 | 漏洞处理方法、系统、电子设备、存储介质及程序产品 |
CN114629686B (zh) * | 2022-02-21 | 2025-01-17 | 奇安信科技集团股份有限公司 | 一种漏洞攻击检测方法及装置 |
CN117879976B (zh) * | 2024-03-11 | 2024-05-28 | 全通金信控股(广东)有限公司 | 基于跨站脚本攻击的请求数据处理方法、计算机设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683328A (zh) * | 2015-01-29 | 2015-06-03 | 兴华永恒(北京)科技有限责任公司 | 一种跨站漏洞扫描方法及系统 |
CN105138903A (zh) * | 2015-08-14 | 2015-12-09 | 电子科技大学 | 一种基于ret指令与jmp指令的rop攻击检测方法 |
CN106716432A (zh) * | 2014-09-22 | 2017-05-24 | 迈克菲股份有限公司 | 启动前进程漏洞评估 |
CN108667816A (zh) * | 2018-04-19 | 2018-10-16 | 重庆邮电大学 | 一种网络异常的检测定位方法及系统 |
CN109165507A (zh) * | 2018-07-09 | 2019-01-08 | 深圳开源互联网安全技术有限公司 | 跨站脚本攻击漏洞检测方法、装置及终端设备 |
CN109426722A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | Sql注入缺陷检测方法、系统、设备及存储介质 |
CN109558734A (zh) * | 2018-11-28 | 2019-04-02 | 北京梆梆安全科技有限公司 | 一种堆栈安全性的检测方法及装置、移动设备 |
CN110113311A (zh) * | 2019-03-05 | 2019-08-09 | 北京丁牛科技有限公司 | 跨站脚本攻击xss漏洞检测方法及装置 |
CN110266669A (zh) * | 2019-06-06 | 2019-09-20 | 武汉大学 | 一种Java Web框架漏洞攻击通用检测与定位的方法及系统 |
CN110390202A (zh) * | 2019-07-30 | 2019-10-29 | 中国工商银行股份有限公司 | 用于检测业务逻辑漏洞的方法、装置、系统、设备及介质 |
CN110414242A (zh) * | 2019-08-02 | 2019-11-05 | 中国工商银行股份有限公司 | 用于检测业务逻辑漏洞的方法、装置、设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1891520B1 (en) * | 2005-06-07 | 2017-09-13 | VMware, Inc. | Constraint injection system for immunizing software programs against vulnerabilities and attacks |
CN103366120A (zh) * | 2012-04-10 | 2013-10-23 | 中国信息安全测评中心 | 基于脚本的漏洞攻击图生成方法 |
CN106411906A (zh) * | 2016-10-10 | 2017-02-15 | 合肥红珊瑚软件服务有限公司 | 一种sql注入漏洞定位检测方法 |
CN106357696B (zh) * | 2016-11-14 | 2020-02-07 | 北京神州绿盟信息安全科技股份有限公司 | 一种sql注入攻击检测方法及系统 |
CN108459954B (zh) * | 2017-02-22 | 2022-08-26 | 腾讯科技(深圳)有限公司 | 应用程序漏洞检测方法和装置 |
-
2019
- 2019-11-21 CN CN201911154446.9A patent/CN110929264B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106716432A (zh) * | 2014-09-22 | 2017-05-24 | 迈克菲股份有限公司 | 启动前进程漏洞评估 |
CN104683328A (zh) * | 2015-01-29 | 2015-06-03 | 兴华永恒(北京)科技有限责任公司 | 一种跨站漏洞扫描方法及系统 |
CN105138903A (zh) * | 2015-08-14 | 2015-12-09 | 电子科技大学 | 一种基于ret指令与jmp指令的rop攻击检测方法 |
CN109426722A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | Sql注入缺陷检测方法、系统、设备及存储介质 |
CN108667816A (zh) * | 2018-04-19 | 2018-10-16 | 重庆邮电大学 | 一种网络异常的检测定位方法及系统 |
CN109165507A (zh) * | 2018-07-09 | 2019-01-08 | 深圳开源互联网安全技术有限公司 | 跨站脚本攻击漏洞检测方法、装置及终端设备 |
CN109558734A (zh) * | 2018-11-28 | 2019-04-02 | 北京梆梆安全科技有限公司 | 一种堆栈安全性的检测方法及装置、移动设备 |
CN110113311A (zh) * | 2019-03-05 | 2019-08-09 | 北京丁牛科技有限公司 | 跨站脚本攻击xss漏洞检测方法及装置 |
CN110266669A (zh) * | 2019-06-06 | 2019-09-20 | 武汉大学 | 一种Java Web框架漏洞攻击通用检测与定位的方法及系统 |
CN110390202A (zh) * | 2019-07-30 | 2019-10-29 | 中国工商银行股份有限公司 | 用于检测业务逻辑漏洞的方法、装置、系统、设备及介质 |
CN110414242A (zh) * | 2019-08-02 | 2019-11-05 | 中国工商银行股份有限公司 | 用于检测业务逻辑漏洞的方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110929264A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110929264B (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
US10878106B2 (en) | Firmware verification | |
US9882926B2 (en) | Detecting stored cross-site scripting vulnerabilities in web applications | |
US8613080B2 (en) | Assessment and analysis of software security flaws in virtual machines | |
US9336389B1 (en) | Rapid malware inspection of mobile applications | |
CN112906010B (zh) | 一种自动化攻击测试方法及基于此的自动化安全测试方法 | |
US8914890B2 (en) | Determining the vulnerability of computer software applications to privilege-escalation attacks | |
CN111783096B (zh) | 检测安全漏洞的方法和装置 | |
US9507933B2 (en) | Program execution apparatus and program analysis apparatus | |
CN113162945A (zh) | 漏洞检测分析方法、装置及基于此的漏洞验证方法、系统 | |
CN108763951B (zh) | 一种数据的保护方法及装置 | |
CN111813696A (zh) | 应用测试方法、装置、系统及电子设备 | |
US11005877B2 (en) | Persistent cross-site scripting vulnerability detection | |
CN113114680B (zh) | 用于文件上传漏洞的检测方法和检测装置 | |
CN110855642B (zh) | 应用漏洞检测方法、装置、电子设备及存储介质 | |
US20180341770A1 (en) | Anomaly detection method and anomaly detection apparatus | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
KR20160090566A (ko) | 유효마켓 데이터를 이용한 apk 악성코드 검사 장치 및 방법 | |
CN113535577A (zh) | 基于知识图谱的应用测试方法、装置、电子设备和介质 | |
JP6258189B2 (ja) | 特定装置、特定方法および特定プログラム | |
CN117056918A (zh) | 一种代码分析方法及相关设备 | |
WO2024154288A1 (ja) | プログラム解析装置、プログラム解析方法、及び非一時的なコンピュータ可読媒体 | |
KR102587114B1 (ko) | 화이트 리스트를 기반으로 한 원격 제어 소프트웨어 탐지 장치 및 방법 | |
CN118796716B (zh) | 数据库服务资源测试方法、装置、设备、介质和程序产品 | |
Ramadhan et al. | Building an APK Malware Detection System Using Static Analysis Method with MobSF Framework |
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 |