Der er fundet en sårbarhed i Linux-kernen (CVE-2022-42896), som potentielt kan udnyttes til at udføre vilkårlig kode på kerne-niveau ved at sende et specielt formateret L2CAP-pakke via Bluetooth. Derudover er der opdaget et lignende problem (CVE-2022-42895) i L2CAP-håndtereren, som kan føre til, at kernens hukommelsesindhold lækker ud i pakker med konfigurationsoplysninger. Den første sårbarhed har eksisteret siden august 2014 (kerne 3.16), mens den anden har været til stede siden oktober 2011 (kerne 3.0). Sårbarhederne er blevet løst i versionerne af Linux-kernen 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 og 5.15.78. Opdateringerne kan findes i distributionerne på følgende sider: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
For at demonstrere muligheden for at udføre en fjernangreb er der offentliggjort prototype-exploits, der fungerer i Ubuntu 22.04. For at udføre angrebet skal angriberen være inden for Bluetooth-rækkevidde — der kræves ikke tidligere parring, men Bluetooth skal være aktivt på computeren. Angrebet kræver blot kendskab til MAC-adressen på offerets enhed, som kan bestemmes ved sniffling eller beregnes på nogle enheder baseret på MAC-adressen for Wi-Fi.
Den første sårbarhed (CVE-2022-42896) skyldes adgang til et allerede frigivet hukommelsesområde (use-after-free) i implementeringen af funktionerne l2cap_connect og l2cap_le_connect_req — efter oprettelsen af kanalen via callback-opkaldet new_connection blev der ikke anvendt en lås, men en timer blev indstillet (__set_chan_timer), som ved timeout kalder funktionen l2cap_chan_timeout og rydder kanalen uden at kontrollere afslutningen af arbejdet med kanalen i funktionerne l2cap_le_connect*.
Som standard er timeout 40 sekunder, og det blev antaget, at der ikke kunne opstå race conditions med sådan en forsinkelse, men det viste sig, at på grund af en anden fejl i SMP-håndtereren kan timeren kaldes straks og føre til en race condition. Problemet i l2cap_le_connect_req kan føre til lækage af kernehukommelse, mens l2cap_connect kan resultere i overskrivning af hukommelsesindholdet og udførelse af ondsindet kode. Den første angrebsmetode kan gennemføres ved brug af Bluetooth LE 4.0 (siden 2009), mens den anden kræver Bluetooth BR/EDR 5.2 (siden 2020).
Den anden sårbarhed (CVE-2022-42895) skyldes en lækage af resterende data fra hukommelsen i funktionen l2cap_parse_conf_req, som kan bruges til at opnå oplysninger om pegefelt til kernelstrukturer fjernt ved at sende specielt udformede konfigurationsanmodninger. I funktionen l2cap_parse_conf_req blev strukturen l2cap_conf_efs anvendt, uden at den tildelte hukommelse blev initialiseret forud, og gennem manipulation med flaget FLAG_EFS_ENABLE kunne gamle data fra stakken inkluderes i pakken. Problemet opstår kun i systemer, hvor kernen er bygget med indstillingen CONFIG_BT_HS (standard er deaktiveret, men aktiveret i nogle distributioner, for eksempel i Ubuntu). For at en angreb kan lykkes, kræver det også, at parameteren HCI_HS_ENABLED sættes til true via kontrolgrænsefladen (som standard ikke anvendt).
Kilde: opennet.ru
