V jedru Linux je bila odkrita ranljivost (CVE-2022-42896), ki se lahko potencialno izkoristi za oddaljeno izvajanje kode na ravni jedra z pošiljanjem posebej oblikovane L2CAP-paketne preko Bluetooth. Poleg tega je bila odkrita še ena podobna težava (CVE-2022-42895) v obdelovalniku L2CAP, ki lahko vodi do uhajanja vsebine jedrske pomnilnika v paketih z informacijami o konfiguraciji. 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 Linux 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. Odprave lahko spremljate v distribucijah na naslednjih straneh: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Za prikaz možnosti izvedbe oddaljenega napada so objavljeni prototipi exploitov, ki delujejo v Ubuntu 22.04. Za izvajanje napada mora biti zlonamerna oseba v dosegu Bluetooth — vnaprejšnje parjenje ni potrebno, vendar mora biti Bluetooth na računalniku aktiven. Za napad je dovolj poznati MAC-naslov naprave žrtve, ki ga je mogoče določiti z snemanjem omrežnega prometa ali pa ga na nekaterih napravah izračunati na podlagi MAC-naslova Wi-Fi.
Prva ranljivost (CVE-2022-42896) je posledica dostopa do že osvobojene pomnilniške regije (use-after-free) v implementaciji funkcij l2cap_connect in l2cap_le_connect_req — po ustvarjanju kanala preko klica povratne funkcije new_connection ni bila nastavljena zaklep za ta kanal, ampak je bil nastavljen časovnik (__set_chan_timer), ki po poteku časa kliče funkcijo l2cap_chan_timeout in očisti kanal brez preverjanja zaključenega dela s kanalom v funkcijah l2cap_le_connect*.
Privzeti časovni interval znaša 40 sekund in se je domnevalo, da stanje dirke pri taki zamudi ne more nastati, a se je izkazalo, da se lahko zaradi druge napake v obdelovalniku SMP doseže takojšnje klicanje časovnika in stanje dirke. Težava v l2cap_le_connect_req lahko vodi do uhajanja jedrskega pomnilnika, v l2cap_connect pa do prepisovanja vsebine pomnilnika in izvajanja lastne kode. Prvi način napada se lahko izvede z uporabo Bluetooth LE 4.0 (od leta 2009), drugi pa z uporabo Bluetooth BR/EDR 5.2 (od leta 2020).
Druga ranjivost (CVE-2022-42895) je uzrokovana curenjem preostalih podataka iz memorije u funkciji l2cap_parse_conf_req, što može omogućiti daljinsko dobijanje informacija o pokazivačima na strukture jezgra putem slanja posebno oblikovanih konfiguracionih zahteva. U funkciji l2cap_parse_conf_req korišćena je struktura l2cap_conf_efs, za koju nije izvršena prethodna inicijalizacija dodeljene memorije, i manipulišući sa flagom FLAG_EFS_ENABLE moglo je doći do uključivanja starih podataka iz steka u paket. Problem se javlja samo u sistemima gde je jezgro sastavljeno sa opcijom CONFIG_BT_HS (po defaultu isključena, ali aktivirana u nekim distribucijama, na primer, u Ubuntu). Za uspešan napad takođe je potrebno postaviti parametar HCI_HS_ENABLED preko upravljačkog interfejsa na true (po defaultu nije korišćen).
Izvor: opennet.ru
