cgroups v1 中允許逃離隔離容器的漏洞

內核中 cgroups v1 資源限制機制實作中的一個漏洞(CVE-2022-0492)的詳細資訊已被揭露。 Linux這可以用來逃逸隔離容器。問題始於核心。 Linux 2.6.24 版本已修復,核心版本 5.16.12、5.15.26、5.10.97、5.4.177、4.19.229、4.14.266 和 4.9.301 也已修復。您可以在以下頁面追蹤發行版中的軟體包更新: Debian,SUSE, UbuntuRHEL、Fedora、Gentoo、Arch Linux.

該漏洞是由 release_agent 檔案處理程序中的邏輯錯誤引起的,該錯誤導致以完全權限執行處理程序時無法執行正確的檢查。 release_agent檔案用來定義當cgroup中的行程終止時核心要執行的程式。該程式以 root 權限運行,並具有 root 命名空間中的所有「功能」。假設只有管理員才能存取 release_agent 設定,但實際上檢查僅限於授予 root 使用者存取權限,這並不排除從容器內部或由沒有管理員權限的 root 使用者(CAP_SYS_ADMIN)更改設定。

以前,這樣的功能不會被視為漏洞,但隨著用戶命名空間(user namespace)的出現,情況發生了變化,它允許您在容器中創建單獨的root 用戶,這些用戶與容器的root 用戶不重疊。主要環境。 因此,對於攻擊來說,將release_agent處理程序連接到一個容器中就足夠了,該容器在單獨的用戶ID空間中擁有自己的root用戶,完成該過程後,將以主環境的完全權限執行。

預設情況下,cgroupfs 以唯讀模式安裝在容器中,但如果您具有 CAP_SYS_ADMIN 權限,或使用 unshare 系統呼叫建立具有單獨使用者命名空間的巢狀容器(其中 CAP_SYS_ADMIN 權限可用於所建立的容器),則以寫入模式重新安裝此偽 fs 沒有任何問題。

cgroups v1 中允許逃離隔離容器的漏洞

攻擊可以在隔離容器中以 root 權限執行,也可以在未啟用 `no_new_privs` 標誌(該標誌會阻止授予額外權限)的情況下執行容器時執行。系統必須啟用使用者命名空間(預設已啟用)。 Ubuntu 以及 Fedora,但未激活 Debian 以及 RHEL)和對根 cgroup v1 的存取權限(例如,Docker 在根 RDMA cgroup 中運行容器)。使用 CAP_SYS_ADMIN 權限也可以進行攻擊,在這種情況下,不需要使用者命名空間支援和對根 cgroup v1 層次結構的存取權限。

除了逃離隔離容器之外,漏洞還允許由沒有「能力」的 root 使用者或任何具有 CAP_DAC_OVERRIDE 權限的使用者啟動進程(攻擊需要存取檔案 /sys/fs/cgroup/*/release_agent,該檔案由root 擁有)以獲得對所有系統「功能」的存取權限。

值得注意的是,使用 Seccomp、AppArmor 或 SE 保護機制時,該漏洞無法被利用。Linux 為了進一步隔離容器,因為 Seccomp 會阻塞對 unshare() 系統調用的調用,而 AppArmor 和 SE 則提供了額外的容器隔離方案。Linux 不允許以寫入模式掛載 cgroupfs。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster