Retbleed este un nou atac asupra mecanismului de execuție speculativ al procesoarelor Intel și AMD

Un grup de cercetători de la ETH Zurich a identificat un nou atac asupra mecanismului de execuție speculativă a tranzițiilor indirecte în CPU, care face posibilă extragerea informațiilor din memoria kernelului sau organizarea unui atac asupra sistemului gazdă de pe mașinile virtuale. Vulnerabilitățile poartă numele de cod Retbleed (CVE-2022-29900, CVE-2022-29901) și sunt de natură apropiată de atacurile Spectre-v2. Diferența se reduce la organizarea execuției speculative a codului arbitrar la procesarea instrucțiunii „ret” (retur), care preia adresa pentru a sări din stivă, în loc de un salt indirect folosind instrucțiunea „jmp”, încărcând adresa de la memorie sau un registru CPU.

Un atacator poate crea condiții pentru predicția incorectă a tranziției și poate organiza o tranziție țintită, speculativă la un bloc de cod care nu este prevăzut de logica de execuție a programului. În cele din urmă, procesorul va determina că predicția de ramificare nu a fost justificată și va reveni operația la starea inițială, dar datele procesate în timpul execuției speculative vor ajunge în memoria cache și în bufferele microarhitecturale. Dacă un bloc executat eronat accesează memorie, atunci execuția sa speculativă va duce la depozitarea datelor citite din memorie în memoria cache partajată.

Pentru a determina datele rămase în cache după operațiuni speculative, un atacator poate folosi tehnici de canal lateral pentru a determina datele reziduale, cum ar fi analizarea modificărilor timpilor de acces la datele din cache și necache. Pentru a extrage în mod intenționat informații din zone de la un alt nivel de privilegii (de exemplu, din memoria nucleului), sunt utilizate „gadget-uri” - secvențe de comenzi prezente în nucleu care sunt potrivite pentru citirea speculativă a datelor din memorie, în funcție de condițiile externe care pot fi influențate de atacatorul.

Pentru a proteja împotriva atacurilor clasice din clasa Spectre care folosesc instrucțiuni de salt condiționate și indirecte, majoritatea sistemelor de operare folosesc tehnica „retpoline”, care se bazează pe înlocuirea operațiunilor de salt indirecte cu instrucțiunea „ret”, pentru care procesoarele folosesc o unitate separată de predicție a stării stivei. nefolosind un bloc de predicție de ramificație. Când retpolina a fost introdusă în 2018, se credea că manipulările de adrese asemănătoare Spectrelor nu erau practice pentru ramificarea speculativă folosind instrucțiunea „ret”.

Cercetătorii care au dezvoltat metoda de atac Retbleed au demonstrat posibilitatea de a crea condiții microarhitecturale pentru inițierea unei tranziții speculative folosind instrucțiunea „ret” și au publicat instrumente gata făcute pentru identificarea secvențelor de instrucțiuni (gadget) adecvate pentru exploatarea vulnerabilității din nucleul Linux, în care astfel de condiţii se manifestă.

În timpul cercetării, a fost pregătit un exploit de lucru care permite, pe sistemele cu procesoare Intel, să extragă date arbitrare din memoria kernelului dintr-un proces neprivilegiat în spațiul utilizatorului la o viteză de 219 octeți pe secundă și o precizie de 98%. Pe procesoarele AMD, eficiența exploit-ului este mult mai mare — rata de scurgere este de 3.9 KB pe secundă. Ca exemplu practic, arătăm cum să folosiți exploit-ul propus pentru a determina conținutul fișierului /etc/shadow. Pe sistemele cu procesoare Intel, atacul pentru determinarea hash-ului parolei utilizatorului root a fost efectuat în 28 de minute, iar pe sistemele cu procesoare AMD - în 6 minute.

Atacul a fost confirmat pentru generațiile 6-8 de procesoare Intel care au fost lansate înainte de T3 2019 (inclusiv Skylake) și procesoare AMD bazate pe microarhitecturile Zen 1, Zen 1+ și Zen 2 care au fost lansate înainte de T2021 3. La modelele de procesoare mai noi precum AMD ZenXNUMX și Intel Alder Lake, precum și la procesoarele ARM, problema este blocată de mecanismele de protecție existente. De exemplu, utilizarea instrucțiunilor IBRS (Indirect Branch Restricted Speculation) ajută la protejarea împotriva atacurilor.

A fost pregătit un set de modificări pentru nucleul Linux și hypervisorul Xen, care vor bloca problema în software-ul de pe procesoarele mai vechi. Patch-ul propus pentru nucleul Linux modifică 68 de fișiere, adaugă 1783 de linii și șterge 387 de linii. Din păcate, protecția duce la costuri generale semnificative - în textele efectuate pe procesoarele AMD și Intel, scăderea performanței este estimată de la 14% la 39%. Este mai de preferat să folosiți protecția bazată pe instrucțiunile IBRS, disponibile în noile generații de procesoare Intel și suportate începând cu nucleul Linux 4.19.

Pe procesoarele Intel, înlocuirea adresei pentru un salt indirect speculativ se realizează datorită unei caracteristici care apare atunci când are loc o depășire prin limita inferioară (subflow) din Return Stack Buffer. Când apar astfel de condiții, instrucțiunea „ret” începe să aplice o logică de selecție a adresei similară cu cea utilizată pentru salturile indirecte normale. S-au găsit peste o mie de locuri în nucleul Linux care creează condiții pentru inițierea unui astfel de backflow și sunt accesibile prin apeluri de sistem.

Pe procesoarele AMD, execuția speculativă a instrucțiunii „ret” este efectuată fără referire la un buffer specific stivei (Return Address Stack), iar unitatea de predicție a ramurilor consideră instrucțiunea „ret” nu ca o revenire a controlului, ci ca o ramură indirectă. și, în consecință, utilizează datele pentru predicția tranzițiilor indirecte. În aceste condiții, aproape orice operațiune „ret” accesibilă printr-un apel de sistem poate fi exploatată.

În plus, a fost identificată și o altă problemă în procesoarele AMD (CVE-2022-23825, Branch Type Confusion) legată de implementarea ramurilor fictive - condițiile pentru predicția ramurilor pot apărea chiar și fără instrucțiunile de ramificare necesare, ceea ce permite influențarea buffer-ului de predicție a ramurilor. fără instrucțiunea „ret”. Această caracteristică complică semnificativ implementarea protecției și necesită o curățare mai activă a tamponului de predicție a ramurilor. Adăugarea de protecție completă a nucleului este de așteptat să crească costul general cu 209%.

Sursa: opennet.ru

Adauga un comentariu