XFS 中允許讀取原始區塊設備資料的漏洞

XFS 檔案系統程式碼中發現了一個漏洞 (CVE-2021-4155),該漏洞允許本機非特權用戶直接從區塊裝置讀取未使用的區塊資料。 所有早於 5.16 且包含 XFS 驅動程式的 Linux 核心主要版本均受此問題影響。 此修復包含在版本 5.16 以及核心更新 5.15.14、5.10.91、5.4.171、4.19.225 等。 可以在以下頁面上追蹤為解決發行版中的問題而產生的更新的狀態:Debian、RHEL、SUSE、Fedora、Ubuntu、Arch。

這個漏洞是由兩個特定於 XFS 的 ioctl(XFS_IOC_ALLOCSP) 和 ioctl(XFS_IOC_FREESP) 的不正確行為引起的,這兩個 ioctl(XFS_IOC_FREESP) 是內核範圍 Fallocate() 系統呼叫的功能類似物。 當增加非區塊對齊的檔案大小時,ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP 不會將尾部位元組重設為零,直到下一個區塊邊界。 因此,在標準區塊大小為 4096 位元組的 XFS 上,攻擊者可以從每個區塊中讀取最多 4095 位元組的先前寫入資料。 這些區域可能包含來自已刪除檔案、碎片整理檔案和具有重複資料刪除區塊的檔案的資料。

您可以使用簡單的漏洞原型來測試您的系統是否有該問題。 如果在執行建議的命令序列後,可以閱讀莎士比亞的文本,則 FS 驅動程式容易受到攻擊。 最初安裝 XFS 分割區進行示範需要 root 權限。

由於 ioctl(XFS_IOC_ALLOCSP) 和 ioctl(XFS_IOC_FREESP) 的功能實際上與標準 fallocate() 相同,並且它們唯一的區別是資料外洩,因此它們的存在類似於後門。 儘管一般政策是不改變內核中現有的接口,但在 Linus 的建議下,決定在下一個版本中完全刪除這些 ioctl。

來源: opennet.ru

添加評論