Mayhem — attacco che distorce i bit in memoria per bypassare l'autenticazione in sudo e OpenSSH

I ricercatori del Worcester Polytechnic Institute (USA) hanno presentato un nuovo tipo di attacco Mayhem che utilizza il metodo di distorsione dei bit in memoria dinamica Rowhammer per modificare i valori delle variabili nello stack, utilizzati nel programma come flag per decidere sul successo dell'autenticazione e sul superamento dei controlli di sicurezza. Sono stati dimostrati esempi pratici di applicazione dell'attacco per bypassare l'autenticazione in SUDO, OpenSSH e MySQL, nonché per modificare i risultati dei controlli legati alla sicurezza nella libreria OpenSSL.

L'attacco può essere applicato a applicazioni in cui durante i controlli si utilizza il confronto di differenze rispetto a zero. Esempio di codice vulnerabile: int auth = 0; … // codice di verifica che cambia il valore di auth in caso di autenticazione riuscita if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;

Nel contesto di questo esempio, per un attacco riuscito è sufficiente deviare qualsiasi bit in memoria associato alla variabile 32 bit auth nello stack. Deviando qualsiasi bit della variabile, il valore non sarà più zero e l'istruzione condizionale determinerà il superamento riuscito dell'autenticazione. Questi schemi di verifica sono abbastanza comuni nelle applicazioni e si trovano, ad esempio, in SUDO, OpenSSH, MySQL e OpenSSL.

Mayhem - attacco che distorce i bit in memoria per eludere l'autenticazione in sudo e OpenSSH

L'attacco può essere applicato anche a confronti del tipo «if(auth == 1)», ma in questo caso la sua esecuzione diventa più complessa, poiché è necessario deviare non qualsiasi bit fra 32, ma l'ultimo bit. Il metodo può essere utilizzato anche per influenzare i valori delle variabili nei registri del processore, poiché il contenuto dei registri può essere temporaneamente ripristinato nello stack durante il cambio di contesto, la chiamata di funzioni o l'attivazione di un gestore di segnali. Durante il tempo in cui i valori dei registri sono in memoria, è possibile apportare distorsioni a questa memoria e nel registro verrà ripristinato il valore modificato.

Mayhem - attacco che distorce i bit in memoria per eludere l'autenticazione in sudo e OpenSSH

Per la distorsione dei bit viene utilizzata una delle varianti dell'attacco di classe RowHammer. Poiché la memoria DRAM è un array bidimensionale di celle, ognuna delle quali è composta da un condensatore e da un transistor, l'esecuzione di letture continue della stessa area di memoria provoca fluttuazioni di tensione e anomalie che causano una piccola perdita di carica nelle celle vicine. Se l'intensità della lettura è elevata, una cella adiacente può perdere una quantità di carica sufficientemente grande e il successivo ciclo di rigenerazione non riuscirà a ripristinarne lo stato originale, portando a una modifica del valore dei dati memorizzati nella cella. Per proteggersi da RowHammer, i produttori di chip hanno aggiunto il meccanismo TRR (Target Row Refresh), che blocca la distorsione delle celle in alcuni casi, ma non protegge contro tutte le possibili varianti di attacco.

Per proteggersi dall'attacco Mayhem, è consigliabile utilizzare nei confronti non una valutazione delle differenze dallo zero o una corrispondenza con uno, ma una verifica delle corrispondenze, utilizzando un valore casuale di seme con ottetti non nulli. In questo caso, per impostare il valore corretto della variabile è necessario distorcere in modo preciso un numero significativo di bit, il che è irrealistico, a differenza della distorsione di un singolo bit. Esempio di codice non vulnerabile all'attacco: int auth = 0xbe406d1a; … // codice di verifica che imposta il valore di auth a 0x23ab8701 in caso di autenticazione riuscita if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;

Il metodo di protezione specificato è già stato applicato dagli sviluppatori di sudo ed è stato incluso nella versione 1.9.15 come correzione della vulnerabilità CVE-2023-42465. Un prototipo di codice per effettuare l'attacco è previsto essere pubblicato dopo che saranno state apportate correzioni nei principali progetti vulnerabili.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster