随着云计算的发展,容器越来越流行,新的容器实现方案也应运而生,无根容器就是其中之一。无根容器是可以在没有根的情况下创建的容器,尽管它们具有安全优势,但无根容器仍处于测试开发阶段。本文描述了无根容器的内部结构,并分析了无根容器网络组件中的漏洞。Rootless容器Rootless容器与常规容器相同,不同之处在于它们不需要root即可形成。无根容器仍处于早期阶段,无根容器有很多原因。添加新的安全层。如果容器运行时遭到破坏,攻击者将无法在主机上获得root权限。允许多个非特权用户在同一台??机器上运行容器。允许隔离嵌套容器。Linux内核的一项新发展使这种方案成为可能,允许非特权用户创建新的用户空间。当用户创建并进入一个新的用户空间时,他将成为该空间的根用户并获得生成容器所需的大部分权限。联网为了让容器联网,通常会创建一个虚拟以太网设备(VETH)来负责联网。但只有root才有权创建此类设备,主要解决方案是Slirp和LXC-user-nic。(1)SlirpSlirp最初是为非特权用户设计的Internet连接。随着时间的推移,它变成了虚拟机和模拟器(包括著名的QEMU)的网络堆栈,可以对其进行修改和调整以在无根容器中启用网络。它将容器用户从网络命名空间中分离出来,并创建一个默认的路由设备。然后它将设备的文件传递给默认网络命名空间的父级,允许它与容器和Internet通信。(2)LXC-User-Nic的另一种方法是运行setuid创建一个VETH设备。虽然它可以在容器内部启用网络,但它需要容器文件以root权限运行。存储管理容器的复杂元素之一是存储管理。默认情况下,容器使用Overlay2(或Overlay)创建文件系统,但无根容器不能这样做,而且大多数Linux不允许在用户命名空间中挂载覆盖文件系统。解决方案是使用另一个驱动程序,例如VFS存储驱动程序。有效但效率低下。更好的解决方案是创建一个新的存储驱动程序,以适应无根容器的需求。兼容状态以下容器引擎支持以下组件无根容器:安全分析从安全角度来看,无根容器中的漏洞或错误配置可能导致容器中的软件损坏,软件应始终以有限权限运行.当漏洞发生时,影响会降到最低。LXE-user-nic存在多个漏洞,攻击者可以利用这些漏洞提升权限,例如CVE-2017-5985和CVE-2018-6556。近年来,Slirp还披露了多个漏洞。Slirp–CVE-2020-1983:在对软件进行模糊测试时,发现了一个可能导致Slirp崩溃的漏洞。该漏洞的编号为CVE-2020-1983。这个问题与Slirp如何管理IP碎片有关。IP数据包的最大大小为65,535字节,错误在于Slirp无法验证分片IP数据包的大小,并且当它分片大于65,535的数据包时会崩溃。libslirp中的其他漏洞允许在容器上执行代码,甚至可以从容器中逃逸到宿主机和其他容器中。2020年发现了两个此类漏洞:CVE-2020-8608和CVE-2020-7039,受影响的Slirp版本为4.0.0至4.2.0。总结无根容器提供了一种新的容器解决方案,增加了一层安全性。这将是云容器的下一个演进方向。虽然无根容器仍然有很多局限性,其功能仍在试验性开发中,但随着时间和技术的发展,无根容器可以完全发挥作用并取代传统容器。
