CN110059453A - 一种容器虚拟化安全加固装置及方法 - Google Patents
一种容器虚拟化安全加固装置及方法 Download PDFInfo
- Publication number
- CN110059453A CN110059453A CN201910188731.6A CN201910188731A CN110059453A CN 110059453 A CN110059453 A CN 110059453A CN 201910188731 A CN201910188731 A CN 201910188731A CN 110059453 A CN110059453 A CN 110059453A
- Authority
- CN
- China
- Prior art keywords
- container
- kernel
- micro
- operating system
- virtualizes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title abstract description 91
- 238000012545 processing Methods 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 3
- 230000008901 benefit Effects 0.000 abstract description 16
- 230000008569 process Effects 0.000 description 66
- 238000002955 isolation Methods 0.000 description 23
- 238000005516 engineering process Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 7
- 238000005728 strengthening Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000006378 damage Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003014 reinforcing effect Effects 0.000 description 3
- 241001026509 Kata Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种容器虚拟化安全加固装置及方法,包括:运行在客户机非根模式中的容器;运行在宿主机根模式中的底层操作系统模块和普通应用程序模块;在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源;所述容器与所述底层操作系统模块之间强制隔离。本发明相比于传统容器,具有更好的安全性上来讲,相比于虚拟机和基于虚拟机的容器技术,具有轻量级和启动快的优势。
Description
技术领域
本发明涉及计算机系统安全虚拟化领域,并特别涉及容器虚拟化安全加固装置及方法。
背景技术
由于容器技术的灵活性和轻量级等特征,该技术已经在工业界得到广泛应用。相比传统基于hypervisor的虚拟化技术,容器技术在OS(操作系统)层实现隔离,各个容器之间共享操作系统内核。容器级虚拟化实际上就是操作系统所提供的进程级虚拟化。这样实现的好处主要集中在两点:1)更加轻量,VM(虚拟机)中不再需要附带庞大的客户机操作系统;2)启动速度快,容器的启动能与进程启动速度相当。
但是进程级的抽象相比传统VM硬件层面上的抽象向攻击者暴露了更大的攻击面:1)攻击者可以绕过操作系统内核的用户态隔离机制直接获得宿主机权限;2)攻击者可以绕过操作系统内核维护的容器间隔离向其他容器发动攻击。总之,内核的用户态隔离和容器间隔离的不完善使得容器技术并不够安全。
传统容器当中运行的应用程序和常规(非容器化)应用程序采用相同的系统资源访问方式,即直接对主机内核进行系统调用。内核以高权限模式运行,允许其与必要硬件进行交互并将结果返回给应用程序。虽然传统容器技术能够通过Linux cgroups和namespace技术做资源的限制,但容器中的应用程序仍然可以访问很多系统资源,并且可以通过系统调用陷入到内核。因此,内核在很大程度上仍暴露在恶意应用程序的攻击范围内。
利用seccomp过滤器可以限制暴露给用户态程序的系统调用数量,每个进程进行系统调用时,都会检查用户自定义的白名单以确认该进程是否有权限使用这个系统调用,但用户往往很难预先确定哪些应用程序需要哪些系统调用。如果应用程序所需要的系统调用存在安全漏洞,过滤器更是无能为力。
基于虚拟机的容器技术,如Kata容器,是改进容器隔离能力的一种方法。在虚拟机中运行各套容器,为其提供“独占”的内核和虚拟化设备,且与主机完全分离。在这种情况下,即使虚拟机中存在漏洞,管理程序也能将其与主机及同样运行在主机上的其它应用程序/容器隔离开来。基于虚拟机的方案能够提供良好的隔离性、兼容性和性能表现,但其会占用可观的额外内存和资源。尽管Kata容器利用精简化的虚拟机以尽可能减少资源占用量,同时最大限度提高容器隔离能力,但其仍不可避免地有损容器所具有的轻量级和快速启动等优势。
Google利用gVisor建立沙箱化容器,能够在保证轻量化优势的同时,提供与虚拟机类似的隔离效果。gVisor的核心为一套运行非特权普通进程的内核,且支持大多数Linux系统调用。gVisor在用户空间内拦截应用程序系统调用并充当访客内核,并且能够随时适应不断变化的资源条件。但是由于gVisor更像普通的Linux进程,所以它的安全性严重依赖host机的进程隔离。
总之,容器技术的流行是因为其轻量级的优势,因此在加固容器安全性的同时,我们要避免对其造成损失,否则和传统基于hypervisor的虚拟机相比没有任何优势。
容器的安全性主要来自于底层操作系统的实现问题,提升底层操作系统所有与容器相关代码的安全性是最直接的做法。但是由于操作系统代码量巨大并且容器相关隔离代码实现复杂,直接修改底层操作系统是非常不现实的。本方案为容器技术的安全加固提供了新的思路。为了加强容器技术的安全性,本方案计划利用硬件辅助虚拟化技术,将容器与操作系统进行深层次的隔离:容器运行在非根模式(non-root mode),操作系统运行在根模式(root mode)。通过在非根模式中植入一个微内核,管理容器所使用到的内存和文件系统等资源,避免容器与宿主机系统内核的直接交互,减小共享宿主机操作系统内核所带来的攻击面。和现有的基于虚拟机的容器技术相比,本方案通过硬件虚拟化技术,确保了非常强的隔离效果,同时微内核被设计的非常小,它只保留一个进程运行所必备的支持,因此本方案保留了容器轻量级和启动快的特性。
发明内容
针对现有技术的不足,本发明提出一种利用硬件辅助虚拟化将容器与操作系统进行更深层次隔离的方法,目的是加固容器的安全性,在克服虚拟机或基于虚拟机的容器技术占用额外资源和空间的缺陷,保留容器轻量级和启动快的优势的同时,达到容器和内核之间非常强的隔离效果。
具体来说,本发明提供了一种容器虚拟化安全加固装置,其中包括:
运行在客户机非根模式中的容器;
运行在宿主机根模式中的底层操作系统模块和普通应用程序模块;
在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源;其中,
所述容器与所述底层操作系统模块之间强制隔离。
所述的容器虚拟化安全加固装置,其中所述微内核包括虚拟CPU核心和虚拟物理内存。
所述的容器虚拟化安全加固装置,其中所述微内核对所述容器的管理包括:系统调用的处理、异常和中断和处理以及系统文件系统的挂载。
所述的容器虚拟化安全加固装置,其中绑定每个所述虚拟CPU核心到所述宿主机的一个线程,并使所述容器的系统调用上下文为所述虚拟CPU核心所依附的底层操作系统的线程上下文。
所述的容器虚拟化安全加固装置,其中所述微内核是采用非底层级语言编写。
所述的容器虚拟化安全加固装置,其中所述微内核将所述容器中的文件与所述宿主机中的文件进行映射;和/或,将虚拟端口与底层操作系统的端口进行映射。
本发明还提出了一种容器虚拟化安全加固方法,其中包括如下步骤:
将容器运行在客户机非根模式中;
底层操作系统和普通应用程序运行在宿主机根模式中;
在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源,并使所述容器与所述底层操作系统之间形成强隔离。
所述的容器虚拟化安全加固方法,其中所述微内核包括虚拟CPU核心和虚拟物理内存。
所述的容器虚拟化安全加固方法,其中所述微内核对所述容器的管理包括:系统调用的处理、异常和中断和处理以及系统文件系统的挂载。
所述的容器虚拟化安全加固方法,其中绑定每个所述虚拟CPU核心到所述宿主机的一个线程,并使所述容器的系统调用上下文为所述虚拟CPU核心所依附的底层操作系统的线程上下文。
所述的容器虚拟化安全加固方法,其中所述微内核是采用非底层级语言编写。
所述的容器虚拟化安全加固方法,其中所述微内核将所述容器中的文件与所述宿主机中的文件进行映射;和/或,将虚拟端口与底层操作系统的端口进行映射。
由以上方案可知,本发明的优点在于:
相比于传统容器,本方案利用硬件辅助虚拟化,在容器和操作系统之间再添加一层虚拟(隔离),容器与操作系统的交互都会被截获并进行检查,阻止恶意容器利用底层操作系统的漏洞发动针对其他容器甚至是操作系统的攻击,从安全性上来讲,本方案使容器获得了极大的安全加固。
相比于虚拟机和基于虚拟机的容器技术,本方案不需要在客户机上加载繁重的操作系统,而是通过微内核来管理容器所用到的资源,使用硬件辅助虚拟化通过微内核支撑容器的运行,从轻便性上来讲,本方案保留了容器技术的优势,较基于现有技术中hypervisor的方案而言,本发明保留了容器轻量级和启动快的优势。
附图说明
图1为本发明加固系统总体框架图。
具体实施方式
本发明提供了一种容器虚拟化安全加固装置,其中包括:
运行在客户机非根模式中的容器;
运行在宿主机根模式中的底层操作系统模块和普通应用程序模块;
在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源;其中,
所述容器与所述底层操作系统模块之间强制隔离。
所述的容器虚拟化安全加固装置,其中所述微内核包括虚拟CPU核心和虚拟物理内存。
所述的容器虚拟化安全加固装置,其中所述微内核对所述容器的管理包括:系统调用的处理、异常和中断和处理以及系统文件系统的挂载。
所述的容器虚拟化安全加固装置,其中绑定每个所述虚拟CPU核心到所述宿主机的一个线程,并使所述容器的系统调用上下文为所述虚拟CPU核心所依附的底层操作系统的线程上下文。
所述的容器虚拟化安全加固装置,其中所述微内核是采用非底层级语言编写。
所述的容器虚拟化安全加固装置,其中所述微内核将所述容器中的文件与所述宿主机中的文件进行映射;和/或,将虚拟端口与底层操作系统的端口进行映射。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
1、容器技术加固方案总览:
容器的安全性主要来自于底层操作系统的实现问题,提升底层操作系统所有与容器相关代码的安全性是最直接的做法。但是由于操作系统代码量巨大并且容器相关隔离代码实现复杂,直接修改底层操作系统是非常不现实的。因此,我们选择从另一个角度出发,即在容器与操作系统之间再添加一层虚拟(隔离)。容器与操作系统的交互都会被截获并进行检查,阻止恶意容器利用底层操作系统的漏洞发动针对其他容器甚至是操作系统的攻击。
为了确保非常强的隔离效果,我们计划利用Intel的硬件辅助虚拟化技术,将容器运行在客户机中(非根模式),底层操作系统和其他普通应用运行在宿主机中(根模式),具体架构如图1所示。
我们在宿主机操作系统中装载一个内核模块,用来激活Intel处理器每个逻辑核心的硬件虚拟化。当硬件虚拟化被激活后,系统中会出现VMX Non-root(非根模式)和VMXRoot(根模式)两种工作模式,此刻整个系统运行在根模式下。同时,内核模块还会通过截获clone系统调用监控容器的启动。一旦检测到用户尝试启动一个容器,内核模块会立即创建虚拟CPU核心和虚拟物理内存空间,然后将处理器切换到非根模式中运行。
在该过程中,内核模块同时向虚拟物理内存中注入了支撑容器运行的微操作系统内核,用于管理容器所使用到的内存和文件系统等资源。在进入非根模式后,运行在ring 0的微内核将立即启动执行,初始化MMU、文件系统和要启动的容器进程。微内核完成初始化工作后,会进入ring 3启动容器进程。
容器进程在运行过程中,执行任何的系统调用都会陷入微内核中进行处理。在这个过程中,微内核不依赖底层操作系统对容器进程进行内存管理和进程调度等。但是容器进程进行的I/O操作,微内核只会进行合法性检查和文件系统的虚拟,真正的文件操作还是会通过调用vmcall请求宿主机操作系统的内核模块调用宿主机操作系统的系统调用完成。为了保留容器轻量级和启动快等特性,微内核被设计的非常小,它只保留一个进程运行所必备的支持,复杂的文件操作、网络通信等功能还是借由底层宿主机操作系统完成。但是,为了增加攻击者的攻击难度,文件系统和网络通信又会进行一次虚拟(第3节将详细介绍)。该微内核计划通过rust语言编写,避免了低层级语言(例如,C和C++语言)编写所引入的内存错误,进而提升微内核的安全性。
下面我们将分别介绍该加固方案对虚拟CPU核心和虚拟物理内存的处理,微内核对系统调用的处理、异常和中断的处理、和系统文件系统的挂载。
2、虚拟CPU核心和物理内存的处理。
虚拟CPU核心和虚拟物理内存的创建类似于KVM,由宿主机的一个进程作为依托对象:每个虚拟CPU核心绑定到宿主机一个线程上,虚拟物理内存由该进程的一部分虚存空间所模拟。每当宿主机操作系统对宿主机线程进行调度执行时,所绑定的虚拟CPU核心会立即启动执行。宿主机操作系统会确保每个宿主机线程得到执行,同时也就相当于确保了虚拟CPU核心得到了相应的运行。虚拟物理内存的管理由Intel提供的EPT技术得以支撑,具体虚拟物理内存的使用由上层微内核的MMU进行管理。
第1节已经介绍有些系统调用,微内核需要借助底层宿主机操作系统的系统调用处理。由于系统调用的上下文是和进程紧密相关,当一个容器进程的系统调用转化为底层操作系统的一个系统调用时,该系统调用的上下文就是当前虚拟CPU核心所依附底层操作系统的线程上下文。为了进一步限制该宿主机进程访问不该访问的宿主机内存、文件和网络等资源,虚拟CPU核心所依附的底层线程也由底层宿主机操作系统的容器技术进行隔离:该线程有独立的kernel namespace,cgroups技术限制该进程的所能拥有的硬件资源,capability技术限制其root能力等。
3、系统调用的处理。
容器中所有的系统调用都会直接陷入微内核进行处理。由于系统调用种类的不同,微内核的处理也十分不同。为此,我们分类别进行介绍:
3.1、进程控制类系统调用。
该类系统调用主要是控制进程和线程的创建、销毁、获得进程id等操作,如:fork、clone、getpid、getpgid等。所有的这些系统调用均由微内核实现,不会转发到底层宿主机操作系统。这样做的好处是屏蔽掉底层操作系统对进程的管理和控制逻辑,使得攻击者很难渗透到底层操作系统进行攻击。
由于容器中是可以存在多个进程的,如果微内核将所有这些进程都运行在一个虚拟CPU核心上时(也就是容器多个进程对应一个底层宿主机进程),每个进程可能不会获得充分的时间片进行执行。同时,微内核需要实现进程的调度。为了简化微内核设计,并且提升进程执行效率,我们考虑将容器中每个进程绑定到不同的虚拟CPU核心上(也就是一个容器进程对应一个底层操作系统线程),由底层操作系统负责进程的调度执行。
3.2、文件系统控制类系统调用
该类系统调用主要是控制文件读写和文件系统操作,例如,open、close和access、chmod等。由于这些系统调用需要直接操作文件系统(有可能需要读写磁盘),微内核并不具备这样的能力,因此需要将文件的读写和文件系统的操作交由底层操作系统完成。如果利用底层操作系统直接维护容器内的文件系统,这样会带来一个问题是攻击者可能直接发动针对文件系统的攻击(也就是直接攻击了底层操作系统)。在微内核中进行简单的系统调用检查和过滤是很难完成的,这是因为微内核也有可能存在一些逻辑漏洞。
为了解决这个问题,我们计划对文件系统进行更深一步的虚拟:容器文件系统中的所有文件在宿主机中都有对应,但是它们的属性非常不同(例如,名称不同、所拥有者不同等)。由微内核将容器中的文件与宿主机中的文件进行映射。例如,每当容器内进程创建一个文件时,微内核首先会在自身文件系统中创建一个虚拟的文件,然后请求底层操作系统创建一个真正的文件,最后将逻辑文件与真正的文件做个映射关系。每当容器进程对一个(逻辑)文件进行读写时,微内核文件系统会首先检查操作的合法性,并对该(逻辑)文件的读写映射到对真正的文件的读写。容器对文件系统的一些操作也进行类似的管理。这样做的好处是攻击者要想攻击底层操作系统的文件系统需要首先攻破微内核,然后才能进一步向底层发动攻击。由于虚拟CPU核心所依附的进程又有独立namespace的,因此即使攻击者攻破微内核,攻击者仍然会被底层系统的namespace隔离机制所限制。
3.3、系统控制类系统调用。
这类系统调用主要包括获得系统运行时间、设置计时器等功能,这些全部由微内核进行模拟,不会请求底层操作系统进行处理。
3.4、内存管理系统调用。
这类系统调用主要是进程虚拟内存的操作,例如,虚拟内存的申请、释放、获取页面大小等。由于容器中虚拟内存到物理内存的映射完全由微内核进行管理,因此这类系统调用完全交由微内核进行处理,不再请求底层操作系统的内存管理系统进行处理。
3.5、网络管理系统调用。
这类系统调用主要包括取域名、设置域名、获取本主机名称等,这些完全交由微内核进行处理,不再请求底层操作系统的网络管理系统进行处理。
3.6、Socket控制类系统调用。
这类系统调用主要是进行网络的通信和控制,主要包括建立socket、远程链接、发送UDP、端口监听等。由于微内核不能够直接控制真正的端口,因此微内核还需要将这部分功能交由底层操作系统进行管理。与文件系统类系统调用的实现类似,微内核在中间不只是进行系统调用的转发,而是进行了更进一步的虚拟。微内核会为容器维护一整套的虚拟端口,并会将虚拟端口与底层操作系统的端口进行映射。容器对socket的访问,会由微内核转化为对底层系统socket的访问。同时,底层系统socket的访问也会由namespace机制进行隔离,进一步限制攻击者的攻击面。
3.7、用户管理类系统调用。
这类系统调用主要包括获取用户标识号、获取组标识号、设置组标识号等。这类系统调用完全由微内核支持,不需要与底层操作系统进行交互。
3.8、进程间通信类系统调用。
这类系统调用主要包括信号、消息、管道、信号量和共享内存。这些系统调用完全由微内核进行支持,不再需要与底层操作系统进行交互。例如,共享内存机制中微内核只需要修改将两个进程需要共享部分的页表使其指向相同的物理内存区域即可。
4、异常和中断的处理。
容器进程所触发的所有异常全部交由微内核进行处理,例如,页面异常、除0异常、非法指令异常等。这部分不会与底层操作系统进行交互。
微内核不需要进行进程调度的管理,只是将进程绑定每个虚拟核心。同时,所有的I/O操作也都由微内核请求底层操作系统完成。因此,微内核并不需要接收外部中断进行处理。所有的外部中断都会引起虚拟机下陷(VM-Exit),然后交由底层操作系统进行处理。这大大简化了微内核的设计和实现,使得微内核的安全性得以保证。
5、系统文件系统的挂载。
针对容器的攻击中,有很大一部分攻击来源是/proc文件系统的问题。这是因为操作系统的namespace支持并不完善,使得容器外的一些进程的信息也出现在/proc文件系统中。攻击者可以利用这些不健全的功能实现,泄露其他容器或者宿主机进程的信息。为了解决这个问题,在我们的设计中容器中/proc文件系统挂载的不再是底层操作系统的/proc,而是由微内核直接提供。由于容器微内核可见的进程就是容器中的所有进程,微内核所维护的/proc文件系统也只会显示当前容器进程的情况。这从根源上杜绝了攻击者利用/proc文件系统攻击其他容器的可能性。
6、容器技术加固方案的性能分析。
容器技术的流行是因为容器所具有的轻量级和快速启动等优势,因此在加固容器安全性的同时,我们要避免损失这两点主要优势,否则和传统基于hypervisor的VM没有任何优势。
在我们的设计方案中,我们引入了一个微内核用来向容器中进程提供更进一步地环境虚拟来增强容器的安全性。该微内核的设计非常小巧,与传统Linux内核相比,该微内核只保留了能够支持一个进程运行的最基本功能。同时,微内核还将复杂的I/O操作、中断处理等直接交由底层宿主机操作系统处理,这更加简化了微内核的设计和实现。
容器中进程的创建和运行是绑定到虚拟CPU核心上的,也就是说容器中的进程与宿主机的线程对应。容器中进程的启动速度会与宿主机线程的创建速度相当,但是会有略微的性能下降。这是因为除了底层宿主机线程创建的开销,该过程还会引入微内核中进程的初始化开销。整体来讲,使用加固后的容器的启动速度会与现有容器技术相当,但是略有下降,但会远优于传统基于hypervisor技术的启动速度。
微内核的大小和启动速度可以类比libOS/Unikernel。这些kernel是将Linuxkernel进行了裁剪做成一个库直接链接到应用程序中,这样应用可以直接运行在裸硬件上。在本设计方案中,我们没有直接采用libOS/Unikernel作为微内核然后直接运行在hypervisor之上的原因是所有应用都需要重新编译链接该内核,这在云场景上并不具有可部署性:云上的应用不可能为了链接该kernel,都要重新编译。
7、容器技术加固方案的安全性分析。
我们加固方案的核心思想是在容器进程与宿主机操作系统中间再引入一层(我们称之为微内核层)。该微内核层对容器中进程所能使用到的资源进行更进一步的虚拟,使得宿主机操作不会直接暴露在攻击者的攻击面中。这会带来非常多的好处:
1)容器进程的大部分系统调用直接由微内核负责实现,不再调用底层宿主机操作系统,宿主机操作系统的这些系统调用就不再暴露在攻击者的攻击平面内。
2)有些系统调用还需要微内核转发到宿主机操作系统进行实现,但是这些系统调用不直接交由宿主机处理,而是进行了更进一步的系统调用虚拟。例如,对于文件系统类系统调用,微内核自身对文件系统又进行了一定的虚拟,对容器中的文件与宿主机中的文件进行了映射。当读写某一文件时,微内核首先需要进行合法性检查,然后进行宿主机文件映射,最后调用宿主机实现真正的文件读写。额外的虚拟会极大地增大攻击者的攻击难度!
3)容器中内存与宿主机操作系统进行了有效的隔离,该隔离是由Intel硬件辅助虚拟化的EPT技术所支撑。该方案可以有效阻止容器中进程针对宿主机操作系统发动的侧信道攻击,如meltdown攻击等。该方案有效保护了宿主机操作系统,使其不会暴露在攻击者的攻击面中。
微内核向宿主机操作系统所请求的系统调用,也是在kernel namespace机制隔离的上下文中实现的。也就是说微内核和其上的所有进程也是运行在宿主机操作系统的一个容器中。这样攻击者需要首先攻破微内核,然后突破宿主机容器隔离,最后攻击宿主机操作系统。
在我们的加固方案中,微内核将使用rust语言编写,并且直接运行在非根模式的ring 0下。攻击者需要针对没有内存错误的微内核发动跨ring攻击,难度还是非常大的。由于微内核直接面向容器中的进程进行管理,宿主机其他进程是完全不可见的,因此避免了宿主机操作系统namespace和capability复杂实现的缺陷问题。
以下为与上述系统实施例对应的方法实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出了一种容器虚拟化安全加固方法,其中包括如下步骤:
将容器运行在客户机非根模式中;
底层操作系统和普通应用程序运行在宿主机根模式中;
在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源,并使所述容器与所述底层操作系统之间形成强隔离。
所述的容器虚拟化安全加固方法,其中所述微内核包括虚拟CPU核心和虚拟物理内存。
所述的容器虚拟化安全加固方法,其中所述微内核对所述容器的管理包括:系统调用的处理、异常和中断和处理以及系统文件系统的挂载。
所述的容器虚拟化安全加固方法,其中绑定每个所述虚拟CPU核心到所述宿主机的一个线程,并使所述容器的系统调用上下文为所述虚拟CPU核心所依附的底层操作系统的线程上下文。
所述的容器虚拟化安全加固方法,其中所述微内核是采用非底层级语言编写。
所述的容器虚拟化安全加固方法,其中所述微内核将所述容器中的文件与所述宿主机中的文件进行映射;和/或,将虚拟端口与底层操作系统的端口进行映射。
综上,本发明利用Intel的硬件辅助虚拟化技术,将容器运行在客户机中(非根模式),底层操作系统和其他普通应用运行在宿主机中(根模式)实现容器和操作系统内核的强隔离;利用虚拟CPU核心和虚拟物理内存,管理容器所使用到的内存和文件系统等资源,包括对系统调用的处理、异常和中断的处理、系统文件系统的挂载,以保留容器轻量级和启动快的特性;绑定每个虚拟CPU核心到宿主机的一个线程,容器进程的系统调用上下文就是虚拟CPU核心所依附的底层操作系统的线程上下文,以进一步限制容器进程对宿主机资源的访问;通过rust语言编写微内核,避免底层级语言(如C和C++)编写引入的内存错误,以提升微内核安全性,减小攻击面;虚拟化文件系统和网络通信,微内核将容器中的文件与宿主机中的文件进行映射,将虚拟端口与底层操作系统的端口进行映射,以进一步减小攻击面,提升攻击难度。
Claims (12)
1.一种容器虚拟化安全加固装置,其特征在于,包括:
运行在客户机非根模式中的容器;
运行在宿主机根模式中的底层操作系统模块和普通应用程序模块;
在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源;其中,
所述容器与所述底层操作系统模块之间强制隔离。
2.根据权利要求1所述的容器虚拟化安全加固装置,其特征在于,所述微内核包括虚拟CPU核心和虚拟物理内存。
3.根据权利要求1或2所述的容器虚拟化安全加固装置,其特征在于,所述微内核对所述容器的管理包括:系统调用的处理、异常和中断和处理以及系统文件系统的挂载。
4.根据权利要求2所述的容器虚拟化安全加固装置,其特征在于,绑定每个所述虚拟CPU核心到所述宿主机的一个线程,并使所述容器的系统调用上下文为所述虚拟CPU核心所依附的底层操作系统的线程上下文。
5.根据权利要求1所述的容器虚拟化安全加固装置,其特征在于,所述微内核是采用非底层级语言编写。
6.根据权利要求1所述的容器虚拟化安全加固装置,其特征在于,所述微内核将所述容器中的文件与所述宿主机中的文件进行映射;和/或,将虚拟端口与底层操作系统的端口进行映射。
7.一种容器虚拟化安全加固方法,其特征在于,包括如下步骤:
将容器运行在客户机非根模式中;
底层操作系统和普通应用程序运行在宿主机根模式中;
在所述非根模式中植入一微内核,用于管理所述容器使用到的内存和文件系统资源,并使所述容器与所述底层操作系统之间形成强隔离。
8.根据权利要求7所述的容器虚拟化安全加固方法,其特征在于,所述微内核包括虚拟CPU核心和虚拟物理内存。
9.根据权利要求1或2所述的容器虚拟化安全加固方法,其特征在于,所述微内核对所述容器的管理包括:系统调用的处理、异常和中断和处理以及系统文件系统的挂载。
10.根据权利要求8所述的容器虚拟化安全加固方法,其特征在于,绑定每个所述虚拟CPU核心到所述宿主机的一个线程,并使所述容器的系统调用上下文为所述虚拟CPU核心所依附的底层操作系统的线程上下文。
11.根据权利要求7所述的容器虚拟化安全加固方法,其特征在于,所述微内核是采用非底层级语言编写。
12.根据权利要求7所述的容器虚拟化安全加固方法,其特征在于,所述微内核将所述容器中的文件与所述宿主机中的文件进行映射;和/或,将虚拟端口与底层操作系统的端口进行映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910188731.6A CN110059453B (zh) | 2019-03-13 | 2019-03-13 | 一种容器虚拟化安全加固装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910188731.6A CN110059453B (zh) | 2019-03-13 | 2019-03-13 | 一种容器虚拟化安全加固装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110059453A true CN110059453A (zh) | 2019-07-26 |
CN110059453B CN110059453B (zh) | 2021-02-05 |
Family
ID=67316821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910188731.6A Active CN110059453B (zh) | 2019-03-13 | 2019-03-13 | 一种容器虚拟化安全加固装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110059453B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569111A (zh) * | 2019-09-12 | 2019-12-13 | 天津华云软件有限公司 | 一种基于传统容器的虚拟机实现方法、装置及系统 |
CN110851824A (zh) * | 2019-11-13 | 2020-02-28 | 哈尔滨工业大学 | 一种针对恶意容器的检测方法 |
CN112099923A (zh) * | 2020-11-17 | 2020-12-18 | 江苏北弓智能科技有限公司 | 一种运行于Linux操作系统上的Android虚拟化系统 |
CN112231056A (zh) * | 2020-10-12 | 2021-01-15 | 中电积至(海南)信息技术有限公司 | 一种虚拟网络功能的容器安全隔离方法 |
CN112241309A (zh) * | 2020-10-21 | 2021-01-19 | 海光信息技术股份有限公司 | 一种数据安全方法、装置、cpu、芯片及计算机设备 |
WO2021148863A1 (en) * | 2020-01-24 | 2021-07-29 | International Business Machines Corporation | Process-based virtualization system for executing secure application process |
CN114546599A (zh) * | 2022-02-25 | 2022-05-27 | 科东(广州)软件科技有限公司 | 一种容器操作系统 |
CN114579254A (zh) * | 2022-03-02 | 2022-06-03 | 科东(广州)软件科技有限公司 | 一种微内核虚拟化操作系统的系统调用方法及装置 |
CN114780168A (zh) * | 2022-03-30 | 2022-07-22 | 全球能源互联网研究院有限公司南京分公司 | 智能终端容器安全策略动态变更的方法、装置及电子设备 |
WO2023226421A1 (zh) * | 2022-05-27 | 2023-11-30 | 天翼云科技有限公司 | 一种安全加固方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226577A (zh) * | 2008-01-28 | 2008-07-23 | 南京大学 | 基于可信硬件与虚拟机的微内核操作系统完整性保护方法 |
US20150178497A1 (en) * | 2013-12-20 | 2015-06-25 | Bitdefender IPR Management Ltd. | Strongly Isolated Malware Scanning Using Secure Virtual Containers |
CN105550014A (zh) * | 2015-12-08 | 2016-05-04 | 上海交通大学 | 灵活高效的跨权限级与域的调用方法 |
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
CN109196505A (zh) * | 2016-06-02 | 2019-01-11 | 微软技术许可有限责任公司 | 基于硬件的虚拟化安全隔离 |
CN109313569A (zh) * | 2016-06-13 | 2019-02-05 | 华为技术有限公司 | 用于虚拟硬件控制的系统和方法 |
-
2019
- 2019-03-13 CN CN201910188731.6A patent/CN110059453B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226577A (zh) * | 2008-01-28 | 2008-07-23 | 南京大学 | 基于可信硬件与虚拟机的微内核操作系统完整性保护方法 |
US20150178497A1 (en) * | 2013-12-20 | 2015-06-25 | Bitdefender IPR Management Ltd. | Strongly Isolated Malware Scanning Using Secure Virtual Containers |
CN105550014A (zh) * | 2015-12-08 | 2016-05-04 | 上海交通大学 | 灵活高效的跨权限级与域的调用方法 |
CN109196505A (zh) * | 2016-06-02 | 2019-01-11 | 微软技术许可有限责任公司 | 基于硬件的虚拟化安全隔离 |
CN109313569A (zh) * | 2016-06-13 | 2019-02-05 | 华为技术有限公司 | 用于虚拟硬件控制的系统和方法 |
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
Non-Patent Citations (3)
Title |
---|
孙伟杰: "一种基于硬件辅助虚拟化的进程抽象层", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
段赫: "基于LXC容器资源优化的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
王绪国: "基于VT_x虚拟化的容器间资源硬隔离技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569111A (zh) * | 2019-09-12 | 2019-12-13 | 天津华云软件有限公司 | 一种基于传统容器的虚拟机实现方法、装置及系统 |
CN110851824A (zh) * | 2019-11-13 | 2020-02-28 | 哈尔滨工业大学 | 一种针对恶意容器的检测方法 |
US11461474B2 (en) | 2020-01-24 | 2022-10-04 | International Business Machines Corporation | Process-based virtualization system for executing a secure application process |
GB2607529A (en) * | 2020-01-24 | 2022-12-07 | Ibm | Process-based virtualization system for executing secure application process |
WO2021148863A1 (en) * | 2020-01-24 | 2021-07-29 | International Business Machines Corporation | Process-based virtualization system for executing secure application process |
CN112231056B (zh) * | 2020-10-12 | 2023-09-05 | 积至(海南)信息技术有限公司 | 一种虚拟网络功能的容器安全隔离方法 |
CN112231056A (zh) * | 2020-10-12 | 2021-01-15 | 中电积至(海南)信息技术有限公司 | 一种虚拟网络功能的容器安全隔离方法 |
CN112241309A (zh) * | 2020-10-21 | 2021-01-19 | 海光信息技术股份有限公司 | 一种数据安全方法、装置、cpu、芯片及计算机设备 |
CN112241309B (zh) * | 2020-10-21 | 2022-04-01 | 海光信息技术股份有限公司 | 一种数据安全方法、装置、cpu、芯片及计算机设备 |
CN112099923B (zh) * | 2020-11-17 | 2021-02-05 | 江苏北弓智能科技有限公司 | 一种运行于Linux操作系统上的Android虚拟化系统 |
CN112099923A (zh) * | 2020-11-17 | 2020-12-18 | 江苏北弓智能科技有限公司 | 一种运行于Linux操作系统上的Android虚拟化系统 |
CN114546599A (zh) * | 2022-02-25 | 2022-05-27 | 科东(广州)软件科技有限公司 | 一种容器操作系统 |
CN114579254A (zh) * | 2022-03-02 | 2022-06-03 | 科东(广州)软件科技有限公司 | 一种微内核虚拟化操作系统的系统调用方法及装置 |
CN114780168A (zh) * | 2022-03-30 | 2022-07-22 | 全球能源互联网研究院有限公司南京分公司 | 智能终端容器安全策略动态变更的方法、装置及电子设备 |
CN114780168B (zh) * | 2022-03-30 | 2023-04-28 | 全球能源互联网研究院有限公司南京分公司 | 智能终端容器安全策略动态变更的方法、装置及电子设备 |
WO2023226421A1 (zh) * | 2022-05-27 | 2023-11-30 | 天翼云科技有限公司 | 一种安全加固方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110059453B (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110059453A (zh) | 一种容器虚拟化安全加固装置及方法 | |
US11200080B1 (en) | Late load technique for deploying a virtualization layer underneath a running operating system | |
Mi et al. | Skybridge: Fast and secure inter-process communication for microkernels | |
CN109933441B (zh) | 微内核进程间通讯方法和系统 | |
RU2686552C2 (ru) | Системы и способы предоставления результата текущей команды процессора при выходе из виртуальной машины | |
EP3619605B1 (en) | Securing virtual execution environments | |
US10204220B1 (en) | Thin hypervisor for native execution of unsafe code | |
US8341369B2 (en) | Providing protected access to critical memory regions | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
US9129106B2 (en) | Systems and methods for secure in-VM monitoring | |
KR102189296B1 (ko) | 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 | |
CN112236752A (zh) | 用于改进软件容器性能和隔离的方法和系统 | |
CN109558211A (zh) | 保护可信应用与普通应用的交互完整性和保密性的方法 | |
KR20050035833A (ko) | 가상 기계에서 합성 명령어를 사용하는 시스템 및 방법 | |
US8910155B1 (en) | Methods and systems for injecting endpoint management agents into virtual machines | |
US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
US10776486B2 (en) | Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment | |
US9977690B2 (en) | Hypervisor-visible guest thread management | |
US20100306766A1 (en) | Adding aspects to virtual machine monitors | |
Li et al. | Reducing world switches in virtualized environment with flexible cross-world calls | |
Vahidi et al. | VETE: Virtualizing the Trusted Execution Environment | |
Schwarz et al. | Formal verification of secure user mode device execution with DMA | |
Aguiar et al. | Current techniques and future trends in embedded system's virtualization | |
Qin et al. | NEM: A new in-vm monitoring with high efficiency and strong isolation | |
Reames et al. | A hypervisor for embedded computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |