Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2026-43499 — PD2229B的43499(ghostlock)可行性研究 | Kitploit
Tools/GitHubGitHub/catxiaoshi/cve-2026-43499
Android-SicherheitPrivilege EscalationSchwachstellenanalyseExploitationReverse EngineeringMobile SicherheitBinary-Exploitation
GitHubcatxiaoshi/cve-2026-43499

cve-2026-43499

PD2229B的43499(ghostlock)可行性研究

Repository anzeigen
69vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
# Zusammenfassung des Exploit-Fehlschlags von GhostLock auf PD2229 (SM8475, 5.10.233 GKI)


## 1. Schwachstellen- und Gerätefakten

### 1.1 Grundlegende Informationen zu CVE-2026-43499 (GhostLock)

| Element | Wert |
|---|---|
| Schwachstellentyp | **Use-After-Free auf dem Stack** im rt_mutex / futex-PI-Pfad |
| Eingeführt in Version | Linux 2.6.39-rc1 (Mai 2011, Commit 8161239a8bcc) |
| Behoben in Version | Hauptlinie 7.1 (Commit 3bfdc63936dd), stabile Zweige: 6.1.175 / 6.6.140 / 6.12.86 / 6.18.27 / 7.0.4 |
| Voraussetzungen | `CONFIG_FUTEX_PI=y` (standardmäßig in Mainstream-Kerneln aktiviert) |
| CVSS | 7.8 Hoch |
| Exploit-Stabilität | 97 % in der ursprünglichen NebuSec-Kette, Root in ca. 5 Sekunden |
| kernelCTF-Belohnung | 92.337 USD |

**Betroffener Kernel-Bereich**:
- 2.6.39 ≤ Linux < 6.1.175 ✅ Betroffen
- 6.2 ≤ Linux < 6.6.140 ✅ Betroffen
- 6.7 ≤ Linux < 6.12.86 ✅ Betroffen
- 6.13 ≤ Linux < 6.18.27 ✅ Betroffen
- 6.19 ≤ Linux < 7.0.4 ✅ Betroffen
- **Android GKI 5.10 ist in keinem der Fix-Zweige enthalten** → 5.10.233 auf PD2229 **theoretisch betroffen**

### 1.2 PD2229-Gerätetests

| Element | Wert |
|---|---|
| SoC | Qualcomm SM8475 (Snapdragon 8 Gen 1 Plus) |
| Kernel-Version | 5.10.233-gki-g6e61de9f5b58 #1 SMP PREEMPT (24. Nov. 2025) |
| Android-Version | 15 (OriginOS 5) |
| Build-Zeitpunkt | 25.11.2025 |
| Android-Patchlevel | 01.11.2025 |
| `CONFIG_FUTEX_PI` | y ✅ |
| `CONFIG_UNMAP_KERNEL_AT_EL0` | y (KPTI aktiviert) |
| `kptr_restrict` | erzwungen |
| `CONFIG_IO_URING` | y ✅ (durch vmlinux-Symbole bestätigt, seccomp blockiert `io_uring_setup` nicht) |


---

## 2. Ideale Exploit-Kette vs. tatsächlicher Fortschritt auf PD2229

### 2.1 Ursprüngliche NebuSec-Kette (erfolgreich auf x86_64 / Pixel 10)

```
1. KASLR-Umgehung     → prefetch timing / PR_SET_MM_MAP auxv
2. UAF-Auslösung      → Drei-Thread-PI-Abhängigkeits-Deadlock → FUTEX_CMP_REQUEUE_PI gibt -EDEADLK zurück
3. Stack-Recycling    → PR_SET_MM_MAP kopiert auxv in den Waiter-Stackframe
4. rb_erase begrenztes Schreiben → Überschreiben von inet6_protos[IPPROTO_UDP]
5. CEA + ROP          → Kontrollfluss-Übernahme
6. core_pattern-Flip  → Root-Shell (97 % Erfolgsrate)
```

### 2.2 Tatsächlicher Fortschritt der einzelnen Phasen auf PD2229

| Phase | Status | Beschreibung |
|---|---|---|
| 1. KASLR-Umgehung | ✅ **Implementiert** | `perf_event_open` + Callchain-Sampling-Seitenkanal (gleiche Methode wie bei der OPPO Find X6 Pro 5.15.149-Anpassung) |
| 2. UAF-Auslösung | ✅ **Implementiert** | Drei-Thread-PI-Deadlock erfolgreich, FUTEX_CMP_REQUEUE_PI gibt -EDEADLK zurück |
| 3. Stack-Recycling-Primitive | ❌ **Architektonischer Fehlschlag** | Stackframes aller bekannten Syscalls überlappen nicht mit dem Waiter (Details in Abschnitt 3) |
| 4. rb_erase begrenztes Schreiben | ❌ Blockiert | Voraussetzungen nicht erfüllt |
| 5. inet6_protos-Überschreiben | ❌ Nicht begonnen | Hängt von Phase 4 ab |
| 6. ROP / Kontrollfluss-Übernahme | ❌ Nicht begonnen | Hängt von Phase 5 ab |
| 7. Root-Shell | ❌ Nicht begonnen | Hängt von Phase 6 ab |

---

## 3. Ergebnisse der erschöpfenden Suche nach Stack-Recycling-Primitiven (PD2229-Tests)

### 3.1 Wichtige Berechnungen zum Stackframe-Layout

```
Gesamttiefe des futex-Pfads:
  __arm64_sys_futex    0x90
  + do_futex           0xc0
  + futex_wait_requeue_pi  0x1b0
  = 0x300
Waiter-Position = SYS_SP - 0x300 + 0x20 = SYS_SP - 0x2e0

pselect-Pfad:
  core_sys_select Stackframe 0x1c0, stack_fds bei sp+0x50
  Überdeckungsbereich: ab SYS_SP - 0x1c0 + 0x50 = SYS_SP - 0x170
  Abstand zum Waiter (SYS_SP - 0x2e0) beträgt 0x170 (368 Bytes) → keine Überlappung
```

### 3.2 17 getestete Stack-Schreibmethoden

| # | Methode | Syscall | PD2229-Ergebnis | Hauptfehlergrund |
|---|---|---|---|---|
| 1 | `stamp_prctl` | `PR_SET_MM_MAP` | ❌ EPERM | Von Android hart blockiert |
| 2 | `stamp_pselect` | `pselect6` (NFDS=320) | ❌ Keine Überlappung | Waiter liegt 120B unterhalb von fd_set |
| 3 | `stamp_pselect` | `pselect6` (NFDS>336) | ❌ Heap-Allokation | kvmalloc-Pfad |
| 4 | `stamp_socket` | `MCAST_JOIN_SOURCE_GROUP` | ❌ Unzureichende Überdeckung | Schreibt nur `lock`-Feld |
| 5 | `stamp_sendmsg` | `sendmsg` | ❌ 80B vom Waiter entfernt | Stackframe 0x90 nicht tief genug |
| 6 | `stamp_sendmmsg` | `sendmmsg` | ❌ 112B vom Waiter entfernt | Stackframe unzureichend |
| 7 | `stamp_recvmmsg` | `recvmmsg` | ❌ Löscht task/lock | 0x1d0-Stackframe zerstört kritische Zeiger |
| 8 | `stamp_process_vm` | `process_vm_writev` | ❌ Keine Überlappung | Sub-Thread-Stack separat zugewiesen |
| 9 | `stamp_keyctl` | `KEYCTL_INSTANTIATE_IOV` | ❌ EOPNOTSUPP | Syscall nicht unterstützt + Stackframe 0x40 |
| 10 | `stamp_tcp` | `TCP_ZEROCOPY_RECEIVE` | ❌ Stackframe unzureichend | Geschätzte Tiefe nicht ausreichend |
| 11 | `stamp_futex` | `FUTEX_CMP_REQUEUE_PI` rekursiv | ❌ Logisch nicht machbar | Zerstört UAF-Fenster |
| 12 | binder ioctl | `BINDER_WRITE_READ` | ❌ EACCES | Shell hat keine /dev/binder-Berechtigung |
| 13 | `poll` | `poll` | ❌ Heap-Allokation | pollfd liegt auf dem Heap |
| 14 | `epoll_wait` | `epoll_wait` | ❌ Frame zu flach | Stackframe 0xE0 |
| 15 | `sched_setattr` | `sched_setattr` | ❌ Tiefe unzureichend | Stackframe 0xb0 |
| 16 | `timerfd_settime` | `timerfd_settime` | ❌ Kein Stack-Kopieren | Kein großer Stack-Puffer |
| 17 | `io_uring_register` | `IORING_REGISTER_*` | ❌ **Doppelter Fehlschlag** | ①Stackframe nur 0xF0, `copy_from_user`-Ziel fest bei `sp+0x8` (424 Bytes Differenz zum Waiter bei `sp+0x1D0`); ②Obwohl `io_uring_setup` nicht von seccomp blockiert wird (gibt EFAULT statt ENOSYS zurück), passt das Stack-Layout nicht |

**17/17 alle fehlgeschlagen.**

### 3.3 Grundursache des Fehlschlags

Das vom SM8475-5.10-GKI-Compiler (PGO + LTO + BOLT) auf PD2229 erzeugte Stack-Layout führt dazu, dass `stack_fds` von `core_sys_select` und `rt_mutex_waiter` von `futex_wait_requeue_pi` **architektonisch nicht überlappen**. Dies ist eine objektive, vom Compiler bestimmte Tatsache und kein Problem der Exploit-Technik.

Das JoinChang-Repository stellt klar: "The pselect stack overlay only works when the freed rt_mutex_waiter lands within the user-controllable region of the stack_fds buffer" — PD2229 erfüllt diese Bedingung nicht.

---

## 4. Vergleichende Analyse öffentlicher Referenz-Repositories

####  NebuSec/CyberMeowfia — Ursprüngliches Exploit-Framework
- **Repository**: https://github.com/NebuSec/CyberMeowfia
- **Ziel**: x86_64 Linux / Pixel 10 (6.x GKI)
- **Stack-Recycling**: `PR_SET_MM_MAP` kopiert auxv auf den Kernel-Stack
- **Erfolgsrate**: 97 %, ca. 5 Sekunden bis zur [Root-Shell]
- **PD2229-Anwendbarkeit**: ❌ `PR_SET_MM_MAP` wird auf Android mit EPERM blockiert

####  JoinChang/ghostlock-oneplus — OnePlus-Bootloader-Entsperrung (Jailbreak)
- **Repository**: https://github.com/JoinChang/ghostlock-oneplus
- **Verifizierte Geräte**:
  - OnePlus Ace 6T (PLR110, SM8845) — 6.12.38 GKI ✅
  - OnePlus 15 (PLK110, SM8845) — 6.12.23 GKI ✅
- **Technische Kernpunkte**:
  - Automatische Offset-Extraktion: kallsyms (28) + BTF (57) + abgeleitet (9) + Konstanten (12) = 103/103
  - pselect-Stack-Overlay, **SP-Differenz = -64**
  - `PSELECT_SHIFT = -2`
  - Exploit-Kette: futex-UAF → gefälschter Waiter → pselect kontrolliert Stack → rb_erase begrenztes Schreiben → selinux_state.enforcing=0 → cred mit init_cred überschrieben
- **Ausdrücklich als nicht machbar erklärt**: "Not Feasible (stack layout incompatible)" — gilt nur für Kernel, bei denen pselect stack_fds und Waiter überlappen
- **PD2229-Anwendbarkeit**: ❌ Kernel-Generation passt nicht (6.12 vs. 5.10), und Stack-Layout überlappt nicht

####  p2p3p/GhostLock-for-OnePlus — Vollständiger OnePlus-6.12-Exploit
- **Repository**: https://github.com/p2p3p/GhostLock-for-OnePlus
- **Verifiziert**: OnePlus Ace 6T (SM8845, 6.12.38) ✅
- **PD2229-Anwendbarkeit**: ❌ Wie JoinChang, Kernel-Generation passt nicht

####  YuKongA/ghostlock-oplus — OPPO Find N5/X8
- **Repository**: https://github.com/YuKongA/ghostlock-oplus
- **Kernel**: 6.6.118 GKI
- **PD2229-Anwendbarkeit**: ❌ Kernel-Generation passt nicht

####  OPPO Find X6 Pro (PGEM10) Anpassung — 5.15.149
- **Gerät**: SM8550, 5.15.149-android13, Android 15
- **Fortschritt**: ✅ KASLR-Umgehung (perf_event_open + Callchain-Sampling); spätere Phasen nicht vollständig öffentlich
- **Bedeutung**: Beweist, dass **KASLR-Umgehung auf 5.15 GKI machbar ist**, aber die Stack-Recycling-Phase wurde nicht öffentlich verifiziert


####  pubglite55/oppo-ghostlock — OPPO Find N2
- **Repository**: https://github.com/pubglite55/oppo-ghostlock
- **Gerät**: OPPO Find N2 (CPH2413, **SM8475**)
- **Kernel**: **5.10.236**-android12-9-o-g74d132f4467a
- **Android**: 16 (BP2A.250605.015)
- **Implementiert**:
  - ✅ Firefox CVE-2026-10702 AAW (Stufe 1)
  - ✅ KASLR-Bypass (direkte Berechnung von kaslr_base)
  - ✅ GhostLock-FUTEX-Auslösung (FUTEX_CMP_REQUEUE_PI ret=0)
  - ✅ KernelSnitch-mm_struct-Leak
  - ✅ sk_buff-Heap-Spraying (4/4 send erfolgreich)
  - ✅ IDA-Pro-Offset-Verifizierung mit 70+ Offsets
- **Kernblockade**:
  > "pselect kann die Waiter-Struktur nicht manipulieren — bei NFDS >336 liegt fd_set auf dem Heap; configfs/ashmem nicht unterstützt (ashmem SET_NAME wird abgeschnitten); alle anderen Kernel-Schreibpfade blockiert (/proc/self/mem, /dev/mem, binder)"
- **PD2229-Beziehung**: **Gleiche Plattform, gleiche Generation (SM8475, 5.10.236 vs. 5.10.233)**, nur 3 Minor-Versionen Unterschied, **steht vor exakt denselben architektonischen Einschränkungen**

####  harry1080/oppo-ghostlock — OPPO Find N2
- **Repository**: https://github.com/harry1080/oppo-ghostlock
- **Gerät**: OPPO Find N2 (CPH2413, SM8475)
- **Kernel**: 5.10.236-android12-9-o-g74d132f4467a
- **Android**: 16 (BP2A.250605.015)
- **Öffentliche Community-Erklärung**:
  > "pixel10 能利用的版本的 pselect stack_fds 正好和 rt_waiter 在内核栈上重合,这个部分实际上是最麻烦的地方,OPPO findN2 的内核这两个调用的栈部分完全不重合,或者重合也不可控,得找另外的控制栈的方法,要换其他可控内核栈的系统调用来构造栈,简单适配偏移是不可能成功的,**oppo 的 rt_waiter 完全与 pselect stack_fds 不重合**"
- **PD2229-Beziehung**: Ebenfalls SM8475 5.10 GKI wie PD2229, **Schlussfolgerung vollständig anwendbar**

### 4.3 Vergleichstabelle der Referenz-Repositories

| Repository | Gerät | SoC | Kernel | Stack-Recycling-Methode | Status | Wiederverwendbarkeit für PD2229 |
|---|---|---|---|---|---|---|
| NebuSec/CyberMeowfia | Pixel 10 | - | 6.x | `PR_SET_MM_MAP` | ✅ 97 % | ❌ Von Android blockiert |
| JoinChang/ghostlock-oneplus | OnePlus Ace 6T | SM8845 | 6.12.38 | pselect (SP-Diff=-64) | ✅ Verifiziert | ❌ Kernel-Generation passt nicht |
| p2p3p/GhostLock-for-OnePlus | OnePlus Ace 6T | SM8845 | 6.12.38 | pselect | ✅ Verifiziert | ❌ Kernel-Generation passt nicht |
| YuKongA/ghostlock-oplus | Find N5/X8 | - | 6.6.118 | pselect | ✅ | ❌ Kernel-Generation passt nicht |
| OPPO Find X6 Pro Anpassung | Find X6 Pro | SM8550 | 5.15.149 | perf KASLR + ? | 🟡 KASLR ✅, Rest nicht öffentlich | ❌ Andere Plattform |
| **pubglite55/oppo-ghostlock** | **Find N2** | **SM8475** | **5.10.236** | Erschöpfende Suche fehlgeschlagen | ❌ Kernblockade | ⚠️ **Gleiche Plattform, gleiche Generation, gleiches Schicksal** |
| **harry1080/oppo-ghostlock** | **Find N2** | **SM8475** | **5.10.236** | Erschöpfende Suche fehlgeschlagen | ❌ Architektonisch nicht machbar | ⚠️ **Gleiche Plattform, gleiche Generation, gleiches Schicksal** |
| **PD2229 (dieser Bericht)** | **PD2229** | **SM8475** | **5.10.233** | **Alle 17 Kandidaten fehlgeschlagen** | ❌ **Architektonisch nicht machbar** | **—** |

---

## 5. Wichtige Kernel-Symbole und Offsets (PD2229-vmlinux-Tests)

> Statische Basisadresse `0xffffffc008000000`, zur Laufzeit KASLR-Slide hinzufügen.

| Symbol | Adresse | Zweck |
|---|---|---|
| `rt_mutex_start_proxy_lock` | `0xffffffc00822baa8` | Einstiegspunkt für Schwachstellenauslösung |
| `futex_wait_requeue_pi` | `0xffffffc0082d7df4` | Waiter-Allokation, Stackframe 0x1b0 |
| `__arm64_sys_futex` | `0xffffffc0082dfe9c` | Stackframe 0x90 |
| `do_futex` | `0xffffffc0082d0768` | Stackframe 0xc0 |
| `core_sys_select` | `0xffffffc008634cf0` | pselect-Stackframe 0x1c0 |
| `____sys_sendmsg` | `0xffffffc0093eda88` | Stackframe 0x90 |
| `do_recvmmsg` | `0xffffffc0093ef49c` | Stackframe 0x1d0 |
| `__arm64_sys_io_uring_register` | `0xffffffc008aae328` | Stackframe 0x10+0x70 |
| `__io_uring_register` | `0xffffffc008aae5f8` | Stackframe 0x80 |
| `inet6_protos` | `0xffffffc00ab0a278` | Schreibziel für Phase 4 |
| `selinux_state` | `0xffffffc00aee8c70` | Ziel zum Deaktivieren von SELinux |
| `init_task` | `0xffffffc00ab0c240` | Quelle für cred-Lesen |

### rt_mutex_waiter-Struktur (vivo 5.10.233-Anpassung)

```c
struct rt_mutex_waiter {
    uint64_t private;           // +0x00  (vivo privates Feld)
    struct rb_node {
        uint64_t rb_parent_color; // +0x08
        uint64_t rb_right;        // +0x10  (vivo hat Reihenfolge getauscht)
        uint64_t rb_left;         // +0x18
    } tree;
    struct task_struct *task;   // +0x20
    struct rt_mutex *lock;      // +0x28
};
// Gesamtgröße 0x30 (48 Bytes)
```

---

## 6. Implementiert vs. zu implementieren

### ✅ Implementierte Infrastruktur

1. **KASLR-Umgehung** — `perf_event_open` + Callchain-Sampling (gleiche Methode wie OPPO Find X6 Pro 5.15.149)
2. **UAF-Auslösung** — Drei-Thread-PI-Deadlock, FUTEX_CMP_REQUEUE_PI gibt -EDEADLK zurück
3. **Vollständige Symboltabelle** — 103+ Symbole per IDA verifiziert (gemäß der 103/103-Extraktionsmethodik von JoinChang)
4. **rt_mutex_waiter-Strukturlayout** — vivo-Anpassungsoffsets bestätigt
5. **Präzise Stackframe-Layout-Analyse** — Tiefenberechnung für futex- und pselect/io_uring-Pfade abgeschlossen
6. **Erschöpfender Ausschluss von 17 Stack-Recycling-Kandidaten** — Vollständige "Nicht-machbar"-Matrix erstellt

### ❌ Nicht implementiert (Kernblockade)

1. **Stack-Recycling-Primitive** — Compiler-Stack-Layout von SM8475 5.10 GKI macht es architektonisch unbrauchbar
2. **Begrenzte Schreib-Primitive** — rb_erase kann wegen fehlgeschlagenem Stack-Recycling nicht ausgelöst werden
3. **Alle nachfolgenden Phasen** — Kaskadierende Blockade

---

## 7. Endgültige Schlussfolgerung

> ⚠️ **GhostLock (CVE-2026-43499) ist auf PD2229 (vivo X Fold+, SM8475, 5.10.233 GKI, Android 15 OriginOS 5) nicht ausnutzbar.**
>
> **Die Grundursache ist das vom SM8475-5.10-GKI-Compiler (PGO+LTO+BOLT) erzeugte Stack-Layout, das dazu führt, dass die Stackframes aller bekannten Syscalls architektonisch nicht mit `rt_mutex_waiter` überlappen**. Dies ist eine objektive, vom Compiler bestimmte Tatsache und kein Problem der Exploit-Technik.

**Alle erfolgreichen Exploit-Fälle betreffen 6.6/6.12 GKI**, da die Compiler-Ausgabe dieser neueren Kernel dazu führt, dass pselect fd_set und Waiter perfekt überlappen (SP-Diff=-64). 5.10 GKI bietet diese Bedingung nicht.

---

### Etablierte Infrastruktur
- ✅ KASLR-Umgehungs-Primitive (perf_event_open-Seitenkanal)
- ✅ 103+ Kernel-Symbole und Offsets
- ✅ rt_mutex_waiter-Strukturlayout
- ✅ UAF-Auslösungsfähigkeit
- ✅ Ausschlussmatrix für 17 Stack-Recycling-Kandidaten

## 9. Referenz-Repository-Index

| Repository | URL | Schlüsselwert |
|---|---|---|
| NebuSec/CyberMeowfia | https://github.com/NebuSec/CyberMeowfia | Ursprüngliches Exploit-Framework, 97 % Erfolgsrate |
| JoinChang/ghostlock-oneplus | https://github.com/JoinChang/ghostlock-oneplus | Erfolgreiche 6.12-GKI-Anpassung, 103-Offset-Extraktionsmethodik |
| p2p3p/GhostLock-for-OnePlus | https://github.com/p2p3p/GhostLock-for-OnePlus | Vollständige 6.12-GKI-Exploit-Kette |
| YuKongA/ghostlock-oplus | https://github.com/YuKongA/ghostlock-oplus | 6.6-GKI-OPPO-Anpassung |
| pubglite55/oppo-ghostlock | https://github.com/pubglite55/oppo-ghostlock | **SM8475 5.10.236-Fehlschlagsreferenz auf gleicher Plattform** |
| harry1080/oppo-ghostlock | https://github.com/harry1080/oppo-ghostlock | **SM8475 5.10.236-Fehlschlagsreferenz auf gleicher Plattform** |
| NebuSec-Technische Analyse | https://nebusec.ai/research/ionstack-part-2/ | Technische Details der ursprünglichen GhostLock-Kette |
| Upstream-Fix | Commit 3bfdc63936dd | Fix-Code |

---
Tool herunterladen