一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向安全容器的调用路径分析方法

2022-06-01 16:08:29 来源:中国专利 TAG:


1.本发明涉及容器安全领域,尤其涉及一种面向安全容器的调用路径分析方法。


背景技术:

2.gvisor安全容器是一种面向安全性设计的新型容器技术方案。它构建了容器沙箱并在其内运行应用程序,沙箱内的应用程序所产生的系统调用,会被重定向到同样运行在沙箱内的程序sentry中进行处理并返回。sentry是gvisor的一个组件,本质为应用程序内核,它实现了linux内核系统调用接口的一个子集(基本满足主流应用程序的运行需要)。通过对容器沙箱内应用程序系统调用的重定向和实现,gvisor在容器应用和宿主机操作系统之间增加了额外的一层防护,如果容器内的应用程序想要攻击宿主机,那么它必须先攻破gvisor的应用程序内核,再由应用程序内核层突破到宿主机上。gvisor的安全性正是基于其构建的防御纵深,并在不引入过多资源开销的情况下,依旧能够显著的提高容器逃逸的难度。
3.gvisor安全容器中的应用程序内核sentry,会在实现容器沙箱内应用程序的系统调用过程中,向宿主机操作操作系统内核发送系统调用,这一机制可被攻击者利用于突破gvisor所构造的容器沙箱隔离。通过构造特定的系统调用请求,攻击者能够触发应用程序内核向宿主操作系统内核发送而已的系统调用,从而对宿主操作系统造成攻击。
4.针对gvisor安全容器,现有的相关研究工作大多是对其架构、性能的分析,并未深入探究其构造的容器沙箱的隔离突破方法。尽管已有相关工作发现了一些对gvisor安全容器的攻击,受限于gvisor应用程序内核sentry中复杂的系统调用实现过程和相关函数调用路径,还未有工作能够系统性的分析出突破沙箱隔离的途径。


技术实现要素:

5.本发明的目的在于针对gvisor安全容器研究的不足,提出了一种面向安全容器的调用路径分析方法,也是一种基于动态分析技术的沙箱隔离突破路径分析方法,本发明是通过以下技术方案来实现的:
6.本发明公开了一种面向安全容器的调用路径分析方法,包括如下步骤:
7.步骤一:使用内核性能分析工具perf在宿主操作系统内核中的系统调用入口函数处插入探测点;
8.步骤二:使用模糊测试工具syzkaller在gvisor容器沙箱内部持续创建、执行大量测试用例;
9.步骤三:在步骤二开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤一中探测点的触发情况;
10.步骤四:对于步骤三收集的路径集合进行过滤,筛选出由容器沙箱内应用程序系统调用触发的路径。
11.作为进一步地改进,本发明所述的步骤一中,宿主操作系统内核为linux内核,被
放置探测点的内核函数为linux系统调用入口函数,该函数会在用户空间的进程进行系统调用时被调用,其名称和在内存中的地址由具体linux内核版本决定。
12.作为进一步地改进,本发明所述的步骤一中,系统调用入口函数中的探测点会在每次该函数被调用时触发,从而可以保证探测到容器沙箱向宿主操作系统内核发送的每一次系统调用。
13.作为进一步地改进,本发明所述步骤二中,通过指定gvisor安全容器为测试对象,可使模糊测试工具syzkaller创建容器沙箱,并在容器沙箱内部持续创建测试用例并执行。
14.作为进一步地改进,本发明所述的模糊测试工具syzkaller使用由gvisor源码编译而成的二进制可执行文件创建容器沙箱,并在沙箱中运行测试用例生成程序,对于每个测试用例该程序都会运行测试用例执行程序负责执行,被执行的测试用例内包含一组特定顺序的系统调用,这些系统调用会被容器沙箱重定位到应用程序内核中进行处理。
15.作为进一步地改进,本发明所述步骤三中,在容器沙箱被创建的同时,使用性能分析工具perf监控容器沙箱进程对探测点的触发情况,当容器沙箱中的应用程序内核发生系统调用时,会陷入宿主操作系统内核并调用内核中的系统调用入口函数,从而触发步骤一中预先放置的探测点并记录触发时对应的时间戳、应用程序内核中的函数调用路径、系统调用入口函数的参数值。
16.作为进一步地改进,本发明所述的步骤四中,基于应用程序内核对于容器内系统调用的具体实现方式,通过在待过滤的路径中匹配应用程序内核中实现容器内系统调用的相关函数的名称,筛选出由容器内系统调用触发的路径,同时可得到触发路径对应的容器内系统调用名称。
17.本发明的有益效果如下:
18.本发明的方法针gvisor安全容器的隔离突破方法缺乏研究分析的问题,提供了一种高准确率、高可用性的路径分析方法。该方法结合了模糊测试工具syzkaller和内核性能分析工具perf,使用动态分析技术自动化的对gvisor容器内可触发应用程序内核sentry的系统调用从而突破沙箱隔离的路径进行分析,解决了gvisor内部复杂函数调用造成的分析困难问题,确保了所得路径的准确性和可触发性。本发明在目前普遍缺乏gvisor容器隔离突破方法的背景下,提供了一种可靠的分析技术,同时其分析结果可用于gvisor容器的攻击设计。
附图说明
19.图1是面向安全容器的调用路径分析方法原理图;
20.图2是分析过程中应用程序内核系统调用触发的原理图;
21.图3是应用程序内核系统调用触发监控和路径记录的原理图。
具体实施方式
22.本发明公开了一种面向安全容器的调用路径分析方法,其步骤如下:
23.步骤一:使用内核性能分析工具perf在宿主操作系统内核中的系统调用入口函数处插入探测点。
24.步骤二:使用模糊测试工具syzkaller在gvisor容器沙箱内部持续创建、执行大量
测试用例。
25.步骤三:在步骤二开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤一中探测点的触发情况。
26.步骤四:对于步骤三收集的路径集合进行过滤,筛选出由容器沙箱内应用程序系统调用触发的路径。
27.步骤一中,宿主操作系统内核为linux内核,被放置探测点的内核函数为linux系统调用入口函数,该函数会在用户空间的进程进行系统调用时被调用,其名称和在内存中的地址由具体linux内核版本决定。系统调用入口函数中的探测点会在每次该函数被调用时触发,从而可以保证探测到容器沙箱向宿主操作系统内核发送的每一次系统调用。
28.步骤二中,通过指定gvisor安全容器为测试对象,可使模糊测试工具syzkaller创建容器沙箱,并在容器沙箱内部持续创建测试用例并执行。模糊测试工具syzkaller使用由gvisor源码编译而成的二进制可执行文件创建容器沙箱,并在沙箱中运行测试用例生成程序,对于每个测试用例该程序都会运行测试用例执行程序负责执行,被执行的测试用例内包含一组特定顺序的系统调用,这些系统调用会被容器沙箱重定位到应用程序内核中进行处理。
29.步骤三中,在容器沙箱被创建的同时,使用性能分析工具perf监控容器沙箱进程对探测点的触发情况,当容器沙箱中的应用程序内核发生系统调用时,会陷入宿主操作系统内核并调用内核中的系统调用入口函数,从而触发步骤一中预先放置的探测点并记录触发时对应的时间戳、应用程序内核中的函数调用路径、系统调用入口函数的参数值。
30.步骤四中,基于应用程序内核对于容器内系统调用的具体实现方式,通过在待过滤的路径中匹配应用程序内核中实现容器系统调用的相关函数的名称,筛选出由容器内系统调用触发的路径,同时可得到触发路径对应的容器内系统调用名称。
31.下面结合说明书附图,通过具体实施例对本发明的整体架构进行说明,图1是面向安全容器的调用路径分析方法原理图,对所设计的应用程序内核sentry系统调用触发路径分析过程,进行了一个整体化的描述。本发明内的分析过程具体包括如下4个步骤:
32.步骤一:使用内核性能分析工具perf在宿主操作系统内核(linux)中的系统调用入口函数处插入探测点(使用perfprobe命令)。这一步骤中被放置的探测点,会在上述内核函数被调用时触发。探测点被触发后,宿主操作系统内核会判断当前是否有相关的perf程序在监控该观测点,若存在,则会进行perf程序对应的处理操作。
33.步骤二:使用模糊测试工具syzkaller在gvisor容器沙箱内部持续创建、执行大量测试用例。通过在配置文档中指定gvisor容器为测试对象,可使模糊测试工具创建容器沙箱,并在容器沙箱内部进行测试用例的创建和执行。图2是分析过程中应用程序内核sentry系统调用触发的原理图,形象的描述了使用模糊测试工具进行测试用例的生成、执行以及触发应用程序内核系统调用的过程。syzkaller工具的管理程序会根据配置文档创建gvisor容器沙箱,并在沙箱内运行测试用例生成程序。该程序生成的每个测试用例会由一个测试用例执行程序负责执行。测试用例内包含一组系统调用,这些系统调用会被重定向到容器沙箱内的应用程序内核中并进行后续的处理。处理某些特定容器内系统调用时,应用程序内核会向宿主操作系统内核发送系统调用。
34.步骤三:在步骤二开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤
一中探测点的触发情况(使用perfrecord命令)。图3是应用程序内核sentry系统调用触发监控和路径记录的原理图,形象的描述了使用性能分析工具perf对容器实例进程进行探测点触发监控和路径记录的过程。当容器沙箱中的应用程序内核sentry发生系统调用时,会陷入宿主linux内核并调用内核中的系统调用入口函数,从而触发步骤一中预先放置的探测点并记录调用路径等相关信息。通过在运行perf工具时指定容器沙箱进程在宿主操作系统内对应的进程号,以及记录时间戳、函数调用路径等功能对应的参数,可使perf工具监控被容器沙箱进程触发的探测点,同时记录触发时对应的时间戳、应用程序内核中的函数调用路径、系统调用入口函数的参数值。
35.步骤四:对于步骤三收集的函数调用路径集合进行过滤。在应用程序内核sentry中,负责处理容器沙箱内部应用程序系统调用的函数的名称都有特定的前缀,通过在路径集合中匹配这些前缀字段,可排除sentry自身运行需要而向宿主操作系统内核发送系统调用的路径,从而成功筛选出由容器沙箱内的应用程序系统调用触发的目标路径,同时可得到触发路径对应的容器内系统调用名称。
36.本领域普通技术人员可以理解,以上所述仅为发明的单个实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方法进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献