OPPO Find X6 Pro GhostLock Anpassungsprojekt
Übersicht
Dieses Projekt befasst sich mit der Anpassung der Schwachstelle CVE-2026-43499 (GhostLock) auf dem OPPO Find X6 Pro (PGEM10).
Es basiert auf der ursprünglichen Exploit-Architektur von NebuSec CyberMeowfia und orientiert sich am Anpassungsansatz von oppo-ghostlock.
| Parameter | Wert |
|---|
| Gerät | OPPO Find X6 Pro (PGEM10) |
| Chip | Snapdragon 8 Gen 2 (SM8550) |
| Kernel | Linux 5.15.149-android13 #1 SMP PREEMPT |
| Build-Datum | Do, 13. Feb. 2025 |
| Android | 15 (ColorOS 15.0) |
| ROM-Version | PGEM10_15.0.0.600(CN01) |
| PAC | CONFIG_ARM64_PTR_AUTH_KERNEL=y |
| BTI | CONFIG_ARM64_BTI_KERNEL=y |
| KASLR | CONFIG_RANDOMIZE_BASE=y |
| VA_BITS | 39 |
| VA-Offset | P0_PAGE_OFFSET = 0xffffff8000000000 |
Zusammenfassung der Projektergebnisse
✅ Erledigt
❌ Blockiert
Projektstruktur
oppo-pgem10-ghostlock/
├── README.md # Diese Datei
├── 问题描述.md # Detaillierte Problembeschreibung
├── docs/
│ ├── architecture.md # Architekturentwurf und Aufrufketten
│ └── adaptation-guide.md # Anpassungsleitfaden für PAC-Kernel
├── reports/
│ ├── offsets.md # IDA-Offset-Validierungsbericht
│ ├── kaslr.md # KASLR-Analysebericht
│ └── summary.md # Abschließende Zusammenfassung
├── src/
│ ├── kaslr_perf.h # Perf KASLR wiederverwendbares Modul
│ └── kaslr_perf.c # Perf KASLR Implementierung
└── analysis/
└── chains/ # Skripte zur Aufrufkettenanalyse
Wichtige Konfigurationsunterschiede (PGEM10 vs Pixel 10)
CONFIG_ARM64_PTR_AUTH_KERNEL=y # ← Kernunterschied: PAC führt direkt zu Frame-Aufblähung
CONFIG_ARM64_BTI_KERNEL=y # BTI erhöht den Overhead weiter
CONFIG_SHADOW_CALL_STACK=y # SCS erhöht Stack-Frames
CONFIG_VMAP_STACK=y # Stack ist neu abbildbar
CONFIG_KASAN_HW_TAGS=y # Kompilierzeit aktiviert
CONFIG_ARM64_VA_BITS=39 # 39-Bit VA (nicht 48-Bit)
Grundursache der Blockade: PAC Stack-Frame-Aufblähung
Funktion Pixel 10 (kein PAC) PGEM10 (mit PAC)
__arm64_sys_futex 0x90 0x4C0
do_futex 0x70 0x420
futex_wait_requeue_pi 0x1A0 0x1B0
─────────────────────────────────────────────────────
Gesamttiefe Futex-Kette 0x300 0xA70 ← 3,5×
pselect Stack-Tiefe 0x620 0x620
Überschreibung möglich? ✅ JA ❌ NEIN (0xA70 > 0x620)
Die Aufrufkettenanalyse bestätigt: Im Kernel existiert 0 Aufrufketten mit einer Tiefe ≥ 0x800 (2048B).
Maximaler Einzelframe: 0x1F0 (496B).
Referenzen