Retbleed je novi napad na spekulativni mehanizam izvršenja Intel i AMD procesora

Grupa istraživača s ETH Zurich identificirala je novi napad na mehanizam spekulativnog izvršavanja neizravnih prijelaza u CPU-u, koji omogućuje izvlačenje informacija iz memorije kernela ili organiziranje napada na glavni sustav s virtualnih strojeva. Ranjivosti su kodnog naziva Retbleed (CVE-2022-29900, CVE-2022-29901) i po prirodi su bliske Spectre-v2 napadima. Razlika se svodi na organizaciju spekulativnog izvršavanja proizvoljnog koda prilikom obrade instrukcije "ret" (povratak), koja dohvaća adresu za skok sa stoga, umjesto neizravnog skoka pomoću instrukcije "jmp", učitavajući adresu iz memorije ili CPU registra.

Napadač može stvoriti uvjete za netočno predviđanje prijelaza i organizirati ciljani, spekulativni prijelaz na blok koda koji nije predviđen logikom izvršavanja programa. U konačnici, procesor će utvrditi da predviđanje grananja nije bilo opravdano i vratit će operaciju u izvorno stanje, ali će podaci obrađeni tijekom spekulativnog izvođenja završiti u predmemoriji i mikroarhitektonskim međuspremnicima. Ako pogrešno izvedeni blok pristupi memoriji, tada će njegovo spekulativno izvršenje dovesti do toga da se podaci pročitani iz memorije pohrane u zajedničku predmemoriju.

Kako bi odredio podatke koji su preostali u predmemoriji nakon spekulativnih operacija, napadač može koristiti tehnike bočnog kanala za određivanje preostalih podataka, kao što je analiza promjena u vremenu pristupa predmemoriranim i nekeširanim podacima. Za namjerno izdvajanje informacija iz područja na drugoj razini privilegija (na primjer, iz memorije jezgre), koriste se "gadgeti" - sekvence naredbi prisutnih u jezgri koje su prikladne za spekulativno čitanje podataka iz memorije ovisno o vanjskim uvjetima na koje mogu utjecati napadač.

Za zaštitu od klasičnih napada klase Spectre koji koriste uvjetne i neizravne instrukcije skoka, većina operativnih sustava koristi tehniku ​​"retpoline", koja se temelji na zamjeni neizravnih operacija skoka s instrukcijom "ret", za koju procesori koriste zasebnu jedinicu za predviđanje stanja stoga .ne koristeći blok predviđanja grananja. Kada je retpoline uveden 2018., vjerovalo se da manipulacije adresama slične Spectreu nisu praktične za spekulativno grananje korištenjem instrukcije "ret".

Istraživači koji su razvili metodu napada Retbleed demonstrirali su mogućnost stvaranja mikroarhitektonskih uvjeta za pokretanje spekulativne tranzicije korištenjem instrukcije "ret" i objavili gotove alate za identificiranje sekvenci instrukcija (gadgeta) prikladnih za iskorištavanje ranjivosti u Linux kernelu, u kojima se takva stanja manifestiraju.

Tijekom istraživanja pripremljen je radni exploit koji omogućuje, na sustavima s Intel CPU-ima, izdvajanje proizvoljnih podataka iz memorije kernela iz neprivilegiranog procesa u korisničkom prostoru brzinom od 219 bajtova u sekundi i 98% točnosti. Na AMD procesorima, učinkovitost exploit-a je puno veća—stopa curenja je 3.9 KB po sekundi. Kao praktičan primjer, pokazujemo kako koristiti predloženi exploit za određivanje sadržaja datoteke /etc/shadow. Na sustavima s Intelovim CPU-om, napad za utvrđivanje hasha root korisničke lozinke izvršen je za 28 minuta, a na sustavima s AMD CPU-om - za 6 minuta.

Napad je potvrđen za generacije 6-8 Intelovih procesora koji su objavljeni prije trećeg tromjesečja 3. (uključujući Skylake) i AMD procesore temeljene na mikroarhitekturama Zen 2019, Zen 1+ i Zen 1 koji su objavljeni prije drugog tromjesečja 2. Kod novijih modela procesora kao što su AMD Zen2021 i Intel Alder Lake, kao i kod ARM procesora, problem je blokiran postojećim zaštitnim mehanizmima. Na primjer, korištenje IBRS (Indirect Branch Restricted Speculation) uputa pomaže u zaštiti od napada.

Skup promjena je pripremljen za Linux kernel i Xen hipervizor, koji će blokirati problem u softveru na starijim procesorima. Predložena zakrpa za Linux kernel mijenja 68 datoteka, dodaje 1783 redaka i briše 387 redaka. Nažalost, zaštita dovodi do značajnih režijskih troškova - u tekstovima provedenim na AMD i Intel procesorima, smanjenje performansi procjenjuje se od 14% do 39%. Poželjnije je koristiti zaštitu temeljenu na IBRS uputama, dostupnim u novim generacijama Intel CPU-a i podržanim počevši od Linux kernela 4.19.

Na Intelovim procesorima zamjena adrese za spekulativni neizravni skok provodi se zahvaljujući značajci koja se pojavljuje kada dođe do preljeva kroz donju granicu (underflow) u međuspremniku povratnog snopa. Kada se takvi uvjeti dogode, instrukcija "ret" počinje primjenjivati ​​logiku odabira adrese sličnu onoj koja se koristi za normalne neizravne skokove. U jezgri Linuxa pronađeno je više od tisuću mjesta koja stvaraju uvjete za pokretanje takvog povratnog protoka i dostupna su putem sistemskih poziva.

Na AMD procesorima, spekulativno izvršavanje instrukcije "ret" provodi se bez pozivanja na međuspremnik specifičan za stog (Stog povratne adrese), a jedinica za predviđanje grananja smatra instrukciju "ret" ne povratnom kontrolom, već neizravnim grananjem , i, sukladno tome, koristi podatke za predviđanje neizravnih prijelaza. Pod ovim uvjetima, gotovo svaka "ret" operacija dostupna putem sistemskog poziva može se iskoristiti.

Osim toga, također je identificiran još jedan problem u AMD CPU-ima (CVE-2022-23825, Branch Type Confusion) povezan s implementacijom fiktivnih grananja - uvjeti za predviđanje grananja mogu se pojaviti čak i bez potrebnih uputa za grananje, što omogućuje utjecaj na međuspremnik predviđanja grananja bez instrukcije "ret". Ova značajka značajno komplicira implementaciju zaštite i zahtijeva aktivnije čišćenje međuspremnika za predviđanje grananja. Očekuje se da će dodavanje potpune zaštite kernelu povećati troškove za 209%.

Izvor: opennet.ru

Dodajte komentar