Docker 中的漏洞可讓您逃離容器

在管理隔離 Linux Docker 容器的工具包中 已確定 漏洞(CVE-2018,15664),在某些情況下,如果您能夠在系統上啟動映像或有權存取正在執行的容器,則允許您從容器存取主機環境。 該問題出現在所有版本的 Docker 中並且仍未修復(已提議,但尚未接受, 修補,它實作了容器在與FS執行操作時的暫停)。

此漏洞允許在執行“docker cp”命令時將檔案從容器提取到主機系統檔案系統的任意部分。 文件提取是使用 root 權限執行的,這使得可以讀取或寫入主機環境中的任何文件,這足以獲得對主機系統的控制權(例如,您可以覆蓋 /etc/shadow)。

只有當管理員執行“docker cp”命令將檔案複製到容器或從容器中複製檔案時,才能進行攻擊。 因此,攻擊者需要以某種方式說服 Docker 管理員需要執行此操作並預測複製時使用的路徑。 另一方面,例如,當雲端服務提供將設定檔複製到使用「docker cp」命令建置的容器中的工具時,就可以進行攻擊。

該問題是由於函數應用有缺陷引起的 關注符號連結範圍內,它根據相對路徑計算主檔案系統中的絕對路徑,同時考慮容器的放置位置。 在執行“docker cp”指令時,短期 競爭條件,其中路徑已被驗證,但操作尚未執行。 由於複製是在主機系統主檔案系統的上下文中執行的,因此在指定的時間段內,您可以設法將連結替換為另一個路徑,並啟動將資料複製到主檔案系統中的任意位置之外的位置。容器。

由於競爭條件發生的時間窗口在準備好的情況下是非常有限的 開發原型 從容器執行複製操作時,透過循環替換複製操作中使用的路徑中的符號鏈接,成功攻擊的可能性不到 1%(在大約 10 秒的嘗試後進行成功攻擊)使用“docker cp”命令循環連續複製文件)。

透過對容器執行複製操作,您只需幾次迭代即可在主機系統上實現可重複的檔案覆蓋攻擊。 攻擊的可能性是由於複製到容器時使用了「chrootarchive」概念,根據該概念,archive.go 進程不會將存檔提取到容器根目錄的 chroot 中,而是提取到容器根目錄的 chroot 中。目標路徑的父目錄,由攻擊者控制,並且不會停止容器的執行(chroot用作利用競爭條件的標誌)。

來源: opennet.ru

添加評論