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

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

Nova klasa napada temelji se na manipulaciji istim mikroarhitektonskim strukturama koje se koriste u napadima MDS (Uzorkovanje mikroarhitektonskih podataka), Bauk i otapanje. Istodobno, novi napadi nisu blokirani postojećim metodama zaštite od Meltdown, Spectre, MDS i drugih sličnih napada. Učinkovita LVI zaštita zahtijeva promjene hardvera CPU-a. Kada se programski organizira zaštita, dodavanjem LFENCE instrukcije od strane prevoditelja nakon svake operacije učitavanja iz memorije i zamjenom RET instrukcije s POP, LFENCE i JMP, bilježi se previše troškova - prema istraživačima, potpuna zaštita softvera dovest će do smanjenja učinak od 2-19 puta.

Dio poteškoća u blokiranju problema nadoknađuje činjenica da je napad trenutno više teoretski nego praktičan (napad je teoretski moguć, ali ga je vrlo teško implementirati i ponovljiv samo u sintetičkim testovima).
Intel prisvojio problem ima umjerenu razinu 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 trenutačno su primjenjive samo na Intelove procesore, no ne može se isključiti mogućnost prilagodbe LVI-ja za druge procesore na koje su primjenjivi napadi klase Meltdown.

Problem je prošlog travnja identificirao istraživač Jo Van Bulck sa Sveučilišta u Leuvenu, nakon čega je uz sudjelovanje 9 istraživača s drugih sveučilišta razvijeno pet osnovnih metoda napada, od kojih svaka omogućuje postojanje specifičnijih mogućnosti. Neovisno, u veljači ove godine, istraživači iz Bitdefendera također otkrio jednu od varijanti LVI napada i prijavio je Intelu. Varijante napada razlikuju se upotrebom različitih mikroarhitektonskih struktura, kao što su međuspremnik za pohranu (SB, Store Buffer), međuspremnik za punjenje (LFB, Line Fill Buffer), FPU međuspremnik za prebacivanje konteksta i predmemorija prve razine (L1D), koji su se prethodno koristili u napadima kao što su ZombieLoad, RIDL, Ispadanje, LazyFP, Nagovijestiti и Topljenje jezgra nuklearnog reaktora.

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

Glavni počasti LVI protiv MDS napada je da MDS manipulira određivanjem sadržaja mikroarhitektonskih struktura koje ostaju u predmemorij nakon spekulativnog rukovanja greškama ili operacija učitavanja i pohranjivanja, dok
LVI napadi omogućuju napadačevim podacima da se umetnu u mikroarhitektonske strukture kako bi se utjecalo na naknadno spekulativno izvršavanje ž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 spekulativni mehanizam izvršenja u CPU-u

za problem eksploatacije u kodu procesa žrtve treba upoznati posebne sekvence koda (gadgeti) u koje se učitava vrijednost koju kontrolira napadač, a učitavanje ove vrijednosti uzrokuje izbacivanje iznimaka (greška, prekid ili pomoć), odbacivanje rezultata i ponovno izvršavanje instrukcije. Kada se obradi iznimka, pojavljuje se spekulativni prozor tijekom kojeg podaci obrađeni u gadgetu cure. 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 njihovo izvorno stanje, ali se podaci obrađeni tijekom spekulativnog izvođenja pohranjuju u L1D predmemoriju. i mikroarhitektonskih međuspremnika i dostupan je za dohvaćanje iz njih korištenjem poznatih metoda za određivanje rezidualnih podataka putem kanala trećih strana.

Iznimku "pomoć", za razliku od iznimke "greška", interno obrađuje procesor bez pozivanja softverskih rukovatelja. Pomoć se može pojaviti, na primjer, kada treba ažurirati bit A (pristupljeno) ili D (prljavo) u tablici memorijske stranice. Glavna poteškoća u izvođenju napada na druge procese je kako inicirati pojavu pomoći manipuliranjem procesa žrtve. Trenutno ne postoje pouzdani načini za to, ali je moguće da će se 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 ponovljivi u sintetičkim uvjetima (zahtijeva dodavanje određenih gadgeta kodu)

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

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

Mogući vektori napada:

  • Curenje podataka iz struktura kernela u proces na razini korisnika. Zaštita Linux kernela od napada Spectre 1, kao i zaštitni mehanizam SMAP (Supervisor Mode Access Prevention), značajno smanjuju vjerojatnost LVI napada. Dodavanje dodatne zaštite kernelu može biti potrebno ako se u budućnosti identificiraju jednostavnije LVI metode napada.
  • Curenje podataka između različitih procesa. Napad zahtijeva prisutnost određenih dijelova koda u aplikaciji i definiranje metode za bacanje iznimke u ciljnom procesu.
  • Curenje podataka iz glavnog okruženja u gostujući sustav. Napad je klasificiran kao previše složen, zahtijeva različite korake koje je teško implementirati i predviđanja aktivnosti u sustavu.
  • Curenje podataka između procesa u različitim gostujućim sustavima. Vektor napada je blizu organiziranja curenja podataka između različitih procesa, ali dodatno zahtijeva složene manipulacije kako bi se zaobišla izolacija između gostujućih sustava.

Objavili istraživači više prototipovi s demonstracijom principa izvođenja napada, ali još nisu pogodni za izvođenje pravih napada. Prvi primjer vam omogućuje preusmjeravanje spekulativnog izvršavanja koda u procesu žrtve, slično povratno orijentiranom programiranju (ROP, Povratno orijentirano programiranje). U ovom primjeru žrtva je posebno pripremljen proces koji sadrži potrebne gadgete (teško je primijeniti napad na stvarne procese treće strane). Drugi primjer nam omogućuje da ometamo izračune tijekom AES enkripcije unutar Intel SGX enklave i organiziramo curenje podataka tijekom spekulativnog izvršavanja instrukcija za vraćanje vrijednosti ključa korištenog za enkripciju.


Izvor: opennet.ru

Dodajte komentar