导读:本文介绍BlackBox系统架构,其核心组件CSM,提供轻量化安全监控,使容器在不可信操作系统上安全运行。 原文链接:BlackBox: A Container Security Monitor for Protecting Containers on Untrusted Operating Systems | USENIX BlackBox: A Container Security Monitor for Protecting Containers on Untrusted Operating Systems (OSDI‘22) 一、研究背景容器作为共享计算基础设施的核心,广泛应用于应用程序的部署、打包和隔离。
从上表可知,容器相比于虚拟机和硬件Enclave有更好的性能表现。然而,容器的安全依赖于底层特权操作系统,例如Linux,这类商用操作系统因代码量庞大且复杂,存在较多漏洞,攻击者可以通过利用这些漏洞,对容器中的数据和内容发起攻击。所以当前仍缺乏一种能够兼顾轻量化和安全性的容器解决方案。 二、BlackBox:安全轻量的容器设计方案![]() 2.1 系统架构如图一,系统整体依赖一个核心组件container security monitor (CSM)。CSM作为一个轻量化的安全监视器,专注于保障容器的数据机密性和完整性。与传统的虚拟化技术不同,CSM 不负责硬件资源的虚拟化管理,而是引入了一种受保护的物理地址空间(PPAS),通过内存隔离保护每个容器的运行环境。 CSM 的核心功能:
2.2 BlackBox系统的启动和初始化BlackBox的启动依赖硬件信任链和操作系统的引导流程,通过 UEFI 和签名验证,确保只有经过认证的 CSM 和操作系统内核能加载运行。CSM 的引导过程借助操作系统现有的启动代码,这不仅简化了 CSM 的设计,还提升了兼容性。在操作系统完成硬件初始化后安装 CSM,此时网络和存储等服务尚未启用,能有效避免远程攻击的风险。安装完成后,CSM 以比操作系统更高的权限级别运行,隔离和保护容器的内存。通过控制 IOMMU,CSM 还能防止设备通过 DMA 攻击访问容器或自身内存,从而为容器提供一个安全的运行环境。 2.3 BlackBox初始化一个安全容器BlackBox使用 build_bb_image工具将普通镜像转化为BlackBox镜像,镜像中的代码和数据会被加密,并通过哈希值和签名确保其完整性。容器启动时,容器调用 CSM 的 create_enclave 接口创建一个隔离的容器环境,并将容器的内存转移到一个受保护的地址空间(PPAS)。在此过程中,操作系统无法直接执行加密的容器代码,必须通过 CSM 解密。容器销毁时,CSM 会清除容器的内存和 CPU 状态,确保信息不会泄露。整个流程确保容器的完整性和机密性,防止操作系统的干扰和篡改。 2.3 BlackBox中安全容器执行任务每当操作系统通过 fork、clone、exec 或 exit 系统调用创建或管理任务时,它必须调用相应的 CSM 接口(如 task_clone、task_exec 和 task_exit),否则任务将无法在容器中执行。对于任务创建,CSM 会验证任务的 CPU 状态和内存,确保其地址空间不被操作系统直接修改。如果任务是通过 fork 或 clone 创建的,CSM 会为子任务分配新的页表,并确保子任务的内存与父任务隔离。执行时,CSM 会验证新的地址空间并解密相应的二进制文件,确保任务能够在容器内正确运行。任务退出时,CSM 会清理相关资源并移除任务条目,确保容器内的内存和状态不被操作系统访问。整个过程确保任务在容器中的执行受到保护,不受操作系统干扰。 2.4 BlackBox中的内存隔离BlackBox通过要求操作系统调用 CSM 来更新进程的页表,防止操作系统直接修改页表,从而确保内存管理的安全性。对于内存映射的管理,CSM 会验证内存映射是否符合预定义的规则,例如检查是否存在重复映射、是否允许写操作等。在内存页分配时,操作系统必须通过 CSM 来请求分配,并且 CSM 会验证这些请求是否符合容器的内存保护规则。 BlackBox还支持写时复制(CoW)内存优化,当多个进程共享同一内存页并尝试写入时,操作系统通过 CSM 调用来处理复制操作,确保容器内存的完整性。对于释放内存,BlackBox通过拦截相关系统调用来确保容器的内存不会被误释放,维持容器内存的隐私性和完整性。 总体来说,BlackBox通过将内存管理的部分任务交给 CSM 来防止恶意操作系统对容器内存的直接访问,同时确保容器内存的隐私和安全性。 2.5 BlackBox中容器内任务之间的进程间通信在 BlackBox中,当类似于 pipe 和 Unix 域套接字的系统调用用于进程间通信时,容器会将需要传递的数据加密并拷贝到系统调用的共享内存中(这种机制同样适用于 read 和 recvmsg 等调用)。为了实现同步,BlackBox使用 futex,并通过 CSM 提供一个新的接口,允许操作系统通过该接口读取容器中已经存储的 futex。 此外,BlackBox还实现了信号通知机制。由于操作系统需要创建信号处理的堆栈,且该堆栈不能直接位于容器的内存空间中,操作系统会将信号栈放置在 PPAS 之外。在信号处理过程中,CSM 会将栈移到 PPAS 中,处理完信号后再将其移回 PPAS 之外。 三、实验设置及结果![]() 3.1 实验设计实验使用了两种硬件平台:
客户端运行在 Lenovo ThinkPad P52,配备 Intel i7-8750H 处理器和 32 GB RAM。 实验在以下五种配置下运行:
3.2 实验结果性能测量:
应用性能:
CPU 使用率:
3.3 总结结果表明 BlackBox 在容器安全保护方面提供了显著的安全性,且在性能上与传统 Docker 容器相差无几。虽然 BlackBox 在某些系统调用和 IPC 加密操作上会引入额外的开销,但在应用级别的负载下,这种开销相对较小,且 BlackBox 对容器机密性和完整性的保护表现出色。 本账号发布内容均为原创,欢迎转载,转载请注明出处。更多资讯请移步【机密计算前沿技术】服务号,欢迎交流! 免责声明:本内容来源于网络,如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |