Ranljivosti v jedru Linuxa, izkoriščene na daljavo prek Bluetootha

V jedru Linuxa je bila ugotovljena ranljivost (CVE-2022-42896), ki se potencialno lahko uporabi za organiziranje oddaljenega izvajanja kode na ravni jedra s pošiljanjem posebej zasnovanega paketa L2CAP prek Bluetooth. Poleg tega je bila ugotovljena še ena podobna težava (CVE-2022-42895) v upravljalniku L2CAP, ki lahko povzroči uhajanje vsebine pomnilnika jedra v paketih s konfiguracijskimi informacijami. Prva ranljivost se pojavlja od avgusta 2014 (jedro 3.16), druga pa od oktobra 2011 (jedro 3.0). Ranljivosti so bile odpravljene v izdajah jedra Linuxa 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 in 5.15.78. Popravke v distribucijah lahko spremljate na naslednjih straneh: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Za prikaz možnosti izvajanja oddaljenega napada so bili objavljeni prototipi izkoriščanja, ki delujejo na Ubuntu 22.04. Za izvedbo napada mora biti napadalec v dosegu Bluetooth-predhodna povezava ni potrebna, vendar mora biti Bluetooth v računalniku aktiven. Za napad je dovolj, da poznate MAC naslov žrtvine naprave, ki ga je mogoče določiti z vohanjem ali pri nekaterih napravah izračunati na podlagi Wi-Fi MAC naslova.

Prva ranljivost (CVE-2022-42896) je posledica dostopa do že sproščenega pomnilniškega območja (use-after-free) pri izvedbi funkcij l2cap_connect in l2cap_le_connect_req - po ustvarjanju kanala prek povratnega klica new_connection zaklepanje ni bilo nastavljeno zanj, vendar je bil nastavljen časovnik (__set_chan_timer), po preteku časovne omejitve, klicanje funkcije l2cap_chan_timeout in čiščenje kanala brez preverjanja dokončanja dela s kanalom v funkcijah l2cap_le_connect*.

Privzeta časovna omejitev je 40 sekund in predpostavljeno je bilo, da se stanje tekmovanja ne more pojaviti s tako zamudo, vendar se je izkazalo, da je bilo zaradi druge napake v upravljalniku SMP mogoče doseči takojšen klic časovnika in doseči stanje dirke. Težava v l2cap_le_connect_req lahko povzroči uhajanje pomnilnika jedra, v l2cap_connect pa lahko povzroči prepisovanje vsebine pomnilnika in izvajanje njegove kode. Prvo vrsto napada lahko izvedemo s pomočjo Bluetooth LE 4.0 (od leta 2009), drugo z uporabo Bluetooth BR/EDR 5.2 (od leta 2020).

Druga ranljivost (CVE-2022-42895) je posledica uhajanja preostalega pomnilnika v funkciji l2cap_parse_conf_req, ki se lahko uporablja za oddaljeno pridobivanje informacij o kazalcih na strukture jedra s pošiljanjem posebej oblikovanih konfiguracijskih zahtev. Funkcija l2cap_parse_conf_req je uporabila strukturo l2cap_conf_efs, za katero dodeljeni pomnilnik ni bil vnaprej inicializiran in z manipulacijo zastavice FLAG_EFS_ENABLE je bilo mogoče vključiti stare podatke iz sklada v paket. Težava se pojavi samo v sistemih, kjer je jedro zgrajeno z možnostjo CONFIG_BT_HS (privzeto onemogočeno, vendar omogočeno v nekaterih distribucijah, kot je Ubuntu). Uspešen napad zahteva tudi nastavitev parametra HCI_HS_ENABLED prek upravljalnega vmesnika na true (se ne uporablja privzeto).

Vir: opennet.ru

Dodaj komentar