在 Snap 中發現兩個漏洞並允許以 root 身份運行代碼

Qualys 亮相 我確定的新聞 兩個漏洞 (CVE-2021-44731 和 CVE-2021-44730) 在 snap-confine 實用程序中,與根 SUID 標誌一起發送並由 snapd 進程調用以生成用於在 snap 包中分發的應用程序的可執行環境。

在博客文章中提到 漏洞允許非特權本地用戶以root身份執行代碼 在系統中。

第一個漏洞允許物理鏈接操縱攻擊,但需要禁用系統硬鏈接保護(通過將 sysctl fs.protected_hardlinks 設置為 0)。

問題 這是由於對可執行文件位置的錯誤驗證 snap-update-ns 和 snap-discard-ns 實用程序 以root身份運行。 這些文件的路徑是在 sc_open_snapd_tool() 函數中根據來自 /proc/self/exe 的路徑計算得出的,允許您創建硬鏈接以限制在您的目錄中,並將您的選項設置為 snap-update-ns 和 snap -discard-ns 在這個目錄中。 當從硬鏈接啟動時,以 root 身份啟動的 snap-confine 將從當前目錄執行攻擊者替換的 snap-update-ns 和 snap-discard-ns 文件。

成功利用此漏洞允許任何非特權用戶在易受攻擊的主機上獲得 root 特權。 Qualys 安全研究人員已經能夠獨立驗證漏洞、開發漏洞利用並獲得默認 Ubuntu 安裝的完全 root 權限。

Qualys 研究團隊一確認該漏洞,我們就進行了負責任的漏洞披露,並與供應商和開源發行版協調,宣布了這個新發現的漏洞。

第二個漏洞是由競爭條件引起的 並且可以在默認的 Ubuntu 桌面配置中被利用。 要使漏洞利用在 Ubuntu Server 上成功運行,您必須在安裝期間從“Featured Server Snaps”部分中選擇一個包。

比賽條件 顯示在 setup_private_mount() 函數中 在為即時包準備掛載點命名空間期間調用。 此函數創建一個臨時目錄“/tmp/snap.$SNAP_NAME/tmp”或使用現有目錄將 snap 包的目錄鏈接和掛載到它。

由於臨時目錄的名稱是可預測的,因此攻擊者可以在驗證所有者之後、調用掛載系統之前將其內容更改為符號鏈接。 例如,您可以在 /tmp/snap.lxd 目錄中創建指向任意目錄的符號鏈接“/tmp/snap.lxd/tmp”,並且 mount() 調用將跟隨符號鏈接並將目錄安裝在空間中的名字。

同樣,您可以將其內容安裝在 /var/lib 中,並覆蓋 /var/lib/snapd/mount/snap.snap-store.user-fstab,安排將 /etc 目錄安裝在包命名空間 snap 中以加載您的庫通過替換 /etc/ld.so.preload 從 root 訪問。

據觀察, 創建一個漏洞利用被證明是一項不平凡的任務,因為 snap-confine 實用程序是使用安全編程技術編寫的(snapd 是用 Go 編寫的,但 C 用於 snap-confine),具有基於 AppArmor 配置文件的保護,基於 seccomp 機製過濾系統調用並使用掛載命名空間用於隔離。

然而,研究人員能夠準備一個功能性漏洞利用 獲得系統的root訪問權限。 漏洞利用代碼將在用戶安裝提供的更新幾週後發布。

最後,值得一提的是問題已在 snapd 包更新中修復 適用於 Ubuntu 版本 21.10、20.04 和 18.04。

除了使用 Snap 的其他發行版之外,Snapd 2.54.3 已經發布,除了上述問題之外,它還修復了另一個漏洞 (CVE-2021-4120),它允許在安裝專門設計的插件包時,覆蓋任意 AppArmor 規則並繞過為包設置的訪問限制。

如果你是 有興趣了解更多關於它的信息, 您可以查看詳細信息 在下面的鏈接中。


發表您的評論

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

*

*

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