I kärnan 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.
Den första sårbarheten (CVE-2022-42896) orsakas av tillgång till ett redan frigjort minnesområde (use-after-free) i implementeringen av funktionerna l2cap_connect och l2cap_le_connect_req - efter att ha skapat en kanal genom new_connection-återuppringningen, sattes inget lås in för det, men en timer ställdes in (__set_chan_timer ), när timeouten löpte ut, anropade l2cap_chan_timeout-funktionen och rensade kanalen utan att kontrollera slutförandet av arbetet med kanalen i l2cap_le_connect*-funktionerna.
Standard timeout är 40 sekunder och det antogs att ett tävlingstillstånd inte kunde inträffa med en sådan fördröjning, men det visade sig att på grund av ett annat fel i SMP-hanteraren var det möjligt att få ett omedelbart anrop till timern och uppnå en loppets skick. Ett problem i l2cap_le_connect_req kan leda till en kärnminnesläcka, och i l2cap_connect kan det leda till att innehållet i minnet skrivs över och dess kod exekveras. Den första typen av attack kan utföras med Bluetooth LE 4.0 (sedan 2009), den andra med Bluetooth BR/EDR 5.2 (sedan 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 (по умолчанию не используется).
Källa: opennet.ru
