当前位置: 首页 > 专利查询>浙江大学专利>正文

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

技术编号:33635940 阅读:31 留言:0更新日期:2022-06-02 01:48
本发明专利技术公开了一种面向安全容器的调用路径分析方法,包括使用内核性能分析工具perf在宿主操作系统内核中的系统调用入口函数处插入探测点,使用模糊测试工具syzkaller在gVisor容器沙箱内部持续创建、执行大量测试用例;在开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤一中探测点的触发情况;对于收集的路径集合进行过滤,筛选出由容器沙箱内应用程序系统调用触发的路径等步骤,本发明专利技术的方法结合了模糊测试工具syzkaller和内核性能分析工具perf,使用动态分析技术自动化的对gVisor容器内可触发应用程序内核sentry的系统调用从而突破沙箱隔离的路径进行分析,解决了gVisor内部复杂函数调用造成的分析困难问题,确保了所得路径的准确性和可触发性。确保了所得路径的准确性和可触发性。确保了所得路径的准确性和可触发性。

【技术实现步骤摘要】
一种面向安全容器的调用路径分析方法


[0001]本专利技术涉及容器安全领域,尤其涉及一种面向安全容器的调用路径分析方法。

技术介绍

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

技术实现思路

[0005]本专利技术的目的在于针对gVisor安全容器研究的不足,提出了一种面向安全容器的调用路径分析方法,也是一种基于动态分析技术的沙箱隔离突破路径分析方法,本专利技术是通过以下技术方案来实现的:
[0006]本专利技术公开了一种面向安全容器的调用路径分析方法,包括如下步骤:
[0007]步骤一:使用内核性能分析工具perf在宿主操作系统内核中的系统调用入口函数处插入探测点;
[0008]步骤二:使用模糊测试工具syzkaller在gVisor容器沙箱内部持续创建、执行大量测试用例;
[0009]步骤三:在步骤二开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤一中探测点的触发情况;
[0010]步骤四:对于步骤三收集的路径集合进行过滤,筛选出由容器沙箱内应用程序系统调用触发的路径。
[0011]作为进一步地改进,本专利技术所述的步骤一中,宿主操作系统内核为Linux内核,被
放置探测点的内核函数为Linux系统调用入口函数,该函数会在用户空间的进程进行系统调用时被调用,其名称和在内存中的地址由具体Linux内核版本决定。
[0012]作为进一步地改进,本专利技术所述的步骤一中,系统调用入口函数中的探测点会在每次该函数被调用时触发,从而可以保证探测到容器沙箱向宿主操作系统内核发送的每一次系统调用。
[0013]作为进一步地改进,本专利技术所述步骤二中,通过指定gVisor安全容器为测试对象,可使模糊测试工具syzkaller创建容器沙箱,并在容器沙箱内部持续创建测试用例并执行。
[0014]作为进一步地改进,本专利技术所述的模糊测试工具syzkaller使用由gVisor源码编译而成的二进制可执行文件创建容器沙箱,并在沙箱中运行测试用例生成程序,对于每个测试用例该程序都会运行测试用例执行程序负责执行,被执行的测试用例内包含一组特定顺序的系统调用,这些系统调用会被容器沙箱重定位到应用程序内核中进行处理。
[0015]作为进一步地改进,本专利技术所述步骤三中,在容器沙箱被创建的同时,使用性能分析工具perf监控容器沙箱进程对探测点的触发情况,当容器沙箱中的应用程序内核发生系统调用时,会陷入宿主操作系统内核并调用内核中的系统调用入口函数,从而触发步骤一中预先放置的探测点并记录触发时对应的时间戳、应用程序内核中的函数调用路径、系统调用入口函数的参数值。
[0016]作为进一步地改进,本专利技术所述的步骤四中,基于应用程序内核对于容器内系统调用的具体实现方式,通过在待过滤的路径中匹配应用程序内核中实现容器内系统调用的相关函数的名称,筛选出由容器内系统调用触发的路径,同时可得到触发路径对应的容器内系统调用名称。
[0017]本专利技术的有益效果如下:
[0018]本专利技术的方法针gVisor安全容器的隔离突破方法缺乏研究分析的问题,提供了一种高准确率、高可用性的路径分析方法。该方法结合了模糊测试工具syzkaller和内核性能分析工具perf,使用动态分析技术自动化的对gVisor容器内可触发应用程序内核sentry的系统调用从而突破沙箱隔离的路径进行分析,解决了gVisor内部复杂函数调用造成的分析困难问题,确保了所得路径的准确性和可触发性。本专利技术在目前普遍缺乏gVisor容器隔离突破方法的背景下,提供了一种可靠的分析技术,同时其分析结果可用于gVisor容器的攻击设计。
附图说明
[0019]图1是面向安全容器的调用路径分析方法原理图;
[0020]图2是分析过程中应用程序内核系统调用触发的原理图;
[0021]图3是应用程序内核系统调用触发监控和路径记录的原理图。
具体实施方式
[0022]本专利技术公开了一种面向安全容器的调用路径分析方法,其步骤如下:
[0023]步骤一:使用内核性能分析工具perf在宿主操作系统内核中的系统调用入口函数处插入探测点。
[0024]步骤二:使用模糊测试工具syzkaller在gVisor容器沙箱内部持续创建、执行大量
测试用例。
[0025]步骤三:在步骤二开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤一中探测点的触发情况。
[0026]步骤四:对于步骤三收集的路径集合进行过滤,筛选出由容器沙箱内应用程序系统调用触发的路径。
[0027]步骤一中,宿主操作系统内核为Linux内核,被放置探测点的内核函数为Linux系统调用入口函数,该函数会在用户空间的进程进行系统调用时被调用,其名称和在内存中的地址由具体Linux内核版本决定。系统调用入口函数中的探测点会在每次该函数被调用时触发,从而可以保证探测到容器沙箱向宿主操作系统内核发送的每一次系统调用。
[0028]步骤二中,通过指定gVisor安全容器为测试对象,可使模糊测试工具syzkaller创建容器沙箱,并在容器沙箱内部持续创建测试用例并执行。模糊测试工具syzkaller使用由gVisor源码编译而成的二进制可执行文件创建容器沙箱,并在沙箱中运行测试用例生成程序,对于每个测试用例该程序都会运行测试用例执行程序负责执行,被执行的测试用例内包含一组特定顺序的系统调用,这些系统调用会被容器沙箱重定位到应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向安全容器的调用路径分析方法,其特征在于,包括如下步骤:步骤一:使用内核性能分析工具perf在宿主操作系统内核中的系统调用入口函数处插入探测点;步骤二:使用模糊测试工具syzkaller在gVisor容器沙箱内部持续创建、执行大量测试用例;步骤三:在步骤二开始的同时,使用性能分析工具perf监控容器沙箱进程对步骤一中探测点的触发情况;步骤四:对于步骤三收集的路径集合进行过滤,筛选出由容器沙箱内应用程序系统调用触发的路径。2.根据权利要求1所述的路径分析方法,其特征在于,所述的步骤一中,宿主操作系统内核为Linux内核,被放置探测点的内核函数为Linux系统调用入口函数,该函数会在用户空间的进程进行系统调用时被调用,其名称和在内存中的地址由具体Linux内核版本决定。3.根据权利要求1所述的路径分析方法,其特征在于,所述的步骤一中,系统调用入口函数中的探测点会在每次该函数被调用时触发,从而可以保证探测到容器沙箱向宿主操作系统内核发送的每一次系统调用。4.根据权利要求1所述的路径分析方法,其特征在于,所述步骤二中,通过指定gVisor安全容器为测试对象,可使模糊测试工具syzkaller创建容器沙箱...

【专利技术属性】
技术研发人员:申文博周天昱任奎
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1