通過藍牙遠程利用 Linux 內核中的漏洞

Linux 核心中已發現一個漏洞 (CVE-2022-42896),該漏洞可透過藍牙傳送專門設計的 L2CAP 封包來組織核心層級的遠端程式碼執行。 此外,L2022CAP 處理程序中還發現了另一個類似問題 (CVE-42895-2),該問題可能導致包含配置資訊的資料包中的內核記憶體內容洩漏。 第一個漏洞自 2014 年 3.16 月(核心 2011)以來出現,第二個漏洞自 3.0 年 6.1.0 月(核心 6.0.8)以來出現。 這些漏洞已在 Linux 核心版本 4.9.333、4.14.299、4.19.265、5.4.224、5.10.154、5.15.78、XNUMX 和 XNUMX 中解決。 您可以在以下頁面上追蹤發行版中的修復:Debian、Ubuntu、Gentoo、RHEL、SUSE、Fedora、Arch。

為了演示進行遠端攻擊的可能性,已經發布了可在 Ubuntu 22.04 上運行的原型漏洞利用程式。 要實施攻擊,攻擊者必須處於藍牙範圍內—不需要預先配對,但電腦上的藍牙必須處於活動狀態。 對於攻擊來說,知道受害者設備的 MAC 位址就足夠了,可以透過嗅探來確定該位址,或在某些裝置上根據 Wi-Fi MAC 位址進行計算。

第一個漏洞(CVE-2022-42896)是由於在 l2cap_connect 和 l2cap_le_connect_req 函數的實作中存取已釋放的記憶體區域(use-after-free)引起的 - 透過 new_connection 回呼建立通道後,未設定鎖定為此,但設定了計時器(__set_chan_timer ),在逾時到期時,呼叫l2cap_chan_timeout 函數並清除通道,而不檢查l2cap_le_connect* 函數中通道工作的完成情況。

預設逾時為 40 秒,假設這樣的延遲不會發生競爭條件,但事實證明,由於 SMP 處理程序中的另一個錯誤,可以實現對計時器的即時呼叫並實現競賽條件。 l2cap_le_connect_req 中的問題可能導致核心記憶體洩漏,而 l2cap_connect 中的問題可能導致覆蓋記憶體內容並執行其程式碼。 第一種類型的攻擊可以使用藍牙 LE 4.0(自 2009 年起)進行,第二種類型的攻擊可以使用藍牙 BR/EDR 5.2(自 2020 年起)進行。

第二個漏洞(CVE-2022-42895)是由 l2cap_parse_conf_req 函數中的殘餘記憶體洩漏引起的,該函數可用於透過發送特製的配置請求來遠端取得有關核心結構指標的資訊。 l2cap_parse_conf_req 函數使用 l2cap_conf_efs 結構,分配的記憶體未預先初始化,並且透過操作 FLAG_EFS_ENABLE 標誌,可以將堆疊中的舊資料包含在資料包中。 該問題僅出現在使用 CONFIG_BT_HS 選項建立核心的系統上(預設為停用,但在某些發行版上啟用,例如 Ubuntu)。 成功的攻擊還需要透過管理介面將 HCI_HS_ENABLED 參數設為 true(預設不使用)。

來源: opennet.ru

添加評論