Novi Spectre v2 napad na Intel, AMD i Arm procesore

Istraživači sa univerziteta Vrije Universiteit Amsterdam i Scuola Superiore Sant’Anna objavili su postojanje nove ranjivosti, poznate kao Spectre v2 ili BTR, koja iskorištava zastarjela predviđanja grananja u JIT mehanizmima na procesorima kompanija Intel, AMD i Arm. Ovaj napad može u roku od nekoliko minuta dovesti do curenja hešovanih lozinki root korisnika operativnog sistema Linux ponovnim korištenjem zastarjelih ciljeva grananja u prevodiocima izvornog kôda koji se izvršavaju u trenutku.

Spectre v2 napad

Novi Spectre v2 napad na Intel, AMD i Arm procesore; Source: Nano Banana 2

SPECTRE V2 NAPAD

Mehanizam za predviđanje grananja u procesoru funkcioniše poput zastarjele mape koja putnika vodi kroz krajolik koji se stalno mijenja. Kada se kôd promijeni tokom izvršavanja, mehanizam ne uspijeva ažurirati svoje putanje, zbog čega nastaju odstupanja koja je moguće iskoristiti.

Ranjivost Spectre v2, odnosno ponovno korištenje odredišta grananja (eng. branch target reuse – BTR), iskorištava ovaj propust u okruženjima za prevođenje u hodu (eng. just-in-time – JIT) tako što ponovo upotrebljava zastarjele odredišne adrese grananja na procesorima zasnovanim na arhitekturama Intel, AMD i Arm. Na taj način zlonamjerni akter može preuzeti tok izvršavanja i doći do osjetljivih podataka, poput heševa lozinki root korisnika, iz sistema Linux i softverskih okruženja kao što su Firefox i GraalVM.

Ova ranjivost ukazuje na trajni sukob između načina na koji je hardver projektovan i zaštite koju pruža softver. Mehanizmi ublažavanja, poput barijere za predviđanje posrednih grananja (eng. Indirect Branch Predictor Barrier – IBPB), mogu djelimično smanjiti rizik, ali ne mogu u potpunosti otkloniti neusklađenost između teorijskog izvršavanja i izmjena kôda tokom rada softvera.

Ova specifična ranjivost Spectre v2 pokazuje da nedostaci povezani s prolaznim izvršavanjem mogu dugo ostati skriveni u savremenim procesorima, zbog čega se proizvođači hardvera i programeri suočavaju s potrebom da otklanjaju sistemske ranjivosti bez potpunog preprojektovanja procesorske arhitekture.

 

“Testirali smo napad od početka do kraja na procesorima Raptor Cove i Lion Cove i u prosjeku uspjeli da otkrijemo lozinku za tri, odnosno pet minuta.”

– Researchers at VUsec i Scuola Superiore Sant'Ann –

 

Nedostatak sinhronizacije

Savremeni procesori koriste međumemoriju ciljeva grananja (eng. branch target buffers – BTB) kako bi ubrzali posredna grananja čuvanjem predviđenih odredišta. Međutim, kada mehanizmi za prevođenje u hodu (JIT) prepišu dijelove memorije prethodno korištene za formiranje kôda, zastarjeli unosi u međumemorije ciljeva grananja (BTB) ostaju prisutni i ne poništavaju se.

Ova neusklađenost omogućava zlonamjernim akterima da manipulišu prolaznim stanjima izvršavanja, jer procesor, zasnovan na pretpostavkama, slijedi zastarjela predviđanja čak i nakon što je prvobitni kôd zamijenjen. Posljedice ranjivosti Spectre v2 idu dalje od tradicionalnih propusta u izvršavanju zasnovanom na pretpostavkama, jer iskorištavaju ovaj jaz između hardverskih mehanizama za predviđanje i izmjena memorije tokom izvršavanja.

Zlonamjerni akteri mogu iskoristiti te preostale unose kako bi preusmjerili tok izvršavanja na neplanirane putanje, čime efektivno stvaraju prolazno stanje izvršavanja nakon oslobađanja memorije koje zaobilazi uobičajene softverske mehanizme ublažavanja.

Kôd koji mijenja sam sebe (eng. self-modifying code – SMC) u okruženjima za prevođenje u hodu dodatno produbljuje ovu ranjivost stvaranjem preklapajućih dodjela memorije koje ponovo koriste prethodno poništene ciljeve u međumemoriji ciljeva grananja (BTB). Time se zlonamjernim akterima otvara mogućnost da ubace zlonamjerne instrukcije u dijelove memorije u kojima zastarjela predviđanja i dalje postoje, omogućavajući nepredvidivo izvršavanje neravnomjernih nizova kôda.

Nemogućnost procesora da uskladi mehanizme za predviđanje grananja sa stvarnim stanjima memorije uvodi sistemske rizike, jer ranjivost Spectre v2 pokazuje na koji način se hardverske pretpostavke o stabilnosti kôda mogu iskoristiti kao oružje protiv procesa dinamičkog prevođenja. Ova neusklađenost nije ograničena na određene arhitekture, već odražava širi izazov u dizajnu savremenih procesora, u kojem mehanizmi za predviđanje daju prednost brzini u odnosu na dosljednost prilikom izmjena kôda tokom izvršavanja.

 

Pogođena okruženja i reakcije proizvođača

Domet ove ranjivosti obuhvata ključna softverska okruženja, pri čemu se mehanizam prevodioca klasičnog Berkeleijevog paketnog filtera u mašinski kôd u hodu (eng. Classic Berkeley Packet Filter Just-In-Time compiler – cBPF JIT) u jezgru operativnog sistema Linux izdvaja kao primarni vektor iskorištavanja.

U tom kontekstu, korisnici bez administratorskih ovlaštenja koji izvršavaju programe klasičnog Berkeleijevog paketnog filtera (cBPF) mogu obučiti mehanizme za predviđanje grananja tako da dovedu do neusklađenosti putanja izvršavanja zasnovanog na pretpostavkama, čime se omogućava curenje podataka bez potrebe za povišenim nivoom privilegija.

Istraživači su potvrdili da savremeni procesori kompanija Intel, AMD i Arm pokazuju isti propust u vidu neusklađenosti prilikom rukovanja dijelovima memorije koje ponovo koriste mehanizmi za prevođenje u hodu (JIT), što naglašava da prijetnja ranjivosti Spectre v2 obuhvata više proizvođača hardvera. Iako su programeri operativnog sistema Linux integrisali mehanizme ublažavanja, poput pražnjenja barijere za predviđanje posrednih grananja (IBPB) pri dodjeli memorije za klasični Berkeleijev paketni filter (cBPF), šire okruženje i dalje pokazuje neujednačen pristup u odgovoru na ovu varijantu.

Mehanizam SpiderMonkey u internet pregledaču Mozilla Firefox suočava se sa jedinstvenim izazovima zbog trajnih zastarjelih unosa grananja u kontekstima izvršavanja JavaScripta, iako tekući rad na izolaciji lokacija ima za cilj smanjenje površine napada. U međuvremenu, Oracle GraalVM je usvojio nasumično raspoređivanje keša kôda mehanizma za prevođenje u hodu (JIT) kao mjeru odbrane protiv ponovnog korištenja odredišta grananja (BTR), uz priznanje da ponovno korištenje dijelova memorije ostaje podložno iskorištavanju, uprkos tome što interni mehanizmi za automatsko oslobađanje memorije brišu određena predviđanja.

Posljedice ranjivosti Spectre v2 idu dalje od izolovanih sistema, ističući sistemske rizike u okruženjima u kojima kôd preveden pomoću mehanizma za prevođenje u hodu (JIT) dinamički ponovo koristi dijelove memorije bez prilagođavanja stanja mehanizma za predviđanje grananja uslijed izmjena tokom izvršavanja.

 

“Indirektno predviđanje grananja sastavni je dio modernih procesora, a BTR iskorištava nesinhronizovanost između mehanizama za predviđanje grananja i stvarnog stanja kôda. Nijedan savremeni procesor trenutno nema mehanizam koji bi ih održavao usklađenim, tako da će, sve dok proizvođači ne uvedu takav mehanizam, vaš procesor biti ranjiv. Ovakvo ponašanje potvrdili smo na svakom procesoru koji smo testirali, uključujući procesore kompanija Intel, AMD i Arm.”

– Researchers at VUsec i Scuola Superiore Sant'Ann –

 

Mehanizam iskorištavanja prolaznog izvršavanja

Zlonamjerni akteri iskorištavaju ranjivost Spectre v2 tako što prvo manipulišu mehanizmima za prevođenje u hodu (JIT) kako bi rezervisali dio memorije za obuku. Taj dio se zatim koristi za umetanje unosa u međumemoriju ciljeva grananja (BTB) koji upućuju na zastarjelu adresu kôda.

Ovim korakom se priprema putanja pretpostavljenog izvršavanja procesora, čime se osigurava da naknadna posredna grananja pokrenu neusklađene nizove instrukcija kada se ponovo iskoriste zastarjeli unosi u međumemoriji ciljeva grananja (BTB). Napad se oslanja na vremenska odstupanja u obrascima pristupa kešu tokom ovih pretpostavljenih operacija, što zlonamjernim akterima omogućava da izvedu osjetljive podatke putem analize bočnih kanala bez direktnog pristupa memoriji.

Ova ranjivost dodatno iskorištava navedenu mogućnost prisiljavajući procesor da izvršava instrukcije na neusklađenim pomjeranjima, što može zaobići softverske mehanizme ublažavanja osmišljene da spriječe neovlaštene putanje izvršavanja kôda. Prolazna priroda ovih pretpostavljenih ciklusa stvara prostor za curenje podataka, budući da se stanja keša neprimjetno mijenjaju tokom kratkog perioda prije nego što se nastavi normalno izvršavanje.

Redoslijed iskorištavanja ove ranjivosti zavisi od precizne kontrole nad ponovnom dodjelom memorije i vremenskim usklađivanjem predviđanja grananja. Nakon što se dio za obuku oslobodi i zamijeni novim kôdom na istoj adresi, međumemorija ciljeva grananja (BTB) procesora može zadržati zastarjele unose iz prethodnih kompilacija mehanizma za prevođenje u hodu (JIT).

Kada posredno grananje naknadno cilja ovaj ponovo iskorišteni dio memorije, procesor pretpostavljeno izvršava instrukcije usklađene sa zastarjelom tačkom ulaza, umjesto sa ažuriranim kôdom. Ova neusklađenost otvara mogućnosti za prolazno izvršavanje u kojima se mogu aktivirati upotrebljivi dijelovi kôda pod kontrolom zlonamjernog aktera, čak i ako nisu arhitektonski važeći. Dobijene vremenske promjene u kešu, mjerene kroz ponovljene obrasce pristupa, zatim se analiziraju kako bi se rekonstruisali podaci iz dijelova memorije koji bi inače trebali ostati nedostupni.

Ova ranjivost Spectre v2 pokazuje na koji način takva mikroarhitektonska ponašanja, u kombinaciji sa dinamikom mehanizama za prevođenje u hodu (JIT), stvaraju upotrebljive propuste u bezbjednosnim zaštitama na hardverskom nivou.

 

Sistemski uticaji iskorištavanja ranjivosti

Mogućnost zaobilaženja mehanizama zaštite softvera iskorištavanjem ranjivosti Spectre v2 uvodi kritičan nedostatak u postojeću strategiju odbrane, omogućavajući zlonamjernim akterima da pristupe dijelovima memorije koji se tradicionalno smatraju bezbjednim.

Praktične demonstracije su pokazale da čak i potpuno ažurirani sistemi sa uključenim podrazumijevanim zaštitama ostaju ranjivi, jer napadi mogu izvući osjetljive podatke, poput heševa lozinki korisnika root, bez potrebe za statusom privilegovanog korisnika. To narušava pretpostavku da su standardne tehnike ublažavanja, poput barijere za predviđanje posrednih grananja (IBPB), dovoljne da neutrališu prijetnje koje predstavljaju ranjivosti Spectre v2 u stvarnim scenarijima.

Takvo neovlašteno otkrivanje sadržaja memorije putem ove ranjivosti ima šire posljedice po integritet sistema, posebno u okruženjima u kojima su mehanizmi za prevođenje u hodu (JIT) široko zastupljeni.

Na primjer, napadi za dokazivanje koncepta (eng. proof-of-concept – PoC) na jezgru operativnog sistema Linux pokazali su da se osjetljive informacije mogu otkrivati brzinom koja je dovoljna za rekonstrukciju ključnih podataka za prijavu za svega nekoliko minuta. To važi čak i kada su aktivne hardverske zaštitne mjere poput praćenja posrednih grananja (eng. indirect branch tracking – IBT) ili prepoznavanja ciljeva grananja (eng. branch target identification – BTI).

Ovakvi nalazi dovode u pitanje efikasnost trenutnih softverskih protivmjera i ističu zavisnost od nedokazanih pretpostavki o ponašanju mehanizama za predviđanje grananja u kontekstima dinamičkog izvršavanja kôda.

Preuzimanje kontrole nad tokom izvršavanja, što olakšava ranjivost Spectre v2, dodatno komplikuje bezbjednosne okvire jer omogućava zlonamjernim akterima da preusmjere putanje izvršavanja na neželjene lokacije bez pokretanja sistemskih upozorenja. Takva mogućnost je pokazana na mehanizmu SpiderMonkey u internet pregledaču Firefox, gdje su zastarjela predviđanja opstala dovoljno dugo da omoguće izvlačenje podataka.

Efikasnost ovakvih napada ipak varira u zavisnosti od primjene mehanizama za prevođenje u hodu (JIT). U slučaju okruženja GraalVM, na primjer, interni procesi prevođenja kôda nenamjerno su brisali upotrebljive unose prije nego što su mogli biti iskorišteni, čime je ograničen praktični uticaj uprkos tome što teorijske ranjivosti ostaju neriješene.

Sistemski rizik koji nosi ova ranjivost ide dalje od neposrednog ugrožavanja podataka, budući da otkriva temeljne nedostatke u usklađenosti između hardverskih mehanizama za predviđanje grananja i stanja memorije tokom izvršavanja.

Iako su proizvođači uveli djelimične mjere zaštite, poput nasumičnog raspoređivanja lokacija međumemorije kôda u okruženju GraalVM ili pražnjenja barijera za predviđanje posrednih grananja (IBPB) pri korištenju mehanizma prevodioca klasičnog Berkeleijevog paketnog filtera u mašinskog kôd u hodu (cBPF JIT), nepostojanje univerzalnog hardverskog rješenja znači da će ove ranjivosti ostati prisutne sve dok se ne uvedu promjene u arhitekturi. To naglašava sve izraženiji sukob između tehnika za poboljšanje radne sposobnosti, poput pretpostavljenog izvršavanja, i bezbjednosnih zahtjeva savremenih računarskih okruženja.

 

ZAKLJUČAK

Pojava ranjivosti Spectre v2 naglašava trajni sukob između poboljšanja radne sposobnosti hardvera i sigurnosnih  posljedica mehanizama pretpostavljenog izvršavanja. Savremeni procesori daju prednost brzini kroz tehnike poput predviđanja grananja, no te iste osobine stvaraju ranjivosti koji se mogu iskoristiti kada mehanizmi za prevođenje u hodu (JIT) manipulišu dijelovima memorije prethodno korištenim za formiranje kôda.

Činjenica da ova ranjivost pogađa više proizvođača hardvera, obuhvatajući arhitekture Intel, AMD i Arm, otkriva sistemski propust u načinu na koji procesori upravljaju zastarjelim unosima u međumemoriji ciljeva grananja (BTB). Ovo pitanje ostaje neriješeno uprkos godinama istraživanja usmjerenih na mehanizme ublažavanja, poput barijere za predviđanje posrednih grananja (IBPB) ili prepoznavanja ciljeva grananja (BTI).

Takva situacija ukazuje na širi izazov: rješenja na hardverskom nivou za usklađivanje mehanizama za predviđanje grananja sa stanjima memorije tokom izvršavanja i dalje ne postoje, ostavljajući softverske odbrambene mjere kao privremena rješenja umjesto trajnih popravki. Istovremeno, ova ranjivost dodatno otkriva ograničenja razjedinjenih strategija ublažavanja u različitim okruženjima za prevođenje u hodu (JIT).

Iako ispravke za jezgro operativnog sistema Linux i tehnike nasumičnog raspoređivanja keša kôda mehanizma za prevođenje u hodu (JIT) u sistemu GraalVM imaju za cilj smanjenje površine napada, njihova efikasnost značajno varira u zavisnosti od konteksta izvršavanja.

Na primjer, djelimična otpornost mehanizma SpiderMonkey u internet pregledaču Firefox na potpuno ugrožavanje ukazuje da, čak i uz ojačane odbrambene mjere, mogućnosti za prolazno  izvršavanje opstati na načine koje je teško u potpunosti ukloniti bez preispitivanja međusobnog djelovanja mehanizama za prevođenje u hodu (JIT) i mehanizama za predviđanje procesora.

Ova promjenjiva efikasnost ukazuje na dublji problem: trenutni napori u ublažavanju ostaju u domenu reakcije na događaje, rješavajući određene vektore napada umjesto da se pozabave temeljnim uzrokom neusklađenosti mehanizama za predviđanje grananja.

Sposobnost ove ranjivosti da zaobiđe podrazumijevane zaštite na ažuriranim sistemima, poput izvlačenja heševa lozinki korisnika root, pokreće ključna pitanja o dugoročnoj održivosti isključivo softverskih mjera zaštite. Iako mehanizmi poput barijere za predviđanje posrednih grananja (IBPB) mogu usporiti pokušaje iskorištavanja, oni ne eliminišu temeljni rizik da će se zastarjela predviđanja ponovo iskoristiti kada mehanizmi za prevođenje u hodu (JIT) ponovo dodijele memoriju.

To ukazuje na rastuću zavisnost od proizvođača hardvera da primijene temeljne izmjene u dizajnu koje će spriječiti mehanizme za predviđanje grananja da rade neusklađeno sa stvarnim stanjima kôda. Dok se takva napredna rješenja ne integrišu u procesore u širokoj upotrebi, ranjivost Spectre v2 nastaviće da služi kao jasan podsjetnik na kompromise u pogledu performansi i bezbjednosti u savremenim računarskim arhitekturama.

 

PREPORUKE

Spectre v2 ranjivost iskorištava zastarjela predviđanja grananja u mehanizmima izvršavanja na osnovu pretpostavki, omogućavajući curenje podataka iz memorije čak i kada su podrazumijevane bezbjednosne zaštite omogućene. Sljedeće smjernice mogu doprinijeti jačanju bezbjednosti i smanjenju izloženosti:

  1. Primijeniti softverske ispravke za CVE-2026-64507 i CVE-2026-64508 kako bi se riješili zastarjeli unosi u međumemoriji ciljeva grananja (BTB) u jezgru operativnog sistema Linux, jer ove zaštitne mjere sprječavaju ponovno korištenje zastarjelih predviđanja grananja tokom preraspodjele memorije mehanizma za prevođenje u hodu (JIT).
  2. Omogućiti mehanizme poput barijere za predviđanje posrednih grananja (IBPB) tamo gdje je hardverski podržana, kao što su platforme x86, kako bi se očistili unosi u međumemoriji ciljeva grananja (BTB) prilikom ponovnog korištenja oblasti memorije za kôd u mehanizmima za prevođenje u hodu (JIT).
  3. Primijeniti nasumično raspoređene lokacije keš memorije kôda mehanizama za prevođenje u hodu (JIT), slično pristupu sistema GraalVM, kako bi se otežalo zlonamjernim akterima predviđanje ili iskorištavanje obrazaca ponovnog korištenja oblasti koji bi mogli dovesti do preuzimanja kontrole nad tokom izvršavanja.
  4. Dati prednost izolaciji internet lokacija u internet pregledačima poput Mozilla Firefox, jer ovo smanjuje rizik od Spectre v2 napada koji potiču sa zlonamjernih internet stranica, kroz izolovanje okruženja za izvršavanje nepouzdanog sadržaja.
  5. Redovno ažurirati mehanizme za prevođenje u hodu (JIT) i okruženja za izvršavanje, kao što su SpiderMonkey ili mehanizam prevodioca klasičnog Berkeleijevog paketnog filtera u mašinski kôd u hodu (cBPF JIT), kako bi se osiguralo da uključuju ispravke koje sprječavaju iskorištavanje zastarjelih odredišta grananja tokom ponovnog popunjavanja keš memorije kôda.
  6. Pratiti neovlašten pristup oblastima memorije prevedenim putem mehanizama za prevođenje u hodu (JIT) u aplikacijama, jer zlonamjerni akteri mogu iskoristiti dijelove za obuku dodijeljene od strane mehanizma za prevođenje u hodu (JIT) kako bi ubacili zlonamjerne putanje izvršavanja na osnovu pretpostavki.
  7. Primijeniti zaštitne mjere na hardverskom nivou, poput praćenja posrednih grananja (IBT) kompanije Intel ili prepoznavanja ciljeva grananja (BTI) kompanije Arm, koje otežavaju iskorištavanje neporavnatih dijelova kôda, a koje se moraju kombinovati sa softverskim ispravkama radi sveobuhvatne zaštite od ranjivosti Spektar v2.
  8. Sprovesti penetracijsko testiranje na sistemima koji koriste pogođene mehanizme za prevođenje u hodu (JIT) kako bi se otkrile ranjivosti u stvarnim uslovima, kao što je curenje memorije kroz zastarjela predviđanja grananja u Linux okruženju mehanizma prevodioca klasičnog Berkeleijevog paketnog filtera u mašinski kôd u hodu (cBPF JIT) ili GraalVM.
  9. Sprovesti edukaciju programera o rizicima kôda koji mijenja sam sebe (SMC) u mehanizmima za prevođenje u hodu (JIT) i uvesti prakse bezbjednog programiranja koje smanjuju mogućnosti prolaznog izvršavanja koje iskorištavaju napadi ponovnim korištenjem odredišta grananja.
  10. Uvesti funkcije za učvršćivanje jezgra, kao što su SMEP/SMAP, kako bi se spriječilo iskorištavanje neporavnatih dijelova kôda ili putanja izvršavanja na osnovu pretpostavki koje bi mogle zaobići softverske zaštitne mjere.
  11. Izbjegavati nepotrebno korištenje mehanizama za prevođenje u hodu (JIT) u aplikacijama koje obrađuju osjetljive podatke, jer ovo smanjuje površinu napada za ranjivosti poput ponovnog korištenja odredišta grananja koje se oslanjaju na ponovno korištenje keš memorije kôda.
  12. Primijeniti alate za mrežni nadzor kako bi se otkrili neobični obrasci iznošenja podataka koji ukazuju na curenje memorije uzrokovano napadima tipa Spektar v2.
  13. Procijeniti alternativne modele izvršavanja, kao što je prethodno prevođenje kôda, u okruženjima gdje korištenje mehanizama za prevođenje u hodu (JIT) uvodi neprihvatljive bezbjednosne rizike zbog uzajamnog djelovanja kôda koji mijenja sam sebe (SMC) sa mehanizmima za predviđanje grananja.
  14. Sarađivati blisko sa dobavljačima hardvera i softvera kako bi se osiguralo pravovremeno uključivanje u sistem zaštitnih mjera, kao što su mehanizmi poput barijere za predviđanje posrednih grananja (IBPB), ili nasumičnog raspoređivanja keš memorije kôda u proizvodne sisteme pogođene ranjivostima ponovno korištenje odredišta grananja (BTR).
  15. Testirati stepen zaštite postojećih zaštitnih mjera kroz vježbe timova za simulaciju napada koje oponašaju iskorištavanja ranjivosti ponovnog korištenja odredišta grananja (BTR), kao što je curenje haš vrijednosti lozinki administratora iz procesora koji koriste mehanizam prevodioca klasičnog Berkeleijevog paketnog filtera u mašinski kôd u hodu (cBPF JIT) ili mehanizme za prevođenje u hodu (JIT) tipa SpiderMonkey.
  16. Održavati detaljne zapise o aktivnostima mehanizma za prevođenje u hodu (JIT) kako bi se otkrile nepravilnosti u dodjeli memorije i ponašanju predviđanja grananja koje bi mogle otkriti pokušaje iskorištavanja od strane zlonamjernog aktera koji koriste zastarjele unose u međumemoriji ciljeva grananja (BTB).

Navedene preporuke pružaju korisne korake za smanjenje rizika koje predstavljaju ranjivosti Spektar v2, odnosno ili ponovno korištenje odredišta grananja (BTR), naglašavajući i softverske ispravke i odbrane na hardverskom nivou, istovremeno rješavajući praktične izazove sprovođenja u sistemima iz stvarnog svijeta.

Možda vas interesuje i...

Komentariši

Vaša email adresa neće biti objavljivana. Neophodna polja su označena sa *


The reCAPTCHA verification period has expired. Please reload the page.