TLBleed
TLBleed este o vulnerabilitate hardware în unele procesoare moderne care au un buffer de traducere a comenzilor și acceptă multithreading simultan. Vulnerabilitatea permite unei aplicații de utilizator (un atacator local, când se lansează un program special) care rulează pe unul dintre firele de execuție hardware să extragă neautorizat informații despre execuția unui alt fir folosind un canal secret . Scurgerea de informații poate fi utilizată pentru a accesa în siguranță datele sensibile procesate de un alt fir.
Scurtă descriere
TLBleed este un atac pe canal lateral și, prin urmare, are similarități cu alte vulnerabilități ale microprocesorului, cum ar fi Meltdown și Spectre . Abordarea tradițională a exploatării unor astfel de vulnerabilități se bazează pe măsurarea timpului de acces la celulele cache ale procesorului individuale pentru a determina care celule specifice au fost încărcate în cache de procesul atacat. În acest fel, se pot extrage informații indirecte despre execuția și datele protejate ale procesului victimei. În cazul unui atac TLBleed, canalul lateral nu este un cache de date obișnuit, ci un buffer de traducere asociativ (TLB), un cache special care stochează corespondențele dintre paginile de memorie virtuală și paginile de memorie fizică a procesorului, care este folosit pentru a accelera traducerea. de adrese virtuale. O oportunitate cheie de atac este oferită de faptul că, în implementarea modului simultan multithreading (SMT) în procesoarele Intel, tamponul de traducere asociativă este partajat și este utilizat de toate firele de execuție hardware simultan (un canal similar terță parte poate exista în microprocesor). implementări ale altor companii, dar o astfel de analiză nu a fost încă realizată).
Esența atacului este următoarea. Timpul de acces la celulele TLB individuale determină ce pagini de memorie accesează procesul atacat. În același timp, nici măcar granularitatea minimă de adresare (4096 de octeți pe sistemele moderne) nu este suficientă pentru a obține în mod direct datele procesului atacat (de exemplu, vulnerabilitatea Meltdown folosește adresarea indirectă pentru a încărca și apoi a identifica o anumită celulă cache, celula cache). a cărei adresă determină o parte a secretului ). Totuși, prin analiza naturii accesului la memorie (ordinea accesului la paginile de memorie, intervalele dintre accesări) folosind metode de învățare automată , este posibilă identificarea unei secțiuni a codului executabil. Dacă, de exemplu, în algoritmul de criptare, la procesarea unui „1” logic, este apelată o secțiune a codului, iar la procesarea unui „0” logic - altul, se dovedește a fi posibilă restaurarea completă a datelor criptate.
Istorie
Studiul original a fost făcut public de un grup de oameni de știință de la Universitatea Liberă din Amsterdam pe 22 iunie 2018. Detaliile vulnerabilității au fost dezvăluite ulterior de liderul proiectului Ben Gras la conferința de securitate informatică Black Hat . [1] [2] În ciuda faptului că vulnerabilitatea a fost demonstrată pe multe procesoare Intel cu mai multe arhitecturi moderne, compania a refuzat să solicite un identificator CVE pentru vulnerabilitate, invocând nesemnificația acesteia. Potrivit cercetătorilor, această poziție nu reflectă starea reală a lucrurilor, deoarece TLBleed este un tip de atac semnificativ nou, reprezintă o amenințare semnificativă și poate servi drept punct de plecare pentru căutarea altor vulnerabilități similare. [3]
Mecanism
Pentru a implementa atacul descris, este necesar să se rezolve o serie de probleme tehnice:
- Aflați dinainte configurația TLB (asociativitate, dimensiune) pe procesorul folosit. Pentru a face acest lucru, puteți utiliza surse deschise de informații [4] sau utilizați inginerie inversă folosind instrucțiuni de nivel scăzut [5] . Pe lângă datele despre parametrii TLB, este necesar să se afle și corespondența dintre adresele virtuale și celulele TLB pentru a putea urmări ulterior starea celulelor arbitrare prin accesarea adreselor virtuale necesare. În cel mai simplu caz, locația buffer-ului de translație asociativă este determinată de biții mici ai adresei paginii, dar pot fi utilizate funcții de mapare mai complexe, cum ar fi XOR pe biți a numărului de flux și anumiți biți ai adresei paginii.
- Găsiți o modalitate de a urmări accesele procesului atacat la celulele TLB. Autorii studiului folosesc un atac clasic de timp de acces pentru a determina dacă o anumită celulă TLB a fost folosită de procesul victimei. O complexitate suplimentară este introdusă de faptul că, de regulă, tamponul de traducere asociativă în procesoarele moderne este o structură pe două niveluri (similar cu organizarea ierarhică a cache -ului , L1 TLB și L2 TLB). Cu toate acestea, se poate determina din timpul de acces dacă adresa paginii solicitate se află în TLB a unuia dintre niveluri (în caz contrar, se realizează procedura de traducere pe mai multe niveluri a adresei virtuale, care durează sute de cicluri de procesor). ).
- Rulați cod rău intenționat pe același nucleu hardware ca și firul procesului victimă. Se susține că îndeplinirea acestei condiții pentru implementarea efectivă a vulnerabilității este foarte dificilă și necesită eforturi non-triviale. Cu toate acestea, sistemele de operare moderne oferă mecanisme pentru legarea proceselor la anumite nuclee hardware ale procesorului, ceea ce simplifică foarte mult sarcina. [6]
- Utilizarea statisticilor de acces ale procesului victimă la diferite celule TLB pentru a recupera informații despre execuția procesului atacat. Atacatorului i se oferă libertate completă de alegere în ceea ce privește modul și ce informații să extragă din statisticile colectate. În special, se poate încerca să determine ce secțiune a codului execută procesul atacat la un moment dat. În acest caz, sarcina este prezentată ca restabilirea dependenței , unde este vectorul apelurilor către celulele TLB în funcție de timp și este secțiunea de cod necesară. În multe cazuri, aceste informații sunt suficiente pentru a reproduce cu acuratețe datele prelucrate. În special, anumite operațiuni sunt efectuate în algoritmi de criptare în funcție de biții de intrare, ceea ce face posibilă exploatarea vulnerabilității.
Influență
Din august 2018, vulnerabilitatea a fost demonstrată doar pe procesoarele Intel. Se presupune că procesoarele de la alte companii, în care bufferul de traducere a paginii este partajat de firele hardware, pot fi, de asemenea, vulnerabili la acest tip de atac, dar nu au fost prezentate implementări ale conceptului. [7] AMD susține că procesoarele sale nu sunt afectate de vulnerabilitate. [3]
După publicarea informațiilor despre vulnerabilitate, proiectul OpenBSD a dezactivat complet suportul pentru multithreading simultan în sistem. [8] [9] Șeful OpenBSD Theo de Raadt consideră că, în ciuda faptului că vulnerabilitatea poate fi eliminată teoretic prin interzicerea rulării proceselor din contexte diferite pe nuclee comune de procesor, în practică o astfel de soluție nu este fezabilă din cauza complexității. . [opt]
Mecanisme de apărare
- Principala și evidentă modalitate de a elimina vulnerabilitatea este dezactivarea modului de multithreading simultan ( Hyper Threading ). Evident, dezactivarea SMT duce la o scădere semnificativă a performanței și la utilizarea ineficientă a hardware-ului microprocesorului. Aplicat la sistemul OpenBSD . [opt]
- Separarea accesului la software a firelor de execuție hardware în linia cache TLB. Pentru a utiliza metoda, este necesar să se interzică fiecărei fire de execuție hardware să acceseze anumite zone ale memoriei virtuale, astfel încât, ca urmare, liniile TLB utilizate de fire să nu se intersecteze. Metoda este dificil de implementat, deoarece încalcă conceptul de memorie virtuală coerentă . Cu toate acestea, această abordare poate fi aplicată la nivel de sistem de operare și nu necesită modificări hardware.
- Separarea accesului hardware a firelor în TLB. De fapt, necesită împărțirea TLB-ului comun în mai multe buffer-uri independente adresate de fiecare dintre fluxuri separat. Degradarea performanței ar trebui să fie de așteptat din cauza unei scăderi a dimensiunii totale TLB per fir hardware.
Vezi și
- Meltdown este un atac de execuție speculativ similar care rupe izolarea dintre procese și nucleul sistemului de operare în același context de execuție.
- Spectre este un atac similar bazat pe execuție speculativă care rupe izolarea dintre orice procese din sistem
Note
- ↑ Black Hat SUA 2018 . www.blackhat.com Data accesului: 19 decembrie 2018. Arhivat din original pe 7 ianuarie 2019. (nedefinit)
- ↑ TLBleed Side-Channel CPU Attack Detaliat la Black Hat . eWEEK. Preluat: 19 decembrie 2018. (nedefinit)
- ↑ 12 Williams, Chris . Faceți cunoștință cu TLBleed: Un atac de CPU cu scurgeri de cripto-chei despre care Intel consideră că nu ar trebui să ne facem griji , The Register ( 22 iunie 2018). Arhivat din original pe 8 decembrie 2018. Preluat la 19 decembrie 2018.
- ↑ WikiChip - WikiChip . en.wikichip.org. Consultat la 19 decembrie 2018. Arhivat din original la 26 octombrie 2020.
- ↑ [ https://www.cs.vu.nl/~giuffrida/papers/revanc_eurosec17.pdf RevAnC: A Framework for Reverse Engineering Hardware Page Table Caches] // al 10-lea Workshop european. Arhivat din original pe 20 decembrie 2018.
- ↑ sched_setaffinity(2) - Pagina de manual Linux . man7.org. Consultat la 19 decembrie 2018. Arhivat din original la 20 decembrie 2018. (nedefinit)
- ↑ Halfacree, Gareth . Cercetătorii avertizează despre TLBleed Hyper-Threading vuln (engleză) , bit-tech.net (25 iunie 2018). Arhivat din original pe 13 februarie 2019. Preluat la 19 decembrie 2018.
- ↑ 1 2 3 Șeful OpenBSD de Raadt spune că nu este o soluție ușoară pentru noul bug al procesorului Intel . www.itwire.com (25 iunie 2018). Preluat la 25 iunie 2018. Arhivat din original la 25 iunie 2018.
- ↑ OpenBSD dezactivează suportul pentru hyperthreading pentru procesoarele Intel din cauza unor posibile scurgeri de date . www.itwire.com (21 iunie 2018). Data accesului: 19 decembrie 2018. Arhivat din original pe 9 iulie 2018.
Link -uri
Atacurile hackerilor din anii 2010 |
---|
Cele mai mari atacuri |
|
---|
Grupuri și comunități de hackeri |
|
---|
hackeri singuratici |
|
---|
Au detectat vulnerabilități critice |
- Heartbleed (SSL, 2014)
- Bashdoor (Bash, 2014)
- POODLE (SSL, 2014)
- Rootpipe (OSX, 2014)
- JASBUG (Windows, 2015)
- Stagefright (Android, 2015)
- DROWN (TLS, 2016)
- Badlock (SMB/CIFS, 2016)
- Vaca murdară (Linux, 2016)
- EternalBlue ( SMBv1 , 2017)
- DoublePulsar (2017)
- KRACK (2017)
- ROCA (2017)
- BlueBorn (2017)
- Meltdown (2018)
- Spectre (2018)
- Blue Keep (2019)
|
---|
Virușii informatici |
|
---|
anii 2000 • anii 2010 • anii 2020 |