隨著云計(jì)算的發(fā)展,容器變得越來越流行,同時(shí)也產(chǎn)生了實(shí)現(xiàn)容器的新方案,其中之一就是無根容器。無根容器是不需要root即可創(chuàng)建得容器,盡管無根容器在安全方面具有優(yōu)勢(shì),但它們?nèi)栽跍y(cè)試開發(fā)中。本文介紹了無根容器的內(nèi)部結(jié)構(gòu),并分析了無根容器網(wǎng)絡(luò)組件中的漏洞。
無根容器
無根容器與常規(guī)容器相同,區(qū)別在于它們不需要root即可形成。無根容器仍處于早期階段,無根容器出現(xiàn)的原因有很多。
添加新的安全層。 如果容器運(yùn)行時(shí)受到攻擊,攻擊者將無法獲得主機(jī)的root特權(quán)。
允許多個(gè)非特權(quán)用戶在同一臺(tái)計(jì)算機(jī)上運(yùn)行容器。
允許隔離嵌套容器。
Linux內(nèi)核的一項(xiàng)新開發(fā)使此方案成為可能,允許無特權(quán)的用戶創(chuàng)建新的用戶空間。 當(dāng)用戶創(chuàng)建并輸入新的用戶空間時(shí),他將成為該空間的root用戶,并獲得生成容器所需的大多數(shù)特權(quán)。
網(wǎng)絡(luò)連接
為了允許容器聯(lián)網(wǎng),通常創(chuàng)建虛擬以太網(wǎng)設(shè)備(VETH)負(fù)責(zé)聯(lián)網(wǎng)。 但只有root才有權(quán)創(chuàng)建此類設(shè)備,主要的解決方案是Slirp和LXC-user-nic。
(1) Slirp
Slirp最初被設(shè)計(jì)為面向非特權(quán)用戶的Internet連接。 隨著時(shí)間的流逝,它成為虛擬機(jī)和仿真器(包括著名的QEMU)的網(wǎng)絡(luò)堆棧,可對(duì)其修改調(diào)整以啟用無根容器中網(wǎng)絡(luò)連接。它把容器用戶和網(wǎng)絡(luò)名稱空間分開并創(chuàng)默認(rèn)路由設(shè)備。 然后,它將設(shè)備的文件傳遞給默認(rèn)網(wǎng)絡(luò)名稱空間的父級(jí),使其可以與容器和Internet進(jìn)行通信。
(2) LXC-User-Nic
另一種方法是運(yùn)行setuid創(chuàng)建VETH設(shè)備。 盡管它可以啟用容器內(nèi)的聯(lián)網(wǎng)功能,但是它會(huì)要求容器文件以root權(quán)限運(yùn)行。
存儲(chǔ)管理
容器的復(fù)雜元素之一是存儲(chǔ)管理。 默認(rèn)情況下,容器使用Overlay2(或Overlay)創(chuàng)建文件系統(tǒng),但是無根容器不能做到這一點(diǎn),大多數(shù)Linux不允許在用戶名稱空間中安裝overlay文件系統(tǒng)。解決方案是使用其他驅(qū)動(dòng)程序,例如VFS存儲(chǔ)驅(qū)動(dòng)程序。雖然有效但效率低。更好的解決方案是創(chuàng)建新的存儲(chǔ)驅(qū)動(dòng)程序,適應(yīng)無根容器的需求。
兼容狀態(tài)
以下容器引擎支持以下組件無根容器:
安全分析
從安全角度來看,無根容器中的漏洞還是配置錯(cuò)誤都會(huì)導(dǎo)致容器中軟件受到破壞,應(yīng)該始終以有限特權(quán)運(yùn)行軟件,當(dāng)漏洞產(chǎn)生時(shí),影響將降至最低。LXE-user-nic具有多個(gè)漏洞,攻擊者可利用漏洞提權(quán),例如CVE-2017-5985和CVE-2018-6556。Slirp近年來也披露了多個(gè)漏洞。
Slirp – CVE-2020-1983:
在對(duì)該軟件進(jìn)行模糊測(cè)試時(shí),發(fā)現(xiàn)了一個(gè)可能導(dǎo)致Slirp崩潰的漏洞。該漏洞分配編號(hào)為CVE-2020-1983。
這個(gè)問題與Slirp如何管理IP碎片有關(guān)。 IP數(shù)據(jù)包的最大大小為65,535字節(jié),錯(cuò)誤是Slirp無法驗(yàn)證分段IP數(shù)據(jù)包的大小,當(dāng)它對(duì)大于65,535的數(shù)據(jù)包進(jìn)行分段時(shí)就會(huì)會(huì)崩潰。
libslirp中的其他漏洞可在容器上執(zhí)行代碼,甚至可從容器逃逸到主機(jī)以及其他容器。2020年發(fā)現(xiàn)了兩個(gè)此類漏洞:CVE-2020-8608和CVE-2020-7039,受影響的Slirp版本是4.0.0至4.2.0。
總結(jié)
無根容器提供了一種新的容器解決方案,該方法增加了安全層。 它會(huì)成為云容器中的下一個(gè)演變方向。雖然無根容器仍然存在許多局限性,其功能仍處于試驗(yàn)開發(fā)中,隨著時(shí)間和技術(shù)的發(fā)展,無根容器可以完全發(fā)揮作用并代替?zhèn)鹘y(tǒng)容器。
-
容器
+關(guān)注
關(guān)注
0文章
495瀏覽量
22061 -
漏洞
+關(guān)注
關(guān)注
0文章
204瀏覽量
15375 -
root
+關(guān)注
關(guān)注
1文章
86瀏覽量
21393
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論