Linux容器的细粒度沙盒策略挖掘方法与流程

文档序号:14714911发布日期:2018-06-16 01:09阅读:298来源:国知局
Linux容器的细粒度沙盒策略挖掘方法与流程

本发明专利属于计算机技术领域,涉及云计算安全方向。更具体的讲,本发明专利涉及一种Linux容器的细粒度沙盒策略挖掘方法。



背景技术:

Linux容器技术采用命名空间将进、文件、设备等资源进行隔离,为用户提供几近原生的性能体验,极大降低了虚拟化的额外开销。Docker容器是最具代表性的Linux容器技术之一。

Linux容器的安全问题已成为限制其广泛使用的重要影响因素。安全问题主要来源于,系统调用接口未实现命名空间的隔离,同一宿主操作系统上的容器共享系统调用接口。攻击者可通过系统调用接口,利用内核漏洞进行权限提升、任意代码执行、绕过访问控制、实现隔离机制的逃逸。

如何提高容器的安全性?一种直观的方法是将容器放在沙盒中,限制容器访问系统调用接口的行为。当可信容器被攻击者攻占后,沙盒的存在一定程度上可以限制攻击者对底层操作系统的影响。系统调用拦截技术是一种限制程序系统调用行为的有效技术,基于系统调用拦截技术的沙盒技术得到研究界及工业界的广泛关注。相关研究关注沙盒技术的具体实现方法以及保障系统调用拦截的安全性,然而,为每个Linux容器生成精确高效的沙盒策略具有挑战性。



技术实现要素:

针对上述问题,本发明提出一种Linux容器的细粒度沙盒策略挖掘方法,自动挖掘生成目标容器定制化的沙盒策略,该策略符合最小特权原则,通过限制目标容器的系统调用类型及参数,减少攻击面。

所述方法包括包括:容器行为监控控制模块、容器自动化测试模块和沙盒策略生成模块,如图1所示。容器行为监控控制模块启动Linux系统监控工具,实时监控并记录目标容器的系统调用行为;容器自动化测试模块运行目标容器的测试用例,遍历执行目标容器的功能;沙盒策略生成模块从记录的监控数据中,提取目标容器的系统调用行为特征,并转化为沙盒策略。

Linux容器的细粒度沙盒策略挖掘方法,具体包括以下步骤:

步骤1:启动目标容器,容器行为监控控制模块启动Linux系统监控工具,实时监控并完整记录目标容器的系统调用行为;

步骤2:容器自动化测试模块根据目标容器的功能,选取测试用例;然后运行测试用例,遍历执行目标容器的功能;

同时,系统监控工具实时监控并完整记录目标容器在执行任一功能时的系统调用行为;对于目标容器的每次系统调用访问,记录系统调用访问入口的时间戳、进程号、系统调用类型及参数列表,以及系统调用访问出口的时间戳、进程号、系统调用类型及返回值。

步骤3:沙盒策略生成模块以记录的目标容器的系统调用行为作为输入,提取目标容器的系统调用行为特征;具体为:

步骤3.1:从记录的目标容器的系统调用行为中,提取目标容器所访问的系统调用类型和参数,筛选出参数类别为路径名或离散数值的系统调用;

步骤3.2:针对步骤3.1筛选出的系统调用,对同一系统调用类型的各个系统调用参数分别进行建模,分别得到参数模型;

步骤3.3:提取每个参数模型的变量;根据变量对系统调用进行聚类操作,获得每个集合中所有系统调用共有的特征,即行为特征。

步骤4:将目标容器的系统调用的所有行为特征转化生成沙盒策略。

本发明下有益效果在于:

(1)在生产阶段不需要进行模型训练:本方法在测试阶段遍历目标容器的正常行为,提取相应的系统调用行为特征转化成沙盒策略;生产阶段可通过直接执行生成的沙盒策略,限制目标容器的系统调用行为;与异常检测方法相比,本方法更加高效;

(2)减少攻击面:通过执行本方法,可自动挖掘生成依据目标容器功能、定制化生成的沙盒策略,该策略符合最小特权原则,通过限制目标容器的系统调用类型及参数,减少攻击面,从而限制限制攻击者对底层操作系统及同一宿主操作系统上的其他容器可能造成的危害;

(3)沙盒策略的安全保证:执行本方法挖掘生成的沙盒策略,可以保证测试阶段目标容器未曾出现的系统调用行为,不出现在生产阶段;本方法遍历目标容器正常行为的测试用例,可能无法覆盖目标容器的所有行为,即存在不完整性。然而正是由于该不完整性,可保证测试用例仅覆盖目标容器系统调用行为的安全子集,除该安全子集内的系统调用行为,均被沙盒策略禁止。

附图说明

图1示出本发明的各种实施例的架构原理图;

图2示出本发明一种实施例的细粒度沙盒策略挖掘方法流程图;

图3示出本发明一种实施例的沙盒策略配置文件示例代码;

图4示出本发明一种实施例中被建模的系统调用参数及相应参数模型;

图5示出细粒度沙盒策略示例代码。

具体实施方法

为便于本领域普通技术人员理解和实施本发明,下面结合附图及实施示例对本发明作进一步的详细描述。应当理解,所述的实施示例仅用于说明和解释本发明,并不应该限制本发明的范围。

本发明提出了一种Linux容器的细粒度沙盒策略挖掘方法。具体来讲,沙盒策略挖掘方法通过自动化测试遍历目标容器的行为,监控并记录目标容器的系统调用行为,提取目标容器的系统调用行为特征,生成限制目标容器系统调用访问的细粒度沙盒策略。细粒度沙盒策略限制Linux容器的系统调用类型及参数,实现Linux容器的安全加固。

该方法包括容器行为监控控制模块、容器自动化测试模块和沙盒策略生成模块,如图1所示。容器行为监控控制模块、容器自动化测试模块和沙盒策略生成模块;容器行为监控控制模块启动Linux系统监控工具,实时监控并记录目标容器的系统调用行为;容器自动化测试模块运行目标容器的测试用例,遍历执行目标容器的功能;沙盒策略生成模块从记录的监控数据中,提取目标容器的系统调用行为特征,并转化为沙盒策略。

如图2所示,本发明方法包括如下步骤:

步骤1:启动目标容器,容器行为监控控制模块可以启动Linux系统监控工具sysdig,实时监控并完整记录目标容器的系统调用行为;

步骤2:容器自动化测试模块根据目标容器的功能,选取测试用例,例如,对于Web服务器类型的目标容器(如Nginx和Apache),测试用例可选取wget及httperf向目标容器发送请求;对于数据库类型的目标容器(如Redis和Postgres),测试用例可选取数据库自带的基准测试工具redis-benchmark和pgbench。

然后,容器自动化测试模块运行测试用例,遍历执行目标容器的功能;

同时,系统监控工具实时监控并完整记录目标容器在执行任一功能时的系统调用行为;对于目标容器的每次系统调用访问,记录系统调用访问入口的时间戳、进程号、系统调用类型及参数列表,以及系统调用访问出口的时间戳、进程号、系统调用类型及返回值。

步骤3:沙盒策略生成模块以记录的目标容器的系统调用行为作为输入,提取目标容器的系统调用行为特征;具体为:

步骤3.1:从记录的目标容器的系统调用行为中,提取目标容器所访问的系统调用类型和参数,筛选出参数类别为路径名或离散数值的系统调用;

步骤3.2:针对步骤3.1筛选出的系统调用,对同一系统调用类型的各个系统调用参数分别进行建模,分别得到参数模型。被建模的系统调用参数及相关的参数模型,如图4所示。作为优选的建模方式为:对于“路径名”类别的参数,当特定路径名出现频率高于全局阈值,使用完整路径名作为特征值放入模型中,反之,当出现频率低于全局阈值,使用相应的目录名作为特征值放入模型中;对于“离散数值”类别的参数,例如标志位(flag)和打开模式(mode),可以将自动化测试中出现的离散数值汇集形成有限集合。

步骤3.3:提取每个参数模型的变量;根据变量对系统调用进行聚类操作,获得每个集合中所有系统调用共有的特征,即行为特征。

步骤4:将目标容器的系统调用的所有行为特征转化生成沙盒策略。沙盒策略可以由JSON格式的沙盒策略配置文件描述,如图3所示。作为优选的沙盒策略配置文件中,可以定义沙盒策略的默认操作(defaultAction)为“SCMP_ACT_ERRNO”,即当目标容器的系统调用访问不符合沙盒策略中的所有规则时,禁止此次系统调用访问,并返回错误值。然后,可以将步骤3.3生成的集合,转化为沙盒策略的规则部分(syscalls);其中每一条规则包含系统调用类型(name)、操作(action)和参数列表(args);可选的操作(action)包括“SCMP_ACT_ALLOW”和“SCMP_ACT_TRACE”,“SCMP_ACT_ALLOW”表示允许系统调用访问,“SCMP_ACT_TRACE”表示追踪系统调用访问;参数列表(args)包括系统调用参数的索引(index)、数值(value)和比较操作(op)。

为验证上述细粒度沙盒策略挖掘方法的有效性,将该方法用于Docker容器Nginx 1.4.0的沙盒策略挖掘。结果发现,挖掘生成的细粒度沙盒策略,能有效防御利用CVE-2013-2028安全漏洞进行的安全攻击。原因在于,沙盒策略中recvfrom沙盒规则对recvfrom系统调用访问的第三个参数进行限制,拒绝目标容器第三个参数数值不等于1024的所有系统调用访问,如图5所示。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1