
Reiner Daten-Exploit für CVE-2024-0582
Dieser Exploit implementiert eine Angriffsmethode namens Dirty Cred, um unbefugten Schreibzugriff auf /etc/passwd zu erlangen. Im Gegensatz zu vielen ähnlichen Exploits, die zahlreiche Speicherseiten erzeugen oder Dateideskriptoren aggressiv streuen, wählt dieser Ansatz einen gezielteren Weg, um die erforderlichen Kernel-Strukturen zu korrumpieren.
CPU-Affinität festlegen & FD-Limit erhöhen
Gewährleistet stabile Leistung und genügend Dateideskriptoren für den Spray.
io_uring initialisieren
Erstellt eine io_uring-Instanz und registriert einen Buffer-Ring für die Nutzung von Kernel-Speicher.
Buffer-Ring deregistrieren
Löst die Schwachstelle aus und hinterlässt die Kernel-Datenstrukturen in einem ausnutzbaren Zustand.
Dateideskriptor-Spray
Öffnet zahlreiche FDs auf /etc/passwd, in der Hoffnung, das gewünschte Kernel-Objekt zu korrumpieren.
Dateimodus ändern
Korrumpiert die f_mode-Flags, sodass /etc/passwd beschreibbar wird.
Backdoor-Eintrag schreiben
Fügt evil::0:0:root:/root:/bin/bash in /etc/passwd ein.
io_uring-Implementierung (getestet auf einem Kernel mit dem CVE-2024-0582-Bug)..rs-Quelldateien kompilieren).EXT4_FOPS_OFFSET in main.rs anpassen (Standardwert ist 0x122b3c0), abhängig von Ihrer Linux-Version. Eine Abweichung kann dazu führen, dass der Exploit fehlschlägt oder sich falsch verhält.Wenn Ihr Kernel Symbolinformationen exportiert und Sie über die entsprechenden Berechtigungen verfügen (dies ist auf Produktionssystemen oft eingeschränkt), können Sie aus /proc/kallsyms lesen:
Ermitteln Sie die Adresse von _text:
grep " _text" /proc/kallsyms
Nennen wir die resultierende Adresse TEXT_ADDR.
Ermitteln Sie die Adresse von ext4_file_operations:
grep ext4_file_operations /proc/kallsyms
Nennen wir die resultierende Adresse EXT4_FOPS_ADDR.
Subtrahieren:
EXT4_FOPS_OFFSET = EXT4_FOPS_ADDR – TEXT_ADDR