扫一扫
关注微信公众号

无根容器浅析
2020-07-02   FreeBuf

  随着云计算的发展,容器变得越来越流行,同时也产生了实现容器的新方案,其中之一就是无根容器。无根容器是不需要root即可创建得容器,尽管无根容器在安全方面具有优势,但它们仍在测试开发中。本文介绍了无根容器的内部结构,并分析了无根容器网络组件中的漏洞。
 
  无根容器
 
  无根容器与常规容器相同,区别在于它们不需要root即可形成。无根容器仍处于早期阶段,无根容器出现的原因有很多。
 
  添加新的安全层。如果容器运行时受到攻击,攻击者将无法获得主机的root特权。
 
  允许多个非特权用户在同一台计算机上运行容器。
 
  允许隔离嵌套容器。
 
  Linux内核的一项新开发使此方案成为可能,允许无特权的用户创建新的用户空间。当用户创建并输入新的用户空间时,他将成为该空间的root用户,并获得生成容器所需的大多数特权。
 
  网络连接
 
  为了允许容器联网,通常创建虚拟以太网设备(VETH)负责联网。但只有root才有权创建此类设备,主要的解决方案是Slirp和LXC-user-nic。
 
  (1)Slirp
 
  Slirp最初被设计为面向非特权用户的Internet连接。随着时间的流逝,它成为虚拟机和仿真器(包括著名的QEMU)的网络堆栈,可对其修改调整以启用无根容器中网络连接。它把容器用户和网络名称空间分开并创默认路由设备。然后,它将设备的文件传递给默认网络名称空间的父级,使其可以与容器和Internet进行通信。

 
  (2)LXC-User-Nic
 
  另一种方法是运行setuid创建VETH设备。尽管它可以启用容器内的联网功能,但是它会要求容器文件以root权限运行。
 
  存储管理
 
  容器的复杂元素之一是存储管理。默认情况下,容器使用Overlay2(或Overlay)创建文件系统,但是无根容器不能做到这一点,大多数Linux不允许在用户名称空间中安装overlay文件系统。解决方案是使用其他驱动程序,例如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。
 
  总结
 
  无根容器提供了一种新的容器解决方案,该方法增加了安全层。它会成为云容器中的下一个演变方向。虽然无根容器仍然存在许多局限性,其功能仍处于试验开发中,随着时间和技术的发展,无根容器可以完全发挥作用并代替传统容器。

热词搜索:容器 云计算 云安全

上一篇:最新安全调查显示: 松散的单点解决方案可加剧企业安全挑战
下一篇:5G将是“革命性的”——但安全方面的担忧仍然很高

分享到: 收藏