最近有消息爆出e 在 Linux 內核中發現了兩個漏洞 (已在 CVE-2022-42896 下編目),這可能 可用於編排遠程代碼執行 在內核級別通過藍牙發送特製的 L2CAP 數據包。
有人提到 第一個漏洞 (CVE-2022-42896) 在訪問已釋放的內存區域時發生 (釋放後使用)在 l2cap_connect 和 l2cap_le_connect_req 函數的實現中。
失敗 創建通道後利用 通過回調 呼叫 新連接,它不會阻止它的設置,但會設置一個計時器(__set_chan_timer), 超時後,調用函數 l2cap_chan_超時 並在不檢查功能中通道工作完成的情況下清理通道 l2cap_le_connect*。
默認超時為 40 秒,並且假定競爭條件不會在如此長的延遲內發生,但事實證明,由於 SMP 驅動程序中的另一個錯誤,可以立即調用計時器並達到競爭條件。
l2cap_le_connect_req 中的問題可能導致內核內存洩漏,在 l2cap_connect 中您可以覆蓋內存內容並運行您的代碼。 攻擊的第一個變體可以使用藍牙 LE 4.0(自 2009 年起)執行,第二個變體使用藍牙 BR/EDR 5.2(自 2020 年起)。
Linux 內核函數 l2cap_connect 和 l2cap_le_connect_req net/bluetooth/l2cap_core.c 中存在發布後漏洞,可能允許通過藍牙遠程(分別)執行代碼和內核內存洩漏。 如果遠程攻擊者離受害者很近,則可以通過藍牙執行洩漏內核內存的代碼。 我們建議更新過去的提交 https://www.google.com/url https://github.com/torvalds/linux/commit/711f8c3fb3db61897080468586b970c87c61d9e4
第二個漏洞 檢測到的(已在 CVE-2022-42895 下編目)是 由 l2cap_parse_conf_req 函數中的殘餘內存洩漏引起, 它可用於通過發送特製的配置請求來遠程獲取有關內核結構指針的信息。
關於這個漏洞,提到 在 l2cap_parse_conf_req 函數中,使用了 l2cap_conf_efs 結構, 之前未為其分配的內存初始化, 並通過操作 使用 FLAG_EFS_ENABLE 標誌, 有可能實現舊數據的包含 包裝中的電池。
FLAG_EFS_ENABLE 通道標誌而不是 remote_efs 變量 決定是否應該使用 l2cap_conf_efs efs 結構和 可以在不實際發送 EFS 配置數據的情況下設置 FLAG_EFS_ENABLE 標誌 並且,在這種情況下,未初始化的 l2cap_conf_efs efs 結構 將被發送回遠程客戶端,從而洩露有關 內核內存的內容,包括內核指針。
該問題僅發生在內核所在的系統上 它是使用 CONFIG_BT_HS 選項構建的(默認情況下禁用,但在某些發行版上啟用,如 Ubuntu)。 成功的攻擊還需要通過管理界面將 HCI_HS_ENABLED 參數設置為 true(默認情況下不使用)。
針對這兩個發現的漏洞,已經發布了運行在Ubuntu 22.04上的利用原型,演示了遠程攻擊的可能性。
要進行攻擊,攻擊者必須在藍牙範圍內; 無需事先配對,但計算機上的藍牙必須處於活動狀態。 對於攻擊,知道受害者設備的 MAC 地址就足夠了,這可以通過嗅探確定,或者在某些設備上,根據 Wi-Fi MAC 地址計算得出。
最後值得一提的是 發現了另一個類似的問題 (CVE-2022-42895) 在 L2CAP 控制器中 它可以在配置信息包中洩漏內核內存內容。 第一個漏洞出現於 2014 年 3.16 月(內核 2011),第二個漏洞出現於 3.0 年 XNUMX 月(內核 XNUMX)。
對於那些有興趣跟踪分佈修正的人,他們可以在以下頁面上進行: Debian, Ubuntu, Gentoo的, RHEL, SUSE, Fedora y 拱 .