cryptsetup 中存在一個漏洞,讓您可以停用 LUKS2 分割區中的加密

Cryptsetup 軟體包中已發現一個漏洞 (CVE-2021-4122),該漏洞用於加密 Linux 中的磁碟分割區,該漏洞允許透過修改元資料在 LUKS2(Linux 統一金鑰設定)格式的分割區上停用加密。 要利用此漏洞,攻擊者必須能夠實際存取加密媒體,即此方法主要適用於攻擊加密的外部儲存設備,例如快閃磁碟機,攻擊者可以存取這些設備,但不知道解密資料的密碼。

此攻擊僅適用於 LUKS2 格式,並且與負責啟動「線上重新加密」擴充功能的元資料操作相關,如果需要更改存取金鑰,則該擴充功能允許即時啟動資料重新加密過程無需停止分割區工作。 由於使用新金鑰進行解密和加密的過程需要花費大量時間,因此「線上重新加密」可以不中斷分割區的工作並在背景執行重新加密,逐漸將資料從一個金鑰重新加密到另一個金鑰。 還可以選擇一個空的目標金鑰,它允許您將該部分轉換為解密的形式。

攻擊者可以對 LUKS2 元資料進行更改,模擬由於故障而中止解密操作,並在所有者啟動和使用修改後的磁碟機後實現對部分分割區的解密。 在這種情況下,連接修改後的驅動器並使用正確密碼解鎖的用戶不會收到有關恢復中斷的重新加密操作過程的任何警告,只能使用“luks Dump”了解此操作的進度命令。 攻擊者可以解密的資料量取決於 LUKS2 標頭的大小,但在預設大小 (16 MiB) 下,它可以超過 3 GB。

該問題是由於以下事實引起的:儘管重新加密需要計算和驗證新舊密鑰的雜湊值,但如果新狀態意味著不存在用於加密的明文金鑰,則不需要雜湊值來開始解密。 此外,指定加密演算法的 LUKS2 元資料如果落入攻擊者手中,將無法防止被修改。 為了阻止該漏洞,開發人員為 LUKS2 添加了對元資料的額外保護,現在會檢查一個額外的雜湊值,該值是根據已知金鑰和元資料內容計算的,即攻擊者無法再在不知道解密密碼的情況下秘密更改元資料。

典型的攻擊場景要求攻擊者能夠多次接觸到驅動器。 首先,不知道存取密碼的攻擊者會更改元資料區域,從而在磁碟機下次啟動時觸發部分資料的解密。 然後,驅動器返回原來的位置,攻擊者等待使用者輸入密碼來連接它。 當使用者啟動裝置時,後台重新加密程序就會啟動,在此過程中,部分加密資料將會被解密資料取代。 此外,如果攻擊者設法再次拿到設備,則磁碟機上的一些資料將處於解密形式。

此問題由 cryptsetup 專案維護者發現,並在 cryptsetup 2.4.3 和 2.3.7 更新中修復。 可以在以下頁面上追蹤為解決發行版中的問題而產生的更新的狀態:Debian、RHEL、SUSE、Fedora、Ubuntu、Arch。 該漏洞僅在 cryptsetup 2.2.0 發布後出現,該版本引入了對「線上重新加密」操作的支援。 作為保護的解決方法,可以使用“--disable-luks2-reencryption”選項啟動。

來源: opennet.ru

添加評論