Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
GhostLock-for-OnePlus — (CVE-2026-43499) Exploit del kernel per dispositivi OnePlus con bootloader non sbloccato. | Kitploit
Strumenti/GitHubGitHub/p2p3p/ghostlock-for-oneplus
Sicurezza AndroidEscalation di PrivilegiExploitPost-ExploitApprendimento e FormazioneSviluppo PayloadBinary Exploitation
GitHubp2p3p/ghostlock-for-oneplus

GhostLock-for-OnePlus

(CVE-2026-43499) Exploit del kernel per dispositivi OnePlus con bootloader non sbloccato.

Vedi Repository
3613482 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

GhostLock — OnePlus

中文

Exploit del kernel destinato a dispositivi OnePlus con bootloader bloccato. Utilizza CVE-2026-43499 per ottenere accesso root senza sbloccare il bootloader né modificare boot.img.

Solo per ricerca di sicurezza autorizzata e scopi educativi.


Sommario

  • Panoramica della vulnerabilità
  • Dispositivi supportati
  • Prerequisiti
  • Compilazione
  • Utilizzo
  • Modalità di esecuzione
  • Dettagli tecnici
  • Struttura dei file
  • Aggiungere nuovi dispositivi
  • FAQ

Panoramica della vulnerabilità

ElementoDettaglio
CVECVE-2026-43499
TipoUse-After-Free in Futex PI (Priority Inheritance)
AmbitoKernel Linux 2.6.39 ~ 7.1
Corretto inMainline 7.1 (commit 3bfdc63936dd)
Stato AndroidGKI 6.12.x ancora vulnerabile

Causa principale

La chiamata di sistema pselect6 copia fd_set nello stack del kernel. Quando combinata con il meccanismo del waiter futex PI, un frame di stack liberato può essere riallocato come struttura rt_mutex_waiter. Durante la traversata della catena PI, il ribilanciamento dell'albero rb scrive dati controllati in indirizzi arbitrari del kernel.

Catena

futex PI UAF (CVE-2026-43499)
  ├─ Forgiare oggetto rt_mutex_waiter
  ├─ Controllare lo stack del kernel tramite il layout fd_set di pselect/select
  ├─ Attivare l'operazione rt_mutex PI per scrittura arbitraria
  ├─ Scrittura 1: selinux_state.enforcing = 0
  └─ Scrittura 2: cred → init_cred (uid=0, capacità complete)

Dispositivi supportati

DispositivoNome in codiceSoCKernelFirmwareStato
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14275539-4kColorOS 16.0.2.403✅ Verificato
OnePlus Ace 6TPLR110SM8845 (Snapdragon 8s Elite)6.12.38-android16-5-...-ab14552068-4kColorOS 16.0.8.301✅ Verificato
OnePlus 15PLK110SM8845 (Snapdragon 8s Elite)6.12.23-android16-5-...-ab14541642-4k—✅ Verificato

Altri dispositivi OnePlus sulla stessa famiglia SoC, Android 16 o kernel 6.12.x possono essere adattati tramite l'estrazione degli offset da boot.img.


Prerequisiti

ksud (Richiesto per KernelSU)

GhostLock gestisce l'elevazione dei privilegi. L'installazione di KernelSU richiede ksud (in bundle con kernelsu.ko specifico per KMI):

FonteNote
APK ReSukiSU (consigliato)Installare ReSukiSU; l'APK contiene libksud.so
Rilascio CIScaricare da ReSukiSU CI (ksud-aarch64-linux-android.zip)

Senza ksud, l'exploit ottiene comunque una shell root con uid=0, ma KernelSU non verrà installato e su non persisterà.


Compilazione

Prerequisiti

  • Android NDK (r25+)
  • Impostare ANDROID_NDK_HOME o ANDROID_NDK_ROOT

Compilare

# Predefinito (API 35)
make

# Specificare il livello API
make API=34

# Specificare il percorso NDK
NDK=/path/to/android-ndk make

Artefatto

ghostlock — eseguibile ELF ARM64 collegato staticamente.


Utilizzo

Configurazione iniziale

# 1. Abilitare la modalità ADB TCP
adb tcpip 5555

# 2. Inviare la chiave ADB (richiesta per la modalità bootstrap)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. Inviare l'exploit
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

Dopo il primo successo, resetprop imposta automaticamente persist.adb.tcp.port=5555, consentendo esecuzioni completamente automatiche nei riavvii successivi.


Modalità di esecuzione

Exploit completo (contesto shell ADB)

/data/local/tmp/a/e
  • perf disponibile, leak preciso di task_struct del figlio
  • Due fasi: W1 disabilita SELinux → W2 elevazione privilegi → carica KernelSU

Modalità Bootstrap (contesto App, seccomp limitato)

/data/local/tmp/a/e --bootstrap
  1. Scrittura 1 → disabilita SELinux
  2. Utilizzare i permessi liberati per setprop abilitare ADB TCP 5555
  3. Client Mini ADB integrato si connette a 127.0.0.1:5555
  4. Autenticazione RSA con chiave precedentemente inviata
  5. Esecuzione completa dell'exploit tramite shell ADB (nessun seccomp)

Solo Scrittura 1

/data/local/tmp/a/e --write1
  • Fino a 20 tentativi
  • Utile per debug o disabilitazione temporanea di SELinux

Dettagli tecnici

1. Riconoscimento del kernel in esecuzione

Offset memorizzati nella tabella di ricerca src/devices/offsets.h, indicizzati da uname -r. Il programma li abbina automaticamente all'avvio; kernel sconosciuti vengono rifiutati.

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 }  /* sentinella */
};

Fonti degli offset

TipoConteggioEstrazione
Simboli globali kallsyms28tools/extract_target.py
Campi di strutture BTF57tools/extract_btf.py
Valori derivati9Calcolati automaticamente
Costanti fisse12Hardcoded

Strutture verificate con BTF

StrutturaCampiScopo
task_struct17Descrittore di processo, cred, seccomp
rt_mutex_waiter6Obiettivo di forgiatura UAF
cred4Credenziali, capacità
seccomp3Stato del filtro seccomp
pipe_inode_info11Operazioni su buffer pipe
file_operations13Tabella fops falsa
mm_struct1Proprietario del descrittore di memoria

2. Bypass KASLR

Modalità SLIDE — Leak di boot_id

Quando i puntatori del kernel sono limitati (kptr_restrict), si ottiene l'indirizzo base tramite boot_id sovrascritto con un indirizzo del kernel:

Leggi /proc/sys/kernel/random/boot_id
  └─ L'UUID contiene l'indirizzo di nfulnl_logger
      └─ Spostamento KASLR = indirizzo_leakato - image_offset
          └─ kaslr_base

Modalità FOPS/CFI — Leak della tabella fops

Quando il dispositivo ashmem è accessibile, si utilizzano le primitive di lettura/scrittura di configfs per leggere i puntatori a funzione dalla tabella fops di ashmem e calcolare l'offset KASLR.

3. Heap spray del kernel

Forgiare oggetti del kernel su pagine order-3 (32KB):

  • Fake file_operations — dirottare il puntatore fops del miscdevice ashmem
  • Fake rt_mutex_waiter — simulare un nodo waiter nella catena PI
  • Fake task_struct — riferimento al task durante la traversata PI
  • Fake rt_mutex (lock) — informazioni corrette su waiter/owner

Implementato tramite SKB (socket buffer) + KernelSnitch:

  • KernelSnitch — collisione hash di futex per leak di indirizzi mm_struct
  • SKB spray — sendmsg per riempire l'heap del kernel

4. Lettura/Scrittura fisica della memoria (Pipe)

Dopo aver ottenuto la base KASLR, si utilizzano i buffer pipe per l'accesso alla memoria a livello fisico:

1. Individuare il buffer pipe nella physmap
2. Forgiare la tabella delle operazioni pipe_buffer che punta a known_pipe_buf_ops
3. Dirottare pipe_buffer.page verso l'indirizzo fisico target
4. Lettura/scrittura fisica arbitraria tramite normali operazioni pipe

Supportate: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Scrittura in due fasi

Scrittura 1 — Disabilitare SELinux

Scarica lo strumento