firejail 中的漏洞允許 root 訪問系統

Firejail 中發現了一個漏洞 (CVE-2022-31214),Firejail 是一個用於隔離應用程式執行的實用程序,允許本機使用者獲得主機系統的 root 權限。 公共領域有一個有效的漏洞程序,已在安裝了 firejail 實用程式的 openSUSE、Debian、Arch、Gentoo 和 Fedora 的當前版本中進行了測試。 該問題已在 firejail 0.9.70 版本中修復。 作為保護的解決方法,您可以在設定 (/etc/firejail/firejail.config) 中設定「join no」和「force-nonewprivs yes」參數。

Firejail 在 Linux 中使用命名空間、AppArmor 和系統呼叫過濾 (seccomp-bpf) 進行隔離,但需要提升權限來設定隔離執行,這是透過綁定到實用程式標誌 suid root 或使用 sudo 運行來獲得的。 該漏洞是由“--join=”選項邏輯錯誤引起的。 ”,用於連接到已運行的隔離環境(類似於沙箱環境的登入命令),並透過其中運行的進程標識符來定義環境。 在預權限重置階段,firejail 決定指定進程的權限,並將其套用到使用「-join」選項連接到環境的新進程。

在連線之前,它會檢查指定的進程是否正在 firejail 環境中執行。 此檢查評估檔案 /run/firejail/mnt/join 是否存在。 為了利用該漏洞,攻擊者可以使用 mount 命名空間模擬一個虛構的、非隔離的 firejail 環境,然後使用「--join」選項連接到它。 如果設定沒有啟用禁止在新進程中取得額外權限的模式(prctl NO_NEW_PRIVS),firejail 會將使用者連接到虛擬環境並嘗試套用 init 進程(PID 1)的使用者命名空間設定。

結果,透過「firejail -join」連接的程序最終將位於使用者的原始使用者 ID 命名空間中,權限不變,但位於不同的掛載點空間中,完全由攻擊者控制。 攻擊者還可以在他創建的掛載點空間中執行 setuid-root 程序,例如,這允許更改其檔案層次結構中的 /etc/sudoers 設定或 PAM 參數,並能夠使用 sudo 或 root 權限執行命令蘇實用程式.

來源: opennet.ru

添加評論