TONTOU este un atac asupra procesoarelor Intel și AMD care permite ocolirea protecției împotriva vulnerabilităților Spectre v2.

Cercetătorii de la Institutul de Tehnologie din Massachusetts au identificat tehnica de atac TONTOU (Time-of-Neutralization to Time-of-Use), care oferă o nouă modalitate de a exploata vulnerabilitățile microarhitecturale din clasa Spectre v2. Vulnerabilitatea permite determinarea conținutului memoriei kernelului la executarea unei exploatări în spațiul utilizatorului. Codul pentru blocarea exploatării vulnerabilității a fost integrat în kernel. Linux 5 august și inclus în versiunile 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 și 5.10.263.

Cercetătorii au demonstrat fezabilitatea unui atac local, asupra unui utilizator neprivilegiat, pentru a determina codul hash al parolei utilizatorului root, stocat în fișierul /etc/shadow și încărcat în memorie în timpul autentificării sistemului. Cercetătorii au reușit să extragă date din memoria kernelului cu un debit de 5.47 octeți pe secundă și o precizie de 91.97%. Din 10 teste de rulare a exploit-ului, care au durat în medie 18 minute, au detectat cu succes prezența fișierului /etc/shadow în memorie și i-au extras conținutul în jumătate din cazuri.

Exploatarea a fost demonstrată pe sisteme cu procesoare AMD și poate fi utilizată pe procesoarele AMD din familiile Zen 1-4. Atacul este fezabil și pe sistemele Intel, dar exploatarea este mai complexă. Pentru a proteja împotriva depășirilor stivei de returnare și a bloca vulnerabilitatea SRSO (Speculative Return Stack Overflow), procesoarele AMD utilizează mecanismul de protecție Safe-RET, care șterge bufferul de predicție a ramificării după fiecare utilizare și restrânge fereastra de atac la două instrucțiuni executate în câteva zeci de nanosecunde.

Pentru a ocoli această protecție și a extinde fereastra de atac, a fost implementată o tehnică de încetinire a procesorului, permițând substituirea întreruperilor la momentul potrivit pentru a redirecționa fluxul de execuție în cadrul kernelului și pentru a utiliza un handler de întrerupere pentru a corupe intrările din bufferul de predicție a ramificării. Pentru a exploata vulnerabilitatea SRSO, un atacator poate crea condiții în care unitatea de predicție a ramificării execută speculativ un număr mare de apeluri CALL prezise incorect, suficiente pentru a depăși stiva de adrese de retur și a suprascrie punctele de retur prezise corect situate la începutul stivei. Drept urmare, elementele inițiale ale stivei pot fi suprascrise cu valori alese de atacator, ceea ce duce ulterior la utilizarea acestor valori înlocuite în timpul execuției speculative a unei instrucțiuni RET în contextul unui alt proces.

Procesorul va determina că predicția de ramificare a fost incorectă și va anula operațiunea, dar datele procesate în timpul execuției speculative vor rămâne în memoria cache și în bufferele microarhitecturale. Dacă blocul executat eronat accesează memoria, execuția sa speculativă va duce, de asemenea, la menținerea datelor citite din memorie în memoria cache partajată. Pentru a recupera informații din memoria cache, se poate utiliza o metodă de determinare a conținutului memoriei cache bazată pe analiza modificărilor timpilor de acces pentru datele memorate în memoria cache și cele nememorate în memoria cache.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster