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
GhostLock-for-OnePlus — (CVE-2026-43499)内核漏洞利用程序,适用于未解锁 Bootloader 的一加设备。 | Kitploit
Tools/GitHubGitHub/p2p3p/ghostlock-for-oneplus
Android SecurityPrivilege EscalationExploitationPost-ExploitationLearning & EducationPayload DevelopmentBinary Exploitation
GitHubp2p3p/ghostlock-for-oneplus

GhostLock-for-OnePlus

(CVE-2026-43499)内核漏洞利用程序,适用于未解锁 Bootloader 的一加设备。

Repository anzeigen
3613vor 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

GhostLock — OnePlus

中文

Kernel-Exploit für OnePlus-Geräte mit gesperrtem Bootloader. Nutzt CVE-2026-43499 aus, um Root-Zugriff zu erhalten ohne den Bootloader zu entsperren oder boot.img zu modifizieren.

Nur für autorisierte Sicherheitsforschung und Bildungszwecke.


Inhaltsverzeichnis

  • Schwachstellenübersicht
  • Unterstützte Geräte
  • Voraussetzungen
  • Erstellen
  • Verwendung
  • Ausführungsmodi
  • Technische Details
  • Dateistruktur
  • Hinzufügen neuer Geräte
  • FAQ

Schwachstellenübersicht

ElementDetail
CVECVE-2026-43499
TypFutex-PI (Priority Inheritance) Use-After-Free
BereichLinux-Kernel 2.6.39 ~ 7.1
Behoben inMainline 7.1 (Commit 3bfdc63936dd)
Android-StatusGKI 6.12.x weiterhin angreifbar

Grundursache

Der Syscall pselect6 kopiert fd_set auf den Kernel-Stack. In Kombination mit dem Futex-PI-Waiter-Mechanismus kann ein freigebener Stack-Frame als rt_mutex_waiter-Struktur neu zugewiesen werden. Während der PI-Kettendurchläufe schreibt der RB-Baum-Ausgleich kontrollierte Daten an beliebige Kernel-Adressen.

Kette

root@kitploit:~
futex PI UAF (CVE-2026-43499)
  ├─ Fälschen eines rt_mutex_waiter-Objekts
  ├─ Kontrolle des Kernel-Stacks über pselect/select fd_set-Layout
  ├─ Auslösen einer rt_mutex-PI-Operation für beliebiges Schreiben
  ├─ Schreiben 1: selinux_state.enforcing = 0
  └─ Schreiben 2: cred → init_cred (uid=0, volle Capabilities)

Unterstützte Geräte

Andere OnePlus-Geräte derselben SoC-Familie, Android 16 oder Kernel 6.12.x können durch Extraktion von boot.img-Offsets angepasst werden.


Voraussetzungen

ksud (Erforderlich für KernelSU)

GhostLock übernimmt die Privilegienausweitung. Die Installation von KernelSU erfordert ksud (gebündelt mit KMI-spezifischem kernelsu.ko):

QuelleHinweise
ReSukiSU APK (empfohlen)Installiere ReSukiSU; die APK enthält

Ohne ksud erhält der Exploit weiterhin eine uid=0 Root-Shell, aber KernelSU wird nicht installiert und su bleibt nicht dauerhaft bestehen.


Erstellen

Voraussetzungen

  • Android NDK (r25+)
  • Setze ANDROID_NDK_HOME oder ANDROID_NDK_ROOT

Build

root@kitploit:~
# Standard (API 35)
make

# API-Level angeben
make API=34

# NDK-Pfad angeben
NDK=/pfad/zu/android-ndk make

Artefakt

ghostlock — statisch gelinkte ARM64-ELF-Datei.


Verwendung

Einmalige Einrichtung

root@kitploit:~
# 1. ADB TCP-Modus aktivieren
adb tcpip 5555

# 2. ADB-Schlüssel pushen (erforderlich für Bootstrap-Modus)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. Exploit pushen
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

Nach dem ersten Erfolg setzt resetprop automatisch persist.adb.tcp.port=5555, sodass bei nachfolgenden Neustarts vollautomatische Ausführungen möglich sind.


Ausführungsmodi

Vollständiger Exploit (ADB-Shell-Kontext)

root@kitploit:~
/data/local/tmp/a/e
  • perf verfügbar, präzises Leaken von child_task_struct
  • Zwei Stufen: W1 SELinux deaktivieren → W2 Privilegienausweitung → KernelSU laden

Bootstrap-Modus (App-Kontext, seccomp eingeschränkt)

root@kitploit:~
/data/local/tmp/a/e --bootstrap
  1. Schreiben 1 → SELinux deaktivieren
  2. Mit freigegebenen Berechtigungen setprop ausführen, um ADB TCP 5555 zu aktivieren
  3. Integrierter Mini-ADB-Client verbindet sich mit 127.0.0.1:5555
  4. RSA-Authentifizierung mit zuvor gepushtem Schlüssel
  5. Vollständiger Exploit über ADB-Shell (ohne seccomp)

Nur Schreiben 1

root@kitploit:~
/data/local/tmp/a/e --write1
  • Bis zu 20 Versuche
  • Nützlich zum Debugging oder zum vorübergehenden Deaktivieren von SELinux

Technische Details

1. Runtime-Kernel-Matching

Offsets werden in src/devices/offsets.h – einer Lookup-Tabelle – gespeichert, indiziert durch uname -r. Das Programm matcht automatisch beim Start; unbekannte Kernel werden abgelehnt.

root@kitploit:~
static const struct kernel_offsets known_offsets[] = {
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14275539-4k", ...),
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14552068-4k", ...),
  OFFSETS_ENTRY("6.12.23-android16-5-...-ab14541642-4k", ...),
  { .uname_r = NULL }  /* Sentinel */
};

Offset-Quellen

BTF-verifizierte Strukturen

2. KASLR-Umgehung

SLIDE-Modus — boot_id-Leak

Wenn Kernel-Pointer eingeschränkt sind (kptr_restrict), lecke die Basisadresse über boot_id, das mit einer Kernel-Adresse überschrieben wurde:

root@kitploit:~
Lese /proc/sys/kernel/random/boot_id
  └─ UUID enthält nfulnl_logger-Adresse
      └─ KASLR-Slide = geleakte_Adresse - image_offset
          └─ kaslr_base

FOPS/CFI-Modus — fops-Tabellen-Leak

Wenn das ashmem-Gerät zugänglich ist, verwende configfs-Lese-/Schreib-Primitive, um Funktionszeiger aus der ashmem-fops-Tabelle zu lesen und den KASLR-Offset zu berechnen.

3. Kernel-Heap-Spray

Fälsche Kernel-Objekte auf Order-3-Seiten (32KB):

  • Gefälschte file_operations — übernehme ashmem-miscdevice-fops-Zeiger
  • Gefälschter rt_mutex_waiter — simuliere PI-Ketten-Waiter-Knoten
  • Gefälschte task_struct — Task-Referenz während PI-Durchlauf
  • Gefälschter rt_mutex (Lock) — korrekte Waiter-/Owner-Informationen

Implementiert über SKB (Socket-Buffer) + KernelSnitch:

  • KernelSnitch — Futex-Hash-Kollision zum Leaken von mm_struct-Adressen
  • SKB-Spray — sendmsg zum Füllen des Kernel-Heaps

4. Physikalischer Speicher L/Schreiben (Pipe)

Nach Erhalt der KASLR-Basis verwende Pipe-Buffer für physischen Speicherzugriff:

root@kitploit:~
1. Lokalisiere Pipe-Buffer in der Physmap
2. Fälsche pipe_buffer-ops-Tabelle, die auf bekannte pipe_buf_ops zeigt
3. Übernehme pipe_buffer.page, um auf die Ziel-Physische-Adresse zu zeigen
4. Beliebiges physisches Lesen/Schreiben über normale Pipe-Operationen

Unterstützt: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Zwei-Stufen-Schreiben

Schreiben 1 — SELinux deaktivieren

root@kitploit:~
Ziel: selinux_state.enforcing (Offset 0x00)
Methode: Child-Knoten-PI-Schreiben → fälsche waiter __rb_parent_color
         der auf selinux_enforcing - 8 zeigt
         RB-Baum-Ausgleich schreibt 0x00

Schreiben 2 — Auf Root-Ebene eskalieren

root@kitploit:~
Ziel: child-Prozess-cred-Zeiger
Methode: 1. fork child → perf_find_task() lokalisieren task_struct
         2. cred-Feld-Offset berechnen
         3. Child-Knoten-PI-Schreiben → cred = init_cred (uid=0, volle Caps)
         4. seccomp löschen (TIF_SECCOMP + seccomp-Struktur genullt)

Nach dem cred-Überschreiben erfolgt eine Capability-Rücklese-Überprüfung.

6. Integrierter Mini-ADB-Client

src/core/miniadb.c — leichter ADB-Protokoll-Client für den Bootstrap-Modus:

root@kitploit:~
1. TCP-Verbindung 127.0.0.1:5555
2. A_CNXN → Verbindungsanfrage
3. A_AUTH → RSA-Token-Challenge
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → signierte Antwort
6. A_CNXN → Verbindung hergestellt
7. A_OPEN "shell:/data/local/tmp/a/e" → vollständiger Exploit

Unterstützt SHA-1- und SHA-256-Signaturalgorithmen.


Dateistruktur

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # Build-Konfiguration (NDK-Cross-Compile)
├── README.md                       # Dokumentation
├── src/
│   ├── core/                       # Kern-Exploit-Code
│   │   ├── main.c                  # Einstiegspunkt: Zwei-Stufen-Schreiben + Root-Shell
│   │   ├── fops.c                  # FOPS/CFI-Modus: pselect-Route, PI-Schreiben, KASLR-Leak
│   │   ├── util.c                  # Hilfsfunktionen: Heap-Spray, KASLR, Kernel R/W-Primitive
│   │   ├── slide.c                 # SLIDE-Modus: boot_id KASLR-Leak + pselect-Route
│   │   ├── pipe.c                  # Pipe-Buffer physischer Speicher L/Schreiben (physrw)
│   │   ├── root.c                  # Cred-Überschreiben, seccomp löschen, Root-Child-Verwaltung
│   │   ├── miniadb.c               # Integrierter ADB-Client (TCP + RSA-Auth)
│   │   ├── common.h                # Globale Makros, Strukturen, Deklarationen, Konstanten
│   │   ├── target.h                # Zielspeicherlayout / Struktur-Offsets / KASLR-Parameter
│   │   ├── offset.h                # Compile-Zeit-Zielkonfigurationsbrücke (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/           # KernelSnitch — mm_struct-Adressen-Leak
│   │       ├── kernelsnitch.h      # Kernalgorithmus: Futex-Hash-Kollision + Brute-Force
│   │       ├── futex_hash.h        # Futex-Hash-Funktion
│   │       ├── timeutils.h         # CPU-Zeitstempel-Messung (RDTSC)
│   │       └── utils.h             # Hilfsmakros (pr_info / SYSCHK / ASSERT usw.)
│   └── devices/                   # Geräte-Offset-Tabellen
│       ├── offsets.h              # Aggregiert alle Geräte-Offsets (Lookup-Tabelle + Sentinel)
│       ├── ace6t/offsets.h        # OnePlus Ace 6T Offsets (2 Kernel-Versionen)
│       └── op15/offsets.h         # OnePlus 15 Offsets (1 Kernel-Version)
└── tools/                         # Offset-Extraktions-Toolchain
    ├── extract_target.py          # Extrahiere Kallsyms globale Symbol-Offsets (28 Elemente)
    └── extract_btf.py             # Extrahiere BTF-Strukturfeld-Offsets (57 Elemente)

Modulübersicht


Hinzufügen neuer Geräte

Nur das boot.img des Zielgeräts wird benötigt — kein Root, kein Gerätezugriff erforderlich.

Offsets extrahieren

root@kitploit:~
# 1. Kernel aus boot.img extrahieren
python -c "import struct; d=open('boot.img','rb').read(); \
           open('kernel','wb').write(d[4096:4096+struct.unpack_from('<I',d,8)[0]])"

# 2. Kallsyms holen (root: adb shell su -c 'cat /proc/kallsyms' > kallsyms.txt)
#    Oder aus vmlinux: nm vmlinux > kallsyms.txt

# 3. Globale Symbol-Offsets extrahieren
python tools/extract_target.py     # 28 Offsets, automatisch verifiziert

# 4. Strukturfeld-Offsets extrahieren
python tools/extract_btf.py kernel  # 57 Offsets, automatisch verifiziert

Anpassungsschritte

  1. Erstelle src/devices/<name>/offsets.h (siehe ace6t/offsets.h)
  2. #include in src/devices/offsets.h hinzufügen
  3. Falls nötig, KIMAGE_TEXT_BASE und Speicherlayout in src/core/target.h aktualisieren
  4. Neu erzeugen

Geräteübergreifende Optimierung


FAQ

F: Keine Ausgabe beim Ausführen?

Stelle sicher, dass du in einer ADB-Shell ausführst. Der App-Kontext erfordert --bootstrap.

F: "no offsets for this kernel"?

Deine Kernel-Version wird noch nicht unterstützt. Folge den Schritten unter Hinzufügen neuer Geräte, um Offsets zu extrahieren und neu zu erzeugen.

F: Schreiben 1 schlägt ständig fehl?

  • Stelle sicher, dass du auf den richtigen CPU-Kern festlegst (CORE-Makro)
  • Optimiere die PSELECT_ENTER_DELAY_USEC-Timings
  • Prüfe auf störende Prozesse

F: Schreiben 2 perf gibt 0 zurück?

  • Prüfe, ob seccomp perf_event_open blockiert (verwende --bootstrap im App-Kontext)
  • Verifiziere, dass die KASLR-Umgehung erfolgreich war (kaslr_base gültig)

F: KernelSU lädt nicht?

  • Bestätige, dass ksud existiert und ausführbar ist
  • Überprüfe die Integrität der Netzwerkrichtliniendatei (load_policy-Fix)

Lizenz

Nur für autorisierte Sicherheitsforschung und Bildungszwecke.

Tool herunterladen
GerätCodenameSoCKernelFirmwareStatus
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14275539-4kColorOS 16.0.2.403✅ Verifiziert
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14552068-4kColorOS 16.0.8.301✅ Verifiziert
OnePlus 15PLK110SM8845 (Snapdragon 8s Elite)6.12.23-android16-5-...-ab14541642-4k—✅ Verifiziert
libksud.so
CI ReleaseHerunterladen von ReSukiSU CI (ksud-aarch64-linux-android.zip)
TypAnzahlExtraktion
kallsyms globale Symbole28tools/extract_target.py
BTF-Strukturfelder57tools/extract_btf.py
Abgeleitete Werte9Automatisch berechnet
Feste Konstanten12Hartcodiert
StrukturFelderZweck
task_struct17Prozessdeskriptor, cred, seccomp
rt_mutex_waiter6UAF-Fälschungsziel
cred4Anmeldeinformationen, Capabilities
seccomp3Seccomp-Filterstatus
pipe_inode_info11Pipe-Buffer-Operationen
file_operations13Gefälschte fops-Tabelle
mm_struct1Speicherdeskriptor-Eigentümer
ModulDatei(en)Verantwortlichkeit
Einstiegmain.cCLI-Parsing, W1/W2-Dispatch, Bootstrap-Ablauf
PI-Routefops.c / slide.cpselect/select-Stack-Layout, Futex-PI-Ketten-Manipulation
KASLRutil.c / fops.c / slide.cDual-Mode-Umgehung: boot_id-Leak + fops-Tabellen-Leak
Heap Sprayutil.cOrder-3-Seitenallokation, SKB-Spray, Fälschung von Objekt-Layouts
Phys. L/Schrpipe.cPipe-Buffer-Übernahme, beliebiger physischer Speicherzugriff
Privilegien-Ausw.root.cCred-Überschreiben, Capability-Überprüfung, seccomp löschen
ADBminiadb.cLeichter ADB-Protokoll-Client, RSA-Authentifizierung
Leak-Enginekernelsnitch/Futex-Hash-Kollision für mm_struct-Position
ElementHinweise
VA_BITS48 vs 39 → target.h Speicherlayout aktualisieren
TimingPasse PSELECT_*-Parameter in common.h an
AshmemC vs Rust-Implementierung → Symbol-Matching in extract_target.py aktualisieren
SecureguardNicht-OnePlus-Geräte können die Bereitstellung vereinfachen