应用程序日志分析方法和装置与流程

文档序号:32434373发布日期:2022-12-06 17:02阅读:137来源:国知局
应用程序日志分析方法和装置与流程

1.本公开涉及安全领域,具体涉及日志分析技术领域。


背景技术:

2.在传统的web应用程序日志分析系统中,日志数据来源于应用访问记录、用户操作记录、程序报错记录以及安全设备的告警信息等,这些数据来源复杂,格式不一,逻辑混乱,需要花费大量的时间和精力进行日志数据收集、清洗和格式转换才能进行日志分析。经过多次处理的数据也提高了异常日志追溯的成本和难度。
3.来源复杂的日志数据之间逻辑性和关联性不强,给日志分析带来噪音,给关联分析日志上下文带来了困难。


技术实现要素:

4.在下文中给出了关于本公开的简要概述,以便提供关于本公开的一些方面的基本理解。但是,应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图用来确定本公开的关键性部分或重要部分,也不是意图用来限定本公开的范围。其目的仅仅是以简化的形式给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。
5.为了克服上述现有技术的弊端,本公开提出一种基于知识图谱的web应用程序日志分析方法和系统,通过在应用程序内部进行日志采集,并以知识图谱的形式记录和分析,可有效解决上述数据来源复杂造成的数据分析效率较低、噪音干扰较多、日志溯源成本高、难度大等问题。
6.根据本公开的一个方面,提供了一种应用程序日志分析方法,所述方法包括:从应用程序内部收集日志数据,并在三元组存储结构中记录函数名称、函数输出和调用函数;以函数名称为实体,函数输出为关系,函数的调用关系为方向,构建知识图谱;提取知识图谱的关系和方向,并将其分别转换成关系词向量和方向词向量;以及基于关系词向量和方向词向量来进行日志分析。
7.根据本公开的另一个方面,提供一种用于应用程序日志分析的装置,其包括:存储器,其上存储有指令;以及处理器,被配置为执行存储在所述存储器上的指令,以执行根据本公开的上述方面所述的用于应用程序日志分析的方法。
8.根据本公开的又一个方面,提供一种计算机程序产品,其包括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行根据本公开的上述方面所述的用于应用程序日志分析的方法。
附图说明
9.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
10.参照附图,根据下面的详细描述,可以更清楚地理解本公开,其中:
11.图1示出了现有技术的应用程序日志分析方法的示意图;
12.图2示出了根据本公开的一些实施例的应用程序日志分析方法的流程图;
13.图3示出了根据本公开的另一些实施例的应用程序日志分析方法的流程图;
14.图4示出了根据本公开的另一些实施例的应用程序日志分析方法的流程图;
15.图5示出了根据本公开的一些实施例的三元组存储结构的示例;
16.图6示出了根据本公开的一些实施例的知识图谱的示例;
17.图7示出了根据本公开的一些实施例的关系词向量和方向词向量的示例;以及
18.图8示出了根据本公开的一些实施例的用于应用程序日志分析的装置的示例性硬件配置图。
具体实施方式
19.参考附图进行以下详细描述,并且提供以下详细描述以帮助全面理解本公开的各种示例实施例。以下描述包括各种细节以帮助理解,但是这些细节仅被认为是示例,而不是为了限制本公开,本公开是由随附权利要求及其等同内容限定的。在以下描述中使用的词语和短语仅用于能够清楚一致地理解本公开。另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。
20.图1示出了现有技术中常用的应用程序日志分析方法。目前的日志收集器通常从多种数据源中收集日志,例如,图1中最底部的日志源方框中示出了日志的多种来源:例如,web应用访问日志、中间件日志、流量日志等等。这些日志数据的格式不统一,因此在收集之后和分析之前需要进行多种处理。如图1中的日志处理方框所示,这些处理至少包括:日志解析、格式转换和数据清洗等。
21.可见,由于现有技术的日志收集模块被布置在应用程序外部的多个日志来源处,因此收集的日志来源复杂,逻辑性和关联性不强,处理难度大,并且给日志分析带来噪音,给关联分析日志上下文带来困难。
22.为了解决上述问题,本公开提出了一种基于知识图谱的应用程序日志分析方法和系统。
23.图2示出了根据本公开的一些实施例的应用程序日志分析方法的流程图。
24.首先,在步骤201中,从应用程序内部收集日志,记录函数的名称、函数输出和调用函数,并将其存储在三元组存储结构中。
25.根据一些实施例,可以将日志收集模块部署于应用程序的设计语言解释器层,在应用程序运行时持续监控并记录程序内部函数的调用路径和函数的输入输出。与现有技术相比,这样记录的数据格式统一,并且关联性和逻辑性强。
26.根据一些实施例,可以使用运行时应用自我保护(runtime application self-protection,rasp)技术从应用程序内部收集日志。rasp是一种植入到应用程序内部或其运行时环境的安全技术。它能够控制应用程序的执行流程,并且可以实时检测和阻止漏洞攻击行为。该技术可以用来通过自我保护的措施来阻止相关网络攻击,或在没有人为干预的情况下自动重新配置环境,以此来解决特定网络问题(威胁,故障等)。
27.然而,以上实施例并非限制性的,本领域技术人员可以采用其它技术来收集日志,
只要能够在应用程序内部记录有关函数调用路径的信息即可。
28.本文中的三元组存储结构是指将三个参数(在本文中为函数名、函数输出和调用函数名)相互关联地进行存储的数据存储结构,例如,数据库或表格。这种日志数据存储方式有利于在下一步骤中将要进行的日志的知识图谱的构建。
29.图5中示出了根据一些实施方式的三元组存储结构的一个示例。
30.应用程序在运行过程中会发生大量函数调用。三元组存储结构中的函数名和调用函数名分别表示调用和被调用的函数的名称。函数输出表示对应于某一输入(例如用户输入)的调用函数的输出。函数名、函数输出和调用函数名这三个参数可以完整地表达应用程序运行过程中的函数调用路径。以图4为例,函数“前端”接收用户输入后,函数输出为“token/1.jpg”并调用函数“download_photo()”。之后,函数“download_photo()”输出“token”并调用函数“token_check()”和“select_path()”。
31.接着,过程前进至步骤202。在步骤202中,以函数名为实体,函数输出为关系,函数的调用关系为方向,构建知识图谱。
32.知识图谱(knowledge graph,kg)旨在描述真实世界中存在的各种实体或概念及其关系,其构成一张巨大的语义网络图,节点表示实体或概念,边则由属性或关系构成。在现有技术中,知识图谱主要用于增强搜索引擎功能。
33.实体、关系和方向为知识图谱的基本参数。已知这三者即可构建知识图谱。因此,可以通过使函数名为实体、函数输出为关系、函数的调用关系为方向,基于存储在三元组结构中的数据构建知识图谱。其中,函数的调用关系指两个函数之间的调用与被调用的关系。图6是基于图5所示的三元组存储结构构建的知识谱图的示例。其中的箭头方向表示调用关系。例如,函数“前端”调用了函数“download_photo()”。
34.接着,过程前进至步骤203。在步骤203中,提取知识图谱的关系和方向,并将其分别转换成词向量。
35.知识图谱中的关系和方向表示数据之间的逻辑关系,可以由自然语言表示。为了便于对数据进行分析,将其转换为词向量。
36.根据一些实施例,可对关系和方向应用诸如词嵌入的自然语言处理,将文字转换为数值形式的词向量。
37.根据一些实施例,可以通过word2vec进行到词向量的转换。通过word2vec转换的每个词向量都具有相同数量的维度。本领域技术人员可以理解,其它词嵌入方法也在本发明的范围内。
38.图7示出了经转换的关系词向量和方向词向量的示例,其中关系由r表示,方向由d表示。
39.接着,过程前进至步骤204。在步骤204中,基于关系词向量和方向词向量进行日志分析。例如,日志分析可以包括确定异常的日志数据。
40.本领域技术人员可以采用任何合适的分析方法来基于关系词向量和方向词向量进行日志分析。由于关系词向量和方向词向量逻辑关系强,数值精确,可以提高分析的精确度。
41.以上描述的实施例的优点在于,从应用程序内部收集日志数据,数据格式统一,逻辑性和关联性强。基于这种格式统一、逻辑性和关联性强的数据,可以构建知识图谱,并基
于对知识谱图特有的参数的向量化表示,实现日志数据的量化分析,提高了日志分析准确率。
42.下面将描述根据本发明的另一些实施方式的日志分析方法,该方法基于时间窗口对日志数据进行分析。也就是说,按照时间窗口对提取的关系和方向进行划分,并以时间窗口为单位对日志进行分析。与现有技术中的日志分析方法相比,可以提高日志分析准确率,实现快速定位程序漏洞和溯源。
43.图3示出了根据本发明的一些实施方式的基于时间窗口的日志分析方法。该方法为图2描述的日志分析方法中步骤204的优选实施方式,以经图2的步骤201-203获得的关系词向量和方向词向量为基础。
44.首先,在步骤301,获得当前时间窗口内的关系和方向,并转换为关系词向量和方向词向量。然后,在步骤302,基于获取的关系词向量和方向词向量来分别计算当前时间窗口的关系风险值和方向风险值。
45.根据一些实施方式,基于当前时间窗口内的关系词向量与上一个时间窗口内的关系词向量之间的差异,确定当前时间窗口的关系风险值;并且基于当前时间窗口内的方向词向量与上一个时间窗口内的方向词向量之间的差异,确定当前时间窗口的方向风险值。
46.一般情况下,如果没有异常,每个时间窗口内的关系或方向的数值并不会发生很大的变化;而在出现异常的情况下,当前时间窗口内的关系或方向的数值相对于上一个时间窗口会发生较大变化。因此,可以利用表示当前时间窗口内的关系或方向与上一时间窗口内的关系或方向的差异大小的风险值来判断日志中是否存在异常。
47.在一些实施例中,上一个时间窗口内的关系词向量和方向词向量可以在分析上一个时间窗口的日志时存储在存储器中,并在需要时被读取。
48.根据优选的实施例,通过计算当前时间窗口内的关系词向量与上一个时间窗口内的关系词向量的平均向量之间的夹角,确定关系风险值,并且通过计算当前时间窗口内的方向词向量与上一个时间窗口内的方向词向量的平均向量之间的夹角,确定方向风险值。
49.夹角的范围在0度和180度之间。具体而言,如果当前时间窗口内的关系词向量与上一个时间窗口内的关系词向量的平均向量之间的夹角为0度(即,方向相同),那么表明两个向量差异最小。如果当前时间窗口内的关系词向量与上一个时间窗口内的关系词向量的平均向量之间的夹角为180度(即,方向相反),那么表明两个向量差异最大。
50.优选地,可将关系风险值表示为当前时间窗口内的关系词向量与上一个时间窗口内的关系词向量的平均向量之间的夹角的余弦,并将方向风险值表示为当前时间窗口内的方向词向量与上一个时间窗口内的方向词向量的平均向量之间的夹角的余弦。如此计算的风险值的范围在-1和1之间。当夹角为0度时,风险值为1;而将夹角为180度时,风险值为-1。也就是说,风险值越接近-1,日志数据存在异常的可能性越高。
51.以夹角的余弦方式表示的风险值可通过如下等式计算:
52.关系风险值r:
[0053][0054]
其中z
ri
为上一个时间窗口内的关系词向量的平均向量的所有维度,ri为当前时间
窗口内的当前关系词向量的所有维度,k为关系词向量的维度数量。
[0055]
方向风险值d:
[0056][0057]
其中z
di
为上一个时间窗口内的方向词向量的平均向量的所有维度,di为当前时间窗口内的当前方向词向量的所有维度,k为方向词向量的维度数量。
[0058]
由于关系词向量和方向词向量都是使用相同的方法转换的(例如,word2vec),因此每个词向量都具有相同数量的维度。
[0059]
其中,可以通过对所述上一个时间窗口内的关系词向量进行平均池化来计算关系词向量的平均向量;并且通过对所述上一个时间窗口内的方向词向量进行平均池化来计算方向词向量的平均向量。
[0060]
可通过如下等式通过平均池化方式计算平均向量:
[0061]
上一个时间窗口内的方向词向量的平均向量zr:
[0062][0063]
上一个时间窗口内的方向词向量的平均向量zd:
[0064][0065]
其中q为上一个时间窗口内获得的关系词向量的数量或方向词向量的数量。
[0066]
通过上述计算,风险值的最终结果呈现为夹角的余弦[-1,1],风险值越大表示越安全,风险值越小表示越可能存在异常。这种计算方法对r和d按维度求均值,考虑了每个词的信息,因此可以实现高精度的判断。
[0067]
然后,在步骤303,分别比较关系风险值和方向风险值与其各自的阈值,判断关系风险值和方向风险值中是否至少有一者低于对应阈值。阈值可以根据风险值的计算方式来预先设置。例如,在按照夹角余弦计算r和d的算法中,r和d的取值范围为[-1,1]。当值越接近1,说明跟上一时间窗口的变化越小,值越接近-1,说明跟上一时间窗口的变化越大。因此,可以以0为分界点,规定小于0的为异常。然而,本发明不限于此,可根据需求改变阈值。
[0068]
如果关系风险值和方向风险值中至少有一者低于对应阈值,则表示当前时间窗口周期内的日志存在异常。此时,流程前进至步骤304。
[0069]
在步骤304,在知识图谱中标注异常并进行展示。例如,可以通过不同颜色的渲染标记标出异常点。通过在知识图谱中进行标注,能够快速追溯异常日志,辅助开发者定位程序漏洞。本领域技术人员可以理解,标注的方式不限于此,其它标注方式也是可行的。
[0070]
在标注异常之后,过程前进至步骤305。
[0071]
如果关系风险值和方向风险值均高于对应阈值,即,应用程序在当前时间窗口中运行正常,则过程直接从步骤303前进至步骤305。
[0072]
在步骤305中,判断是否满足日志分析结束条件。例如,是否已经记录日志达足够长的时间。如果是,则可以结束流程。如果不满足结束条件,则前进至步骤306。在步骤306,获取下一时间窗口内的关系和方向。接着,过程返回到步骤302,开始下一时间窗口内的关
系风险值和方向风险值的计算。
[0073]
下面,参照图4描述根据本公开另一些实施方式的基于自适应的时间窗口周期的日志数据分析方法。时间窗口周期由预定数量的时间窗口组成。同一时间窗口周期内的各时间窗口具有相同长度。在不同时间窗口之间的日志数据变化不显著的情况下,可以适当延长分析周期,以时间窗口周期为单位进行划分并分析日志数据,从而节约资源,提高分析效率。
[0074]
根据一种实施方式,基于当前时间窗口周期的各时间窗口内的关系风险值和方向风险值来自适应地调整下一个时间窗口周期的长度。也就是说,可以根据风险值的变化划分不同大小的时间窗口周期,从而使得在突发异常时可以将时间窗口周期缩短,以增加检测粒度,而在应用程序正常运行时可以将时间窗口周期加长,以避免不必要的资源浪费。
[0075]
图4的步骤401-402和图3中的步骤301-302相同,此处不再详述。
[0076]
在步骤403,判断是否已计算完一个时间窗口周期中的所有时间窗口的关系风险值和方向风险值。
[0077]
根据一个实施方式,可以通过采用计数器i计数来判断是否已完成一个周期中所有时间窗口的计算。假定当前时间窗口周期中有n个时间窗口,当i的值达到n时,判断已经计算了当前时间窗口周期中的所有时间窗口的关系风险值和方向风险值。此时,过程前进至步骤405。如果判断i的值不等于n,则前进至步骤404,继续获取下一个时间窗口的关系和方向。
[0078]
在步骤405,基于所计算的当前时间窗口周期中的所有时间窗口的关系风险值和方向风险值来确定当前时间窗口周期中是否存在异常。本领域技术人员可以根据具体情况采用不同的判断规则。例如,可以设置当预定数量的时间窗口的风险值低于阈值时,判断当前时间窗口周期中存在异常。例如,如果n为5,可以设置当3个当前时间窗口的风险值低于阈值时,判断当前时间窗口周期中存在异常。关于阈值的设置和风险值的计算可参照上文中对图3的步骤302的描述。
[0079]
如果存在异常,则过程前进至步骤406,在知识图谱上标记异常。之后,过程前进至步骤407。如果不存在异常,则过程直接前进至步骤407。
[0080]
在步骤407,判断是否满足日志分析结束条件。例如,是否已经记录日志达足够长的时间。如果是,则可以结束流程。如果不满足结束条件,则前进至步骤408。
[0081]
在步骤408,基于当前时间窗口周期的各时间窗口内的关系风险值和方向风险值来自适应地调整下一个时间窗口周期的长度。
[0082]
时间窗口周期的长度为时间窗口周期中各时间窗口的长度与时间窗口的数量的乘积,因此可以通过调整时间窗口的长度和时间窗口的数量两者来调整时间窗口周期的长度。
[0083]
根据一个实施方式,基于当前时间窗口周期的各时间窗口内的关系风险值来自适应地调整下一个时间窗口周期中的时间窗口的数量。
[0084]
当攻击者发送攻击payload时,首先影响的是关系词向量的特征值。因此,可以基于当前时间窗口周期的各时间窗口内的关系风险值r来如下计算下一个时间窗口周期中的时间窗口的数量n:
[0085][0086]
其中n为当前的时间窗口周期中的时间窗口的数量,ri为当前时间窗口周期中当前时间窗口的风险值。
[0087]
根据一个实施方式,基于当前时间窗口周期的各时间窗口内的关系风险值和方向风险值来自适应地调整下一个时间窗口周期中的各时间窗口的长度。
[0088]
受到攻击时,关系词向量和方向词向量的特征值变化明显,因此可以基于当前时间窗口周期的各时间窗口内的关系风险值和方向风险值两者如下计算下一个时间窗口周期中的各时间窗口的长度t(以毫秒为单位):
[0089][0090]
其中,当前时间周期中时间窗口的大小为t(以毫秒为单位),n为当前的时间窗口周期中的时间窗口的数量,ri为当前时间窗口周期中当前时间窗口的关系风险值,di为当前时间窗口周期中当前时间窗口的方向风险值。
[0091]
因此,下一个时间窗口周期的总长度l=n
×
t。
[0092]
利用图4所示的方法,如果上一时间窗口周期中发现异常,即风险值小于阈值,则可以缩短下一时间窗口周期的长度。这样可以增加检测粒度。如果上一时间窗口周期中未发现异常,即风险值高于阈值,则可以增加下一时间窗口周期的长度,减少不必要的资源消耗。
[0093]
在得到下一个时间窗口周期的长度之后,将计数器i清零。过程返回步骤404,开始根据调整后的周期长度,针对下一个时间窗口周期进行日志分析。
[0094]
图8示出了可以实现根据本公开的实施例的用于应用程序日志分析的装置800的示例性硬件配置图。
[0095]
应用程序日志分析装置800是能够应用本公开的上述方面的硬件设备的实例。应用程序日志分析装置800可以是被配置为执行处理和/或计算的任何机器。应用程序日志分析装置800可以是但不限制于交换机、路由器、工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(pda)、智能电话、车载计算机或以上组合。
[0096]
如图8所示,应用程序日志分析装置800可以包括可以经由一个或多个接口与总线502连接或通信的一个或多个元件。总线802可以包括但不限于,工业标准架构(industry standard architecture,isa)总线、微通道架构(micro channel architecture,mca)总线、增强isa(eisa)总线、视频电子标准协会(vesa)局部总线、以及外设组件互连(pci)总线等。应用程序日志分析装置800可以包括例如一个或多个处理器804、一个或多个输入设备806以及一个或多个输出设备808。一个或多个处理器804可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。处理器802例如被配置为实现本公开中的应用程序日志分析方法。输入设备806可以是能够向计算设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输出设备808可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
[0097]
应用程序日志分析装置800还可以包括或被连接至非暂态存储设备814,该非暂态存储设备814可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其他光学介质、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。应用程序日志分析装置800还可以包括随机存取存储器(ram)810和只读存储器(rom)812。rom 812可以以非易失性方式存储待执行的程序、实用程序或进程。ram 810可提供易失性数据存储,并存储与应用程序日志分析装置800的操作相关的指令。应用程序日志分析装置800还可包括耦接至数据链路818的网络/总线接口816。网络/总线接口816可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙
tm
设备、802.11设备、wifi设备、wimax设备、蜂窝通信设施等)。
[0098]
本公开可以被实现为装置、系统、集成电路和非瞬时性计算机可读介质上的计算机程序的任何组合。可以将一个或多个处理器实现为执行本公开中描述的部分或全部功能的集成电路(ic)、专用集成电路(asic)或大规模集成电路(lsi)、系统lsi,超级lsi或超lsi组件。
[0099]
本公开包括软件、应用程序、计算机程序或算法的使用。可以将软件、应用程序、计算机程序或算法存储在非瞬时性计算机可读介质上,以使诸如一个或多个处理器的计算机执行上述步骤和附图中描述的步骤。例如,一个或多个存储器以可执行指令存储软件或算法,并且一个或多个处理器可以关联执行该软件或算法的一组指令,以根据本公开中描述的实施例提供各种功能。
[0100]
软件和计算机程序(也可以称为程序、软件应用程序、应用程序、组件或代码)包括用于可编程处理器的机器指令,并且可以以高级过程性语言、面向对象编程语言、功能性编程语言、逻辑编程语言或汇编语言或机器语言来实现。术语“计算机可读介质”是指用于向可编程数据处理器提供机器指令或数据的任何计算机程序产品、装置或设备,例如磁盘、光盘、固态存储设备、存储器和可编程逻辑设备(pld),包括将机器指令作为计算机可读信号来接收的计算机可读介质。
[0101]
提供本公开的主题作为用于执行本公开中描述的特征的装置、系统、方法和程序的示例。但是,除了上述特征之外,还可以预期其他特征或变型。可以预期的是,可以用可能代替任何上述实现的技术的任何新出现的技术来完成本公开的部件和功能的实现。
[0102]
另外,以上描述提供了示例,而不限制权利要求中阐述的范围、适用性或配置。在不脱离本公开的精神和范围的情况下,可以对所讨论的元件的功能和布置进行改变。各种实施例可以适当地省略、替代或添加各种过程或部件。例如,关于某些实施例描述的特征可以在其他实施例中被结合。
[0103]
类似地,虽然在附图中以特定次序描绘了操作,但是这不应该被理解为要求以所示的特定次序或者以顺序次序执行这样的操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1