Ranjivosti u Linux kernelu daljinski iskorištene putem Bluetootha

U jezgri Linuxa identificirana je ranjivost (CVE-2022-42896) koja se potencijalno može koristiti za organiziranje daljinskog izvršavanja koda na razini jezgre slanjem posebno dizajniranog L2CAP paketa putem Bluetootha. Osim toga, identificiran je još jedan sličan problem (CVE-2022-42895) u rukovatelju L2CAP, koji može dovesti do curenja sadržaja memorije kernela u paketima s informacijama o konfiguraciji. Prva se ranjivost pojavljuje od kolovoza 2014. (kernel 3.16), a druga od listopada 2011. (kernel 3.0). Ranjivosti su riješene u izdanjima Linux kernela 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. Popravke možete pratiti u distribucijama na sljedećim stranicama: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Kako bi se demonstrirala mogućnost izvođenja daljinskog napada, objavljeni su prototipovi eksploatacija koji rade na Ubuntu 22.04. Da bi izveo napad, napadač mora biti u dometu Bluetootha—nije potrebno prethodno uparivanje, ali Bluetooth mora biti aktivan na računalu. Za napad je dovoljno znati MAC adresu žrtvinog uređaja, koja se može odrediti njuškanjem ili, na nekim uređajima, izračunati na temelju Wi-Fi MAC adrese.

Prva ranjivost (CVE-2022-42896) uzrokovana je pristupom već oslobođenom području memorije (use-after-free) u implementaciji funkcija l2cap_connect i l2cap_le_connect_req - nakon stvaranja kanala putem new_connection povratnog poziva, zaključavanje nije postavljeno za njega, ali je postavljen timer (__set_chan_timer), po isteku timeouta, pozivanje funkcije l2cap_chan_timeout i brisanje kanala bez provjere završetka rada s kanalom u funkcijama l2cap_le_connect*.

Zadano vrijeme čekanja je 40 sekundi i pretpostavilo se da se stanje utrke ne može dogoditi s takvim kašnjenjem, ali pokazalo se da je zbog druge pogreške u SMP rukovatelju bilo moguće postići trenutni poziv mjeraču vremena i postići stanje utrke. Problem u l2cap_le_connect_req može dovesti do curenja memorije kernela, a u l2cap_connect može dovesti do prepisivanja sadržaja memorije i izvršavanja njezinog koda. Prvi tip napada može se izvesti pomoću Bluetooth LE 4.0 (od 2009.), drugi pomoću Bluetooth BR/EDR 5.2 (od 2020.).

Druga ranjivost (CVE-2022-42895) uzrokovana je curenjem preostale memorije u funkciji l2cap_parse_conf_req, koja se može koristiti za daljinsko dobivanje informacija o pokazivačima na strukture kernela slanjem posebno izrađenih konfiguracijskih zahtjeva. Funkcija l2cap_parse_conf_req koristila je strukturu l2cap_conf_efs, za koju dodijeljena memorija nije bila unaprijed inicijalizirana i manipuliranjem zastavice FLAG_EFS_ENABLE bilo je moguće uključiti stare podatke sa steka u paket. Problem se pojavljuje samo na sustavima gdje je kernel izgrađen s opcijom CONFIG_BT_HS (onemogućeno prema zadanim postavkama, ali omogućeno na nekim distribucijama, kao što je Ubuntu). Uspješan napad također zahtijeva postavljanje parametra HCI_HS_ENABLED putem sučelja za upravljanje na true (ne koristi se prema zadanim postavkama).

Izvor: opennet.ru

Dodajte komentar