當前位置:
首頁 > 科技 > 一個未打補丁的漏洞影響所有版本的 Docker!

一個未打補丁的漏洞影響所有版本的 Docker!

所有版本的Docker目前都容易受到一種競態條件(race condition)的攻擊,這種競態條件可能使攻擊者對主機系統上的任何文件擁有讀取許可權和寫入許可權。概念驗證代碼已發布。

該漏洞類似CVE-2018-15664,它為黑客修改資源路徑提供了一個機會窗口,這個機會窗口出現在路徑被解析之後,但被分配的程序開始對資源進行操作之前的時間點。這被稱為檢查時間/使用時間(TOCTOU)類型的漏洞。

訪問主機上的文件

究其核心,該漏洞源於FollowSymlinkInScope函數,該函數容易受到基本的TOCTOU攻擊的影響。這個函數的目的是如同進程在Docker容器的內部那樣對待進程,以一種安全的方式來解析指定的路徑。

並不立即針對解析的路徑進行操作,而是「稍微過一段時間進行操作」。攻擊者可以推測這個時間差,添加一條符號鏈接(symlink)路徑,該路徑可能最終解析擁有root許可權的主機。

這可以通過「docker cp」實用程序來實現,該實用程序允許在容器和本地文件系統之間複製內容。早在2014年就出現過類似的漏洞。

Suse的高級軟體工程師Aleksa Sarai在安全公告中寫道:「據我所知,對這種攻擊沒有任何有意義的防護(除了不允許對運行中的容器執行docker cp,但這隻有助於應對通過FollowSymlinkInScope實現的特定攻擊。)除非你通過AppArmor限制了Docker守護進程,否則它會影響主機文件系統。」

應對方法和漏洞腳本

在Hacker News網站上,一則討論帖子提供了潛在的應對方法,不過它們有賴於實際環境的背景和目的。

Sarai提議的一種應對辦法是修改「chrootarchive」,以便歸檔操作在安全的環境中運行,其中root是容器「rootfs」。這需要更改Docker的核心部分,因此這不可行。

其次的辦法是在使用文件系統時暫停容器。這無法阻止所有攻擊,但可以防禦較基本的攻擊。補丁已向上游提交,目前仍在審核中。

這位工程師還編寫了兩個漏洞腳本:一個腳本用於讀取訪問,另一個用於寫入訪問,其中二進位代碼通過運行「a RENAME_EXCHANGE of a symlink to "/" and an empty directory in a loop」,試圖達到競態條件。Sarai稱,這兩個腳本的目的是將文件複製到含有修改後的符號鏈接的路徑,或從該路徑複製文件。

從處於競態條件下的主機系統讀取任意內容的攻擊代碼其成功率不到1%。這個成功率可能看起來很低,但實際上相當於等待10秒鐘攻擊就能得逞。

有了將資源寫入到主機上的腳本,就有可能「僅用極少的迭代就可以覆蓋主機文件系統」。

在公開宣布這個漏洞之前,Sarai與Docker安全團隊討論了這個問題,最後得出了披露是合理的這一結論。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

不和用戶競爭,UCloud 進軍產業互聯網的新標籤
聯想裁員500人影響數據中心業務集團及其他部門

TAG:雲頭條 |