基于eBPF技术的Linux系统内核漏洞补丁缓解方法及其系统转让专利

申请号 : CN202211065564.4

文献号 : CN115146262B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 覃锦端王月兵柳遵梁刘聪毛菲

申请人 : 杭州美创科技股份有限公司

摘要 :

本发明实施例公开了基于eBPF技术的Linux系统内核漏洞补丁缓解方法及其系统。方法包括:部署eBPF补丁缓解程序;提取Linux系统网络及内核信息;运行Linux系统可执行文件,并监控网络侧行为;判断是否存在可执行文件运行行为;若是,则介入可执行文件运行时内核插桩;插入正常补丁逻辑转换代码;判断监控结果中是否存在网络侧行为;若是,则介入网络侧行为运行时网络插桩,以得到介入结果;判断介入结果是否匹配网络包规则库;若是,则插桩网络层函数并修改网络响应包;判断插桩过程是否存在异常;若是,则生成带相关信息细节的告警信息。通过实施本发明实施例的方法可实现无需实际安装正常Linux内核漏洞补丁也可以精准防御Linux内核漏洞攻击。

权利要求 :

1.基于eBPF技术的Linux系统内核漏洞补丁缓解方法,其特征在于,包括:部署eBPF补丁缓解程序;

提取Linux系统网络及内核相关信息;

利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;

判断所述监控结果中是否存在可执行文件运行行为或网络侧行为;

若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;

插入正常补丁逻辑转换代码;

若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;

判断所述介入结果是否匹配网络包规则库;

若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;

判断插桩过程是否存在异常;

若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警;

其中,所述eBPF补丁缓解程序是通过对Linux系统的内核以及网络进行插桩注入实现补丁缓解的,内置了两项检测特征和两项插桩特征,分别为针对内核的涉漏洞内核函数检测特征、正常补丁逻辑重写插桩特征,以及针对网络的涉漏洞网络请求数据包检测特征、网络响应包修改插桩特征。

2.根据权利要求1所述的基于eBPF技术的Linux系统内核漏洞补丁缓解方法,其特征在于,所述判断所述监控结果中是否存在网络侧行为之后,还包括:若所述监控结果中不存在网络侧行为,则执行所述判断插桩过程是否存在异常;

所述判断所述介入结果是否匹配网络包规则库之后,还包括:若所述介入结果不匹配网络包规则库,则执行所述判断插桩过程是否存在异常。

3.根据权利要求1所述的基于eBPF技术的Linux系统内核漏洞补丁缓解方法,其特征在于,所述Linux系统网络及内核相关信息包括:网卡信息;网络服务及端口开放信息;网络服务及开放端口对应协议类型信息;内核版本信息;当前系统已有补丁程序信息;进程、服务及可执行文件信息。

4.根据权利要求1所述的基于eBPF技术的Linux系统内核漏洞补丁缓解方法,其特征在于,所述判断所述监控结果中是否存在可执行文件运行行为或网络侧行为,包括:获取Linux系统内核及补丁信息合集、Linux系统网络信息合集;

根据所述Linux系统内核及补丁信息合集获取各个内核及补丁数据集;

针对Linux系统网络信息合集,获取各个网络数据集;

根据各个网络数据集以及各个内核及补丁数据集计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。

5.根据权利要求1所述的基于eBPF技术的Linux系统内核漏洞补丁缓解方法,其特征在于,所述插入正常补丁逻辑转换代码,包括:从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码;

利用所述插桩代码进行插桩。

6.根据权利要求1所述的基于eBPF技术的Linux系统内核漏洞补丁缓解方法,其特征在于,所述插桩网络层函数并修改网络响应包,包括:从网络响应包修改插桩特征数据集中获取对应的网络响应包;

利用所述网络响应包进行插桩修改。

7.基于eBPF技术的Linux系统内核漏洞补丁缓解系统,其特征在于,包括:部署单元,用于部署eBPF补丁缓解程序;

提取单元,用于提取Linux系统网络及内核相关信息;

文件运行单元,用于利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;

第一判断单元,用于判断所述监控结果中是否存在可执行文件运行行为;

第一插桩单元,用于若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;

代码插入单元,用于插入正常补丁逻辑转换代码;

第二判断单元,用于判断所述监控结果中是否存在网络侧行为;

第二插桩单元,用于若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;

第三判断单元,用于判断所述介入结果是否匹配网络包规则库;

第三插桩单元,用于若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;

第四判断单元,用于判断插桩过程是否存在异常;

告警单元,用于若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警;

其中,所述eBPF补丁缓解程序是通过对Linux系统的内核以及网络进行插桩注入实现补丁缓解的,内置了两项检测特征和两项插桩特征,分别为针对内核的涉漏洞内核函数检测特征、正常补丁逻辑重写插桩特征,以及针对网络的涉漏洞网络请求数据包检测特征、网络响应包修改插桩特征。

8.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的方法。

9.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的方法。

说明书 :

基于eBPF技术的Linux系统内核漏洞补丁缓解方法及其系统

技术领域

[0001] 本发明涉及Linux系统内核漏洞防御技术领域,更具体地说是指基于eBPF技术的Linux系统内核漏洞补丁缓解方法及其系统。

背景技术

[0002] 近年来,大量的Linux系统内核漏洞被发现并公开,黑客利用这些漏洞对Linux系统主机发起远程代码执行、提权、DDos等攻击,对网络安全造成了巨大的风险。由于Linux内核漏洞的特殊性,必须安装官方补丁才能完全防御内核漏洞攻击,而大量的Linux系统主机中往往因为运行着重要的业务应用而无法安装补丁并重启主机,依靠传统的防火墙已经无法阻止黑客对Linux系统主机的内核漏洞攻击。
[0003] 因此,有必要设计一种新的方法,实现无需实际安装正常Linux内核漏洞补丁也可以精准防御Linux内核漏洞攻击。

发明内容

[0004] 本发明的目的在于克服现有技术的缺陷,提供基于eBPF技术的Linux系统内核漏洞补丁缓解方法及其系统。
[0005] 为实现上述目的,本发明采用以下技术方案:基于eBPF技术的Linux系统内核漏洞补丁缓解方法,包括:
[0006] 部署eBPF补丁缓解程序;
[0007] 提取Linux系统网络及内核相关信息;
[0008] 利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;
[0009] 判断所述监控结果中是否存在可执行文件运行行为或网络侧行为;
[0010] 若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;
[0011] 插入正常补丁逻辑转换代码;
[0012] 判断所述监控结果中是否存在网络侧行为;
[0013] 若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;
[0014] 判断所述介入结果是否匹配网络包规则库;
[0015] 若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;
[0016] 判断插桩过程是否存在异常;
[0017] 若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警。
[0018] 其进一步技术方案为:所述判断所述监控结果中是否存在网络侧行为之后,还包括:
[0019] 若所述监控结果中不存在网络侧行为,则执行所述判断插桩过程是否存在异常;
[0020] 所述判断所述介入结果是否匹配网络包规则库之后,还包括:
[0021] 若所述介入结果不匹配网络包规则库,则执行所述判断插桩过程是否存在异常。
[0022] 其进一步技术方案为:所述eBPF补丁缓解程序是通过对Linux系统的内核以及网络进行插桩注入实现补丁缓解的,内置了两项检测特征和两项插桩特征,分别为针对内核的涉漏洞内核函数检测特征、正常补丁逻辑重写插桩特征,以及针对网络的涉漏洞网络请求数据包检测特征、网络响应包修改插桩特征。
[0023] 其进一步技术方案为:所述Linux系统网络及内核相关信息包括:网卡信息;网络服务及端口开放信息;网络服务及开放端口对应协议类型信息;内核版本信息;当前系统已有补丁程序信息;进程、服务及可执行文件信息。
[0024] 其进一步技术方案为:所述判断所述监控结果中是否存在可执行文件运行行为或网络侧行为,包括:
[0025] 获取Linux系统内核及补丁信息合集、Linux系统网络信息合集;
[0026] 根据所述Linux系统内核及补丁信息合集获取各个内核及补丁数据集;
[0027] 针对Linux系统网络信息合集,获取各个网络数据集;
[0028] 根据各个网络数据集以及各个内核及补丁数据集计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。
[0029] 其进一步技术方案为:所述插入正常补丁逻辑转换代码,包括:
[0030] 从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码;
[0031] 利用所述插桩代码进行插桩。
[0032] 其进一步技术方案为:所述插桩网络层函数并修改网络响应包,包括:
[0033] 从网络响应包修改插桩特征数据集中获取对应的网络响应包;
[0034] 利用所述网络响应包进行插桩修改。
[0035] 本发明还提供了基于eBPF技术的Linux系统内核漏洞补丁缓解系统,包括:
[0036] 部署单元,用于部署eBPF补丁缓解程序;
[0037] 提取单元,用于提取Linux系统网络及内核相关信息;
[0038] 文件运行单元,用于利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;
[0039] 第一判断单元,用于判断所述监控结果中是否存在可执行文件运行行为;
[0040] 第一插桩单元,用于若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;
[0041] 代码插入单元,用于插入正常补丁逻辑转换代码;
[0042] 第二判断单元,用于判断所述监控结果中是否存在网络侧行为;
[0043] 第二插桩单元,用于若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;
[0044] 第三判断单元,用于判断所述介入结果是否匹配网络包规则库;
[0045] 第三插桩单元,用于若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;
[0046] 第四判断单元,用于判断插桩过程是否存在异常;
[0047] 告警单元,用于若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警。
[0048] 本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
[0049] 本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
[0050] 本发明与现有技术相比的有益效果是:本发明通过利用eBPF技术及手段,以可执行文件运行行为和网络行为的监控、内核函数调用的代码插桩、网络包的插桩重写为依托,在可执行文件运行时以及网络流量包响应之前实现动态补丁注入,实现无需实际安装正常Linux内核漏洞补丁也可以精准防御Linux内核漏洞攻击。
[0051] 下面结合附图和具体实施例对本发明作进一步描述。

附图说明

[0052] 为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053] 图1为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的应用场景示意图;
[0054] 图2为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的流程示意图;
[0055] 图3为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的子流程示意图;
[0056] 图4为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的子流程示意图;
[0057] 图5为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的子流程示意图;
[0058] 图6为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解系统的示意性框图;
[0059] 图7为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解系统的第一判断单元的示意性框图;
[0060] 图8为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解系统的代码插入单元的示意性框图;
[0061] 图9为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解系统的第三插桩单元的示意性框图;
[0062] 图10为本发明实施例提供的计算机设备的示意性框图。

具体实施方式

[0063] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064] 应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0065] 还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0066] 还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0067] 请参阅图1和图2,图1为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的应用场景示意图。图2为本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的示意性流程图。该基于eBPF技术的Linux系统内核漏洞补丁缓解方法应用于服务器中。该服务器与终端进行数据交互,实现利用eBPF技术及手段,以可执行文件运行行为和网络行为的监控、内核函数调用的代码插桩、网络包的插桩重写为依托,在可执行文件运行时以及网络流量包响应之前实现动态补丁注入,从而达到无需实际安装正常Linux内核漏洞补丁也可以精准防御Linux内核漏洞攻击的目的。
[0068] 图2是本发明实施例提供的基于eBPF技术的Linux系统内核漏洞补丁缓解方法的流程示意图。如图2所示,该方法包括以下步骤S110至S220。
[0069] S110、部署eBPF补丁缓解程序。
[0070] eBPF(扩展的伯克利包过滤器,extended Berkeley Packet Filter)是从BPF(Berkeley Packet Filter)技术扩展而来。eBPF技术提供了一种支持在内核态和用户态事件发生时安全注入自定义代码的技术,可以让非内核开发人员对内核进行控制,目前eBPF技术已经支持内核、安全、网络、跟踪等方面。
[0071] 在本实施例中,所述eBPF补丁缓解程序是通过对Linux系统的内核以及网络进行插桩注入实现补丁缓解的,内置了两项检测特征和两项插桩特征,分别为针对内核的涉漏洞内核函数检测特征、正常补丁逻辑重写插桩特征,以及针对网络的涉漏洞网络请求数据包检测特征、网络响应包修改插桩特征。
[0072] 在Linux系统可执行文件运行时以及当存在网络行为时,利用eBPF技术获取可执行文件运行涉及到的Linux内核函数代码,同时在网络层对网络数据包进行监听。当可执行文件运行涉及到存在Linux内核漏洞相关的内核函数代码、或者网络数据包匹配到Linux内核漏洞攻击相关数据包特征时,eBPF补丁缓解程序介入进行插桩处理。针对内核函数代码,eBPF补丁缓解程序通过对正常漏洞修复补丁的代码逻辑进行适配性重写,插入到可执行文件运行过程中;针对网络数据包,eBPF补丁缓解程序匹配到内核漏洞攻击特征后即对网络响应包进行修改。上述监听及插桩的过程利用的eBPF技术包括但不限于BCC编译工具集合、bpftrace跟踪语言、libbpf内核标准库、golibary标准库等。
[0073] S120、提取Linux系统网络及内核相关信息。
[0074] 在本实施例中,所述Linux系统网络及内核相关信息包括:网卡信息;网络服务及端口开放信息;网络服务及开放端口对应协议类型信息;内核版本信息;当前系统已有补丁程序信息;进程、服务及可执行文件信息。
[0075] 具体地,所述eBPF补丁缓解程序进行可执行文件执行与网络侧行为的监听与插桩前需要先提取当前Linux系统主机的网络以及内核环境信息,所述获取的Linux系统主机网络及内核环境信息包括以下内容:网卡信息,包括但不限于物理网卡、虚拟网卡等;网络服务及端口开放信息;网络服务及开放端口对应协议类型信息,包括但不限于tcp、udp、http等;内核版本信息;当前系统已有补丁程序信息;进程、服务及可执行文件信息。
[0076] S130、利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果。
[0077] 在本实施例中,监控结果是指运行Linux系统可执行文件,并监控网络侧行为所得的结果。
[0078] S140、判断所述监控结果中是否存在可执行文件运行行为或网络侧行为。
[0079] 在一实施例中,请参阅图3,上述的步骤S140可包括步骤S141~S144。
[0080] S141、获取Linux系统内核及补丁信息合集、Linux系统网络信息合集;
[0081] S142、根据所述Linux系统内核及补丁信息合集获取各个内核及补丁数据集;
[0082] S143、针对Linux系统网络信息合集,获取各个网络数据集;
[0083] S144、根据各个网络数据集以及各个内核及补丁数据集计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。
[0084] 具体地,Linux系统可执行文件运行及网络侧行为监控存在算法T1,该算法针对获取到的进程、服务及可执行文件信息D,判断当前是否存在可执行文件运行或者网络侧行为,并生成标记后的行为特征合集Xi;
[0085] 算法T1具体实现如下,针对Linux系统内核及补丁信息合集F,获取各个内核及补丁数据集{F1,F2,……Fn};针对Linux系统网络信息合集L,获取各个网络数据集{L1,L2,……Ln},计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。设Linux系统主机内核及补丁信息为Fx,Linux系统主机网络信息为Lx,进程、服务及可执行文件信息为Dx,即计算T1{(Fx,Lx),Dx};若T1{(Fx,Lx),Dx}=0,即表示不存在可执行文件运行或网络侧行为,此时Xx为空集,eBPF补丁缓解程序不会介入进行插桩工作;若T1{(Fx,Lx),Dx}=1,即存在可执行文件运行或网络侧行为,或两者都发生,此时Xx为标记后的可执行文件运行行为、网络侧行为特征合集。
[0086] 另外,可执行文件运行行为、网络侧行为判断存在算法T2,该算法针对标记后的行为特征合集Xi,判断当前为内核调用行为还是网络层行为,并生成分类行为特征Pi;
[0087] 算法T2具体实现如下,针对标记后的行为特征合集Xi,获取各个标记后行为特征内容数据集{Xi1,Xi2,……Xii};针对进程、服务及可执行文件信息合集Di,获取各个进程服务及可执行文件数据集{D1,D2,……Dn},计算当前行为是内核调用行为,还是网络层行为,或者两者皆发生。设当前标记后的行为特征合集为Xx,当前进程、服务及可执行文件信息合集为Dx,即计算T2(Xx,Dx);
[0088] 若T2(Xx,Dx)=1,即表示当前行为为内核调用行为,此时分类行为特征为PFx;若T2(Xx,Dx)=2,即表示当前行为为网络行为,此时分类行为特征为PLx;若T2(Xx,Dx)=3,即表示当前行为既存在内核调用行为也存在网络行为,此时分类行为特征为PFLx,PFLx=PFx+PLx。
[0089] S150、若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩。
[0090] 在本实施例中,eBPF补丁缓解程序介入可执行文件运行时内核插桩存在算法T3,针对内核调用行为的分类行为特征PF,判断行为特征是否涉及内核漏洞相关函数代码,并生成调用的内核漏洞函数合集RFi;
[0091] 算法T3具体实现如下,针对内核调用行为的分类行为特征PF,获取各个行为特征数据集{PF1,PF2,……PFn};针对Linux系统内核及补丁信息合集F,获取各个内核及补丁数据集{F1,F2,……Fn}。设当前内核调用行为的分类行为特征为PFx,Linux系统主机内核及补丁信息为Fx,涉漏洞内核函数检测特征为QFx,即计算T3{(PFx,Fx),QFx};
[0092] 若T3{(PFx,Fx),QFx}=0,即表示当前内核调用行为的分类行为特征中未涉及Linux内核漏洞相关函数代码,此时RFx为空集;若T3{(PFx,Fx),QFx}=1,即表示当前内核调用行为的分类行为特征中涉及到Linux内核漏洞相关函数代码,此时RFx为所有涉及的内核漏洞函数合集。
[0093] S160、插入正常补丁逻辑转换代码。
[0094] 在一实施例中,请参阅图4,上述的步骤S160可包括步骤S161~S162。
[0095] S161、从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码;
[0096] S162、利用所述插桩代码进行插桩。
[0097] 存在算法T4,该算法针对调用的内核漏洞函数合集RFi以及内核调用行为的分类行为特征PFi,对正在运行的可执行文件进行插桩注入,并生成插桩注入过程及结果信息JFi;
[0098] 算法T4具体实现如下,针对调用的内核漏洞函数合集RFi,获取各个调用的内核漏洞函数数据集{RF1,RF2,……RFn};针对内核调用行为的分类行为特征PFi,获取各个行为特征数据集{PF1,PF2,……PFn}。设当前调用的内核漏洞函数合集为RFx,当前内核调用行为的分类行为特征为PFx,正常补丁逻辑重写插桩特征为KFx,即计算T4{(RFx,KFx),PFx};
[0099] 若T4{(RFx,KFx),PFx}=0,即表示当前对正在运行的可执行文件的插桩注入操作不存在异常,此时JFx为空集;若T4{(RFx,KFx),PFx}=1,即表示当前对正在运行的可执行文件的插桩注入操作存在异常,此时JFx中为插桩注入过程的异常信息。
[0100] S170、判断所述监控结果中是否存在网络侧行为;
[0101] S180、若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果。
[0102] 在本实施例中,介入结果是指利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩的结果。
[0103] S190、判断所述介入结果是否匹配网络包规则库。
[0104] 在本实施例中,存在算法T5,针对网络请求行为的分类行为特征PLi,判断网络行为特征是否涉及内核漏洞利用的相关网络请求数据包,并生成匹配的网络请求数据包合集RLi;
[0105] 算法T5具体实现如下,针对网络请求行为的分类行为特征PL,获取各个行为特征数据集{PL1,PL2,……PLn};针对Linux系统网络信息合集L,获取各个网络数据集{L1,L2,……Ln}。设当前网络请求行为的分类行为特征为PLx,Linux系统网络信息为Lx,涉漏洞网络请求数据包检测特征为QLx,即计算T5{(PLx,Lx),QLx};
[0106] 若T5{(PLx,Lx),QLx}=0,即表示当前网络请求行为的分类行为特征中未涉及Linux内核漏洞利用请求数据包,此时RLx为空集;若T5{(PLx,Lx),QLx}=1,即表示当前网络请求行为的分类行为特征中涉及到Linux内核漏洞利用请求数据包,此时RLx为所有涉及的内核漏洞利用网络请求数据包合集。
[0107] S200、若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包。
[0108] 在一实施例中,请参阅图5,上述的步骤S200可包括步骤S201~S202。
[0109] S201、从网络响应包修改插桩特征数据集中获取对应的网络响应包;
[0110] S202、利用所述网络响应包进行插桩修改。
[0111] 在本实施例中,存在算法T6,该算法针对涉及的内核漏洞利用网络请求数据包合集RLi以及网络请求行为的分类行为特征PLi,对网络请求包对应的响应包进行插桩修改,并生成插桩注入过程及结果信息JLi;
[0112] 算法T6具体实现如下,针对涉及的内核漏洞利用网络请求数据包合集RLi,获取各个涉及的内核漏洞利用网络请求数据包数据集{RL1,RL2,……RLn};针对网络请求行为的分类行为特征PLi,获取各个行为特征数据集{PL1,PL2,……PLn}。设当前调用的内核漏洞函数合集为RLx,当前内核调用行为的分类行为特征为PLx,网络响应包修改插桩特征为KLx,即计算T6{(RLx,KLx),PLx};
[0113] 若T6{(RLx,KLx),PLx}=0,即表示当前对网络请求包对应的响应包进行插桩修改操作不存在异常,此时JLx为空集;若T6{(RLx,KLx),PLx}=1,即表示当前对网络请求包对应的响应包进行插桩修改操作存在异常,此时JLx中为插桩修改过程的异常信息。
[0114] 另外,存在算法T7,该算法针对同时存在可执行文件运行行为和网络侧行为时,对算法T3、T4、T5、T6进行组合使用,并生成插桩注入过程及结果信息JFLi;即计算T7{(T3,T4),(T5,T6)};
[0115] 若T7{(T3,T4),(T5,T6)}=0,即表示当前正在运行的可执行文件的插桩注入操作、对网络请求包对应的响应包进行插桩修改操作均不存在异常,此时JFLx为空集;若T7{(T3,T4),(T5,T6)}=1,即表示当前正在运行的可执行文件的插桩注入操作、对网络请求包对应的响应包进行插桩修改操作均存在异常,此时JFLx中为所有插桩修改操作过程的异常信息。
[0116] S210、判断插桩过程是否存在异常;
[0117] 判断插桩过程是否存在异常、告警相关信息细节存在算法T8,该算法针对内核行为插桩注入操作过程及结果信息JFi、网络响应包插桩修改过程及结果信息JLi以及上述两者均发生时的过程及结果信息JFLi,判断整个插桩修改操作流程中时候存在异常,经过去重、清洗等操作生成最终的过程及结果信息JAlli;
[0118] 算法T8具体实现如下,针对内核行为插桩注入操作过程及结果信息JFi,获取各个内核行为插桩注入操作过程及结果数据集{JF1,JF2,……JFn};针对网络响应包插桩修改过程及结果信息JLi,获取各个网络响应包插桩修改过程及结果数据集{JL1,JL2,……JLn};针对上述两者均发生时的过程及结果信息JFLi,获取各个插桩修改操作过程及结果数据集{JFL1,JFL2,……JFLn}。设当前内核行为插桩注入操作过程及结果信息为JFx,当前网络响应包插桩修改过程及结果信息合集为JLx,上述两者均发生时的过程及结果合集为JFLx,即计算T8{JFx,JLx,JFLx};
[0119] 若T8{JFx,JLx,JFLx}=0,即表示整个插桩修改操作流程中时候不存在异常,此时JAllx为空集;若T8{JFx,JLx,JFLx}=1,即表示整个插桩修改操作流程中时候存在异常,此时JAllx中为插桩修改过程的异常信息。
[0120] S220、若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警。
[0121] 若插桩过程不存在异常,则进入结束步骤;
[0122] 若所述监控结果中不存在网络侧行为,则执行所述步骤S210;
[0123] 若所述介入结果不匹配网络包规则库,则执行所述步骤S210。
[0124] 当T8{JFx,JLx,JFLx}=1时,将触发告警,告知用户eBPF补丁缓解程序运行过程中发生错误;若T8{JFx,JLx,JFLx}=0,则实现无感知的Linux内核漏洞补丁缓解。
[0125] 举个例子:Linux主机的系统为Ubuntu 16.04.2 LTS,其内核版本为Linux version 4.8.0‑52‑generic,共有docker0、ens18、lo三张网卡,各个网卡的ip地址分别为172.17.0.1、192.168.51.105、127.0.0.1。
[0126] Linux系统及网络正常运作情况下,Linux系统中的各个进程正常运行,可以正常接收网络请求并做出响应,当可执行文件运行时会执行可执行文件中定义的操作。
[0127] 由于对可执行文件运行及网络请求的监控具有实时性,该实例中默认监控间隔为0,即实时对上述两种行为进行监控。
[0128] 步骤S110将eBPF补丁缓解程序部署在系统任一文件目录下,本实施实例中,eBPF补丁缓解程序部署在/root/ebpf目录下,eBPF补丁缓解程序共有5个文件,分别为:ebpf_main主程序文件、kernels_check.ini涉内核漏洞函数检测特征配置文件、kernels_patch.ini内核漏洞正常补丁逻辑重写插桩特征配置文件、packet_check.ini涉内核漏洞网络请求数据包检测特征配置文件、packet_patch.ini内核漏洞网络响应包修改插桩特征配置文件。
[0129] 进一步的,步骤S120将对系统网络及内核相关信息进行提取,补丁缓解程序将会利用top、uname、netstat等命令以及Linux系统提供的函数接口获取网络及内核的相关信息,同时将会检索系统根目录/下的所有文件夹及文件,获取elf、sh等可执行文件信息。提取到的信息如下:具备docker0、ens18、lo三张网卡,三张网卡的ip地址分别为172.17.0.1、192.168.51.105、127.0.0.1;开放的网络端口为80、110、31524、22,涉及的网络协议有http、tcp、ssh;系统版本为Ubuntu 16.04.2LTS,其对应的内核版本为Linux version 
4.8.0‑52‑generic;当前系统已打补丁为CVE‑2018‑8822_PATCH;系统进程服务列表为java、dockerd、mysqld、systemd、sshd等;系统中存在excute_file_1、excute_file_2、excute_file_3三个可执行文件。
[0130] 进一步的,步骤S130将根据上述提取的系统内核及网络相关信息,对Linux系统可执行文件运行及网络侧行为进行监控。使用所述算法T1进行分析,系统内核及补丁数据集Fx为{Ubuntu 16.04.2 LTS,Linux version 4.8.0‑52‑generic,CVE‑2018‑8822_PATCH},系统网络数据集Lx为{{docker0,ens18,lo},{172.17.0.1,192.168.51.105,127.0.0.1},{80,110,31524,22},{http,tcp,ssh}},系统进程、服务及可执行文件数据集Dx为{{java,dockerd,mysqld,systemd,sshd},{excute_file_1,excute_file_2,excute_file_3}}。即计算结果T1{(Fx,Lx),Dx}={({Ubuntu 16.04.2 LTS,Linux version 4.8.0‑52‑generic,CVE‑2018‑8822_PATCH},{{docker0,ens18,lo},{172.17.0.1,192.168.51.105,127.0.0.1},{80,110,31524,22},{http,tcp,ssh}}),{{java,dockerd,mysqld,systemd,sshd},{excute_file_1,excute_file_2,excute_file_3}}}。T1{(Fx,Lx),Dx}=1,有可执行文件运行、网络侧行为发生,此时生成的标记后的行为特征合集Xx为{{{excute_file_1,excute_file_3},{Legacy_parse_param(),push_pipe(),ncp_read_kernel()}},{{ens18},{packet8,packet4}}}。
[0131] 进一步的,步骤S140将根据生成的标记后的行为特征合集Xx,对可执行文件运行行为、网络侧行为进行判断。使用所述算法T2进行分析,标记后行为特征内容数据集Xx为{{excute_file_1,excute_file_3},{ens18}},表示excute_file_1、excute_file_3这两个可执行文件存在运行行为且会调用三个内核函数Legacy_parse_param()、push_pipe()和ncp_read_kernel(),同时网卡ens18监听到了网络侧行为,存在两个网络请求包packet8和packet4;系统进程、服务及可执行文件数据集Dx为{{java,dockerd,mysqld,systemd,sshd},{excute_file_1,excute_file_2,excute_file_3}}。即计算T2(Xx,Dx)={{{excute_file_1,excute_file_3},{ens18}},{{java,dockerd,mysqld,systemd,sshd},{excute_file_1,excute_file_2,excute_file_3}}}。识别当前行为为单内核调用行为,还是单网络行为,又或者是内核调用行为和网络行为同时存在,即计算T2(Xx,Dx)=1或T2(Xx,Dx)=2或T2(Xx,Dx)=3。
[0132] 在本实例中,既存在可执行文件执行行为也存在网络侧行为,经过算法T2的分析,T2(Xx,Dx)=3。此处得到分类行为特征PFLx为{{Legacy_parse_param(),push_pipe(),ncp_read_kernel()},{packet8,packet4}}。由于PFLx=PFx+PLx,此处PFx为{Legacy_parse_param(),push_pipe(),ncp_read_kernel()},PLx为{packet8,packet4},故下面会分别使用算法对PFx、PLx进行分析。
[0133] 进一步的,步骤S150将根据得到的分类行为特征PFx介入可执行文件运行行为进行内核插桩函数分析。使用所述算法T3进行分析,PFx为内核分类行为分类特征,Fx为内核及补丁数据集,QFx为涉漏洞内核函数检测特征数据集,即计算T3{(PFx,Fx),QFx}=0或T3{(PFx,Fx),QFx}=1。本实例中,分类行为特征PFx为{Legacy_parse_param(),push_pipe(),ncp_read_kernel()},内核及补丁数据集Fx为{Ubuntu 16.04.2LTS,Linux version 4.8.0‑52‑generic,CVE‑2018‑8822_PATCH},kernels_check.ini涉内核漏洞函数检测特征配置文件中具备的涉漏洞内核函数检测特征数据集QFx为{{CVE‑2022‑0185,CVE‑2022‑0847,CVE‑
2018‑5390,CVE‑2018‑8822},{{legacy_parse_param()},{copy_page_to_iter_pipe(),push_pipe()},{tcp_collapse_ofo_queue()},{ncp_read_kernel()}}},即计算T3{(PFx,Fx),QFx}={({Legacy_parse_param(),push_pipe(),ncp_read_kernel()},{Ubuntu 
16.04.2 LTS,Linux version 4.8.0‑52‑generic,CVE‑2018‑8822_PATCH}),{{CVE‑2022‑
0185,CVE‑2022‑0847,CVE‑2018‑5390,CVE‑2018‑8822},{{legacy_parse_param()},{copy_page_to_iter_pipe(),push_pipe()},{tcp_collapse_ofo_queue()},{ncp_read_kernel()}}}},并生成此时调用的内核漏洞函数合集RFx。
[0134] 在本实例中,运行的可执行文件excute_file_1、excute_file_3所调用的内核函数Legacy_parse_param()、push_pipe()、ncp_read_kernel()分别对应了内核漏洞CVE‑2022‑0185、CVE‑2022‑0847、CVE‑2018‑8822,T3{(PFx,Fx),QFx}=1。当前Linux系统环境已安装补丁CVE‑2018‑8822_PATCH,故经过算法T3分析得到的调用的内核漏洞函数合集RFx为{Legacy_parse_param(),push_pipe()}。
[0135] 进一步的,步骤S160将根据得到的调用的内核漏洞函数合集RFx从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码进行插桩。调用的内核漏洞函数数据集RFx为{Legacy_parse_param(),push_pipe()},kernels_patch.ini内核漏洞正常补丁逻辑重写插桩特征配置文件中具备的正常补丁逻辑重写插桩特征数据集KFx为{CVE‑2022‑0185_PATCH,CVE‑2022‑0847_PATCH,CVE‑2018‑5390_PATCH,CVE‑2018‑8822_PATCH},内核调用行为的分类行为特征数据集PFx为{Legacy_parse_param(),push_pipe(),ncp_read_kernel()},即计算T4{(RFx,KFx),PFx}={({Legacy_parse_param(),push_pipe()},{CVE‑2022‑0185_PATCH,CVE‑2022‑0847_PATCH,CVE‑2018‑5390_PATCH,CVE‑2018‑8822_PATCH}),{Legacy_parse_param(),push_pipe(),ncp_read_kernel()}}。当T4{(RFx,KFx),PFx}=0时,表示当前对Legacy_parse_param(),push_pipe()两个内核函数的插桩注入操作不存在异常;当T4{(RFx,KFx),PFx}=1时,表示当前对Legacy_parse_param(),push_pipe()两个内核函数的插桩注入操作存在异常。异常信息保存在过程及结果信息数据集JFx中。
[0136] 在本实例中,步骤S170判断是否存在网络侧行为的依据基于步骤S140,步骤S140经过算法T2的分析得到T2(Xx,Dx)=3,故在步骤S170中得到当前存在网络侧行为。
[0137] 进一步的,步骤S180、S190将根据得到的分类行为特征PLx介入网络侧行为进行网络层数据包分析判断。本实例中,分类行为特征PLx为{packet8,packet4},内核及补丁数据集Lx为{{docker0,ens18,lo},{172.17.0.1,192.168.51.105,127.0.0.1},{80,110,31524,22},{http,tcp,ssh}},packet_check.ini涉内核漏洞网络请求数据包检测特征配置文件中具备的涉漏洞网络请求数据包检测特征数据集QLx为{packet1,packet2,packet3,packet4,packet5,packet6},即计算T5{(PLx,Lx),QLx}={({packet8,packet4},{{docker0,ens18,lo},{172.17.0.1,192.168.51.105,127.0.0.1},{80,110,31524,22},{http,tcp,ssh}}),{packet1,packet2,packet3,packet4,packet5,packet6}},并生成此时匹配的网络请求数据包合集RLx。
[0138] 在本实例中,网络请求包packet4命中了{packet1,packet2,packet3,packet4,packet5,packet6},T5{(PLx,Lx),QLx}=1,经过算法T4分析得到的匹配的网络请求数据包合集RLx为{packet4}。
[0139] 进一步的,步骤S200将根据得到的匹配的网络请求数据包合集RLx从网络响应包修改插桩特征数据集中获取对应的网络响应包进行插桩修改。本实例中,调用的内核漏洞函数数据集RLx为{packet4},packet_patch.ini内核漏洞网络响应包修改插桩特征配置文件中具备的网络响应包修改插桩特征数据集KLx为{packet1_response_PATCH,packet2_response_PATCH,packet3_response_PATCH,packet4_response_PATCH,packet5_response_PATCH,packet6_response_PATCH},网络请求行为的分类行为特征数据集PLx为{packet8,packet4},即计算T6{(RLx,KLx),PLx}={({packet4},{packet1_response_PATCH,packet2_response_PATCH,packet3_response_PATCH,packet4_response_PATCH,packet5_response_PATCH,packet6_response_PATCH}),{packet8,packet4}}。当T6{(RLx,KLx),PLx}=0时,表示当前对网络请求包packet4对应网络响应包的插桩修改操作不存在异常;当T6{(RLx,KLx),PLx}=1时,表示当前对网络请求包packet4对应网络响应包的插桩修改操作存在异常。异常信息保存在过程及结果信息数据集JLx中。
[0140] 进一步的,步骤S210将会判断上述插桩过程是否存在异常,如果存在异常将会进行异常告警。在本实例中,步骤S140经过算法T2的分析得到T2(Xx,Dx)=3,同时存在内核调用行为和网络侧行为,故使用所述算法T7进行分析,算法T7为对T3、T4、T5、T6四个算法的组合复用,即计算T7{(T3,T4),(T5,T6)}={({({Legacy_parse_param(),push_pipe(),ncp_read_kernel()},{Ubuntu 16.04.2 LTS,Linux version 4.8.0‑52‑generic,CVE‑2018‑8822_PATCH}),{{CVE‑2022‑0185,CVE‑2022‑0847,CVE‑2018‑5390,CVE‑2018‑8822},{{legacy_parse_param()},{copy_page_to_iter_pipe(),push_pipe()},{tcp_
collapse_ofo_queue()},{ncp_read_kernel()}}}},{({Legacy_parse_param(),push_pipe()},{CVE‑2022‑0185_PATCH,CVE‑2022‑0847_PATCH,CVE‑2018‑5390_PATCH,CVE‑
2018‑8822_PATCH}),{Legacy_parse_param(),push_pipe(),ncp_read_kernel()}}),({({packet8,packet4},{{docker0,ens18,lo},{172.17.0.1,192.168.51.105,
127.0.0.1},{80,110,31524,22},{http,tcp,ssh}}),{packet1,packet2,packet3,packet4,packet5,packet6}},{({packet4},{packet1_response_PATCH,packet2_response_PATCH,packet3_response_PATCH,packet4_response_PATCH,packet5_response_PATCH,packet6_response_PATCH}),{packet8,packet4}})}。当T7{(T3,T4),(T5,T6)}=0时,表示针对内核函数的插桩以及网络侧行为的插桩均不存在异常;当T7{(T3,T4),(T5,T6)}=1时,表示针对内核函数的插桩、网络侧行为的插桩至少有一个过程存在异常。异常信息保存在过程及结果信息数据集JFLx中。
[0141] 进一步的,步骤S220将会对异常信息进行处理并告警。使用所述算法T8进行分析,JFx为内核层面插桩时的异常信息,JLx为网络层面插桩时的异常信息,JFLx为使用算法T4进行内核层面插桩算法及网络层面插桩算法组合复用时的异常信息,即计算T8{JFx,JLx,JFLx}=0或T8{JFx,JLx,JFLx}=1。若在本例中,不存在异常信息,则实现无感知Linux内核漏洞补丁缓解过程;反之,存在异常信息,此时根据算法T8分析得到最终处理后的异常信息JAllx,进行异常告警。
[0142] 上述的基于eBPF技术的Linux系统内核漏洞补丁缓解方法,通过利用eBPF技术及手段,以可执行文件运行行为和网络行为的监控、内核函数调用的代码插桩、网络包的插桩重写为依托,在可执行文件运行时以及网络流量包响应之前实现动态补丁注入,实现无需实际安装正常Linux内核漏洞补丁也可以精准防御Linux内核漏洞攻击。
[0143] 图6是本发明实施例提供的一种基于eBPF技术的Linux系统内核漏洞补丁缓解系统300的示意性框图。如图6所示,对应于以上基于eBPF技术的Linux系统内核漏洞补丁缓解方法,本发明还提供一种基于eBPF技术的Linux系统内核漏洞补丁缓解系统300。该基于eBPF技术的Linux系统内核漏洞补丁缓解系统300包括用于执行上述基于eBPF技术的Linux系统内核漏洞补丁缓解方法的单元,该系统可以被配置于服务器中。具体地,请参阅图6,该基于eBPF技术的Linux系统内核漏洞补丁缓解系统300包括部署单元301、提取单元302、文件运行单元303、第一判断单元304、第一插桩单元305、代码插入单元306、第二判断单元307、第二插桩单元308、第三判断单元309、第三插桩单元310、第四判断单元311以及告警单元312。
[0144] 部署单元301,用于部署eBPF补丁缓解程序;提取单元302,用于提取Linux系统网络及内核相关信息;文件运行单元303,用于利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;第一判断单元304,用于判断所述监控结果中是否存在可执行文件运行行为;第一插桩单元305,用于若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;代码插入单元306,用于插入正常补丁逻辑转换代码;第二判断单元307,用于判断所述监控结果中是否存在网络侧行为;第二插桩单元308,用于若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;第三判断单元309,用于判断所述介入结果是否匹配网络包规则库;第三插桩单元310,用于若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;第四判断单元311,用于判断插桩过程是否存在异常;告警单元312,用于若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警。
[0145] 在一实施例中,如图7所示,所述第一判断单元304包括合集获取子单元3041、第一数据集获取子单元3042、第二数据集获取子单元3043以及计算子单元3044。
[0146] 合集获取子单元3041,用于获取Linux系统内核及补丁信息合集、Linux系统网络信息合集;第一数据集获取子单元3042,用于根据所述Linux系统内核及补丁信息合集获取各个内核及补丁数据集;第二数据集获取子单元3043,用于针对Linux系统网络信息合集,获取各个网络数据集;计算子单元3044,用于根据各个网络数据集以及各个内核及补丁数据集计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。
[0147] 在一实施例中,如图8所示,所述代码插入单元306包括代码获取子单元3061以及代码插桩子单元3062。
[0148] 代码获取子单元3061,用于从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码;代码插桩子单元3062,用于利用所述插桩代码进行插桩。
[0149] 在一实施例中,如图9所示,所述第三插桩单元310包括响应包获取子单元3101以及插桩修改子单元3102。
[0150] 响应包获取子单元3101,用于从网络响应包修改插桩特征数据集中获取对应的网络响应包;插桩修改子单元3102,用于利用所述网络响应包进行插桩修改。
[0151] 需要说明的是,所属领域的技术人员可以清楚地了解到,上述基于eBPF技术的Linux系统内核漏洞补丁缓解系统300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
[0152] 上述基于eBPF技术的Linux系统内核漏洞补丁缓解系统300可以实现为一种计算机程序的形式,该计算机程序可以在如图10所示的计算机设备上运行。
[0153] 请参阅图10,图10是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是服务器,其中,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
[0154] 参阅图10,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
[0155] 该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种基于eBPF技术的Linux系统内核漏洞补丁缓解方法。
[0156] 该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
[0157] 该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种基于eBPF技术的Linux系统内核漏洞补丁缓解方法。
[0158] 该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0159] 其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
[0160] 部署eBPF补丁缓解程序;提取Linux系统网络及内核相关信息;利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;判断所述监控结果中是否存在可执行文件运行行为或网络侧行为;若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;插入正常补丁逻辑转换代码;若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;判断所述介入结果是否匹配网络包规则库;若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;判断插桩过程是否存在异常;若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警。
[0161] 其中,所述eBPF补丁缓解程序是通过对Linux系统的内核以及网络进行插桩注入实现补丁缓解的,内置了两项检测特征和两项插桩特征,分别为针对内核的涉漏洞内核函数检测特征、正常补丁逻辑重写插桩特征,以及针对网络的涉漏洞网络请求数据包检测特征、网络响应包修改插桩特征。
[0162] 所述Linux系统网络及内核相关信息包括:网卡信息;网络服务及端口开放信息;网络服务及开放端口对应协议类型信息;内核版本信息;当前系统已有补丁程序信息;进程、服务及可执行文件信息。
[0163] 在一实施例中,处理器502在实现所述判断所述监控结果中是否存在网络侧行为步骤之后,还实现如下步骤:
[0164] 若所述监控结果中不存在网络侧行为,则执行所述判断插桩过程是否存在异常。
[0165] 在一实施例中,处理器502在实现所述判断所述介入结果是否匹配网络包规则库步骤之后,还实现如下步骤:
[0166] 若所述介入结果不匹配网络包规则库,则执行所述判断插桩过程是否存在异常。
[0167] 在一实施例中,处理器502在实现所述判断所述监控结果中是否存在可执行文件运行行为或网络侧行为步骤时,具体实现如下步骤:
[0168] 获取Linux系统内核及补丁信息合集、Linux系统网络信息合集;根据所述Linux系统内核及补丁信息合集获取各个内核及补丁数据集;针对Linux系统网络信息合集,获取各个网络数据集;根据各个网络数据集以及各个内核及补丁数据集计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。
[0169] 在一实施例中,处理器502在实现所述插入正常补丁逻辑转换代码步骤时,具体实现如下步骤:
[0170] 从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码;利用所述插桩代码进行插桩。
[0171] 在一实施例中,处理器502在实现所述插桩网络层函数并修改网络响应包步骤时,具体实现如下步骤:
[0172] 从网络响应包修改插桩特征数据集中获取对应的网络响应包;利用所述网络响应包进行插桩修改。
[0173] 应当理解,在本申请实施例中,处理器502可以是中央处理单元(Central Processing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0174] 本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
[0175] 因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
[0176] 部署eBPF补丁缓解程序;提取Linux系统网络及内核相关信息;利用eBPF补丁缓解程序运行Linux系统可执行文件,并监控网络侧行为,以得到监控结果;判断所述监控结果中是否存在可执行文件运行行为或网络侧行为;若所述监控结果中存在可执行文件运行行为,则利用eBPF补丁缓解程序介入可执行文件运行时内核插桩;插入正常补丁逻辑转换代码;若所述监控结果中存在网络侧行为,则利用eBPF补丁缓解程序介入网络侧行为运行时网络插桩,以得到介入结果;判断所述介入结果是否匹配网络包规则库;若所述介入结果匹配网络包规则库,则插桩网络层函数并修改网络响应包;判断插桩过程是否存在异常;若插桩过程存在异常,则生成带相关信息细节的告警信息,以进行异常告警。
[0177] 其中,所述eBPF补丁缓解程序是通过对Linux系统的内核以及网络进行插桩注入实现补丁缓解的,内置了两项检测特征和两项插桩特征,分别为针对内核的涉漏洞内核函数检测特征、正常补丁逻辑重写插桩特征,以及针对网络的涉漏洞网络请求数据包检测特征、网络响应包修改插桩特征。
[0178] 所述Linux系统网络及内核相关信息包括:网卡信息;网络服务及端口开放信息;网络服务及开放端口对应协议类型信息;内核版本信息;当前系统已有补丁程序信息;进程、服务及可执行文件信息。
[0179] 在一实施例中,所述处理器在执行所述计算机程序而实现所述判断所述监控结果中是否存在网络侧行为步骤之后,还实现如下步骤:
[0180] 若所述监控结果中不存在网络侧行为,则执行所述判断插桩过程是否存在异常。
[0181] 在一实施例中,所述处理器在执行所述计算机程序而实现所述判断所述介入结果是否匹配网络包规则库步骤之后,还实现如下步骤:
[0182] 若所述介入结果不匹配网络包规则库,则执行所述判断插桩过程是否存在异常。
[0183] 在一实施例中,所述处理器在执行所述计算机程序而实现所述判断所述监控结果中是否存在可执行文件运行行为或网络侧行为步骤时,具体实现如下步骤:
[0184] 获取Linux系统内核及补丁信息合集、Linux系统网络信息合集;根据所述Linux系统内核及补丁信息合集获取各个内核及补丁数据集;针对Linux系统网络信息合集,获取各个网络数据集;根据各个网络数据集以及各个内核及补丁数据集计算是否存在可执行文件运行或者网络侧行为发生,并生成标记后的行为特征合集。
[0185] 在一实施例中,所述处理器在执行所述计算机程序而实现所述插入正常补丁逻辑转换代码步骤时,具体实现如下步骤:
[0186] 从正常补丁逻辑重写插桩特征数据集中获取对应的插桩代码;利用所述插桩代码进行插桩。
[0187] 在一实施例中,所述处理器在执行所述计算机程序而实现所述插桩网络层函数并修改网络响应包步骤时,具体实现如下步骤:
[0188] 从网络响应包修改插桩特征数据集中获取对应的网络响应包;利用所述网络响应包进行插桩修改。
[0189] 所述存储介质可以是U盘、移动硬盘、只读存储器(Read‑Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
[0190] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0191] 在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0192] 本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例系统中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
[0193] 该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
[0194] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。