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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ghostlock-k419-adapter — GhostLock (CVE-2026-43499) adattatore per kernel Android 4.19.152-perf+ | Kitploit
Strumenti/GitHubGitHub/xiaobailovesstirring/ghostlock-k419-adapter
Sicurezza AndroidEscalation di PrivilegiFramework di ExploitExploitPost-ExploitPenetration TestingSicurezza MobileSviluppo PayloadBinary Exploitation

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
GitHubxiaobailovesstirring/ghostlock-k419-adapter

ghostlock-k419-adapter

GhostLock (CVE-2026-43499) adattatore per kernel Android 4.19.152-perf+

Vedi Repository
53711 mese faNon ancora revisionato

GhostLock — Jailbreak per Bootloader Bloccato OnePlus

Exploit del kernel per dispositivi OnePlus/OPPO/realme con bootloader bloccato. Ottiene la root + 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 2.6.39 ~ 7.1. Corretto nel mainline 7.1 (commit 3bfdc63936dd). Android GKI 6.12.x rimane vulnerabile.

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

Dispositivi Supportati

Verificati

DispositivoSoCKernelStato
OnePlus Ace 6T (PLR110)SM88456.12.38-...-ab14275539Funzionante
OnePlus Ace 6T (PLR110)SM88456.12.38-...-ab14552068Funzionante
OnePlus 15 (CPH2749)SM88506.12.23-...-ab14541642Funzionante
Xiaomi 17 (pudding)SM88506.12.23-...-abogki463945075Funzionante
Xiaomi 17 (pudding)SM88506.12.69-...-abogki514973465Funzionante (aggiornamento di agosto 2026)
OnePlus 13 (IN2060)SM87506.6.89-...-abogki446052083Funzionante (PSELECT_SHIFT=-2)
OPPO Pad 4 ProSM87506.6.89-...-ab14358676Funzionante (PSELECT_SHIFT=-2)

Offset Estratti (in attesa di test sul dispositivo)

DispositivoSoCKernelNote
OnePlus 15T (PLZ110)SM88456.12.38-...-ab14552068Stesso kernel di Ace 6T. QEMU ha verificato SP diff=-64.

Non Realizzabile (layout dello stack incompatibile)

L'overlay dello stack pselect funziona solo quando il rt_mutex_waiter liberato ricade nella regione controllabile dall'utente del buffer stack_fds. La posizione del waiter è determinata dall'output del compilatore (PGO + LTO), non dalla versione del kernel. Vedere Layout dello Stack per i dettagli.

DispositivoSoCKernelMotivo
OPPO Find X9 UltraSM87506.12.58-android16-6PGO elimina il frame do_futex → SP diff=+32, waiter word=14. Non esiste uno shift sicuro.
OPPO Find X7—6.1.1576.1 GKI: waiter a word 13 (tutti i dispositivi 6.1 OPLUS/GKI)
realme RMX5070SM66506.1.1416.1 GKI: waiter a word 13
realme RMX3852SM86356.1.141Stesso ramo 6.1 di RMX5070
OnePlus 13R / Ace 5SM86506.1.xStesso ramo 6.1
OnePlus 12SM86506.1.1416.1 GKI: do_futex inline con PGO, waiter word=13/19
OPPO Pad 5 (OPD2502)MT68786.1.134Stesso ramo 6.1
OPPO PKW110—5.15.180Frame do_futex 0x140 (4,5x normale) → waiter word=-29, irraggiungibile
Motorola Edge 60 FusionMT68786.1.1456.1 GKI: waiter a word 13 (non OPLUS, stesso risultato)
iQOO Z9 5G—5.15.178Frame do_futex troppo grande, waiter irraggiungibile. Non è un dispositivo OPLUS (vivo).

Flusso dell'Exploit

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

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

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

PI write (mode=4)  →  redirect miscdevice fops to fake fops (via W0 pi_tree)
                      configfs r/w established
                   →  pipe physrw (1-byte precise kernel r/w)
                   →  SELinux enforcing = 0 (single byte, no policycap corruption)
                   →  UMH: inject work_struct into system_unbound_wq
                      kernel executes /data/local/tmp/a/e --umh as UID 0
                   →  root script → ksud late-load → KSU installed

Vantaggi rispetto al Percorso B:

  • Scrittura SELinux a 1 byte — non corrompe selinux_state.policycap (risolve i problemi di rete su OnePlus 13)
  • Nessun perf_event_open — funziona sotto restrizioni seccomp
  • Nessuna patch alle credenziali — evita di modificare la task_struct in esecuzione

Attualmente disponibile su: OnePlus 13 (kernel 6.6, ashmem C). Non disponibile su dispositivi con ashmem Rust (6.12 GKI) — il miscdevice è allocato sullo heap, l'indirizzo non è prevedibile in fase di compilazione.

Percorso B: Scrittura PI Diretta (fallback, tutti i dispositivi)

Usato quando gli offset UMH o i misc_fops dell'ashmem C non sono disponibili.

Write 1 (mode=1)  →  SELinux enforcing = 0
                      (low byte of kernel ptr = 0x00, 8-byte write)

Write 2 (mode=2)  →  task->cred = init_cred
                      (uid=0, all capabilities)

Root shell         →  ksud late-load (KernelSU LKM)
                   →  su -c load_policy (fix SELinux policycap)
                   →  dynamic manager registration

Modalità Bootstrap (telefono autonomo)

App (seccomp)  →  Write 1 (no perf needed)
               →  mini-adb connect TCP (port from /data/local/tmp/a/adb_port, default 5555)
               →  adb shell: full exploit (perf works, no seccomp)
               →  root → KSU → network fix

Avvio Automatico (tramite integrazione ReSukiSU)

BOOT_COMPLETED → BootCompletedReceiver
  ├─ su available → skip (soft reboot / already rooted)
  └─ no root → GhostlockService → setsid exploit --bootstrap

Fattibilità del Layout dello Stack

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

stack_fds:  0    5    10   14 | 15   20   25   29
            ├─in─┤─out─┤─ex──┤ ├res_in┤res_out┤res_ex┤
            ◄── USER CONTROLLED ──►│◄── KERNEL ZEROED ──►

L'exploit scrive campi fittizi del waiter (task, lock) nelle bitmap di input fd_set. Perché funzioni, i campi task e lock del waiter devono ricadere nella zona controllabile (word 0-14).

Ace 6T ✅ (waiter at word 2):
  ░░████████████████░░│░░░░░░░░░░░░░░░░░░
    ▲waiter      t  l │
    task/lock controllable

RMX5070 ❌ (waiter at word 13):
  ░░░░░░░░░░░░░████│██████████████░░░░░░
                 ▲  │    t     l
               waiter  task/lock ZEROED

Regola di fattibilità: waiter word + 11 (offset di lock in rt_waiter_node) deve essere ≤ 14. La word massima di waiter fattibile è 3.

La posizione del waiter è determinata dal layout dei frame di stack del compilatore (profili di ottimizzazione PGO + LTO + BOLT), che varia in base al ramo del SoC. La stessa versione del kernel può avere layout diversi su SoC diversi.

kernel_phys_load

Tutte le scritture sul kernel passano attraverso l'alias linear-map dell'immagine:

data_addr(x) = PAGE_OFFSET + (kernel_phys_load - PHYS_OFFSET) + (x - KIMAGE_TEXT_BASE)

Il bootloader sceglie kernel_phys_load, quindi varia in base al SoC e non è presente in boot.img né nel DT. Campo per-dispositivo in struct kernel_offsets; 0 = usa il valore predefinito di target.h.

SoCkernel_phys_load
SM8845 (Ace 6T, 15T)0xa8000000
SM8750 (OnePlus 13, OPPO Pad 4 Pro)0xa8000000
SM8850 (OnePlus 15, Xiaomi 17)0xc7800000
Scarica lo strumento