Mayhem - attaccu di corruzzione di bit di memoria per scaccià l'autentificazione sudo è OpenSSH

I ricercatori di l'Istitutu Politecnicu di Worcester (USA) anu introduttu un novu tipu d'attaccu Mayhem chì usa a tecnica di distorsione di bit di memoria d'accessu aleatoriu dinamicu Rowhammer per cambià i valori di variabili di stack utilizati cum'è bandiere in u prugramma per decide se l'autentificazione è i cuntrolli di sicurità anu. passatu. Esempii pratichi di l'attaccu sò dimustrati per passà l'autentificazione in SUDO, OpenSSH è MySQL, è ancu per cambià u risultatu di cuntrolli di sicurità in a biblioteca OpenSSL.

L'attaccu pò esse applicatu à l'applicazioni chì utilizanu cuntrolli per paragunà valori chì differenu da zero. Esempiu di codice vulnerabile: int auth = 0; ... // codice di verificazione chì cambia u valore di auth in casu di autentificazione successu if (auth != 0) return AUTH_SUCCESS; altrimenti torna AUTH_FAILURE;

In u cuntestu di questu esempiu, per un attaccu successu hè abbastanza per corrompere qualsiasi bit in a memoria assuciata cù a variabile auth 32-bit in a pila. Se un pocu in a variàbile hè currutti, u valore ùn serà più cero è l'operatore cundizionale determinarà a cumpiimentu successu di l'autentificazione. Tali mudelli di validazione sò abbastanza cumuni in l'applicazioni è si trovanu, per esempiu, in SUDO, OpenSSH, MySQL è OpenSSL.

Mayhem - un attaccu di mania di bit di memoria per scaccià l'autentificazione sudo è OpenSSH

L'attaccu pò ancu esse appiicatu à paraguni di a forma "se (auth == 1)", ma in questu casu, a so implementazione diventa più cumplicata, postu chì hè necessariu distorte micca un pocu di 32, ma l'ultimu bit. U metudu pò ancu esse usatu per influenzà i valori di variabili in i registri di u processatore, postu chì u cuntenutu di i registri pò esse temporaneamente lavatu nantu à a pila quandu un cambiamentu di cuntestu, una chjama di funzione, o un gestore di signale spara. Durante u periodu di tempu mentre i valori di u registru sò in memoria, distorsioni ponu esse introdutte in questa memoria è u valore cambiatu serà restituitu à u registru.

Mayhem - un attaccu di mania di bit di memoria per scaccià l'autentificazione sudo è OpenSSH

Per distorte i bits, una di e mudificazioni di l'attaccu di classa RowHammer hè aduprata. Siccomu a memoria DRAM hè una matrice bidimensionale di cellule, ognuna composta da un condensatore è un transistor, eseguisce letture cuntinue di a stessa regione di memoria si traduce in fluttuazioni di tensione è anomalie chì causanu una piccula perdita di carica in e cellule vicine. Se l'intensità di lettura hè alta, allora a cellula vicina pò perde una quantità abbastanza grande di carica è u prossimu ciculu di regenerazione ùn hà micca tempu per restaurà u so statu originale, chì portarà à un cambiamentu di u valore di e dati guardati in a cellula. . Per prutezzione di RowHammer, i pruduttori di chip anu aghjustatu un mecanismu TRR (Target Row Refresh), chì impedisce a corruzzione cellulare in casi speciali, ma ùn pruteghja micca da tutte e variazioni di attaccu pussibuli.

Per pruteggiri contru à l'attaccu Mayhem, hè cunsigliatu di utilizà in paraguni micca una valutazione di diffirenzii da cero o una coincidenza cù unu, ma un cuntrollu di partita utilizendu un valore aleatoriu di sementa cù octets non-zero. In questu casu, per stabilisce u valore desideratu di a variàbile, hè necessariu distorsione accuratamente un numeru significativu di bits, chì ùn hè micca realisticu, in cuntrastu à a distorsione di un bit. Esempiu di codice non-attackable: int auth = 0xbe406d1a; ... // codice di verificazione chì stabilisce u valore di auth à 0x23ab8701 in casu di autentificazione successu if (auth == 0x23ab8701) return AUTH_SUCCESS; altrimenti torna AUTH_FAILURE;

U metudu di prutezzione specificatu hè digià utilizatu da i sviluppatori sudo è hè statu inclusu in a versione 1.9.15 cum'è una correzione per a vulnerabilità CVE-2023-42465. Pensanu di pubblicà un prototipu di u codice per a realizazione di l'attaccu dopu chì e correzioni sò state fatte à i principali prughjetti vulnerabili.

Source: opennet.ru

Add a comment