一种基于数据监控的软件漏洞追踪方法及系统与流程

未命名 10-19 阅读:120 评论:0


1.本发明涉及数据监控技术领域,尤其涉及一种基于数据监控的软件漏洞追踪方法及系统。


背景技术:

2.随着社会信息化进程的不断推进和互联网络的日益普及,软件技术凭借其高效、准确、及时的特性,在科学、教育、工业生产以及其他许多行业发挥着不可替代的重要作用。然而,随着社交网络、移动互联网、云计算等新技术、新应用的不断出现,由软件引发的信息安全事件也层出不穷,这些信息安全事件都存在一个共同点,即信息系统或软件自身存在可被利用的漏洞,如果忽略这个问题,很有可能对系统的安全,乃至整个国民经济的健康安全发展,产生重大的不利影响。
3.因此,为了保证软件的安全可靠,必须进行软件漏洞挖掘,但是,由于目前软件功能越来越复杂,从源码的角度去分析和挖掘漏洞,直到清除漏洞,几乎是不可能完成的;同时,随着软件的可扩展性不断地加强,恶意代码的入侵方式也多种多样,这也造成了软件漏洞挖掘的效率较低。综上所述,现存技术中存在软件漏洞追踪的效率较低的问题。


技术实现要素:

4.本发明提供一种基于数据监控的软件漏洞追踪方法及系统,其主要目的在于解决软件漏洞追踪的效率较低的问题。
5.为实现上述目的,本发明提供的一种基于数据监控的软件漏洞追踪方法,包括:
6.获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;
7.对所述汇编代码数据进行关联切片处理,得到切片代码数据;
8.对所述切片代码数据进行漏洞节点检测,得到追踪节点;
9.根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;
10.从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;
11.根据所述测试数据进行漏洞报备,得到漏洞报告。
12.可选地,所述对所述软件代码数据进行并行反汇编处理,得到汇编代码数据,包括:
13.通过预设的目标反汇编函数接收目标机器码,根据所述目标机器码确定目标操作符及目标操作数;
14.对所述目标操作符与预设的指令格式进行匹配,得到目标指令格式,并根据所述目标指令格式及所述目标操作数生成反汇编指令;
15.获取所述软件代码数据的数据地址,根据所述数据地址利用所述反汇编指令对所述软件代码数据进行并行反汇编,得到汇编代码数据。
16.可选地,所述对所述汇编代码数据进行关联切片处理,得到切片代码数据,包括:
17.对所述汇编代码数据进行均匀分块处理,得到数据分块;
18.计算所述数据分块的分块哈希值,根据所述分块哈希值对所述数据分块进行去重处理,得到目标数据分块;
19.计算所述目标数据分块之间的关联度,并获取所述汇编代码数据的数据数量,根据所述数据数量确定切片范围;
20.根据所述关联度及所述切片范围对所述目标数据分块进行多重分割分片,得到切片代码数据。
21.可选地,所述计算所述目标数据分块之间的关联度,包括:
22.从所述目标数据分块中随机选取关联中心,将所述目标数据分块中除所述关联中心之外的目标数据分块作为待选数据分块;
23.计算所述关联中心与所述待选数据分块之间的关联度;
24.利用下述公式计算关联度:
[0025][0026]
其中,β表示所述关联度,a表示所述关联中心,bb表示第b个待选数据分块。
[0027]
可选地,所述对所述切片代码数据进行漏洞节点检测,得到追踪节点,包括:
[0028]
逆向分析所述切片代码数据的数据运行轨迹;
[0029]
根据所述数据运行轨迹对所述切片代码数据进行正向符号分析,根据分析的结果对所述切片代码数据中的异常数据进行标记,得到标记数据;
[0030]
对所述标记数据进行模式匹配,得到追踪节点。
[0031]
可选地,所述根据所述追踪节点构建数据流树,包括:
[0032]
提取所述追踪节点的数据产生时间,并根据所述数据产生时间及预设的程序任务时间窗口生成所述追踪节点之间的是节点时序关系;
[0033]
根据所述节点时序关系对所述追踪节点之间进行连接,得到连接节点;
[0034]
从所述连接节点中选取根节点,并设置入口函数;
[0035]
根据所述根节点、所述连接节点及所述入口函数生成数据流树。
[0036]
可选地,所述根据所述数据流树生成执行路径,包括:
[0037]
从所述数据流树中选取路径起点,并获取所述路径起点对应的数据值;
[0038]
根据所述数据值设置游标,并设置路径递归深度;
[0039]
基于所述路径递归深度根据所述游标及所述路径起点对所述数据流树进行深度优先遍历,得到执行路径。
[0040]
可选地,所述根据所述程序约束及所述安全约束进行数据验证,包括:
[0041]
根据所述程序约束及所述安全约束生成约束公式,判断所述追踪节点是否满足所述约束公式;
[0042]
所述约束公式表示为:
[0043]
[0044]
其中,pc表示所述程序约束,sc表示所述安全约束;
[0045]
当所述追踪节点满足所述约束公式时,判定所述追踪节点验证通过;
[0046]
当所述追踪节点不满足所述约束公式时,判定所述追踪节点验证不通过。
[0047]
可选地,所述根据所述测试数据进行漏洞报备,得到漏洞报告,包括:
[0048]
利用预设的安全属性检查原则对所述测试数据进行漏洞检查,得到漏洞证明,其中,所述安全属性检查原则包括无效访问、错误内存分配及缓冲区溢出;
[0049]
所述无效访问表示为:
[0050][0051]
其中,s1表示所述测试数据对应的初始符号数据,v1表示所述测试数据对应的初始具体数据,s2表示所述测试数据对应的访问符号数据,v2表示所述测试数据对应的访问具体数据,op
store
表示预设的访问缓冲区,addr表示所述测试数据的数据位置;
[0052]
根据所述漏洞证明从所述测试数据中提取漏洞数据,并对所述漏洞数据进行漏洞评级,得到漏洞等级;
[0053]
根据所述漏洞证明、所述漏洞数据及所述漏洞等级生成漏洞报告。
[0054]
为了解决上述问题,本发明还提供一种基于数据监控的软件漏洞追踪系统,所述系统包括:
[0055]
汇编处理模块,用于获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;
[0056]
切片处理模块,用于对所述汇编代码数据进行关联切片处理,得到切片代码数据;
[0057]
节点检测模块,用于对所述切片代码数据进行漏洞节点检测,得到追踪节点;
[0058]
执行路径生成模块,用于根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;
[0059]
数据验证模块,用于从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;
[0060]
漏洞报备模块,用于根据所述测试数据进行漏洞报备,得到漏洞报告。
[0061]
本发明实施例通过对软件代码数据进行并行反汇编处理,能够准确得到汇编代码数据;通过对汇编代码数据进行关联切片处理,能够提高得到的切片代码数据的准确性,减少分析的数据量,从而提高数据分析效率;通过对切片代码数据进行漏洞节点检测,能够精确检测到追踪节点,从而保证构建数据流树的准确性及真实性;通过数据流树能够准确生成执行路径,并准确获取程序约束及安全约束;通过程序约束及安全约束进行数据验证,能够保证生成的测试数据更加准确,从而提高数据监控的效率;通过测试数据进行漏洞报备,能够准确得到漏洞报告,并提高软件漏洞追踪的效率。因此本发明提出的基于数据监控的软件漏洞追踪方法及系统,可以解决软件漏洞追踪的效率较低的问题。
附图说明
[0062]
图1为本发明一实施例提供的基于数据监控的软件漏洞追踪方法的流程示意图;
[0063]
图2为本发明一实施例提供的根据追踪节点构建数据流树的流程示意图;
[0064]
图3为本发明一实施例提供的从执行路径中获取程序约束及安全约束的流程示意
图;
[0065]
图4为本发明一实施例提供的基于数据监控的软件漏洞追踪系统的功能模块图;
[0066]
图5为本发明一实施例提供的实现所述基于数据监控的软件漏洞追踪方法的电子设备的结构示意图。
[0067]
本发明目的的实现、功能特点及优点将结合实施例,参照附图作进一步说明。
具体实施方式
[0068]
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0069]
本技术实施例提供一种基于数据监控的软件漏洞追踪方法。所述基于数据监控的软件漏洞追踪方法的执行主体包括但不限于服务端、终端等能够被配置为执行本技术实施例提供的该方法的电子设备中的至少一种。换言之,所述基于数据监控的软件漏洞追踪方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn),以及大数据和人工智能平台等基础云计算服务的云服务器。
[0070]
参照图1所示,为本发明一实施例提供的基于数据监控的软件漏洞追踪方法的流程示意图。在本实施例中,所述基于数据监控的软件漏洞追踪方法包括:
[0071]
s1、获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据。
[0072]
本发明实施例中,所述软件代码数据指的是编写程序时能够完成某种功能的程序文本行,即计算机认可的一组可执行的指令集,包括数字、字符及指令等。
[0073]
本发明实施例中,所述对所述软件代码数据进行并行反汇编处理,得到汇编代码数据,包括:
[0074]
通过预设的目标反汇编函数接收目标机器码,根据所述目标机器码确定目标操作符及目标操作数;
[0075]
对所述目标操作符与预设的指令格式进行匹配,得到目标指令格式,并根据所述目标指令格式及所述目标操作数生成反汇编指令;
[0076]
获取所述软件代码数据的数据地址,根据所述数据地址利用所述反汇编指令对所述软件代码数据进行并行反汇编,得到汇编代码数据。
[0077]
本发明实施例中,所述目标反汇编函数可以通过objdump的-d参数或者gdb的disassemble命令获取,所述目标机器码指的是汇编器处理源代码后所生成的目标代码;从所述目标机器码中提取所述目标操作符及目标操作数,其中,所述目标操作符指的是操作码,包括传送,运算,移位,跳转等,所述目标操作数指的是计算机指令中的一个组成部分,规定了指令中进行数字运算的量;利用所述目标操作符与所述指令格式进行匹配计算,将匹配度最高的指令格式作为目标指令格式;对所述目标指令格式及所述目标操作数进行绑定,得到反汇编指令;根据多个所述数据地址的不同,利用所述反汇编指令对所述软件代码数据进行并行处理,得到汇编代码数据,能够加快所述软件代码数据的反汇编效率。
[0078]
本发明实施例中,对所述软件代码数据进行反汇编处理,能够精确得到汇编代码
数据。
[0079]
s2、对所述汇编代码数据进行关联切片处理,得到切片代码数据。
[0080]
本发明实施例中,所述对所述汇编代码数据进行关联切片处理,得到切片代码数据,包括:
[0081]
对所述汇编代码数据进行均匀分块处理,得到数据分块;
[0082]
计算所述数据分块的分块哈希值,根据所述分块哈希值对所述数据分块进行去重处理,得到目标数据分块;
[0083]
计算所述目标数据分块之间的关联度,并获取所述汇编代码数据的数据数量,根据所述数据数量确定切片范围;
[0084]
根据所述关联度及所述切片范围对所述目标数据分块进行多重分割分片,得到切片代码数据。
[0085]
本发明实施例中,设置数据区间的个数及大小,根据所述数据区间的个数及大小对所述汇编代码数据进行均匀划分,得到数据分块;利用预设的哈希函数计算所述数据分块的分块哈希值,其中,所述哈希函数可以为blake函数或keccak函数等;对所述数据分块之间的分块哈希值进行大小比较,将所述数据分块之间的分块哈希值一致的两个数据分块进行删减,即保留的分块哈希值对应的数据分块均不一致。
[0086]
本发明实施例中,所述计算所述目标数据分块之间的关联度,包括:
[0087]
从所述目标数据分块中随机选取关联中心,将所述目标数据分块中除所述关联中心之外的目标数据分块作为待选数据分块;
[0088]
计算所述关联中心与所述待选数据分块之间的关联度。
[0089]
本发明实施例中,利用下述公式计算关联度:
[0090][0091]
其中,β表示所述关联度,a表示所述关联中心,bb表示第b个待选数据分块。
[0092]
本发明实施例中,根据所述数据数量设定切片数量,根据所述切片数量划分切片范围,保证所述切片范围内均包含所述汇编代码数据;根据所述切片范围的大小,按照关联度从高到低对所述目标数据分块同时进行分割分片,从而提高了切片处理的效率。
[0093]
本发明实施例中,对所述汇编代码数据进行切片处理,能够准确得到切片代码数据,并保证了所述切片代码数据之间的均衡性,从而提高了数据分析效率。
[0094]
s3、对所述切片代码数据进行漏洞节点检测,得到追踪节点。
[0095]
本发明实施例中,所述对所述切片代码数据进行漏洞节点检测,得到追踪节点,包括:
[0096]
逆向分析所述切片代码数据的数据运行轨迹;
[0097]
根据所述数据运行轨迹对所述切片代码数据进行正向符号分析,根据分析的结果对所述切片代码数据中的异常数据进行标记,得到标记数据;
[0098]
对所述标记数据进行模式匹配,得到追踪节点。
[0099]
本发明实施例中,所述追踪节点指的是指所述切片代码数据中有敏感数据类型的安全敏感函数对应的代码数据,其中,所述追踪节点来自于不被信任的输入来源,例如,输
入文件、网络消息及命令行选项等。
[0100]
本发明实施例中,可以通过常数判别分析法或者数据结构特征分析法对所述切片代码数据的数据运行轨迹进行逆向分析,其中,所述数据结构特征分析法指的是获取所述切片代码数据对应的数据结构特征,根据所述数据结构特征提取所述切片代码数据经过的加解密算法及编码算法等算法,根据所述算法进行快速逆向分析,得到数据运行轨迹。
[0101]
本发明实施例中,按照所述数据运行轨迹的先后顺序对所述切片代码数据进行上下文敏感的分析,包括考虑当前函数的调用信息和环境信息,采用正向的符号执行所述切片代码数据的分析;判断所述切片代码数据是否出现异常,其中,所述异常可以指所述切片代码数据的环境异常、数据值异常、格式不匹配及调用信息异常等,当所述切片代码数据正常时,不需要对所述切片代码数据进行标记;当所述切片代码数据异常时,需要对所述切片代码数据进行标记,其中,可以采用split()函数对所述切片代码数据进行标记,得到标记数据。
[0102]
本发明实施例中,对所述标记数据进行模式匹配指的是判断所述标记数据中是否包含特定特征,具体地,对所述标记数据进行测试,其中,测试项包括null检查、类型测试及比较离散值等测试项,当所述标记数据中包含所述特定特征时,将所述标记数据作为追踪节点。
[0103]
本发明实施例中,对切片代码数据进行漏洞节点检测,能够提高得到的追踪节点的准确性,并提高漏洞检测的效率。
[0104]
s4、根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径。
[0105]
请参阅图2所示,本发明实施例中,所述根据所述追踪节点构建数据流树,包括:
[0106]
s21、提取所述追踪节点的数据产生时间,并根据所述数据产生时间及预设的程序任务时间窗口生成所述追踪节点之间的是节点时序关系;
[0107]
s22、根据所述节点时序关系对所述追踪节点之间进行连接,得到连接节点;
[0108]
s23、从所述连接节点中选取根节点,并设置入口函数;
[0109]
s24、根据所述根节点、所述连接节点及所述入口函数生成数据流树。
[0110]
本发明实施例中,利用预设的时间函数提取所述追踪节点的数据产生时间,其中,所述时间函数可以为hour()函数或者minute()函数;根据所述程序任务时间窗口确定所述追踪节点之间的数据产生时间是否在同一程序任务时间窗口内,当所述追踪节点之间的数据产生时间在同一程序任务时间窗口内时,表示所述追踪节点之间存在节点时序关系;根据数据产生时间的先后对所述追踪节点进行排序,得到节点序列,按照所述节点序列的顺序对所述追踪节点进行连接,得到连接节点。
[0111]
本发明实施例中,将所述节点序列的第一位作为所述连接节点中的根节点;所述入口函数可以设置为main()函数;将所述入口函数作为数据流树对应的函数,并从根节点开始对所述连接节点进行层级树状连接,得到数据流树。
[0112]
本发明实施例中,根据追踪节点能够准确构建多层次的数据流树,从而保证了追踪节点之间的关联性,并提高了数据流树的层次性。
[0113]
本发明实施例中,所述根据所述数据流树生成执行路径,包括:
[0114]
从所述数据流树中选取路径起点,并获取所述路径起点对应的数据值;
[0115]
根据所述数据值设置游标,并设置路径递归深度;
[0116]
基于所述路径递归深度根据所述游标及所述路径起点对所述数据流树进行深度优先遍历,得到执行路径。
[0117]
本发明实施例中,从所述数据流树中选取主路径对应的根节点作为路径起点;可以采用dataframe方法获取所述路径起点对应的数据值;所述路径递归深度指的是预先设定的需要遍历的层数;将所述数据值的大小作为游标,所述游标的大小随着所述路径起点的大小改变而改变;从所述路径起点开始,按照所述游标依次对所述数据流树进行遍历,直至达到预先设定的路径递归深度,将符合条件的所述追踪节点提取出来,其中,所述条件指的是小于所述游标大小的追踪节点,形成多个执行路径。
[0118]
本发明实施例中,通过数据流树能够准确生成执行路径,并通过游标及路径递归深度的方式对数据流树进行遍历,能够加快数据分析效率,提高计算机处理效率。
[0119]
s5、从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据。
[0120]
请参阅图3所示,本发明实施例中,所述从所述执行路径中获取程序约束及安全约束,包括:
[0121]
s31、逐一提取所述执行路径中的若干分支路径及若干安全敏感函数;
[0122]
s32、根据所述若干分支路径的路径位置获取分支条件,根据所述分支条件生成程序约束;
[0123]
s33、根据所述若干安全敏感函数定义若干安全需求,对所述若干安全需求进行汇总,得到安全约束。
[0124]
本发明实施例中,所述若干分支路径指的是所述执行路径中包含的多个判断节点对应的路径;所述若干安全敏感函数指的是所述执行路径中追踪节点对应的多个安全函数,其中,所述若干安全敏感函数包括strcpy(dst,src)、fdets(dst,size,f)及getcwd(buf,size)等。
[0125]
本发明实施例中,获取所述若干分支路径的路径位置,根据所述路径位置从所述数据流树中提取出分支代码,即分支条件,并判断所述分支条件是否为空,当所述分支条件为空时,对所述分支条件进行删减;当所述分支条件不为空时,将所述分支条件作为初始程序约束;进一步地,对多个所述初始程序约束进行整合,得到程序约束。
[0126]
本发明实施例中,每个所述安全敏感函数包含对应的预定义的安全需求,即所述安全敏感函数与所述安全需求为一一对应的关系,例如,当所述安全敏感函数为strcpy(dst,src)时,所述安全敏感函数对应的安全需求为dst.space》src.strlen;对多个所述安全需求进行汇总指的是对所述安全需求进行加和计算,得到安全约束。
[0127]
本发明实施例中,从执行路径中能够准确获取程序约束及安全约束,并减少测试输入,使得软件漏洞的追踪效率更高。
[0128]
本发明实施例中,所述根据所述程序约束及所述安全约束进行数据验证,包括:
[0129]
根据所述程序约束及所述安全约束生成约束公式,判断所述追踪节点是否满足所述约束公式;
[0130]
当所述追踪节点满足所述约束公式时,判定所述追踪节点验证通过;
[0131]
当所述追踪节点不满足所述约束公式时,判定所述追踪节点验证不通过。
[0132]
本发明实施例中,所述约束公式表示为:
[0133][0134]
其中,pc表示所述程序约束,sc表示所述安全约束。
[0135]
本发明实施例中,当所述追踪节点不满足所述约束公式时,表示所述追踪节点中不存在漏洞,因此,所述追踪节点不用进行进一步分析,即不作为测试数据;当所述追踪节点满足所述约束公式时,表示所述追踪节点中存在漏洞,因此,将多个所述追踪节点提取出来作为测试数据。
[0136]
本发明实施例中,根据所述程序约束及所述安全约束进行数据验证,能够准确得到测试数据,保证了测试数据的精确性并减少了需要分析的数据量,从而提高了计算机处理效率。
[0137]
s6、根据所述测试数据进行漏洞报备,得到漏洞报告。
[0138]
本发明实施例中,所述根据所述测试数据进行漏洞报备,得到漏洞报告,包括:
[0139]
利用预设的安全属性检查原则对所述测试数据进行漏洞检查,得到漏洞证明,其中,所述安全属性检查原则包括无效访问、错误内存分配及缓冲区溢出;
[0140]
根据所述漏洞证明从所述测试数据中提取漏洞数据,并对所述漏洞数据进行漏洞评级,得到漏洞等级;
[0141]
根据所述漏洞证明、所述漏洞数据及所述漏洞等级生成漏洞报告。
[0142]
本发明实施例中,所述无效访问表示为:
[0143][0144]
其中,s1表示所述测试数据对应的初始符号数据,v1表示所述测试数据对应的初始具体数据,s2表示所述测试数据对应的访问符号数据,v2表示所述测试数据对应的访问具体数据,op
store
表示预设的访问缓冲区,addr表示所述测试数据的数据位置。
[0145]
本发明实施例中,所述错误内存分配表示为:
[0146][0147]
其中,s表示所述测试数据对应的符号数据,v表示所述测试数据对应的具体数据,caller表示调用目标函数,fn
alloc
表示分配内存函数。
[0148]
本发明实施例中,所述缓冲区溢出表示为:
[0149]
bytearray[0:range(s
×
v)]
[0150]
其中,s表示所述测试数据对应的符号数据,v表示所述测试数据对应的具体数据,bytearray表示符号缓冲函数,range表示内置函数。
[0151]
本发明实施例中,当所述测试数据不满足所述安全属性检查原则时,表示所述测试数据不存在漏洞,则对所述测试数据进行删减,将剩余的所述测试数据作为漏洞数据;当所述测试数据满足所述安全属性检查原则时,表示所述测试数据存在漏洞,则将所述测试数据作为漏洞数据,并保留漏洞检查结果,将所述漏洞检查结果作为漏洞证明。
[0152]
本发明实施例中,对所述漏洞数据进行漏洞评级指的是对所述漏洞数据进行类型划分,得到漏洞类型,其中,所述漏洞类型包括代码问题、加密问题、逻辑问题及授权问题等;获取所述漏洞数据的危害程度,根据所述漏洞类型及所述危害程度对所述漏洞数据进行综合分级,得到漏洞等级,其中,所述漏洞等级包括超危、高危、中危及低危四个等级;进一步地,根据所述漏洞证明、所述漏洞数据及所述漏洞等级生成漏洞表格,将所述漏洞表格
作为漏洞报告。
[0153]
本发明实施例中,根据测试数据进行漏洞报备,能够准确得到漏洞报告,从而能够提高软件漏洞追踪的效率。
[0154]
本发明实施例通过对软件代码数据进行并行反汇编处理,能够准确得到汇编代码数据;通过对汇编代码数据进行关联切片处理,能够提高得到的切片代码数据的准确性,减少分析的数据量,从而提高数据分析效率;通过对切片代码数据进行漏洞节点检测,能够精确检测到追踪节点,从而保证构建数据流树的准确性及真实性;通过数据流树能够准确生成执行路径,并准确获取程序约束及安全约束;通过程序约束及安全约束进行数据验证,能够保证生成的测试数据更加准确,从而提高数据监控的效率;通过测试数据进行漏洞报备,能够准确得到漏洞报告,并提高软件漏洞追踪的效率。因此本发明提出的基于数据监控的软件漏洞追踪方法,可以解决软件漏洞追踪的效率较低的问题。
[0155]
如图4所示,是本发明一实施例提供的基于数据监控的软件漏洞追踪系统的功能模块图。
[0156]
本发明所述基于数据监控的软件漏洞追踪系统400可以安装于电子设备中。根据实现的功能,所述基于数据监控的软件漏洞追踪系统400可以包括汇编处理模块401、切片处理模块402、节点检测模块403、执行路径生成模块404、数据验证模块405及漏洞报备模块406。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
[0157]
在本实施例中,关于各模块/单元的功能如下:
[0158]
所述汇编处理模块401,用于获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;
[0159]
所述切片处理模块402,用于对所述汇编代码数据进行关联切片处理,得到切片代码数据;
[0160]
所述节点检测模块403,用于对所述切片代码数据进行漏洞节点检测,得到追踪节点;
[0161]
所述执行路径生成模块404,用于根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;
[0162]
所述数据验证模块405,用于从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;
[0163]
所述漏洞报备模块406,用于根据所述测试数据进行漏洞报备,得到漏洞报告。
[0164]
详细地,本发明实施例中所述基于数据监控的软件漏洞追踪系统400中所述的各模块在使用时采用与附图中所述的基于数据监控的软件漏洞追踪方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
[0165]
如图5所示,是本发明一实施例提供的实现基于数据监控的软件漏洞追踪方法的电子设备的结构示意图。
[0166]
所述电子设备500可以包括处理器501、存储器502、通信总线503以及通信接口504,还可以包括存储在所述存储器502中并可在所述处理器501上运行的计算机程序,如基于数据监控的软件漏洞追踪程序。
[0167]
其中,所述处理器501在一些实施例中可以由集成电路组成,例如可以由单个封装
的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器501是所述电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器502内的程序或者模块(例如执行基于数据监控的软件漏洞追踪程序等),以及调用存储在所述存储器502内的数据,以执行电子设备的各种功能和处理数据。
[0168]
所述存储器502至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器502在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器502在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,所述存储器502还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器502不仅可以用于存储安装于电子设备的应用软件及各类数据,例如基于数据监控的软件漏洞追踪程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
[0169]
所述通信总线503可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器502以及至少一个处理器501等之间的连接通信。
[0170]
所述通信接口504用于上述电子设备与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。所述用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light-emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
[0171]
图5仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图5示出的结构并不构成对所述电子设备500的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
[0172]
例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理系统与所述至少一个处理器501逻辑相连,从而通过电源管理系统实现充电管理、放电管理,以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
[0173]
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
[0174]
所述电子设备500中的所述存储器502存储的基于数据监控的软件漏洞追踪程序是多个指令的组合,在所述处理器501中运行时,可以实现:
[0175]
获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;
[0176]
对所述汇编代码数据进行关联切片处理,得到切片代码数据;
[0177]
对所述切片代码数据进行漏洞节点检测,得到追踪节点;
[0178]
根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;
[0179]
从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;
[0180]
根据所述测试数据进行漏洞报备,得到漏洞报告。
[0181]
具体地,所述处理器501对上述指令的具体实现方法可参考附图对应实施例中相关步骤的描述,在此不赘述。
[0182]
进一步地,所述电子设备500集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或系统、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)。
[0183]
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
[0184]
获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;
[0185]
对所述汇编代码数据进行关联切片处理,得到切片代码数据;
[0186]
对所述切片代码数据进行漏洞节点检测,得到追踪节点;
[0187]
根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;
[0188]
从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;
[0189]
根据所述测试数据进行漏洞报备,得到漏洞报告。
[0190]
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,系统和方法,可以通过其他的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0191]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0192]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0193]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
[0194]
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的
含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
[0195]
本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
[0196]
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或系统也可以由一个单元或系统通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
[0197]
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

技术特征:
1.一种基于数据监控的软件漏洞追踪方法,其特征在于,所述方法包括:获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;对所述汇编代码数据进行关联切片处理,得到切片代码数据;对所述切片代码数据进行漏洞节点检测,得到追踪节点;根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;根据所述测试数据进行漏洞报备,得到漏洞报告。2.如权利要求1所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述对所述软件代码数据进行并行反汇编处理,得到汇编代码数据,包括:通过预设的目标反汇编函数接收目标机器码,根据所述目标机器码确定目标操作符及目标操作数;对所述目标操作符与预设的指令格式进行匹配,得到目标指令格式,并根据所述目标指令格式及所述目标操作数生成反汇编指令;获取所述软件代码数据的数据地址,根据所述数据地址利用所述反汇编指令对所述软件代码数据进行并行反汇编,得到汇编代码数据。3.如权利要求1所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述对所述汇编代码数据进行关联切片处理,得到切片代码数据,包括:对所述汇编代码数据进行均匀分块处理,得到数据分块;计算所述数据分块的分块哈希值,根据所述分块哈希值对所述数据分块进行去重处理,得到目标数据分块;计算所述目标数据分块之间的关联度,并获取所述汇编代码数据的数据数量,根据所述数据数量确定切片范围;根据所述关联度及所述切片范围对所述目标数据分块进行多重分割分片,得到切片代码数据。4.如权利要求3所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述计算所述目标数据分块之间的关联度,包括:从所述目标数据分块中随机选取关联中心,将所述目标数据分块中除所述关联中心之外的目标数据分块作为待选数据分块;计算所述关联中心与所述待选数据分块之间的关联度;利用下述公式计算关联度:其中,β表示所述关联度,a表示所述关联中心,b
b
表示第b个待选数据分块。5.如权利要求1所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述对所述切片代码数据进行漏洞节点检测,得到追踪节点,包括:逆向分析所述切片代码数据的数据运行轨迹;
根据所述数据运行轨迹对所述切片代码数据进行正向符号分析,根据分析的结果对所述切片代码数据中的异常数据进行标记,得到标记数据;对所述标记数据进行模式匹配,得到追踪节点。6.如权利要求1所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述根据所述追踪节点构建数据流树,包括:提取所述追踪节点的数据产生时间,并根据所述数据产生时间及预设的程序任务时间窗口生成所述追踪节点之间的是节点时序关系;根据所述节点时序关系对所述追踪节点之间进行连接,得到连接节点;从所述连接节点中选取根节点,并设置入口函数;根据所述根节点、所述连接节点及所述入口函数生成数据流树。7.如权利要求1所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述根据所述数据流树生成执行路径,包括:从所述数据流树中选取路径起点,并获取所述路径起点对应的数据值;根据所述数据值设置游标,并设置路径递归深度;基于所述路径递归深度根据所述游标及所述路径起点对所述数据流树进行深度优先遍历,得到执行路径。8.如权利要求1所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述根据所述程序约束及所述安全约束进行数据验证,包括:根据所述程序约束及所述安全约束生成约束公式,判断所述追踪节点是否满足所述约束公式;所述约束公式表示为:其中,pc表示所述程序约束,sc表示所述安全约束;当所述追踪节点满足所述约束公式时,判定所述追踪节点验证通过;当所述追踪节点不满足所述约束公式时,判定所述追踪节点验证不通过。9.如权利要求1至8中任一项所述的基于数据监控的软件漏洞追踪方法,其特征在于,所述根据所述测试数据进行漏洞报备,得到漏洞报告,包括:利用预设的安全属性检查原则对所述测试数据进行漏洞检查,得到漏洞证明,其中,所述安全属性检查原则包括无效访问、错误内存分配及缓冲区溢出;所述无效访问表示为:其中,s1表示所述测试数据对应的初始符号数据,v1表示所述测试数据对应的初始具体数据,s2表示所述测试数据对应的访问符号数据,v2表示所述测试数据对应的访问具体数据,op
store
表示预设的访问缓冲区,addr表示所述测试数据的数据位置;根据所述漏洞证明从所述测试数据中提取漏洞数据,并对所述漏洞数据进行漏洞评级,得到漏洞等级;根据所述漏洞证明、所述漏洞数据及所述漏洞等级生成漏洞报告。10.一种基于数据监控的软件漏洞追踪系统,其特征在于,所述系统包括:
汇编处理模块,用于获取软件代码数据,对所述软件代码数据进行并行反汇编处理,得到汇编代码数据;切片处理模块,用于对所述汇编代码数据进行关联切片处理,得到切片代码数据;节点检测模块,用于对所述切片代码数据进行漏洞节点检测,得到追踪节点;执行路径生成模块,用于根据所述追踪节点构建数据流树,并根据所述数据流树生成执行路径;数据验证模块,用于从所述执行路径中获取程序约束及安全约束,并根据所述程序约束及所述安全约束进行数据验证,根据验证的结果生成测试数据;漏洞报备模块,用于根据所述测试数据进行漏洞报备,得到漏洞报告。

技术总结
本发明涉及数据监控技术,揭露了一种基于数据监控的软件漏洞追踪方法及系统,其中,所述方法包括:获取软件代码数据,对软件代码数据进行并行反汇编处理,得到汇编代码数据;对汇编代码数据进行关联切片处理,得到切片代码数据;对切片代码数据进行漏洞节点检测,得到追踪节点;根据追踪节点构建数据流树,并根据数据流树生成执行路径;从执行路径中获取程序约束及安全约束,并根据程序约束及安全约束进行数据验证,根据验证的结果生成测试数据;根据测试数据进行漏洞报备,得到漏洞报告。本发明通过对软件代码数据进行漏洞检测,根据检测得到的追踪节点进行一系列分析,最后生成漏洞报告,可以提高软件漏洞追踪的效率。可以提高软件漏洞追踪的效率。可以提高软件漏洞追踪的效率。


技术研发人员:朱奕彬
受保护的技术使用者:广州筑粒信息科技有限公司
技术研发日:2023.07.13
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐