
Proof-of-concept-Exploit-Kette für CVE-2026-43499, die auf OPPO MT6835 Android-Geräte abzielt, mit Preload-Payload, Build-System und Analyse-Notizen für defensiv ausgerichtete Forschung.
GhostLock: Linux-Kernel-futex-PI-Use-After-Free-Schwachstelle, CVE-2026-43499. Angreifer nutzen PI-futex-Abhängigkeitsschleifen aus, um eine Race Condition auszulösen und so lokale Rechteausweitung auf Kerneln mit
CONFIG_FUTEX_PI=yzu erreichen.Ziel: OPPO PLS120 (OP5E1C) — Android 17, Kernel
5.15.180-android13-8-o-g7b9cfca06464Analyseumgebung: Ubuntu 24.04 x86_64 + Android NDK r29 (clang 21.0.0, API 35)
Quell-Repository: NebuSec/CyberMeowfia — IonStack/CVE-2026-43499
Dieses Projekt untersucht die Machbarkeit der Ausnutzung von GhostLock (CVE-2026-43499) zur Erlangung von Root-Rechten auf einem OPPO PLS120 (OP5E1C)-Gerät. Durch die systematische Überprüfung aller bekannten KASLR-Leak-Pfade wird bestätigt, dass die Sicherheitshärtungskombination dieses Geräts eine nicht umgehbare SchutzKette bildet.
| Phase | Status | Beschreibung |
|---|---|---|
| Phase 1: boot.img-Analyse & Symbol-Extraktion | ✅ Abgeschlossen | boot.img aus dem OTA-Paket extrahiert → vmlinux-to-elf-Symboltabelle rekonstruiert (159.668 Symbole) |
| Phase 2: preload.so-Kompilierung | ✅ Abgeschlossen | Android NDK r29 Cross-Kompilierung, erzwungener Echtzeit-Logging-Mechanismus auf Datenträger |
| Phase 3: Fehlerdiagnose und iterative Fehlerbehebung | 🔄 In Bearbeitung | MM_STRUCT_SZ, MTE-Unterstützung, SLIDE-Überspringungslogik bereits behoben |
Die Sicherheitshärtung des OPPO PLS120 blockiert die Exploit-Kette umfassend:
| Härtungsmaßnahme | Auswirkung |
|---|---|
CONFIG_SLAB_FREELIST_HARDENED=y | Verhindert KernelSnitch-Slab-Kollisionen |
CONFIG_KASAN_HW_TAGS=y (MTE) | Adress-Tags erhöhen die Bruteforce-Komplexität |
CONFIG_CFI_CLANG=y | Kontrollflussintegrität |
| SELinux-Shell-Domain-Richtlinie | Blockiert perf_event_open + /proc/kallsyms |
CONFIG_CHECKPOINT_RESTORE=n | Blockiert den PR_SET_MM_MAP-Pfad |
| wchan-Fix-Backport | Verhindert das Leaken von Kernel-VA über /proc/<pid>/stat |
| Ansatz | Status | Grund |
|---|---|---|
| perf_event_open callchain | ❌ | EACCES (SELinux-Shell-Domain blockiert) |
| /proc/kallsyms | ❌ | EACCES (kptr_restrict + SELinux) |
| wchan (/proc/<pid>/stat Feld 35) | ❌ | Kernel hat v5.16-Fix angewendet (gibt 1 statt Kernel-VA zurück) |
| SLIDE-Seitenkanal (boot_id-Überschreibung) | ❌ | nfulnl-Modul nicht ladbar |
| PR_SET_MM_MAP-Stack-Recycling | ❌ | CONFIG_CHECKPOINT_RESTORE=n |
| KernelSnitch (futex-Hash-Timing) | ⚠️ Gelegentlich erfolgreich | big.LITTLE-Timing-Rauschen beeinträchtigt die Stabilität |
SLIDE_MAX_ATTEMPTS=1 wird die SLIDE-Endlosschleife übersprungen!route_signal-Abbruchs, wodurch 24 Wiederholungen ermöglicht werdenDieses Projekt untersucht die Machbarkeit der Ausnutzung von GhostLock (CVE-2026-43499) zur Root-Rechteausweitung auf einem OPPO PLS120 (OP5E1C)-Gerät. Nach systematischer Prüfung aller bekannten KASLR-Leak-Pfade bildet die Sicherheitshärtungskonfiguration des Geräts eine nicht umgehbare Verteidigungskette gegen diesen Exploit.
| Phase | Status | Beschreibung |
|---|---|---|
| Phase 1: boot.img-Analyse | ✅ Abgeschlossen | boot.img aus OTA extrahiert → vmlinux-to-elf-Symbolrekonstruktion (159.668 Symbole) |
| Phase 2: preload.so-Build | ✅ Abgeschlossen | Mit Android NDK r29 cross-kompiliert, Echtzeit-Disk-Logging erzwungen |
| Phase 3: Diagnose & Iteration | 🔄 In Bearbeitung | MM_STRUCT_SZ, MTE-Unterstützung, SLIDE-Bypass-Logik korrigiert |
OPPO PLS120 blockiert die Exploit-Kette auf mehreren Ebenen:
| Härtungsfunktion | Auswirkung |
|---|---|
CONFIG_SLAB_FREELIST_HARDENED=y | Blockiert KernelSnitch-Slab-Kollision |
CONFIG_KASAN_HW_TAGS=y (MTE) | Adress-Tags erhöhen die Brute-Force-Komplexität |
CONFIG_CFI_CLANG=y | Control Flow Integrity |
| SELinux-Shell-Domain-Richtlinie | Blockiert perf_event_open + /proc/kallsyms |
CONFIG_CHECKPOINT_RESTORE=n | Blockiert den PR_SET_MM_MAP-Pfad |
| wchan-Fix-Backport | Blockiert Kernel-VA-Leak über /proc/<pid>/stat |
| Methode | Status | Grund |
|---|---|---|
| perf_event_open callchain | ❌ | EACCES (SELinux-Shell-Domain) |
| /proc/kallsyms | ❌ | EACCES (kptr_restrict + SELinux) |
| wchan (/proc/<pid>/stat Feld 35) | ❌ | Kernel hat Backport des v5.16-Fixes (gibt 1 statt Kernel-VA zurück) |
| SLIDE-Seitenkanal (boot_id-Überschreiben) | ❌ | nfulnl-Modul nicht ladbar |
| PR_SET_MM_MAP Stack-Reclaim | ❌ | CONFIG_CHECKPOINT_RESTORE=n |
| KernelSnitch (futex-Hash-Timing) | ⚠️ Intermittierend | big.LITTLE-Timing-Rauschen beeinträchtigt die Stabilität |
SLIDE_MAX_ATTEMPTS=1 umgangen!route_signal entfernt, ermöglicht 24 Wiederholungen/home/ubuntu/CyberMeowfia/
├── devices/ # Target device artifacts (OTA zip, config.gz, etc.)
├── work_bootimg/ # boot.img analysis output
│ └── oppo/ # OPPO-specific kernel data
│ ├── kernel.dec # Decompressed ARM64 Image (47MB)
│ ├── vmlinux_extracted.elf # Reconstructed vmlinux with symbols (159,668)
│ ├── kallsyms_oppo.txt # Full symbol table
│ └── kernel_config_oppo # Kernel .config (189KB)
├── IonStack/CVE-2026-43499/exploit/ # Exploit source code
│ ├── src/ # Source files (slide.c, fops.c, main.c, etc.)
│ │ ├── kernelsnitch/ # KernelSnitch futex hash timing module
│ │ └── targets/
│ │ └── oppo-pls120-BP2A.250605.015/ # OPPO-specific target configuration
│ └── build/ # Compiled binaries
├── unpack_bootimg.py # Python boot.img unpacker (v3/v4)
├── report.md # Phase 1 analysis report (Chinese)
├── GhostLock_CVE202643499_OPPO_PLS120_研究报告.md # Full research report (Chinese, 620 lines)
└── CVE202643499.txt # Research plan document
| Datei | Beschreibung |
|---|---|
report.md | Phase-1-Analyse: boot.img-Entpacken, vmlinux-Extraktion, Offset-Validierung |
GhostLock_CVE202643499_OPPO_PLS120_研究报告.md | Vollständiger Forschungsbericht: kompletter Ablauf, alle Iterationen, Fehleranalyse, Schlussfolgerungen (620 Zeilen) |
Befindet sich unter IonStack/CVE-2026-43499/exploit/src/targets/oppo-pls120-BP2A.250605.015/target.h: