Уязвимости Π² ядрС Linux, ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ эксплуатируСмыС Ρ‡Π΅Ρ€Π΅Π· Bluetooth

Π’ ядрС Linux выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2022-42896), которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠ΄Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ L2CAP-ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· Bluetooth. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, выявлСна Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° похоТая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (CVE-2022-42895) Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ L2CAP, которая ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ содСрТимого памяти ядра Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… со свСдСниями ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π²Π°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся с августа 2014 Π³ΠΎΠ΄Π° (ядро 3.16), Π° вторая с октября 2011 Π³ΠΎΠ΄Π° (ядро 3.0). Уязвимости устранСны Π² выпусках ядра Linux 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 ΠΈ 5.15.78. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° исправлСниСм Π² дистрибутивах ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Для дСмонстрации возмоТности ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ эксплоитов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² Ubuntu 22.04. Для провСдСния Π°Ρ‚Π°ΠΊΠΈ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ находится Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… досягаСмости Bluetooth — ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сопряТСния Π½Π΅ трСбуСтся, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Bluetooth. Для Π°Ρ‚Π°ΠΊΠΈ достаточно Π·Π½Π°Ρ‚ΡŒ MAC-адрСс устройства ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΏΡƒΡ‚Ρ‘ΠΌ снифинга ΠΈΠ»ΠΈ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… устройствах вычислСн Π½Π° основС MAC-адрСса Wi-Fi.

ΠŸΠ΅Ρ€Π²Π°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2022-42896) Π²Ρ‹Π·Π²Π°Π½Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡƒΠΆΠ΅ освобоТдённой области памяти (use-after-free) Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ l2cap_connect ΠΈ l2cap_le_connect_req — послС создания ΠΊΠ°Π½Π°Π»Π° Ρ‡Π΅Ρ€Π΅Π· callback-Π²Ρ‹Π·ΠΎΠ² new_connection, для Π½Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΠ»Π°ΡΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π½ΠΎ настраивался Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (__set_chan_timer), ΠΏΠΎ ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ l2cap_chan_timeout ΠΈ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠ°Π½Π°Π» Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Π½Π°Π»ΠΎΠΌ Π² функциях l2cap_le_connect*.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ составляСт 40 сСкунд ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ состояниС Π³ΠΎΠ½ΠΊΠΈ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, Π½ΠΎ оказалось, Ρ‡Ρ‚ΠΎ ΠΈΠ·-Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ошибки Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ SMP ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈ достиТСния состояния Π³ΠΎΠ½ΠΊΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² l2cap_le_connect_req ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ памяти ядра, Π° Π² l2cap_connect ΠΊ пСрСзаписи содСрТимого памяти ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ своСго ΠΊΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Ρ‚Π°ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΡ‘Π½ ΠΏΡ€ΠΈ использовании Bluetooth LE 4.0 (с 2009 Π³ΠΎΠ΄Π°), Π² Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈ использовании Bluetooth 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