一种容器内部应用软件漏洞无感缓解装置及其缓解方法与流程

文档序号:31452068发布日期:2022-09-07 13:33阅读:66来源:国知局
一种容器内部应用软件漏洞无感缓解装置及其缓解方法与流程

1.本发明涉及信息安全技术领域,具体涉及一种容器内部应用软件漏洞无感缓解装置及其缓解方法。


背景技术:

2.容器是一种轻量级虚拟化技术,既可用于云服务器场景,亦可用于嵌入式场景,其核心是利用操作系统提供的沙箱接口,为指定应用程序部署适当的沙箱运行时环境并在该环境内执行该应用程序。容器内部应用程序不可避免地会存在漏洞,而针对漏洞,安全运维主要面临的问题,一是软件厂商无法及时提供漏洞补丁;二是应用程序漏洞补丁安装对终端业务运行的连续性和可靠性存在潜在的影响。
3.现有的漏洞利用缓解技术一般指虚拟补丁技术,是通过控制所保护系统的输入输出,防止对软件的漏洞攻击的技术。也就是说能够在不中断应用程序和业务运营的情况下,建立的一个虚拟补丁策略实施层,在恶意软件危及易受攻击目标之前,高效地修正有可能会攻击漏洞的应用程序输入流,也能够针对漏洞攻击行为做到有效地发现和拦截。通常虚拟补丁技术被用于web应用系统和数据库。但是虚拟补丁技术通常由独立的应用层防火墙设备实现,实施代价较大,而对于小流量场景,独立设备的性能也远超需要。


技术实现要素:

4.有鉴于此,本发明实施例提供了涉及一种容器内部应用软件漏洞无感缓解装置及其缓解方法,以解决现有技术中采用虚拟补丁技术实现漏洞利用缓解实施代价较大的技术问题。
5.本发明提出的技术方案如下:
6.本发明实施例第一方面提供一种容器内部应用软件漏洞无感缓解装置,包括:容器启动器附加流程单元、应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元,所述容器启动器附加流程单元,用于修改应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序优先于容器内部的动态链接库的动态链接顺序;所述应用软件漏洞无感缓解策略加载单元,用于加载和初始化应用软件漏洞无感缓解策略;所述应用软件漏洞无感缓解策略执行单元,包括针对不同动态链接库调用的副本,每个副本用于根据对应动态链接库的调用进行对应应用软件漏洞无感缓解策略的执行。
7.可选地,所述容器启动器附加流程单元还用于挂载所述应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元所在位置到容器内部。
8.可选地,所述容器启动器附加流程单元配置在容器启动器中,附着于容器启动流程执行环节,用于当容器启动器启动时被执行。
9.可选地,所述容器启动器附加流程单元配置到容器启动器的方式为采用符合标准oci规范并含有容器启动器附加流程的容器启动器替换原有容器启动器。
10.可选地,所述应用软件漏洞无感缓解策略加载单元附着于容器内部应用程序的操作系统初始化执行环节,用于初始化应用软件漏洞无感缓解策略执行单元对应的应用软件漏洞无感缓解策略。
11.可选地,所述应用软件漏洞无感缓解策略加载单元程序和所述应用软件漏洞无感缓解策略执行单元程序编译为二进制动态链接库。
12.可选地,所述应用软件漏洞无感缓解策略的保存位置和所述应用软件漏洞无感缓解策略加载单元、应用软件漏洞无感缓解策略执行单元的保存位置相同,所述应用软件漏洞无感缓解策略的组织方式为多元组集合。
13.可选地,所述应用软件漏洞无感缓解策略执行单元中的每个副本用于根据对应动态链接库的调用进行应用程序真实动态链接库的调用获取待匹配数据,根据当前进程对应的应用软件漏洞无感缓解策略以及当前线程对应的匹配算法状态对待匹配数据执行匹配算法,根据匹配结果返回相应的返回值。
14.本发明实施例第二方面提供一种容器内部应用软件漏洞无感缓解装置的缓解方法,包括:当容器启动时,容器启动器附加流程单元修改应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序优先于容器内部的动态链接库的动态链接顺序;当容器内部应用程序启动时,应用软件漏洞无感缓解策略加载单元加载和初始化应用软件漏洞无感缓解策略;当应用程序自身执行环节中预先指定的动态链接库调用执行处,所述应用软件漏洞无感缓解策略执行单元的每个副本根据对应动态链接库的调用进行对应应用软件漏洞无感缓解策略的执行。
15.本发明实施例第三方面提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如本发明实施例第二方面所述的容器内部应用软件漏洞无感缓解装置的缓解方法。
16.本发明提供的技术方案,具有如下效果:
17.本发明实施例提供的容器内部应用软件漏洞无感缓解装置及装置的缓解方法,设置容器启动器附加流程单元改变应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序,设置应用软件漏洞无感缓解策略加载单元进行应用软件漏洞无感缓解策略的加载,同时设置应用软件漏洞无感缓解策略执行单元在不同动态链接库的调用下实现应用软件漏洞无感缓解策略的执行。由此,该装置通过对容器启动器执行流程的修改,在不影响容器现有配置和原有容器运行指令的前提下,实现了软件漏洞无感缓解加载单元和应用软件漏洞无感缓解策略执行单元在容器内的部署;通过应用软件漏洞无感缓解策略的加载和执行,实现对已知漏洞利用程序的匹配过滤,最终为用户在厂商无法及时提供已知漏洞补丁或无法及时安装此类补丁时,提供纯软件的应用软件漏洞无感缓解方案,使用户免于针对性的已知漏洞利用攻击。
附图说明
18.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前
提下,还可以根据这些附图获得其他的附图。
19.图1是根据本发明实施例的容器内部应用软件漏洞无感缓解装置的结构框图;
20.图2是根据本发明实施例的应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元在存储器中的结构示意图;
21.图3是根据本发明实施例的容器内部应用软件漏洞无感缓解装置的缓解方法的流程图;
22.图4是根据本发明另一实施例的容器内部应用软件漏洞无感缓解装置的缓解方法的流程图;
23.图5是根据本发明实施例提供的计算机可读存储介质的结构示意图;
24.图6是根据本发明实施例提供的电子设备的结构示意图。
具体实施方式
25.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
26.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
27.本发明实施例提供一种容器内部应用软件漏洞无感缓解装置,如图1所示,该装置包括:容器启动器附加流程单元、应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元,所述容器启动器附加流程单元,用于修改应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序优先于容器内部的动态链接库的动态链接顺序;所述应用软件漏洞无感缓解策略加载单元,用于加载和初始化应用软件漏洞无感缓解策略;所述应用软件漏洞无感缓解策略执行单元,包括针对不同动态链接库调用的副本,每个副本用于根据对应动态链接库的调用进行对应应用软件漏洞无感缓解策略的执行。
28.本发明实施例提供的容器内部应用软件漏洞无感缓解装置,设置容器启动器附加流程单元改变应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序,设置应用软件漏洞无感缓解策略加载单元进行应用软件漏洞无感缓解策略的加载,同时设置应用软件漏洞无感缓解策略执行单元在不同动态链接库的调用下实现应用软件漏洞无感缓解策略的执行。由此,该装置通过对容器启动器执行流程的修改,在不影响容器现有配置和原有容器运行指令的前提下,实现了软件漏洞无感缓解加载单元和应用软件漏洞无感缓解策略执行单元在容器内的部署;通过应用软件漏洞无感缓解策略的
加载和执行,实现对已知漏洞利用程序的匹配过滤,最终为用户在厂商无法及时提供已知漏洞补丁或无法及时安装此类补丁时,提供纯软件的应用软件漏洞无感缓解方案,使用户免于针对性的已知漏洞利用攻击。
29.在一实施方式中,容器启动器附加流程单元还用于挂载所述应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元所在位置到容器内部。其中,应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的挂载可通过namespace相关mount动态链接库调用实现;在上述修改应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序时可以根据容器具体情况,通过修改容器内部“/etc/ld.so.preload”文件实现。
30.对于容器内部的动态链接库可以是c库或者openssl库,例如c库中的read、recv等系统调用,或者openssl库中的encrypt等的调用,也可以是其他动态链接库函数调用。本发明对容器内部的动态链接库不做具体限定。只需要修改应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序优先于容器内部的动态链接库的动态链接顺序,或者说,应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序优先于容器内部的所有的动态链接库的动态链接顺序。
31.其中,容器启动器附加流程单元配置在容器启动器中,附着于容器启动流程执行环节,用于当容器启动器启动时被执行。由于容器启动器一般为独立应用程序且必须遵循标准oci(open container initiative,开放容器计划)规范,由此,容器启动器附加流程单元配置到容器启动器的方式为采用符合标准oci规范并含有容器启动器附加流程的容器启动器替换原有容器启动器。具体可以采用如下附加方式实现容器启动器附加流程单元的配置:获取容器启动器runc源代码(runc为广泛使用的容器启动器,实现了容器启动器oci标准规定的所有接口),将容器启动器附加流程单元插入runc源代码并重新编译,将修改编译后的runc替换原有容器启动器。
32.在一实施方式中,应用软件漏洞无感缓解策略加载单元附着于容器内部应用程序的操作系统初始化执行环节,用于初始化应用软件漏洞无感缓解策略执行单元对应的应用软件漏洞无感缓解策略。具体地,由于该加载单元附着于操作系统初始化执行环节,依据操作系统动态链接库加载规则,在应用程序的操作系统初始化环节,操作系统能够调用应用软件漏洞无感缓解策略加载单元,从而实现应用软件漏洞无感缓解策略的加载和初始化。
33.其中,应用软件漏洞无感缓解策略的组织方式为多元组集合,例如,可以是三元组集合、四元组集合或者是五元组集合。具体地,当其为四元组集合时,该四元组集合具体包括进程文件名、动态链接库调用名、过滤字符串、策略四个分量。该应用软件漏洞无感缓解策略的保存位置和所述应用软件漏洞无感缓解策略加载单元、应用软件漏洞无感缓解策略执行单元的保存位置相同,例如,可以在应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元所在存储器位置制定应用软件漏洞无感缓解策略。形成的应用软件漏洞无感缓解策略可以采用文件的形式保存。由此,在进行应用软件漏洞无感缓解策略加载时通过文件读取系统调用实现。
34.另外,如图2所示,不同的动态链接库调用不同的应用软件漏洞无感缓解策略执行单元的副本,同时,应用软件漏洞无感缓解策略执行单元实现不同应用软件漏洞无感缓解策略的执行。由此,在加载应用软件漏洞无感缓解策略之后,还针对不同动态链接库调用的
应用软件漏洞无感缓解策略执行单元对应的应用软件漏洞无感缓解策略进行初始化。具体地,初始化时,通过遍历应用软件漏洞无感缓解策略,以应用软件漏洞无感缓解策略四元组中的动态链接库调用名为归类依据,对不同动态链接库调用的应用软件漏洞无感缓解策略执行单元,形成“进程文件名、过滤字符串、策略”三元组集合。
35.在一实施方式中,应用软件漏洞无感缓解策略执行单元中的每个副本用于根据对应动态链接库的调用进行应用程序真实动态链接库的调用获取待匹配数据,根据当前进程对应的应用软件漏洞无感缓解策略以及当前线程对应的匹配算法状态对待匹配数据执行匹配算法,根据匹配结果返回相应的返回值。
36.具体地,在现有的容器中应用程序的动态链接库调用通常采用如下流程实现:例如针对接收网络数据函数recv,应用程序首先调用动态链接库函数recv,然后执行权被操作系统交给recv,recv实现其具体功能,例如从网卡读取一定数据,recv将读取结果填入应用程序提供的缓冲区,并返回recv的执行情况即返回值;之后执行权被操作系统交还给应用程序,应用程序继续处理接收到的数据,如果该数据为攻击数据,应用程序则会收到影响。
37.而在容器中采用该应用软件漏洞无感缓解装置时,以应用程序调用动态链接库函数recv为例,此时,由于上述加载单元和执行单元的动态链接顺序优于其他动态链接顺序,因此执行权被交还给应用软件漏洞无感缓解策略执行单元,执行单元调用动态链接库函数recv(即真实动态链接库),recv读取数据填入应用程序缓冲区(缓冲区数据即为待匹配数据),并返回recv的执行情况即返回值;之后,执行单元接收操作系统的执行权,基于应用软件漏洞无感缓解策略对缓冲区内容进行匹配,根据匹配结果返回相应的返回值。例如,匹配失败,即无匹配(意味着无攻击)则返回成功给应用程序;如果发现匹配(意味着出现攻击)则在缓冲区清除攻击内容,并返回某个失败值给应用程序。之后应用程序继续处理接收到的数据,如果recv本次接收到的数据为攻击数据,则由于策略执行单元的干预,应用程序会发现本次recv调用没有成功,应用程序会进入出错处理流程,而不是继续处理攻击的数据。
38.其中,在进行匹配之前,应用软件漏洞无感缓解策略执行单元先根据当前进程pid号取得当前进程文件名,进而依据进程文件名选择对应应用软件漏洞无感缓解策略,如当前进程pid号无对应应用软件漏洞无感缓解策略则直接返回真实动态链接库调用的返回值,如当前进程pid号存在对应应用软件漏洞无感缓解策略则进一步根据当前线程tid号选择匹配算法状态,然后再执行匹配算法。对于发现匹配的情况,可以是返回错误码或者是记录日志但不修改返回值。
39.具体地,对于具体采用的匹配算法可以是重复使用knuth-morris-pratt字符串匹配算法或者一次性使用aho-corasick自动机多模式字符串匹配算法。此外,该匹配算法也可以采用其他现有的匹配算法,本发明实施例对此不做限定。
40.对于该容器内部应用软件漏洞无感缓解装置中设置的应用软件漏洞无感缓解策略加载单元程序和所述应用软件漏洞无感缓解策略执行单元程序可以采用编译的方式形成,即将应用软件漏洞无感缓解策略加载单元程序和针对各动态链接库调用的应用软件漏洞无感缓解策略执行单元程序编译为一个二进制动态链接库。此外,应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元也可以采用其他方式形成。
41.本发明实施例提供的容器内部应用软件漏洞无感缓解装置,当其应用在容器中
时,应用程序的开发商无需对软件进行修改,最终用户也无需改变现有应用程序的配置和使用方法,仅依靠该装置和安全服务提供商下发的针对特定漏洞的虚拟补丁策略文件,即可实现漏洞的无感缓解。同时,设置的应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元能够实现无感缓解策略的加载以及对应用软件漏洞利用攻击的载荷进行过滤拦截,即采用容器环境配置技术和动态链接库钩子技术,实现了纯软件化的应用软件漏洞无感缓解。此外,对于在容器中运行多个进程、同一进程中运行多个线程的场景,对多进程多线程容器提供了细粒度指定不同策略的能力,进一步提升了容器应用软件漏洞无感缓解的效率。
42.本发明实施例提供一种容器内部应用软件漏洞无感缓解装置的缓解方法,如图3和图4所示,该方法包括如下步骤:
43.步骤s101:当容器启动时,容器启动器附加流程单元修改应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序优先于容器内部的动态链接库的动态链接顺序。
44.其中,在采用该缓解方法进行无感缓解之前,先依据预先确定的动态链接库调用范围准备对应动态链接库调用的应用软件漏洞无感缓解策略执行单元程序,即实现应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的设置。例如,采用编译的方式将应用软件漏洞无感缓解策略加载单元程序和针对各动态链接库调用的应用软件漏洞无感缓解策略执行单元程序编译为一个二进制动态链接库。
45.在设置应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元后,其其存储位置制定应用软件漏洞无感缓解策略,应用软件漏洞无感缓解策略可以以文件形式与应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元保存在同一位。其中,应用软件漏洞无感缓解策略可以是一个四元组集合,每个四元组包括进程文件名、动态链接库调用名、过滤字符串、策略四个分量。
46.同时,在进行无感缓解之前,预先将容器启动器附加流程单元配置到容器启动器中。由于容器启动器一般为独立应用程序且必须遵循标准oci规范,故可以采用能够实现标准oci规范并含有容器启动器附加流程的容器启动器替换原有容器启动器。其中,容器启动器附加流程单元的附加方式可为获取容器启动器runc源代码(runc为广泛使用的容器启动器,实现了容器启动器oci标准规定的所有接口),将容器启动器附加流程单元插入runc源代码并重新编译,将修改编译后的runc替换原有容器启动器。
47.在实现上述配置后,可以进行无感缓解装置的无感缓解。首先,智能终端如主机上的容器管理程序正常通过容器启动器启动容器时,容器启动器附加流程单元挂载应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元所在存储器位置到容器内部,修改容器内部动态链接库配置使得应用软件漏洞无感缓解策略加载单元和应用软件漏洞无感缓解策略执行单元的动态链接顺序先于容器内部的动态链接库的动态链接顺序,随后继续正常的容器启动流程。
48.步骤s102:当容器内部应用程序启动时,应用软件漏洞无感缓解策略加载单元加载和初始化应用软件漏洞无感缓解策略。
49.具体地,当容器内部应用程序启动时,依据操作系统动态链接库加载规则,在应用程序的操作系统初始化环节,由操作系统调用步骤101中生成的应用软件漏洞无感缓解策
memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
55.本发明实施例还提供了一种电子设备,如图6所示,该电子设备可以包括处理器51和存储器52,其中处理器51和存储器52可以通过总线或者其他方式连接,图6中以通过总线连接为例。
56.处理器51可以为中央处理器(central processing unit,cpu)。处理器51还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
57.存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的对应的程序指令/模块。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的容器内部应用软件漏洞无感缓解装置的缓解方法。
58.存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储处理器51所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至处理器51。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
59.所述一个或者多个模块存储在所述存储器52中,当被所述处理器51执行时,执行如图3-4所示实施例中的容器内部应用软件漏洞无感缓解装置的缓解方法。
60.上述电子设备具体细节可以对应参阅图3至图4所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
61.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1