Luki w jądrze Linux, zdalnie eksploatowane przez Bluetooth

W jądrze Linux wykryto lukę (CVE-2022-42896), która może być potencjalnie wykorzystywana do zdalnego wykonania kodu na poziomie jądra poprzez wysłanie specjalnie sformatowanego pakietu L2CAP przez Bluetooth. Ponadto, wykryto jeszcze jeden podobny problem (CVE-2022-42895) w obsłudze L2CAP, który może prowadzić do wycieku zawartości pamięci jądra w pakietach z informacjami o konfiguracji. Pierwsza luka występuje od sierpnia 2014 roku (jądro 3.16), a druga od października 2011 roku (jądro 3.0). Luki zostały usunięte w wydaniach jądra Linux 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 i 5.15.78. Można śledzić poprawki w dystrybucjach na następujących stronach: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Aby zademonstrować możliwość przeprowadzenia zdalnego ataku, opublikowano prototypy eksploitów działających na Ubuntu 22.04. Aby przeprowadzić atak, atakujący musi znajdować się w zasięgu Bluetooth — wcześniejsze parowanie nie jest konieczne, ale Bluetooth musi być aktywny na komputerze. Do ataku wystarczy znać adres MAC urządzenia ofiary, który można ustalić poprzez sniffing lub w niektórych urządzeniach obliczyć na podstawie adresu MAC Wi-Fi.

Pierwsza luka (CVE-2022-42896) spowodowana jest dostępem do już zwolnionego obszaru pamięci (use-after-free) w implementacji funkcji l2cap_connect i l2cap_le_connect_req — po utworzeniu kanału przez wywołanie zwrotne new_connection, nie ustawiano blokady, ale uruchamiano timer (__set_chan_timer), po upływie czasu wywołujący funkcję l2cap_chan_timeout i oczyszczający kanał bez sprawdzenia zakończenia pracy z kanałem w funkcjach l2cap_le_connect*.

Domyślny czas oczekiwania wynosi 40 sekund i zakładano, że w takiej przerwie stan wyścigu nie może wystąpić, ale okazało się, że z powodu innej błędu w obsłudze SMP można osiągnąć natychmiastowe wywołanie timera i uzyskanie stanu wyścigu. Problem w l2cap_le_connect_req może prowadzić do wycieku pamięci jądra, a w l2cap_connect do nadpisania zawartości pamięci i wykonania swojego kodu. Pierwszy wariant ataku można przeprowadzić przy użyciu Bluetooth LE 4.0 (od 2009 roku), a drugi przy użyciu Bluetooth BR/EDR 5.2 (od 2020 roku).

Druga podatność (CVE-2022-42895) jest spowodowana wyciekiem danych resztkowych z pamięci w funkcji l2cap_parse_conf_req, co może być wykorzystane do zdalnego uzyskania informacji dotyczących wskaźników do struktur jądra poprzez wysyłanie specjalnie przygotowanych żądań konfiguracyjnych. W funkcji l2cap_parse_conf_req używano struktury l2cap_conf_efs, której przydzielona pamięć nie była uprzednio inicjalizowana, a poprzez manipulacje flagą FLAG_EFS_ENABLE można było włączyć w pakiecie stare dane ze stosu. Problem występuje tylko w systemach, w których jądro było kompilowane z opcją CONFIG_BT_HS (domyślnie wyłączoną, ale włączoną w niektórych dystrybucjach, na przykład w Ubuntu). Do udanego ataku wymagane jest również ustawienie parametru HCI_HS_ENABLED na wartość true przez interfejs sterujący (domyślnie nieużywane).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster