他們在 firejail 中檢測到允許 root 訪問系統的漏洞

他們最近發布的消息是 發現漏洞 (已在 CVE-2022-31214 下列出) 在 Firejail 應用程序沙盒工具中,詳細說明檢測到的漏洞可能允許本地用戶成為主機系統上的 root。

Firejail 在 Linux 中使用命名空間機制、AppArmor 和系統調用過濾 (seccomp-bpf) 進行隔離,但需要提升權限來配置隔離版本,它通過綁定到 suid 根標誌實用程序或使用 sudo 運行來獲得。

該漏洞是由於“--join=”選項的邏輯錯誤造成的», 旨在連接到已經運行的隔離環境(類似於沙盒環境的登錄命令),環境由其中運行的進程的 ID 定義。 在預啟動階段,firejail 會檢測指定進程的權限並將其應用於使用“--join”選項加入環境的新進程。

連接前, 檢查指定進程是否在 firejail 環境中運行。 此檢查評估 /run/firejail/mnt/join 文件的存在。 要利用該漏洞, 攻擊者可以模擬一個虛構的非隔離火獄環境 使用掛載命名空間,然後使用“--join”選項連接到它。

如果配置沒有開啟禁止在新進程中獲取額外權限的模式(prctl NO_NEW_PRIVS),firejail會將用戶連接到一個虛構的環境,並嘗試應用init進程的用戶標識符(namespace user)的用戶命名空間配置( PID 1)。

join 函數背後的大部分邏輯都在源代碼中 來自 `src/firejail/join.c` 文件。 代碼的關鍵部分執行 提升的特權(有效的 UID 0)。 作為命令傳遞的進程 ID 檢查 line 參數以確定它是否是 r容器並確定它的一些屬性 它也適用於新的進入過程。

決定是否加入目標進程的主要標準 成功是目標的掛載命名空間中存在文件, 在 /run/firejail/mnt/join 中找到的進程。 此驗證是在 f 上完成的`is_ready_for_join()` 函數。 使用 l 打開文件`O_RDONLY|O_CLOEXEC` 標誌和跟踪 `fstat()` 結果應該 滿足以下要求:

– 文件必須是普通文件。
– 該文件必須由用戶 ID 0 擁有(從初始用戶可見
命名空間)。
– 文件大小必須為 1 字節。

結果, 通過“firejail --join”連接的進程將在命名空間中結束 用戶的原始用戶 ID 特權不變, 但在不同的掛載點空間,完全由攻擊者控制。

生成的“加入”外殼現在將存在於初始用戶
命名空間,仍然保留原來的普通用戶權限,但是 掛載命名空間將是由攻擊者控制的命名空間。 作為
沒有應用 nonewprivs 配置,攻擊者現在可以
在這個掛載命名空間中運行 setuid-root 程序

特別是,攻擊者可以在它創建的掛載點的空間中運行 setuid-root 程序,例如,允許它在其文件層次結構中更改 /etc/sudoers 配置或 PAM 參數,並獲得以 root 身份運行命令的能力使用 sudo 或其實用程序。

最後,值得一提的是,已經開發了一個功能性漏洞利用程序,並在安裝了 firejail 實用程序的當前版本的 openSUSE、Debian、Arch、Gentoo 和 Fedora 上進行了測試。

該問題已在 firejail 版本 0.9.70 中得到修復。 作為安全修復,您可以將配置(/etc/firejail/firejail.config)設置為“no join”和“force-nonewprivs yes”。

終於 如果您有興趣了解更多信息,您可以在中查看詳細信息 以下鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。