隨著云計算的發展,容器變得越來越流行,同時也產生了實現容器的新方案,其中之一就是無根容器。無根容器是不需要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。
總結
無根容器提供了一種新的容器解決方案,該方法增加了安全層。 它會成為云容器中的下一個演變方向。雖然無根容器仍然存在許多局限性,其功能仍處于試驗開發中,隨著時間和技術的發展,無根容器可以完全發揮作用并代替傳統容器。
-
容器
+關注
關注
0文章
494瀏覽量
22045 -
漏洞
+關注
關注
0文章
204瀏覽量
15360 -
root
+關注
關注
1文章
85瀏覽量
21376
發布評論請先 登錄
相關推薦
評論