首页> 中国专利> 一种用于确定WEB应用0day漏洞的方法与系统

一种用于确定WEB应用0day漏洞的方法与系统

摘要

与现有技术相比,本申请通过一种用于确定WEB应用0day漏洞的方法与系统,筛选WEB应用的请求数据,判断是否属于静态资源请求数据;若是非静态资源请求数据,则通过与已知漏洞库做对比,判断是否存在已知漏洞攻击;若目标检测数据是非已知漏洞的异常数据,则对目标检测数据先进行分词处理,得到目标字符串数据;将目标字符串数据进行量化转换,得到目标向量数据;将目标向量数据输入经过训练的神经网络模型,获得预测值;判断预测值是否在预设阈值范围内,确定目标检测数据中是否存在WEB应用0day漏洞。本申请在针对WEB应用0day漏洞检测具备较高成功率的前提下,能极大降低人力资源的投入,极大减少检测环境维护成本。

著录项

  • 公开/公告号CN112241358A

    专利类型发明专利

  • 公开/公告日2021-01-19

    原文格式PDF

  • 申请/专利权人 上海云盾信息技术有限公司;

    申请/专利号CN201910646714.2

  • 发明设计人 胡金涌;高力;

    申请日2019-07-17

  • 分类号G06F11/36(20060101);G06N3/08(20060101);

  • 代理机构31243 上海百一领御专利代理事务所(普通合伙);

  • 代理人王奎宇;甘章乖

  • 地址 201100 上海市闵行区中春路7001号2幢3楼C3058室

  • 入库时间 2023-06-19 09:35:27

说明书

技术领域

本申请涉及计算机信息安全技术领域,尤其涉及一种用于确定WEB应用0day漏洞的技术。

背景技术

在针对WEB应用的网络攻击中,利用WEB应用自身存在的漏洞,往往是攻击者实施有效攻击,进而牟取非法利益的常用手段。当WEB应用存在漏洞,一般由官方或白帽子等非攻击者主动发现,经紧急处理形成应对方案后第一时间公之于众,这样成为有应对方案的WEB应用的已知漏洞,不会成为牟取非法利益的手段。但当WEB应用存在漏洞,却被某个或某些发现者掌握,没有通知官方修复,更没有公之于众,而是利用该漏洞实施有效的攻击,牟取非法利益,这类漏洞即是WEB应用0day漏洞。

由此可见,因为没有针对WEB应用0day漏洞的应对方案,WEB应用0day漏洞攻击在WEB应用中能造成严重后果,往往具有很大的突然性与破坏性。

现有技术中用于确定WEB应用0day漏洞的方法主要有以下几种:

方法一:对WEB应用的访问日志进行人工筛查,从中发现疑似异常行为的访问,并进行相关的验证,以确定是否存在0day漏洞。由于WEB应用的访问日志通常信息量较大,单纯依靠人工对访问日志进行筛查,在检测效率上非常低下,而且需要投入很大的人力资源,人力成本很高。

方法二:从用户访问行为上,结合文件监测、WEB应用进程行为监测、系统异常分析等维度进行安全分值计分,当安全分值超过预设的阈值则认为是对WEB应用的入侵。该方法主要作用是用于识别对WEB应用的入侵,只具备区分正常行为和异常行为的能力,并不具备在异常行为中分类出已知漏洞或者0day漏洞的能力。即在识别异常行为时,检测到的异常行为中可能会包含到一些0day漏洞攻击,但是却不具备区分已知漏洞和0day漏洞的能力,而且在对未知漏洞攻击的检测能力上也有限制。

方法三:针对某一种或一类特定软件打开加载文档功能,检测是否存在WEB应用0day漏洞的方法。该方法存在的不足,首先是检测识别对象单一,仅仅是针对的某一种或某一类特定软件;其次是检测识别的功能点单一,仅仅针对的是打开加载文档的功能。而且,该方法需要根据该软件的多个分支版本和补丁信息等,考虑在虚拟机中构建不同版本的运行环境,在每个版本的虚拟运行环境中,打开并运行可疑的文档,根据文档运行时调用的API等情况,判断是否存在异常行为。所以该方法所需的检测环境构建复杂,维护成本高。

综上,提供一种更优化的确定WEB应用0day漏洞的方法成为亟待解决的问题。

发明内容

本申请的目的是提供一种用于确定WEB应用0day漏洞的方法与系统。

根据本申请的一个方面,提供了一种用于确定WEB应用0day漏洞的方法,其中,所述方法包括:

对待检测的WEB应用的请求数据进行筛选,确定目标检测数据;

基于所述目标检测数据确定是否存在针对已知漏洞的攻击;

当所述目标检测数据不存在针对已知漏洞的攻击,基于所述目标检测数据确定目标向量数据;

通过神经网络模型基于所述目标向量数据确定预测值,其中,所述预测值用于判断是否存在0day漏洞;

判断所述预测值是否在预设阈值范围内,当所述预测值不在所述预设阈值范围内,确定存在0day漏洞。

优选地,所述对待检测的WEB应用的请求数据进行筛选,确定目标检测数据包括:判断所述待检测的WEB应用的请求数据是否为静态资源请求数据,若非静态资源请求数据,将所述待检测的WEB应用的请求数据确定为目标检测数据。

优选地,所述基于所述目标检测数据确定是否存在针对已知漏洞的攻击包括:将所述目标检测数据与已知漏洞库中所有已知漏洞进行比较,当在所述已知漏洞库中未匹配到对应已知漏洞,确定所述目标检测数据不存在针对已知漏洞的攻击。

优选地,所述基于所述目标检测数据确定目标向量数据,包括:

对所述目标检测数据进行分词处理,得到目标字符串数据;

对所述目标字符串数据进行向量化转换,得到所述目标向量数据。

具体地,所述通过神经网络模型基于所述目标向量数据确定预测值包括:将所述目标向量数据输入神经网络模型,通过所述神经网络模型中输入层权重矩阵与所述目标向量数据进行矩阵乘积生成隐藏层第一层输入矩阵,然后与隐藏层下一层权重矩阵乘积生成隐藏层再下一层输入矩阵,继续如上步骤直至运算到输出层,在输出层将隐藏层最后一层输入矩阵与输出层权重矩阵乘积生成输出层的输出值,将输出层的输出值确定为所述预测值,其中,隐藏层中每一层权重矩阵大小为下一层神经元数量与本层神经元数量的乘积,输入层、隐藏层各层以及输出层的所述权重矩阵经过训练后确定。

优选地,所述神经网络模型的生成包括:获取异常数据集及正常数据集;采用神经网络学习算法,对所述异常数据集及正常数据集进行训练,以生成所述神经网络模型,其中,所述异常数据集是包括所有已知漏洞的数据集。

具体地,所述对所述异常数据集及正常数据集进行训练之前,还包括:

对所述异常数据集和正常数据集的所有样本中的数据进行分词;

统计每个词在所有样本中出现的样本数,根据所述样本数对每个词排序,分配与词唯一对应的序号,形成词典;

结合所述词典对样本进行向量化转换,每个样本对应得到一组向量数据,用于训练。

进一步地,所述一种用于确定WEB应用0day漏洞的方法还包括:获取对所述确定存在0day漏洞对应的目标检测数据的二次验证结果;当所述0day漏洞对应的目标检测数据的二次验证结果为正常数据,将所述目标检测数据加入所述正常数据集,以迭代更新所述神经网络模型。

优选地,所述一种用于确定WEB应用0day漏洞的方法还包括:当所述0day漏洞对应的目标检测数据的二次验证结果为异常数据,且所述目标检测数据存在针对已知漏洞的攻击,更新所述已知漏洞库。

根据本申请的另一方面,还提供了一种用于确定WEB应用0day漏洞的系统,其中,所述系统包括:

筛选模块,用于对待检测的WEB应用的请求数据进行筛选,确定目标检测数据;

已知漏洞检测模块,用于基于所述目标检测数据确定是否存在针对已知漏洞的攻击;

预测模块,用于当所述目标检测数据不存在针对已知漏洞的攻击,基于所述目标检测数据确定目标向量数据,通过神经网络模型基于所述目标向量数据确定预测值;

结果判定模块,用于判断所述预测值是否在预设阈值范围内,当所述预测值不在所述预设阈值范围内,确定存在0day漏洞。

优选地,其中,所述一种用于确定WEB应用0day漏洞的系统还包括:

异常数据集模块,用于存储所有WEB应用的已知漏洞和其它已知类型的异常数据;

正常数据集模块,用于存储所有WEB应用的已知类型的正常数据;

训练模块,用于对所述异常数据集模块和正常数据集模块中的数据进行预处理,采用神经网络学习算法,训练生成神经网络模型。

进一步地,所述一种用于确定WEB应用0day漏洞的系统还包括:

二次验证模块,用于对确定存在0day漏洞对应的目标检测数据的二次验证,获取二次验证结果,并基于所述二次验证结果更新正常数据集和/或异常数据集,以迭代更新所述神经网络模型。

本申请通过对待检测的WEB应用的请求数据进行筛选,确定目标检测数据,然后基于所述目标检测数据确定是否存在针对已知漏洞的攻击,其中,当所述目标检测数据不存在针对已知漏洞的攻击,则基于所述目标检测数据确定目标向量数据,然后通过神经网络模型基于所述目标向量数据确定预测值,其中,所述预测值用于判断是否存在0day漏洞,根据判断所述预测值是否在预设阈值范围内确定是否存在0day漏洞。通过该方法在不需要投入很多人力资源和检测环境维护成本的情况下,能快速高效地识别WEB应用的请求数据是否具有0day漏洞攻击,具有很高的实用价值和市场价值。

而且,本申请还获取对所述确定存在0day漏洞对应的目标检测数据的二次验证结果,当所述0day漏洞对应的目标检测数据的二次验证结果为正常数据,将所述目标检测数据加入所述正常数据集,以迭代更新所述神经网络模型;当所述0day漏洞对应的目标检测数据的二次验证结果为异常数据,且所述目标检测数据存在针对已知漏洞的攻击,更新所述已知漏洞库。本方法进一步提高了检测成功率,而且动态更新数据集,有利于提高后续确定WEB应用0day漏洞的成功率。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种用于确定WEB应用0day漏洞的方法流程图;

图2示出根据本申请另一个方面的一种用于确定WEB应用0day漏洞的系统框图;

图3示出根据本申请另一个方面的一种用于训练生成神经网络模型的系统框图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本申请一个典型的配置中,系统各模块和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及优选实施例,对本申请的技术方案,进行清楚和完整的描述。

图1示出本申请一个方面的一种用于确定WEB应用0day漏洞的方法流程图,其中,一个实施例的方法包括:

S11对待检测的WEB应用的请求数据进行筛选,确定目标检测数据;

S12基于所述目标检测数据确定是否存在针对已知漏洞的攻击;

S13当所述目标检测数据不存在针对已知漏洞的攻击,基于所述目标检测数据确定目标向量数据;

S14通过神经网络模型基于所述目标向量数据确定预测值,其中,所述预测值用于判断是否存在0day漏洞;

S15判断所述预测值是否在预设阈值范围内,当所述预测值不在所述预设阈值范围内,确定存在0day漏洞。

在本申请中,所述方法通过设备1执行,所述设备1为计算机设备和/或云,所述计算机设备包括但不限于个人计算机、笔记本电脑、工业计算机、网络主机、单个网络服务器、多个网络服务器集;所述云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。

在此,所述计算机设备和/或云仅为举例,其他现有的或者今后可能出现的设备和/或资源共享平台如适用于本申请也应包含在本申请的保护范围内,在此,以引用的方式包含于此。

在该实施例中,在所述步骤S11中,所述对待检测的WEB应用的请求数据进行筛选,确定目标检测数据。

当设备1获取到待检测的WEB应用的请求数据,首先会对该等数据进行筛选,在此,所述设备1可以针对每次获得的每个请求数据进行筛选,或者,设备1还可以在获取到一定数量的请求数据后再进行筛选,又或者可以获取预设时间间隔内的请求数据,每隔预设的时间间隔筛选一次,上述方式仅为举例,在本申请中不做限定。通过筛选的方式,能够将明显不是0day漏洞的请求数据过滤掉,从而规避掉无用的检测,提高检测效率。

优选地,所述对待检测的WEB应用的请求数据进行筛选,确定目标检测数据包括:判断所述待检测的WEB应用的请求数据是否为静态资源请求数据,若非静态资源请求数据,将所述待检测的WEB应用的请求数据确定为目标检测数据。

在此,所述静态资源包括但不限于图片、js、css等明显不是0day漏洞的数据资源。其中,所述静态资源的格式可以预先设置,当获取到待检测的WEB应用的请求数据会将该请求数据所包含的格式与预先设置的静态资源的格式进行匹配,若获取到的待检测的WEB应用的请求数据中不包含所述预先设置的静态资源的格式,则所述请求数据为非静态资源请求数据,将所述待检测的WEB应用的请求数据确定为目标检测数据。

其中,所述针对静态资源的WEB应用的请求数据,是基于请求方法为GET或HEAD,并且URL中的路径部分不含任何带有目录穿越和/或截断特征的字符。

在该实施例中,在所述步骤S12中,所述基于所述目标检测数据确定是否存在针对已知漏洞的攻击。

优选地,将所述目标检测数据与已知漏洞库中所有已知漏洞进行比较,当在所述已知漏洞库中未匹配到对应已知漏洞,确定所述目标检测数据不存在针对已知漏洞的攻击。在此,所述已知漏洞库中存储有现有的已知漏洞。

其中,所述进行比较是通过一些检测方法,确定所述目标检测数据中是否存在针对已知漏洞的攻击。其中,所述检测方法,是按照已知漏洞的攻击特征、漏洞证明和/或漏洞原理设计用于检测所述目标检测数据是否是针对已知漏洞攻击的检测方法。例如,结合各种已知漏洞的特征,采用包括但不限于正则表达式匹配、特征字符串匹配和/或一定的逻辑判断方法等来检测所述目标检测数据是否包含针对已知漏洞的攻击。

在该实施例中,在所述步骤S13中,所述当所述目标检测数据不存在针对已知漏洞的攻击,基于所述目标检测数据确定目标向量数据。其中,所述目标向量数据是对所述目标检测数据进行处理后获得的数据,用以表征该目标检测数据。

优选地,对所述目标检测数据进行分词处理,得到目标字符串数据,其中,按照形成自然的单词作为分词规则,对所述目标检测数据进行分词处理,得到目标字符串数据;进一步地,对所述目标字符串数据进行向量化转换,得到所述目标向量数据。

其中,按照预设的字典,对所述目标字符串数据进行向量化转换,将单词字符串形势的数据转换为由一组数字组成的向量,得到所述目标向量数据。其中,所述数字不限定为二进制、十进制或十六进制数,其中,所述目标向量数据大小由目标字符串数据确定。

继续在该实施例中,在所述步骤S14中,所述通过神经网络模型基于所述目标向量数据确定预测值,其中,所述预测值用于判断是否存在0day漏洞。

优选地,将所述目标向量数据输入神经网络模型;对所述目标向量数据进行数据计算,得到一个预测值,具体地,通过所述神经网络模型中输入层权重矩阵与所述目标向量数据进行矩阵乘积生成隐藏层第一层输入矩阵,然后与隐藏层下一层权重矩阵乘积生成隐藏层再下一层输入矩阵,继续如上步骤直至运算到输出层,在输出层将隐藏层最后一层输入矩阵与输出层权重矩阵乘积生成输出层的输出值,将输出层的输出值确定为所述预测值,其中,隐藏层中每一层权重矩阵大小为下一层神经元数量与本层神经元数量的乘积;输入层、隐藏层各层以及输出层的所述权重矩阵经过训练后确定。

优选地,所述神经网络模型经过训练后生成,包括:获取异常数据集及正常数据集;采用神经网络学习算法,对所述异常数据集及正常数据集进行训练,以生成所述神经网络模型,其中,所述异常数据集是包括所有已知漏洞的数据集。其中,所述异常数据集及正常数据集动态更新。

优选地,对所述异常数据集及正常数据集进行训练之前,还包括:对所述异常数据集和正常数据集的所有样本中的数据进行分词,例如,以形成自然的单词作为分词规则对样本中的数据进行分词;统计每个词在所有样本中出现的样本数,根据所述样本数对每个词排序,例如,根据所述样本数降序对每个词排序,分配与词唯一对应的序号,例如,该序号从1开始按自然数递增,形成词典;结合所述词典对样本进行向量化转换,每个样本对应得到一组向量数据,用于训练。具体地,对数据集中的每个样本文档,进行分词,根据分词结果,比对所述词典,进而形成了单词到数字的映射(单词对应的序号),进而每个样本对应得到一组向量数据。

继续在该实施例中,在所述步骤S15中,所述判断所述预测值是否在预设阈值范围内,当所述预测值不在所述预设阈值范围内,确定存在0day漏洞。其中,所述预测值是一个概率值,通过判断所述预测值是否在预设阈值范围内,确定所述目标检测数据中是否存在0day漏洞的攻击。其中,所述预设阈值范围的设定为不存在0day漏洞的范围。

其中,通过调整阈值计算算法来识别攻击的召回率,在保证足够的准确率(例如97%)的前提下最大化召回率的阈值作为最终的阈值设定。

优选地,其中所述一种用于确定WEB应用0day漏洞的方法还包括步骤S16(未示出),获取对所述确定存在0day漏洞对应的目标检测数据的二次验证结果;具体地,当所述0day漏洞对应的目标检测数据的二次验证结果为正常数据,将所述目标检测数据加入所述正常数据集,以迭代更新所述神经网络模型;当所述0day漏洞对应的目标检测数据的二次验证结果为异常数据,且所述目标检测数据存在针对已知漏洞的攻击,更新所述已知漏洞库。

其中,二次验证包括但不限于通过专业安全研究人员的人工再审查机制进行。具体地,安全研究人员结合专业知识及相关资料检索,通过人工再审查机制,进一步审查所述确定存在0day漏洞对应的目标检测数据,以确定是否存在把正常数据或存在已知漏洞攻击误判为存在0day漏洞攻击。

具体地,如果是正常数据误判,则说明训练后的神经网络模型检测存在误判,需要进一步的更新迭代,将所述目标检测数据加入到正常数据集中,供神经网络模型迭代更新训练。如果是已知漏洞误判,则说明已知漏洞库需要更新将所述目标检测数据加入已知漏洞库。

进一步地,如果不是误判,还可以做进一步的人工验证工作,以确保该攻击的确能达到实施攻击的效果。具体地,由安全研究人员对所述目标检测数据进行专业的数据处理(如脱敏等),然后进行请求流量的回放验证,结合WEB应用的运行情况,进而进一步确认所述目标检测数据的攻击效果。如果确认能够实施攻击效果,则说明所述目标检测数据存在0day漏洞攻击。

图2示出根据本申请另一个方面的一种用于确定WEB应用0day漏洞的系统框图,其中,所述系统包括:

筛选模块21,用于对待检测的WEB应用的请求数据进行筛选,确定目标检测数据;

已知漏洞检测模块22,用于基于所述目标检测数据确定是否存在针对已知漏洞的攻击;

预测模块23,用于当所述目标检测数据不存在针对已知漏洞的攻击,基于所述目标检测数据确定目标向量数据,通过神经网络模型25基于所述目标向量数据确定预测值;

结果判定模块24,用于判断所述预测值是否在预设阈值范围内,当所述预测值不在所述预设阈值范围内,确定存在0day漏洞。

优选地,所述一种用于确定WEB应用0day漏洞的系统还包括:

二次验证模块26(未示出),用于对确定存在0day漏洞对应的目标检测数据的二次验证,获取二次验证结果,并基于所述二次验证结果更新正常数据集和/或异常数据集,以迭代更新所述神经网络模型25。

图3示出根据本申请另一个方面的一种用于训练生成神经网络模型25的系统框图,其中,所述系统包括:

异常数据集模块31,用于存储所有WEB应用的已知漏洞和其它已知类型的异常数据;

正常数据集模块32,用于存储所有WEB应用的已知类型的正常数据;

训练模块33,用于对所述异常数据集模块和正常数据集模块中的数据进行预处理,采用神经网络学习算法,训练生成神经网络模型25。

根据本申请的又一方面,还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。

根据本申请的又一方面,还提供了一种用于确定WEB应用0day漏洞的设备,其中,该设备包括:

一个或多个处理器;以及

存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述方法的操作。

例如,计算机可读指令在被执行时使所述一个或多个处理器:对WEB应用的请求数据进行筛选,判断是否属于静态资源请求数据;将非静态资源请求数据与已知漏洞库匹配,判断是否存在已知漏洞攻击;将目标检测数据进行分词处理,得到目标字符串数据;将目标字符串数据进行量化转换,得到目标向量数据;将目标向量数据输入经过训练的神经网络模型,获得预测值;判断预测值是否在预设阈值范围内,确定目标检测数据中是否存在WEB应用0day漏洞。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号