Un team di ricercatori della Graz University of Technology ha scoperto un nuovo attacco cross-cache del kernel Linux denominato SLUBStick. Questo ha un successo del 99% nel convertire una vulnerabilità heap limitata in una capacità di lettura e scrittura di memoria arbitraria. Inoltre, consentirebbe di elevare i privilegi e non solo. I ricercatori hanno dimostrato l’attacco nelle versioni 5.9 e 6.2 (le più recenti) del kernel Linux utilizzando nove CVE esistenti in sistemi sia a 32 bit che a 64 bit. Ciò ha indicato un’elevata versatilità. Inoltre, l’attacco ha funzionato con tutte le moderne difese attive del kernel. Queste includono Supervisor Mode Execution Prevention (SMEP), Supervisor Mode Access Prevention (SMAP) e Kernel Address Space Layout Randomization (KASLR). SLUBStick verrà presentato in dettaglio alla prossima conferenza Usenix Security Symposium fra qualche settimana. I ricercatori mostreranno l’escalation dei privilegi e l’escape dei container nell’ultimo Linux con difese all’avanguardia abilitate.
SLUBStick: come funziona l’attacco
SLUBStick sfrutta una vulnerabilità heap, come una scrittura double-free, user-after-free o out-of-bounds, per manipolare il processo di allocazione della memoria. Successivamente, utilizza un canale laterale di temporizzazione per determinare il momento esatto di allocazione/deallocazione del blocco di memoria. Ciò consente agli hacker di prevedere e controllare il riutilizzo della memoria. L’utilizzo di queste informazioni di temporizzazione aumenta il successo dello sfruttamento del cross-change al 99%. La conversione del difetto heap in primitive di lettura e scrittura della memoria arbitraria avviene in tre fasi. In primis libera blocchi di memoria specifici e attendi che il kernel li riutilizzi. In seguito, rassegna questi blocchi in modo controllato, assicurandoti che vengano riutilizzati per strutture dati critiche come le tabelle delle pagine. Una volta recuperati, l’hacker sovrascrive le voci della tabella delle pagine, ottenendo la possibilità di leggere e scrivere qualsiasi posizione di memoria.
SLUBStick richiede l’accesso locale sulla macchina di destinazione con capacità di esecuzione del codice. Inoltre, è necessaria una vulnerabilità heap nel kernel Linux, che verrà utilizzata per ottenere l’accesso in lettura e scrittura alla memoria. Sebbene ciò possa far sembrare l’attacco poco pratico, introduce alcuni vantaggi. Anche per gli aggressori con capacità di esecuzione del codice, SLUBStick offre la possibilità di ottenere l’escalation dei privilegi, bypassare le difese del kernel, eseguire escape dei container o utilizzarlo come parte di una complessa catena di attacchi.
L’escalation dei privilegi può essere utilizzata per elevare i privilegi a root, consentendo operazioni illimitate. L’escape dei container serve per uscire dagli ambienti sandbox e accedere al sistema host. Inoltre, nella fase di post-sfruttamento, SLUBStick potrebbe modificare le strutture o gli hook del kernel per mantenere la persistenza, rendendo il malware più difficile da rilevare per i difensori. Per maggiori informazioni sul funzionamento di SLUBStick è possibile consultare i repository GitHub dei ricercatori.