Kasper, un scanner pentru probleme de execuție a codului speculativ în nucleul Linux, este acum disponibil

O echipă de cercetători de la Universitatea Liberă din Amsterdam a publicat un set de instrumente Kasper conceput pentru a identifica fragmente de cod din nucleul Linux care pot fi folosite pentru a exploata vulnerabilitățile de clasă Spectre cauzate de execuția de cod speculativă pe procesor. Codul sursă pentru setul de instrumente este distribuit sub licența Apache 2.0.

Să reamintim că pentru a efectua atacuri precum Spectre v1, care fac posibilă determinarea conținutului memoriei, este necesară prezența în codul privilegiat a unei anumite secvențe de comenzi (gadget), conducând la execuția speculativă a instrucțiunilor. . În scopuri de optimizare, procesorul începe să execute astfel de gadgeturi în modul speculativ, apoi determină că predicția de ramificație nu a fost justificată și întoarce operațiunile la starea lor inițială, dar datele procesate în timpul execuției speculative ajung în memoria cache și în bufferele microarhitecturale și este disponibil pentru preluare de la acestea folosind diferite metode de determinare a datelor reziduale prin canale terțe.

Instrumentele disponibile anterior pentru scanarea gadgeturilor pentru vulnerabilitatea Spectre, bazate pe căutarea modelelor tipice, au arătat un nivel foarte ridicat de fals pozitive, în timp ce lipseau multe gadget-uri reale (experimentele au arătat că 99% dintre gadgeturile identificate de astfel de instrumente nu au putut fi folosite pentru atacuri). , iar 33% dintre gadgeturile funcționale care ar putea duce la un atac nu au fost observate).

Pentru a îmbunătăți calitatea identificării gadgeturilor problematice, Kasper modelează vulnerabilitățile pe care un atacator le poate exploata la fiecare pas al efectuării atacurilor din clasa Spectre - sunt modelate probleme care permit controlul datelor (de exemplu, înlocuirea datelor atacatorului în structuri microarhitecturale pentru a influența execuția speculativă ulterioară folosind atacuri de clasă LVI), obțineți acces la informații confidențiale (de exemplu, atunci când treceți dincolo de limitele buffer-ului sau folosiți memoria după ce este eliberată) și scurgeți informații confidențiale (de exemplu, prin analiza stării memoriei cache a procesorului sau folosind metoda MDS).

Kasper, un scanner pentru probleme de execuție a codului speculativ în nucleul Linux, este acum disponibil

La testare, nucleul este conectat cu bibliotecile de rulare Kasper și verificări care rulează la nivel LLVM. Procesul de verificare emulează execuția de cod speculativă, implementată folosind mecanismul de restabilire a punctului de control, care execută în mod specific o ramură de cod prezisă incorect și apoi revine la starea inițială înainte de a începe ramura. Kasper încearcă, de asemenea, să simuleze diverse vulnerabilități software și hardware, analizează impactul efectelor arhitecturale și microarhitecturale și efectuează teste fuzz ale posibilelor acțiuni ale atacatorului. Pentru a analiza fluxurile de execuție, se folosește portul DataFlowSanitizer pentru nucleul Linux, iar pentru testarea fuzzing se folosește o versiune modificată a pachetului syzkaller.

Kasper, un scanner pentru probleme de execuție a codului speculativ în nucleul Linux, este acum disponibil

O scanare a nucleului Linux folosind Kasper a identificat 1379 de gadgeturi necunoscute anterior care pot duce la scurgeri de date în timpul executării speculative a instrucțiunilor. Se observă că poate doar unele dintre ele pot pune probleme reale, dar pentru a demonstra că există un pericol real, și nu doar unul teoretic, a fost dezvoltat un prototip de lucru al unui exploit pentru unul dintre fragmentele de cod problematice, care să conducă la informații. scurgeri din memoria nucleului.

Sursa: opennet.ru

Adauga un comentariu