Il paper intitolato “SLUBStick: Arbitrary Memory Writes through Practical Software Cross-Cache Attacks within the Linux Kernel” descrive una nuova tecnica di sfruttamento del kernel denominata SLUBStick. Questa tecnica permette di elevare una vulnerabilità limitata della heap del kernel a una primitiva di lettura e scrittura arbitraria della memoria. Il documento è stato redatto da Lukas Maar, Stefan Gast, Martin Unterguggenberger, Mathias Oberhuber e Stefan Mangard dell’Università di Tecnologia di Graz.
Il kernel Linux è suscettibile a vulnerabilità di sicurezza della memoria a causa della sua complessità. Tuttavia, la maggior parte di queste vulnerabilità ha capacità limitate, come la corruzione di pochi byte in cache di allocatori limitati. Per rendere più difficile lo sfruttamento di queste vulnerabilità, i ricercatori e gli sviluppatori del kernel hanno implementato difese come SMAP, KASLR e kCFI. L’allocatore del kernel è progettato per limitare gli exploit che derivano da vulnerabilità della heap, imponendo una separazione grossolana della heap.
Panoramica tecnica e sfide
SLUBStick supera diverse sfide tecniche per sfruttare una vulnerabilità limitata della heap e ottenere una primitiva di lettura e scrittura arbitraria. La tecnica sfrutta un canale laterale temporale dell’allocatore del kernel per eseguire attacchi cross-cache in modo affidabile. SLUBStick opera in più fasi: inizialmente sfrutta un canale laterale temporale dell’allocatore per eseguire un attacco cross-cache. Successivamente, sfrutta modelli di codice prevalenti nel kernel Linux per convertire una vulnerabilità limitata della heap in una manipolazione della tabella delle pagine, ottenendo così la capacità di leggere e scrivere memoria in modo arbitrario.
Fasi di SLUBStick

- Raccolta di informazioni: SLUBStick utilizza un canale laterale temporale per raggruppare gli oggetti allocati in base ai loro slab. Misurando il tempo di allocazione di oggetti persistenti, è possibile determinare se l’oggetto proviene da un nuovo chunk di memoria, permettendo di raggrupparli correttamente.
- Riciclaggio e riutilizzo: SLUBStick innesca il processo di riciclaggio di un chunk di memoria mirato, assicurandosi che venga riutilizzato. Questo viene fatto deallocando gli oggetti raggruppati, costringendo il kernel a riciclare i chunk degli slab.
- Manipolazione della tabella delle pagine: SLUBStick alloca tabelle delle pagine per reclamare il chunk di memoria riciclato. Una volta ottenuta la primitiva di scrittura, manipola le voci della tabella delle pagine per ottenere capacità di lettura e scrittura arbitrarie sulla memoria.
Analisi e valutazione
SLUBStick è stato testato su due versioni del kernel Linux (v5.19 e v6.2) utilizzando sia vulnerabilità sintetiche che 9 CVE reali. I risultati dimostrano la sua indipendenza dall’architettura e dalla versione del kernel, evidenziando una minaccia significativa alla sicurezza del kernel.
SLUBStick rappresenta una nuova e significativa minaccia per la sicurezza del kernel Linux, in grado di superare le difese esistenti e ottenere capacità di lettura e scrittura arbitrarie sulla memoria. Le tecniche e le analisi presentate nel paper sottolineano la necessità di migliorare ulteriormente le misure di sicurezza nel kernel Linux.