

Azure Functions 提權(quán)漏洞分析,azure ad介紹Azure函數(shù)提升能力的脆弱性分析Azure Functions是一個(gè)無服務(wù)器的解決方案,可以讓用戶減少代碼編寫,減少要維護(hù)的基礎(chǔ)結(jié)構(gòu),節(jié)省成本。不需要擔(dān)心服務(wù)器的部署和維護(hù)。Cloud 基礎(chǔ)架構(gòu)提供了保持應(yīng)用運(yùn)行所需的所有最新資源。你只需要關(guān)注對(duì)你來說......
Azure Functions是一個(gè)無服務(wù)器的解決方案,可以讓用戶減少代碼編寫,減少要維護(hù)的基礎(chǔ)結(jié)構(gòu),節(jié)省成本。不需要擔(dān)心服務(wù)器的部署和維護(hù)。Cloud 基礎(chǔ)架構(gòu)提供了保持應(yīng)用運(yùn)行所需的所有最新資源。你只需要關(guān)注對(duì)你來說最重要的代碼,Azure Functions會(huì)處理剩下的。Azure Functions允許你提供一個(gè)帶有不同“鉤子”的簡(jiǎn)單應(yīng)用程序來觸發(fā)它運(yùn)行。這些可以是簡(jiǎn)單的Web掛鉤或其他基于云的服務(wù)上的事件(例如,寫入OneDrive的文件)。Azure函數(shù)的一個(gè)很好的優(yōu)勢(shì)是,它們可以很容易地綁定到其他供應(yīng)商的服務(wù),比如Twilio或GitHub。
過渡到云服務(wù)的一個(gè)最常見的好處是,他們可以分擔(dān)保護(hù)資產(chǎn)的責(zé)任,但云提供商無法避免安全漏洞,如漏洞或錯(cuò)誤配置。這是Azure Functions的研究人員在過去幾個(gè)月里發(fā)現(xiàn)的第二個(gè)權(quán)限提升(EoP)漏洞。
今年2月,安全公司Intezer的研究人員發(fā)現(xiàn),微軟的無服務(wù)器計(jì)算服務(wù)Azure Functions存在一個(gè)權(quán)限提升漏洞,程序代碼可以從Azure Functions DockerDocker逃逸到Docker host。但微軟認(rèn)為這個(gè)漏洞并不影響用戶安全。
Azure Functions允許用戶簡(jiǎn)單地開始執(zhí)行程序代碼,而無需配置和管理基礎(chǔ)設(shè)施。它可以由HTTP請(qǐng)求觸發(fā),每次只能執(zhí)行幾分鐘來處理這個(gè)事件。用戶的程序代碼會(huì)在Azure托管的Docker中執(zhí)行,逃不出受限環(huán)境。然而,Azure函數(shù)的這個(gè)新漏洞允許程序代碼逃到Docker主機(jī)。
當(dāng)程序代碼逃到Docker時(shí),獲得root權(quán)限就足以摧毀Docker主機(jī),獲得更多控制權(quán)。除了逃離可能被監(jiān)控的Docker,還可以轉(zhuǎn)移到安全性往往被忽略的Docker主機(jī)。
這一次,英特爾研究人員正與微軟安全響應(yīng)中心(MSRC)合作,報(bào)告新發(fā)現(xiàn)的漏洞。他們確信這種行為對(duì)Azure Functions用戶沒有安全影響。因?yàn)楸话l(fā)現(xiàn)的Docker主機(jī)實(shí)際上是一個(gè)HyperV客戶端,而且是由另一個(gè)沙盒層保護(hù)的。
然而,像這樣的情況仍然表明,漏洞有時(shí)是未知的或不受云用戶的控制。推薦一種雙管齊下的云安全方法:做一些基礎(chǔ)的工作,比如修復(fù)已知漏洞和加固系統(tǒng)以降低被攻擊的可能性,以及實(shí)施運(yùn)行時(shí)保護(hù)以在漏洞和其他內(nèi)存攻擊發(fā)生時(shí)檢測(cè)/響應(yīng)它們。
Azure Functions Docker中的漏洞分析
Azure FunctionsDocker使用privileged Docker標(biāo)志運(yùn)行,這使得/dev目錄中的設(shè)備文件在Docker主機(jī)和Docker客戶端之間共享。這是標(biāo)準(zhǔn)的特權(quán)碼頭工人行為。但是,這些設(shè)備文件對(duì)“其他”文件具有“rw”權(quán)限,如下所示。這就是我們提出的漏洞的根本原因。
Azure Functions Docker與低權(quán)限的應(yīng)用程序用戶一起運(yùn)行。Docker的主機(jī)名包含單詞“sandbox”,這意味著將用戶包含在低特權(quán)中是很重要的。使用container – privileged標(biāo)志運(yùn)行,這意味著如果用戶可以升級(jí)到root,他們可以使用各種Docker轉(zhuǎn)義技術(shù)來轉(zhuǎn)義到Docker主機(jī)。
設(shè)備上的松散權(quán)限不是標(biāo)準(zhǔn)行為。從我的本地privilege Docker設(shè)置中可以看到,默認(rèn)情況下/dev中的設(shè)備文件不是很松散:
Azure Functions environment包含52個(gè)帶有ext4文件系統(tǒng)的“pmem”分區(qū)。起初,我們懷疑這些分區(qū)屬于其他Azure Functions客戶端,但進(jìn)一步評(píng)估發(fā)現(xiàn),這些分區(qū)只是同一個(gè)操作系統(tǒng)使用的普通文件系統(tǒng),包括pmem0,這是Docker主機(jī)的文件系統(tǒng)。
使用debugfs讀取Azure FunctionsDocker主機(jī)的磁盤
為了進(jìn)一步研究如何在不潛在影響其他Azure客戶的情況下利用這個(gè)可寫磁盤,研究人員在本地容器中模擬了該漏洞,并與無特權(quán)用戶“bob”建立了一個(gè)本地環(huán)境:
使用設(shè)備文件o+rw
在我們的本地設(shè)置中,/dev/sda5是根文件系統(tǒng),它將成為我們的目標(biāo)文件系統(tǒng)。
使用debugfs實(shí)用程序,攻擊者可以遍歷文件系統(tǒng),正如我們?cè)谏厦娉晒ρ菔镜哪菢?。Debugfs還通過w標(biāo)志支持寫模式,因此我們可以將更改提交到基礎(chǔ)磁盤。重要的是要注意,寫入一個(gè)掛載的磁盤通常不是一個(gè)好主意,因?yàn)樗赡軙?huì)導(dǎo)致磁盤損壞。
通過直接文件系統(tǒng)編輯和利用
為了演示攻擊者如何更改任意文件,我們希望獲得/etc/passwd的控制權(quán)。首先,我們嘗試通過直接編輯文件系統(tǒng)塊的內(nèi)容并使用zapblock命令來編輯文件的內(nèi)容。在內(nèi)部,Linux內(nèi)核處理對(duì)*device file* /dev/sda5的這些更改,它們被寫入并緩存在與*regular file* /etc/passwd不同的位置。因此,有必要刷新對(duì)磁盤的更改,但這種刷新是由debugfs實(shí)用程序處理的。
使用debugfs用(0x41)覆蓋/etc/passwd的內(nèi)容
類似地,Linux內(nèi)核為最近加載到內(nèi)存中的頁面提供一個(gè)讀緩存。
不幸的是,由于我們?cè)趯懢彺嬷薪忉尩耐瑯拥南拗?,?duì)/dev/sda5的更改不會(huì)傳播到/etc/passwd文件的視圖,直到其緩存的頁面被丟棄。這意味著我們只能覆蓋最近沒有從磁盤加載到內(nèi)存的文件,或者等待系統(tǒng)重新啟動(dòng)以應(yīng)用更改。
經(jīng)過進(jìn)一步的研究,研究人員找到了一種方法,可以指示內(nèi)核放棄讀取緩存,以便他們的zapblock更改可以生效。首先,我們通過debugfs創(chuàng)建了一個(gè)到Docker的diff目錄的硬鏈接,這樣更改就可以傳播到Docker:
硬鏈接仍然需要root權(quán)限才能編輯,所以研究人員仍然要使用zapblock來編輯其內(nèi)容。然后,研究人員使用posixfadvise來指示內(nèi)核從讀緩存中丟棄頁面,這是受一個(gè)名為pagecache management的項(xiàng)目的啟發(fā)。這會(huì)導(dǎo)致內(nèi)核加載研究人員的更改,并最終能夠?qū)⑺鼈儌鞑サ紻ocker主機(jī)文件系統(tǒng):
刷新緩存
Docker主機(jī)文件系統(tǒng)中的/etc/passwd。刷新后,我們可以看到“AAA”字符串。
摘要
通過編輯屬于Docker主機(jī)的任何文件,攻擊者可以通過類似地更改/etc/ld.so.preload并通過Docker的diff目錄提供惡意共享對(duì)象來啟動(dòng)預(yù)加載劫持。該文件可以預(yù)加載到Docker主機(jī)系統(tǒng)中的每個(gè)進(jìn)程中(HiddenWasp惡意軟件以前就是使用該技術(shù)記錄的),因此攻擊者將能夠在Docker主機(jī)上執(zhí)行惡意代碼。
漏洞利用的概念驗(yàn)證總結(jié)如下:
微軟目前對(duì)這一發(fā)現(xiàn)的評(píng)估是,這一行為對(duì)Azure Functions用戶沒有安全影響。因?yàn)槲覀兲讲榈腄ocker主機(jī)實(shí)際上是一個(gè)HyperV客戶端,它受到另一個(gè)沙盒層的保護(hù)。
無論您如何努力保護(hù)您的代碼,有時(shí)漏洞是未知的或不可控的。因此,當(dāng)攻擊者在您的運(yùn)行時(shí)環(huán)境中執(zhí)行未經(jīng)授權(quán)的代碼時(shí),您應(yīng)該具有運(yùn)行時(shí)保護(hù)功能來檢測(cè)和終止攻擊。
及參考資料來源:https://www . intezer . com/blog/cloudsecurity/royalflushprivilegeescalationvulnerabilityinazurefunctions/
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部