云安全提醒:Docker for windows 版本出現(xiàn)遠(yuǎn)程控制漏洞
Docker已修復(fù)了一個漏洞,該漏洞可使攻擊者使用其服務(wù)獲得對Windows系統(tǒng)的控制。安全咨詢公司Pen Test Partners的研究員Ceri Coburn發(fā)現(xiàn)了這個漏洞,這使Docker for Windows暴露在特權(quán)提升的環(huán)境中。
Docker是一個容器系統(tǒng),管理員可以在自己的環(huán)境中運行應(yīng)用程序。容器有點像虛擬機,但它們不是在軟件中重新創(chuàng)建整個操作系統(tǒng),而是共享主機操作系統(tǒng)的許多底層資源。這使得它們比虛擬機(vm)更小、更靈活。
Windows下運行的兩個Docker組件對此漏洞很重要:Docker Desktop 服務(wù)(DDS)和Docker Desktop for Windows(DDW)。DDS在后臺運行,而DDW是允許管理員管理其容器的控制面板。
當(dāng)DDW打開時,它會在Windows中生成許多支持容器管理的子進(jìn)程。DDS使用稱為管道的Windows機制連接到這些子進(jìn)程,該機制允許不同進(jìn)程相互通信。
DDS在Windows中的系統(tǒng)帳戶下運行,該帳戶是一個非常高的權(quán)限帳戶。攻擊者獲得系統(tǒng)帳戶的訪問權(quán)限,即可獲取重要的密鑰。
Pen Test Partners發(fā)現(xiàn)的漏洞使用名為模擬的Windows功能。它允許進(jìn)程的服務(wù)器端模擬客戶端。這是因為客戶端進(jìn)程通常需要服務(wù)器進(jìn)程以它們的名義執(zhí)行系統(tǒng)任務(wù)。
并非所有帳戶都具有此模擬權(quán)限。根據(jù)Coburn的說法,在Windows服務(wù)帳戶下啟動的任何東西都可以。
這意味著可以使系統(tǒng)在服務(wù)帳戶下啟動進(jìn)程的攻擊者可以利用其系統(tǒng)帳戶權(quán)限操縱DDS。如果進(jìn)程使用了DDS通常會連接到的名稱,那么在建立連接之后,它可以刪除自己的憑據(jù),而使用DDS憑據(jù)。科伯恩解釋道:
連接docker后,我們模擬連接客戶端(即系統(tǒng)),并使用CreateProcessWithTokenW API啟動一個新進(jìn)程。CreateProcessWithTokenW是一個Win32 API,允許您創(chuàng)建新進(jìn)程。
Coburn指出,要創(chuàng)建這樣的帳戶,您需要一個已經(jīng)破壞了的系統(tǒng),但他解釋說,用戶可以通過在IIS(微軟的web服務(wù)器)中操作易受攻擊的web應(yīng)用程序來進(jìn)入,IIS很可能運行在同一臺計算機上。這將使此漏洞成為一個潛在的有用漏洞,作為鏈接攻擊的一部分,該攻擊將多個漏洞串在一起,首先獲得立足點,然后提升權(quán)限。
根據(jù)科伯恩的說法,Docker一開始并沒有多大幫助,他說:
最初披露時,Docker甚至否認(rèn)該漏洞存在。他們的立場是模仿是Windows的一項功能,我們應(yīng)該和微軟談?wù)劇?/p>
不過,他堅持認(rèn)為,如果開發(fā)人員正在開發(fā)與命名管道作為客戶端進(jìn)行交互的系統(tǒng)服務(wù),則應(yīng)關(guān)閉模擬功能。Docker拒絕了兩次,然后試圖在沒有模擬權(quán)限的帳戶下運行概念驗證代碼,因此Coburn發(fā)送了有關(guān)如何復(fù)制問題的說明。當(dāng)時,該公司確認(rèn)了這個bug,并于5月11日在2.3.0.2版中發(fā)布了補丁。
這個bug有CVE 2020-11492,在編寫本文時被列為“reserved”。