Sårbarheter i Linux-kjernen eksternt utnyttet via Bluetooth

En sårbarhet (CVE-2022-42896) er identifisert i Linux-kjernen, som potensielt kan brukes til å organisere ekstern kjøring av kode på kjernenivå ved å sende en spesialdesignet L2CAP-pakke via Bluetooth. I tillegg har et annet lignende problem blitt identifisert (CVE-2022-42895) i L2CAP-behandleren, som kan føre til lekkasje av kjerneminneinnhold i pakker med konfigurasjonsinformasjon. Den første sårbarheten har dukket opp siden august 2014 (kjerne 3.16), og den andre siden oktober 2011 (kjerne 3.0). Sårbarhetene har blitt løst i Linux-kjerneversjoner 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. Du kan spore rettelsene i distribusjoner på følgende sider: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

For å demonstrere muligheten for å utføre et eksternt angrep, er det publisert prototypeutnyttelser som fungerer på Ubuntu 22.04. For å utføre et angrep må angriperen være innenfor Bluetooth-rekkevidde – forhåndsparing er ikke nødvendig, men Bluetooth må være aktiv på datamaskinen. For et angrep er det nok å vite MAC-adressen til offerets enhet, som kan bestemmes ved å snuse eller, på noen enheter, beregnes basert på Wi-Fi MAC-adressen.

Den første sårbarheten (CVE-2022-42896) er forårsaket av tilgang til et allerede frigjort minneområde (use-after-free) i implementeringen av funksjonene l2cap_connect og l2cap_le_connect_req - etter å ha opprettet en kanal gjennom tilbakeringingen new_connection, ble det ikke satt en lås for det, men det ble satt en tidtaker (__set_chan_timer ), ved utløpet av tidsavbruddet, kalt l2cap_chan_timeout-funksjonen og tømmer kanalen uten å sjekke fullføringen av arbeidet med kanalen i l2cap_le_connect*-funksjonene.

Standard timeout er 40 sekunder og det ble antatt at en løpstilstand ikke kunne oppstå med en slik forsinkelse, men det viste seg at på grunn av en annen feil i SMP-behandleren, var det mulig å oppnå et øyeblikkelig anrop til tidtakeren og oppnå en løpstilstand. Et problem i l2cap_le_connect_req kan føre til en kjerneminnelekkasje, og i l2cap_connect kan det føre til at innholdet i minnet overskrives og koden kjøres. Den første typen angrep kan utføres ved hjelp av Bluetooth LE 4.0 (siden 2009), den andre ved bruk av Bluetooth BR/EDR 5.2 (siden 2020).

Den andre sårbarheten (CVE-2022-42895) er forårsaket av en gjenværende minnelekkasje i funksjonen l2cap_parse_conf_req, som kan brukes til å eksternt skaffe informasjon om pekere til kjernestrukturer ved å sende spesiallagde konfigurasjonsforespørsler. Funksjonen l2cap_parse_conf_req brukte strukturen l2cap_conf_efs, som det tildelte minnet ikke var forhåndsinitialisert for, og ved å manipulere flagget FLAG_EFS_ENABLE var det mulig å inkludere gamle data fra stabelen i pakken. Problemet vises bare på systemer der kjernen er bygget med alternativet CONFIG_BT_HS (deaktivert som standard, men aktivert på noen distribusjoner, for eksempel Ubuntu). Et vellykket angrep krever også å sette HCI_HS_ENABLED-parameteren via administrasjonsgrensesnittet til true (brukes ikke som standard).

Kilde: opennet.ru

Legg til en kommentar