LVI je nova klasa napada na mehanizam spekulativnog izvršenja u CPU-u

Objavljeno informacije o novoj klasi napada LVI (Ubrizgavanje vrijednosti opterećenja, CVE-2020-0551) o mehanizmu spekulativnog izvršenja u Intelovim procesorima, koji se može koristiti za curenje ključeva i tajnih podataka iz Intel SGX enklava i drugih procesa.

Nova klasa napada zasnovana je na manipulaciji istim mikroarhitektonskim strukturama koje se koriste u napadima MDS (Uzorkovanje mikroarhitektonskih podataka), Spectre i Meltdown. Istovremeno, novi napadi nisu blokirani postojećim metodama zaštite od Meltdown, Spectre, MDS i drugih sličnih napada. Efikasna LVI zaštita zahtijeva promjene hardvera na CPU-u. Prilikom programskog organizovanja zaštite, dodavanjem instrukcije LFENCE od strane kompajlera nakon svake operacije učitavanja iz memorije i zamjenom instrukcije RET sa POP, LFENCE i JMP, bilježi se preveliki troškovi - prema istraživačima, potpuna softverska zaštita će dovesti do smanjenja performanse za 2-19 puta.

Dio poteškoća u blokiranju problema nadoknađen je činjenicom da je napad trenutno više teoretski nego praktičan (napad je teoretski moguć, ali vrlo težak za implementaciju i reproduciran samo u sintetičkim testovima).
Intel prisvojio problem ima umjereni nivo opasnosti (5.6 od 10) i pušten ažuriranje firmvera i SDK-a za SGX okruženje, u kojem je pokušao blokirati napad koristeći zaobilazno rješenje. Predložene metode napada trenutno su primjenjive samo na Intel procesore, ali se ne može isključiti mogućnost prilagođavanja LVI-a za druge procesore na koje su primjenjivi napadi Meltdown klase.

Problem je prošlog aprila identifikovao istraživač Jo Van Bulck sa Univerziteta u Leuvenu, nakon čega je, uz učešće 9 istraživača sa drugih univerziteta, razvijeno pet osnovnih metoda napada, od kojih svaka omogućava postojanje specifičnijih mogućnosti. Nezavisno, u februaru ove godine, istraživači iz Bitdefendera također otkrio jednu od varijanti LVI napada i prijavio je Intelu. Varijante napada razlikuju se po korištenju različitih mikroarhitektonskih struktura, kao što su bafer za pohranu (SB, Store Buffer), bafer punjenja (LFB, Line Fill Buffer), međuspremnik za prebacivanje konteksta FPU i keš prvog nivoa (L1D), koji se ranije koristio u napadima kao npr ZombieLoad, RIDL, Ispasti, LazyFP, Predviđanje и topljenje jezgra nuklearnog reaktora.

LVI je nova klasa napada na mehanizam spekulativnog izvršenja u CPU-u

Glavni počasti LVI protiv MDS napada je da MDS manipuliše određivanjem sadržaja mikroarhitektonskih struktura koje ostaju u kešu nakon spekulativnog rukovanja greškama ili operacija učitavanja i skladištenja, dok
LVI napadi omogućavaju da se podaci napadača umetnu u mikroarhitektonske strukture kako bi se uticalo na naknadno spekulativno izvršenje žrtvinog koda. Koristeći ove manipulacije, napadač može izdvojiti sadržaj privatnih struktura podataka u drugim procesima prilikom izvršavanja određenog koda na ciljnoj CPU jezgri.

LVI je nova klasa napada na mehanizam spekulativnog izvršenja u CPU-u

Do problem eksploatacije u kodu procesa žrtve treba da se sastane posebne sekvence koda (gadgeti) u kojima se učitava vrijednost koju kontrolira napadač, a učitavanje ove vrijednosti uzrokuje izbacivanje izuzetaka (greška, prekid ili pomoć), odbacujući rezultat i ponovno izvršavanje instrukcije. Kada se obradi izuzetak, pojavljuje se spekulativni prozor tokom kojeg cure podaci obrađeni u gadgetu. Konkretno, procesor počinje izvršavati dio koda (gadget) u spekulativnom načinu rada, zatim utvrđuje da predviđanje nije bilo opravdano i vraća operacije u prvobitno stanje, ali se podaci obrađeni tokom spekulativnog izvršenja pohranjuju u L1D keš memoriju i mikroarhitektonske bafere i dostupan je za preuzimanje od njih uz korištenje poznatih metoda za određivanje rezidualnih podataka putem kanala treće strane.

Iznimkom "pomoć", za razliku od izuzetka "greške", procesor upravlja interno bez pozivanja softverskih rukovatelja. Pomoć se može pojaviti, na primjer, kada treba ažurirati bit A (pristupljeno) ili D (prljavo) u tablici memorijskih stranica. Glavna poteškoća u izvođenju napada na druge procese je kako inicirati pojavu asistencije manipuliranjem procesom žrtve. Trenutno ne postoje pouzdani načini za to, ali je moguće da će se oni pronaći u budućnosti. Mogućnost izvođenja napada do sada je potvrđena samo za Intel SGX enklave, ostali scenariji su teoretski ili reproducibilni u sintetičkim uvjetima (zahtijeva dodavanje određenih gadžeta u kod)

LVI je nova klasa napada na mehanizam spekulativnog izvršenja u CPU-u

LVI je nova klasa napada na mehanizam spekulativnog izvršenja u CPU-u

Mogući vektori napada:

  • Curenje podataka iz struktura kernela u proces na nivou korisnika. Zaštita Linux kernela od napada Spectre 1, kao i SMAP (Supervisor Mode Access Prevention) zaštitni mehanizam, značajno smanjuju vjerovatnoću LVI napada. Dodavanje dodatne zaštite kernelu može biti potrebno ako se u budućnosti identifikuju jednostavnije metode LVI napada.
  • Curenje podataka između različitih procesa. Napad zahteva prisustvo određenih delova koda u aplikaciji i definiciju metode za izbacivanje izuzetka u ciljnom procesu.
  • Curenje podataka iz okruženja domaćina u gostujući sistem. Napad je klasifikovan kao previše složen, koji zahtijeva različite teško izvodljive korake i predviđanja aktivnosti u sistemu.
  • Curenje podataka između procesa u različitim sistemima za goste. Vektor napada je blizak organizovanju curenja podataka između različitih procesa, ali dodatno zahteva složene manipulacije da bi se zaobišla izolacija između sistema gostiju.

Objavili istraživači nekoliko prototipovi sa demonstracijom principa izvođenja napada, ali još nisu pogodni za izvođenje pravih napada. Prvi primjer vam omogućava da preusmjerite spekulativno izvršavanje koda u procesu žrtve, slično programiranju orijentiranom na povratak (R.O.P.,Povratno orijentirano programiranje). U ovom primjeru, žrtva je posebno pripremljen proces koji sadrži potrebne gadžete (primjena napada na stvarne procese trećih strana je teška). Drugi primjer nam omogućava da ometamo proračune tokom AES enkripcije unutar Intel SGX enklave i organiziramo curenje podataka tokom spekulativnog izvršavanja instrukcija za vraćanje vrijednosti ključa koji se koristi za enkripciju.


izvor: opennet.ru

Dodajte komentar