
Exploit basato solo sui dati per CVE-2024-0582
Questo exploit implementa un metodo di attacco Dirty Cred per ottenere accesso in scrittura non autorizzato a /etc/passwd. A differenza di molti exploit simili che creano numerose pagine o spruzzano aggressivamente i file descriptor, questo approccio segue una via più mirata per corrompere le necessarie strutture del kernel.
Imposta l'affinità della CPU e aumenta il limite dei FD
Garantisce prestazioni stabili e un numero sufficiente di file descriptor per lo spray.
Inizializza io_uring
Crea un'istanza di io_uring e registra un buffer ring per l'uso della memoria del kernel.
Annulla la registrazione del buffer ring
Attiva la vulnerabilità, lasciando le strutture dati del kernel in uno stato sfruttabile.
Spray di file descriptor
Apre numerosi FD su /etc/passwd, sperando di corrompere l'oggetto del kernel desiderato.
Modifica la modalità del file
Corrompe i flag f_mode così che /etc/passwd diventi scrivibile.
Scrive la backdoor
Inserisce evil::0:0:root:/root:/bin/bash in /etc/passwd.
io_uring (testato su un kernel con il bug CVE-2024-0582)..rs).EXT4_FOPS_OFFSET in main.rs (il default è impostato su 0x122b3c0) a seconda della versione del tuo Linux. Una mancata corrispondenza può causare il fallimento dell'exploit o un comportamento errato.Se il tuo kernel esporta le informazioni sui simboli e hai i permessi necessari (spesso ciò è limitato sui sistemi di produzione), puoi leggere da /proc/kallsyms:
Ottieni l'indirizzo di _text:
grep " _text" /proc/kallsyms
Chiamiamo l'indirizzo risultante TEXT_ADDR.
Ottieni l'indirizzo di ext4_file_operations:
grep ext4_file_operations /proc/kallsyms
Chiamiamo l'indirizzo risultante EXT4_FOPS_ADDR.
Sottrai:
EXT4_FOPS_OFFSET = EXT4_FOPS_ADDR – TEXT_ADDR