Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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-oneplus — # GhostLock (CVE-2026-43499) exploit del kernel per dispositivi Android con bootloader bloccato | Kitploit
Strumenti/GitHubGitHub/joinchang/ghostlock-oneplus
Sicurezza AndroidEscalation di PrivilegiFramework di ExploitAnalisi delle VulnerabilitàPenetration TestingSicurezza MobileApprendimento e FormazioneBinary Exploitation
GitHubjoinchang/ghostlock-oneplus

ghostlock-oneplus

# GhostLock (CVE-2026-43499) exploit del kernel per dispositivi Android con bootloader bloccato

Vedi Repository
235462311 giorni 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 — Jailbreak con Bootloader Bloccato

Exploit del kernel per dispositivi Android con bootloader bloccato. Ottiene root temporaneo + installazione di KernelSU senza sbloccare il bootloader o modificare l'immagine di boot. Rilevamento automatico a runtime della versione del kernel con tabella di offset multi-dispositivo.

GhostLock in esecuzione su OnePlus Ace 6T con KernelSU (LKM, modalità Jailbreak)

Vulnerabilità

CVE-2026-43499 — Futex PI (Priority Inheritance) Use-After-Free

Colpisce il kernel Linux 5.7 ~ 7.1. Corretto nelle versioni stabili 6.1.175, 6.6.140, 6.12.86. La maggior parte dei dispositivi Android rimane senza patch a settembre 2026.

La syscall pselect6 copia i dati fd_set sullo stack del kernel. Se combinata con il meccanismo del waiter futex PI, un frame di stack liberato può essere riutilizzato come struttura rt_mutex_waiter. Il ribilanciamento dell'albero rb durante la traversata della catena PI scrive quindi valori controllati a indirizzi arbitrari del kernel.

Dispositivi Supportati

Verificati Funzionanti

Offset Estratti (in attesa di test sul dispositivo)

Non Realizzabili

L'overlay dello stack pselect richiede che il rt_mutex_waiter liberato ricada nella regione stack_fds controllabile dall'utente (word 0–14). La posizione è determinata dai profili PGO/LTO del compilatore, non dalla versione del kernel. Vedi Layout dello Stack.

Nota sulla fattibilità 6.1: I kernel OPLUS 6.1 sono costantemente non realizzabili a causa dell'inlining PGO di do_futex. Tuttavia, alcuni kernel non-OPLUS 6.1 (vivo) mantengono la catena di chiamate standard e sono realizzabili (vivo T4, X Fold3 Pro). La fattibilità deve essere verificata per ogni singolo dispositivo.

Flusso dell'Exploit

Due percorsi di root, selezionati automaticamente in base alle capacità del dispositivo:

Percorso A: Root UMH (preferito, dispositivi C ashmem)

Richiede off_ashmem_misc_fops != 0 (C ashmem con miscdevice statico in BSS).

root@kitploit:~
Scrittura PI (mode=4)  →  reindirizza i fops del miscdevice a fops falsi
                   →  r/w configfs → physrw tramite pipe (r/w kernel preciso a 1 byte)
                   →  SELinux enforcing = 0 (singolo byte, nessuna corruzione di policycap)
                   →  UMH: inietta work_struct in system_unbound_wq
                   →  script di root → caricamento tardivo ksud → KSU installato

Disponibile su: OnePlus 13, OPPO Pad 4 Pro, dispositivi C ashmem 5.10/6.1. Non disponibile su Rust ashmem (GKI 6.12) — miscdevice allocato su heap.

Percorso B: Scrittura PI Diretta (fallback)

root@kitploit:~
Scrittura 1 (mode=1)  →  SELinux enforcing = 0 (scrittura a 8 byte, corrompe i byte adiacenti)
Scrittura 2 (mode=2)  →  task->cred = init_cred (uid=0, tutte le capability)
Shell di root         →  caricamento tardivo ksud → KSU → correzione policy SELinux

Dopo W1+W2, l'exploit corregge il campo config del binario della policy SELinux (|= 0xC0000000 per ANDROID_NETLINK_ROUTE + GETNEIGH) e lo ricarica tramite /sys/fs/selinux/load per ripristinare la connettività di rete.

Modalità Bootstrap (telefono standalone)

root@kitploit:~
App (seccomp)  →  Scrittura 1 → mini-adb TCP → adb shell: exploit completo → root

Avvio Automatico

Il launcher all'avvio è fornito dalla app GhostLock Anchor separata.

Fattibilità del Layout dello Stack

Con NFDS=320, core_sys_select alloca un buffer stack_fds di 256 byte sullo stack del kernel:

root@kitploit:~
stack_fds:  0    5    10   14 | 15   20   25   29
            ├─in─┤─out─┤─ex──┤ ├res_in┤res_out┤res_ex┤
            ◄── CONTROLLATO DALL'UTENTE ──►│◄── ZERATO DAL KERNEL ──►

L'exploit posiziona campi waiter falsi (task, lock) nelle bitmap di input fd_set. Per il waiter annidato 6.12 (14 word): word waiter massima realizzabile = 3. Per il waiter compatto 5.10/6.1 (10 word): word waiter massima realizzabile = 7.

La posizione del waiter dipende dalla profondità della catena di chiamate:

kernel_phys_load

Tutte le scritture sul kernel usano l'alias della mappa lineare. Il bootloader sceglie kernel_phys_load, che varia in base al SoC:

SoCkernel_phys_load
SM8845 (Ace 6T, 15T)0xa8000000
SM8750 (OnePlus 13, OPPO Pad 4 Pro)0xa8000000

Un valore errato fallisce silenziosamente. Leggilo su un'unità con root:

root@kitploit:~
su -c 'grep -i "Kernel code" /proc/iomem'   # c7810000-... → 0xc7800000

Override a runtime: KPHYS=0xc7800000 /data/local/tmp/a/e

PSELECT_SHIFT

root@kitploit:~
/data/local/tmp/a/e                        # Default (shift=0)
PSELECT_SHIFT=-2 /data/local/tmp/a/e       # OnePlus 13 (6.6)

KIMAGE_TEXT_BASE

I kernel 5.10 usano 0xffffffc008000000 (VA_BITS=39, diverso dal default 6.x 0xffffffc080000000). Questo viene gestito automaticamente tramite il campo kimage_text_base nella voce di offset del dispositivo.

Build

root@kitploit:~
make NDK_ROOT=/path/to/android-ndk

Oppure direttamente:

root@kitploit:~
NDK=/path/to/android-ndk
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang" \
  -O2 -Wall -Isrc/core -Isrc/devices -DTARGET_CONFIG_H=\"target.h\" \
  src/core/main.c src/core/util.c src/core/slide.c \
  src/core/fops.c src/core/pipe_physrw.c src/core/root.c \
  src/core/miniadb.c src/core/umh_root.c \
  -o ./ghostlock -fPIE -pie -pthread

Prerequisiti

ksud (richiesto per l'installazione di KSU)

GhostLock fornisce root temporaneo. L'installazione di KernelSU richiede ksud che include kernelsu.ko per ogni versione KMI.

MetodoPassaggi
APK ReSukiSU (consigliato)Installa ReSukiSU o questo . Include .

Configurazione

root@kitploit:~
adb shell mkdir -p /data/local/tmp/a
adb push ./ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e

Esegui dopo il completamento dell'avvio e quando ADB è pronto.

Aggiunta di Nuovi Dispositivi

Serve solo boot.img — nessun root, nessun accesso al dispositivo richiesto.

1. Estrai kernel e kallsyms

Vedi guida strumenti kallsyms per il flusso di lavoro completo, oppure:

root@kitploit:~
python tools/extract_target.py --kallsyms kallsyms.txt
python tools/extract_btf.py kernel

2. Determina la fattibilità

Verifica se do_futex è inline PGO cercando nel binario del kernel tutte le istruzioni di branch che puntano a futex_wait_requeue_pi. Se __arm64_sys_futex lo chiama direttamente (bypassando do_futex), il dispositivo probabilmente non è realizzabile.

3. Crea la voce del dispositivo

Aggiungi src/devices/<name>/offsets.h con gli offset estratti e includilo in src/devices/offsets.h. Usa la macro appropriata per gli offset delle strutture:

Per i dispositivi con waiter compatto 5.10/6.1, imposta anche .kimage_text_base=0xffffffc008000000ULL.

File

Licenza

Solo per ricerca di sicurezza autorizzata e scopi educativi.

Scarica lo strumento
DispositivoSoCKernelRamo GKISHIFT
OnePlus Ace 6T (PLR110)SM88456.12.38android16-50
OnePlus 15 (CPH2745/2747/2749)SM88506.12.23android16-50
Xiaomi 17 (pudding)SM88506.12.23 / 6.12.69android16-5 / android16-60
OnePlus 13 (IN2060)SM87506.6.89android15-8-2
OPPO Pad 4 ProSM87506.6.89android15-8-2
DispositivoSoCKernelNote
OnePlus 15T (PLZ110)SM88456.12.38Stesso kernel di Ace 6T
OPPO Reno10 Pro+ (CPH2521)SM84755.10.236Waiter compatto 5.10, waiter word=0
Vivo X Fold3 Pro (PD2337)SM86506.1.124Waiter compatto 6.1, waiter word=3
Vivo T4SM86506.1.145Waiter compatto 6.1, waiter word=3
DispositivoSoCKernelCausa Principale
OPPO Find X9 UltraSM87506.12.58PGO elimina do_futex → waiter word=14
OnePlus 12SM86506.1.141PGO inline di do_futex → waiter word=13/19
OnePlus 13R / Ace 5SM86506.1.xOPLUS 6.1: waiter word=13
realme RMX5070SM66506.1.141OPLUS 6.1: waiter word=13
OPPO Pad 5 (OPD2502)MT68786.1.134OPLUS 6.1: waiter word=13
Motorola Edge 60 FusionMT68786.1.145Non-OPLUS 6.1: stesso risultato
iQOO Neo 10 CNSM86506.1.84Frame do_futex 0xD0 → waiter word=-11
OPPO PKW110—5.15.180Frame do_futex 0x140 → waiter word=-29
iQOO Z9 5G—5.15.178Frame do_futex troppo grande
CPH2763 (OPPO)—6.1.115OPLUS 6.1: PGO inline, waiter word=24
PatternCatena di ChiamateRealizzabile
android16-5 (6.12)sys_futex → do_futex → fwrpi✅ waiter word=2
android15-8 (6.6)sys_futex → do_futex → fwrpi✅ waiter word=2 (SHIFT=-2)
vivo 6.1sys_futex → do_futex → fwrpi✅ waiter word=3
OPLUS 6.1sys_futex → fwrpi (PGO inline)❌ waiter word=13+
android16-6 (X9 Ultra)sys_futex → fwrpi (PGO inline)❌ waiter word=14
5.10 OPLUSsys_futex → do_futex → fwrpi✅ waiter word=0
SM8650 (vivo T4, X Fold3 Pro)
0xa8000000
SM8850 (OnePlus 15, Xiaomi 17)0xc7800000
fork
libksud.so
Release CIScarica da ReSukiSU CI
KernelLayout WaiterMacro
6.12.xAnnidato (14 word)STRUCT_OFFSETS_6_12
6.6.xAnnidato (14 word)STRUCT_OFFSETS_6_6
6.1.x (vivo)Compatto (10 word)STRUCT_OFFSETS_6_1
5.10.xCompatto (10 word)STRUCT_OFFSETS_5_10
FileDescrizione
src/core/main.cPunto di ingresso dell'exploit, W1/W2, percorso UMH, bootstrap, script di root, correzione policy SELinux
src/core/fops.cPercorso pselect, scrittura PI, stadio CFI, supporto waiter compatto
src/core/util.cHeap spray, KernelSnitch, slab drain, configurazione payload
src/core/pipe_physrw.cLettura/scrittura della memoria fisica tramite buffer pipe
src/core/umh_root.cRoot UMH tramite iniezione in workqueue
src/core/miniadb.cClient Mini ADB (TCP + autenticazione RSA)
src/core/target.hLayout di memoria, valori predefiniti dei campi struct (6.12)
src/core/runtime_struct_offsets.hOverride dei campi struct per dispositivo
src/devices/offsets.hTabelle degli offset per dispositivo + macro STRUCT_OFFSETS_*
tools/extract_target.pyEstrazione offset da kallsyms
tools/extract_btf.pyEstrazione offset struct da BTF
tools/kallsyms/Flusso di lavoro completo per il recupero di kallsyms