無根容器內部結構淺析

隨着雲計算的發展,容器變得愈來愈流行,同時也產生了實現容器的新方案,其中之一就是無根容器。本文介紹了無根容器的內部結構,並分析了無根容器網絡組件中的漏洞。

隨着雲計算的發展,容器變得愈來愈流行,同時也產生了實現容器的新方案,其中之一就是無根容器。無根容器是不須要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

相關文章
相關標籤/搜索