无根容器内部结构浅析

随着云计算的发展,容器变得愈来愈流行,同时也产生了实现容器的新方案,其中之一就是无根容器。本文介绍了无根容器的内部结构,并分析了无根容器网络组件中的漏洞。

随着云计算的发展,容器变得愈来愈流行,同时也产生了实现容器的新方案,其中之一就是无根容器。无根容器是不须要root便可建立得容器,尽管无根容器在安全方面具备优点,但它们仍在测试开发中。本文介绍了无根容器的内部结构,并分析了无根容器网络组件中的漏洞。html

无根容器

无根容器与常规容器相同,区别在于它们不须要root便可造成。无根容器仍处于早期阶段,无根容器出现的缘由有不少。linux

  1. 添加新的安全层。 若是容器运行时受到攻击,攻击者将没法得到主机的root特权。
  2. 容许多个非特权用户在同一台计算机上运行容器。
  3. 容许隔离嵌套容器。

Linux内核的一项新开发使此方案成为可能,容许无特权的用户建立新的用户空间。 当用户建立并输入新的用户空间时,他将成为该空间的root用户,并得到生成容器所需的大多数特权。安全

网络链接

为了容许容器联网,一般建立虚拟以太网设备(VETH)负责联网。 但只有root才有权建立此类设备,主要的解决方案是Slirp和LXC-user-nic。网络

  • Slirp

Slirp最初被设计为面向非特权用户的Internet链接。 随着时间的流逝,它成为虚拟机和仿真器(包括著名的QEMU)的网络堆栈,可对其修改调整以启用无根容器中网络链接。它把容器用户和网络名称空间分开并创默认路由设备。 而后,它将设备的文件传递给默认网络名称空间的父级,使其能够与容器和Internet进行通讯。测试

无根容器内部结构浅析无根容器内部结构浅析

  • LXC-User-Nic

另外一种方法是运行setuid建立VETH设备。 尽管它能够启用容器内的联网功能,可是它会要求容器文件以root权限运行。ui

存储管理

容器的复杂元素之一是存储管理。 默认状况下,容器使用Overlay2(或Overlay)建立文件系统,可是无根容器不能作到这一点,大多数Linux不容许在用户名称空间中安装overlay文件系统。解决方案是使用其余驱动程序,例如VFS存储驱动程序。虽然有效但效率低。更好的解决方案是建立新的存储驱动程序,适应无根容器的需求。云计算

兼容状态

如下容器引擎支持如下组件无根容器:url

无根容器内部结构浅析无根容器内部结构浅析

安全分析

从安全角度来看,无根容器中的漏洞仍是配置错误都会致使容器中软件受到破坏,应该始终以有限特权运行软件,当漏洞产生时,影响将降至最低。LXE-user-nic具备多个漏洞,攻击者可利用漏洞提权,例如CVE-2017-5985和CVE-2018-6556。Slirp近年来也披露了多个漏洞。spa

Slirp – CVE-2020-1983:.net

在对该软件进行模糊测试时,发现了一个可能致使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。

总结

无根容器提供了一种新的容器解决方案,该方法增长了安全层。 它会成为云容器中的下一个演变方向。虽然无根容器仍然存在许多局限性,其功能仍处于试验开发中,随着时间和技术的发展,无根容器能够彻底发挥做用并代替传统容器。

本文地址:https://www.linuxprobe.com/no-root-jg.html

相关文章
相关标签/搜索