如何實(shí)現(xiàn)runc容器逃逸漏洞預(yù)警

本篇文章為大家展示了如何實(shí)現(xiàn)runc容器逃逸漏洞預(yù)警,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、巴里坤哈薩克網(wǎng)絡(luò)推廣、小程序開(kāi)發(fā)、巴里坤哈薩克網(wǎng)絡(luò)營(yíng)銷(xiāo)、巴里坤哈薩克企業(yè)策劃、巴里坤哈薩克品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供巴里坤哈薩克建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:bm7419.com

0x00 漏洞背景

runc是一個(gè)根據(jù)OCI(Open Container Initiative)標(biāo)準(zhǔn)創(chuàng)建并運(yùn)行容器的CLI tool。目前docker引擎內(nèi)部也是基于runc構(gòu)建的。2019年2月11日,研究人員通過(guò)oss-security郵件列表披露了runc容器逃逸漏洞的詳情,根據(jù)OpenWall的規(guī)定EXP會(huì)在7天后也就是2019年2月18日公開(kāi)。經(jīng)360CERT研判,該漏洞可能影響廣大云服務(wù)廠商,危害嚴(yán)重。

0x01 漏洞影響

該漏洞允許惡意容器(以最少的用戶(hù)交互)覆蓋host上的runc文件,從而在host上以root權(quán)限執(zhí)行代碼。在下面兩種情況下,通過(guò)用戶(hù)交互可以在容器中以root權(quán)限執(zhí)行任意代碼:

1.使用攻擊者控制的鏡像創(chuàng)建新容器。

2.進(jìn)入到攻擊者之前具有寫(xiě)入權(quán)限的現(xiàn)有容器中(docker exec)。

默認(rèn)AppArmor策略不會(huì)阻止此漏洞。對(duì)于Fedora上的moby-engine軟件包,默認(rèn)SELinux策略也不會(huì)阻止此漏洞(因?yàn)槿萜鬟M(jìn)程似乎作為container_runtime_t運(yùn)行);對(duì)于Fedora上的docker軟件包和podman軟件包不受此漏洞影響(它們將容器進(jìn)程作為container_t運(yùn)行)。但是可以通過(guò)正確使用用戶(hù)命名空間(其中host的root未映射到容器的用戶(hù)命名空間)來(lái)阻止此漏洞。

目前除了runc之外,Apache Mesos和LXC也確認(rèn)受到影響。攻擊只可能發(fā)生在特權(quán)容器中,因?yàn)樗枰猦ost上的root權(quán)限來(lái)覆蓋runc文件。LXC認(rèn)為特權(quán)容器是不安全的,所以沒(méi)有分配CVE來(lái)處理此問(wèn)題,但是也已經(jīng)發(fā)布了補(bǔ)丁。

0x02 漏洞細(xì)節(jié)

攻擊者可以將容器中的目標(biāo)文件替換成指向runc的自己的文件來(lái)欺騙runc執(zhí)行自己。比如目標(biāo)文件是/bin/bash,將它替換成指定解釋器路徑為#!/proc/self/exe的可執(zhí)行腳本,在容器中執(zhí)行/bin/bash時(shí)將執(zhí)行/proc/self/exe,它指向host上的runc文件。然后攻擊者可以繼續(xù)寫(xiě)入/proc/self/exe試圖覆蓋host上的runc文件。但是一般來(lái)說(shuō)不會(huì)成功,因?yàn)閮?nèi)核不允許在執(zhí)行runc時(shí)覆蓋它。為了解決這個(gè)問(wèn)題,攻擊者可以使用O_PATH標(biāo)志打開(kāi)/proc/self/exe的文件描述符,然后通過(guò)/proc/self/fd/<nr>使用O_WRONLY標(biāo)志重新打開(kāi)文件,并嘗試在一個(gè)循環(huán)中從一個(gè)單獨(dú)的進(jìn)程寫(xiě)入該文件。當(dāng)runc退出時(shí)覆蓋會(huì)成功,在此之后,runc可以用來(lái)攻擊其它容器或host。

0x03 漏洞補(bǔ)丁

lxc使用memfd_create系統(tǒng)調(diào)用創(chuàng)建匿名的內(nèi)存文件,然后將該文件密封以防止修改。執(zhí)行的是這個(gè)密封的內(nèi)存中的文件而不是磁盤(pán)上的文件。同樣,從特權(quán)容器到host文件的任何寫(xiě)操作都將寫(xiě)入內(nèi)存中的文件而不是磁盤(pán)上的文件從而保證其完整性。由于內(nèi)存中的文件是密封的,寫(xiě)入操作也將失敗。

runc中的修補(bǔ)方案類(lèi)似。

如何實(shí)現(xiàn)runc容器逃逸漏洞預(yù)警

0x04 修復(fù)建議

目前漏洞細(xì)節(jié)已經(jīng)披露,EXP也即將公開(kāi),不排除攻擊者在EXP公開(kāi)之前就根據(jù)漏洞細(xì)節(jié)自己編寫(xiě)EXP發(fā)動(dòng)攻擊的可能。360CERT建議使用基于lxc和runc容器技術(shù)的相關(guān)廠商和開(kāi)發(fā)者及時(shí)進(jìn)行升級(jí),同時(shí)關(guān)注后續(xù)EXP,以對(duì)升級(jí)結(jié)果進(jìn)行驗(yàn)證。其它廠商和開(kāi)發(fā)者也需要關(guān)注該漏洞進(jìn)展,未來(lái)不排除有更多的容器系統(tǒng)受到該漏洞影響。

上述內(nèi)容就是如何實(shí)現(xiàn)runc容器逃逸漏洞預(yù)警,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)標(biāo)題:如何實(shí)現(xiàn)runc容器逃逸漏洞預(yù)警
文章位置:http://bm7419.com/article16/gocogg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、動(dòng)態(tài)網(wǎng)站做網(wǎng)站、外貿(mào)建站、自適應(yīng)網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)