2021-03-12 08:26:02你的爸爸亂七八糟

Android 藍牙子系統 "BlueFrag" 漏洞

2020 年 2 月,Android 安全公告中披露並修復了一個嚴重漏洞,漏洞編號為 CVE-2020-0022,又稱 BlueFrag,可影響 Android 藍牙子系統。 該漏洞是一個遠端代碼執行漏洞,出現在 Bluedroid 藍牙協定棧的 HCI 層,當無線模組處於活動狀態時,攻擊者可以利用藍牙守護程式提升許可權進而在設備上執行代碼。 該漏洞影響 Android Oreo(8.0 和 8.1)、Pie(9),但無法在 Android 10 上進行利用,僅能觸發 DoS 攻擊.

該漏洞編號為CVE-2020-0022,現已從 2020 年 2 月 開始在最新的安全補丁中進行了修補。 安全影響如下:

  • 在 Android 8.0 到 9.0 上,只要啟用了藍牙,附近的遠端攻擊者就可以使用藍牙守護程式的特權以靜默方式執行任意代碼。 無需使用者交互,僅需知道目標設備的藍牙 MAC 位址即可。 對於某些設備,可以從WiFi MAC位址推斷出藍牙MAC位址。 此漏洞可能導致個人數據被盜,並且有可能被用來傳播惡意軟體(短距離蠕蟲)。

  • 在 Android 10 上,由於技術原因無法利用此漏洞,只會導致 Bluetooth 守護程序崩潰。

  • 早於 8.0 的 Android 版本也可能會受到影響

安全性更新代碼參考:

GAP: Correct the continuous pkt length in l2cap

L2cap continuous pkt length wrongly calculated in
reassembly logic when remote sends more data
than expected.

Wrong pkt length leading to memory corruption

Hence the Correct the continuous pkt length in
l2cap reassembly logic.

Bug: 135239489
Bug: 143894715
CRs-Fixed: 2434229
Test: make and internal testing
Change-Id: I758d9e31465b99e436b9b1841320000f08186c97
Merged-In: I758d9e31465b99e436b9b1841320000f08186c97
(cherry picked from commit 337bd4579453bd6bf98ff519de3ac1019cd30d28)
(cherry picked from commit 602f4b44fe30ec8b225e1cee5f96817607d93e5a)
diff --git a/hci/src/packet_fragmenter.cc b/hci/src/packet_fragmenter.cc
index 5036ed5..143fc23 100644
--- a/hci/src/packet_fragmenter.cc
+++ b/hci/src/packet_fragmenter.cc
@@ -221,7 +221,8 @@
                  "%s got packet which would exceed expected length of %d. "
                  "Truncating.",
                  __func__, partial_packet->len);
-        packet->len = partial_packet->len - partial_packet->offset;
+        packet->len =
+            (partial_packet->len - partial_packet->offset) + packet->offset;
         projected_offset = partial_packet->len;
       }

也就是說

在 Android 8.0 到 9.0 上,只要啟用了藍牙,附近的遠端攻擊者就可以使用藍牙守護程式的特權以靜默方式執行任意代碼。 無需使用者交互,僅需知道目標設備的藍牙 MAC 位址即可。 對於某些設備,可以從WiFi MAC位址推斷出藍牙MAC位址。 此漏洞可能導致個人數據被盜,並且有可能被用來傳播惡意軟體。

報告中主要針對較新版本 Android 而研究,並確認了 Android 10 不受影響。 該漏洞會在 2020 年二月的安全性更新中修復,但其他較舊和已經失去兩年升級承諾期的手機就沒有辦法了。

建議

強烈建議使用者從 2020 年 2 月開始安裝最新的安全補丁。 如果您還沒有可用的補丁或設備不再受支援,則可以嘗試通過一些以下的方式來減輕影響:

  • 僅在必要時啟用藍牙。 大多數藍牙耳機也支援有線,建議使用有線連接。

  • 保持設備不可見。 但是,某些較舊的手機可能會永久被發現。

  • 最好還是儘快更新到 Android 10