臟管道:允許數據被覆蓋的漏洞

最近有消息說 在 Linux 內核中發現了一個漏洞 並且已經在 CVE-2022-0847 下編目,他們將其命名為 《骯髒的管道》.

這個漏洞被稱為“臟管道”允許覆蓋緩存的內容 任何文件的頁面,包括那些設置為只讀、使用 O_RDONLY 標誌打開或位於以只讀方式安裝的文件系統的文件。

在實際方面,漏洞 可用於將代碼注入任意進程 或打開文件中的損壞數據。 例如,您可以更改 sshd 進程的 authorized_keys 文件的內容。

關於臟管

它類似於關鍵漏洞 Dirty COW 在 2016 年發現,並且 Dirty Pipe 被提及在危險方面與 Dirty COW 處於同一水平, 但是這個更容易操作。

在分析檔案定期損壞投訴時發現臟管 在從日誌服務器下載壓縮文件的系統上通過網絡下載(在加載的系統上 37 個月內有 3 次損壞),這些文件是使用 splice() 操作和未命名管道準備的。

脆弱性 自 Linux 內核版本 5.8 以來一直存在,於 2020 年 XNUMX 月發布。

從另一種方式來看,我們可以說它存在於 Debian 11 中,但它不影響 Ubuntu 20.04 LTS 中的基本內核,而對於最初基於舊分支的 RHEL 8.x 和 openSUSE/SUSE 15 內核,但它是可能的導致問題的更改已轉移給他們(尚無確切數據)。

該漏洞是由於在函數 copy_page_to_iter_pipe() 和 push_pipe() 的代碼中缺少值“buf->flags”的初始化,儘管在分配結構時內存沒有被清除,並且對未命名的某些操作進行了某些操作管道,“buf->flags”可能包含來自另一個操作的值。 使用此功能,非特權本地用戶可以實現標誌中 PIPE_BUF_FLAG_CAN_MERGE 值的出現,允許他們通過將新數據寫入專門準備的未命名管道來覆蓋頁面緩存中的數據。

攻擊 可以,你需要一個必須可讀的目標文件 並且由於在寫入管道時不會檢查訪問權限,因此可以在頁面緩存上執行替換,即使對於位於只讀分區上的文件(例如,對於 c CD-ROM 文件)也是如此。

這樣,在替換了頁面緩存中的信息後,進程在從文件中讀取數據時,將不會收到真實數據,而是替換後的數據。

有人提到 Dirty Pipe 操作歸結為創建一個未命名的管道並用任意數據填充它 實現在與之關聯的所有環結構上設置 PIPE_BUF_FLAG_CAN_MERGE 標誌。

然後從管道中讀取數據,但在 pipe_inode_info 環形結構中的 pipe_buffer 結構的所有實例上仍然設置標誌。 然後調用 splice() 將數據從目標文件讀取到未命名的管道中,從所需的偏移量開始。 當向這個未命名的管道寫入數據時,PIPE_BUF_FLAG_CAN_MERGE 標誌將覆蓋頁面緩存中的數據,而不是創建 pipe_buffer 結構的新實例。

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

另外,如果你有興趣 能夠關注或了解更新的發布 主要發行版中的軟件包,您可以從以下頁面進行操作: DebianSUSEUbuntuRHELFedoraGentoo的Arch Linux。

提到建議的漏洞修復程序在 Linux Kernel 版本 5.16.11、5.15.25 和 5.10.102 中可用,並且該修復程序也包含在 Android 平台上使用的內核中。


發表您的評論

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

*

*

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