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-for-OnePlus15T — (CVE-2026-43499) Exploit del kernel per OnePlus 15T con bootloader non sbloccato. | Kitploit
Strumenti/GitHubGitHub/cuteaplane/ghostlock-for-oneplus15t
Sicurezza AndroidEscalation di PrivilegiAnalisi delle VulnerabilitàExploitSicurezza MobileSviluppo PayloadBinary Exploitation
GitHubcuteaplane/ghostlock-for-oneplus15t

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-for-OnePlus15T

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

Vedi Repository
12127 giorni faNon ancora revisionato

GhostLock — OnePlus 15T

中文

Exploit del kernel mirato a dispositivi OnePlus 15T con bootloader bloccato. Utilizza CVE-2026-43499 per ottenere accesso root senza sbloccare il bootloader o modificare boot.img.

Solo per scopi autorizzati di ricerca sulla sicurezza e istruzione.

Modificato dal repository originale GhostLock-for-OnePlus, adattato per il layout della memoria fisica e i tempi della CPU di OnePlus 15T (PLZ110 / SM8850 / Snapdragon 8 Elite).


Indice

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

Panoramica della vulnerabilità

ElementoDettaglio
CVECVE-2026-43499
TipoFutex PI (Priority Inheritance) Use-After-Free
AmbitoLinux kernel 2.6.39 ~ 7.1
Corretto inMainline 7.1 (commit 3bfdc63936dd)
Stato AndroidGKI 6.12.x ancora vulnerabile

Causa principale

La syscall pselect6 copia fd_set nello stack del kernel. Se combinata con il meccanismo del waiter futex PI, un frame dello stack deallocato può essere riallocato come struct rt_mutex_waiter. Durante l'attraversamento della catena PI, il ribilanciamento dell'albero rb scrive dati controllati a indirizzi arbitrari del kernel.

Catena

root@kitploit:~
futex PI UAF (CVE-2026-43499)
  ├─ Costruisci oggetto rt_mutex_waiter
  ├─ Controlla lo stack del kernel tramite il layout fd_set di pselect/select
  ├─ Attiva 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 15TPLZ110SM8850 (Snapdragon 8 Elite)6.12.38-android16-5-g844001fb8721-ab14552068-4kColorOS 16.0.9.400✅ Verificato

Per Ace 6T e OnePlus 15, consulta il repository originale.


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
ReSukiSU APK (consigliato)Installa ReSukiSU; l'APK contiene

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+)
  • Imposta ANDROID_NDK_HOME o ANDROID_NDK_ROOT

Compila

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

# Specifica livello API
make API=34

# Specifica percorso NDK
NDK=/path/to/android-ndk make

Artefatto

ghostlock — eseguibile ELF ARM64 collegato staticamente.


Utilizzo

Configurazione iniziale

root@kitploit:~
# 1. Abilita modalità TCP ADB
adb tcpip 5555

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

# 3. Invia 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, permettendo esecuzioni completamente automatiche ai riavvii successivi.


Modalità di esecuzione

Exploit completo (contesto shell ADB)

root@kitploit:~
/data/local/tmp/a/e
  • perf disponibile, leak preciso di child task_struct
  • Due fasi: Scrittura1 disabilita SELinux → Scrittura2 elevazione privilegi → caricamento KernelSU

Modalità Bootstrap (contesto App, seccomp limitato)

root@kitploit:~
/data/local/tmp/a/e --bootstrap
  1. Scrittura 1 → disabilita SELinux
  2. Utilizza i permessi liberati per setprop abilitando ADB TCP 5555
  3. Mini client ADB integrato si connette a 127.0.0.1:5555
  4. Autenticazione RSA con chiave pre-inviata
  5. Esecuzione completa dell'exploit tramite shell ADB (senza seccomp)

Solo Scrittura 1

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

Dettagli tecnici

1. Abbinamento automatico del kernel in esecuzione

Gli offset sono memorizzati in una tabella di ricerca in src/devices/offsets.h, indicizzata da uname -r. Il programma esegue l'abbinamento automatico all'avvio; i kernel sconosciuti vengono rifiutati.

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

Fonti degli offset

Strutture verificate tramite BTF

2. Bypass KASLR

Modalità SLIDE — boot_id Leak

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

root@kitploit:~
Leggi /proc/sys/kernel/random/boot_id
  └─ UUID contiene l'indirizzo di nfulnl_logger
      └─ KASLR slide = indirizzo_leak - image_offset
          └─ kaslr_base

Modalità FOPS/CFI — Leak tabella fops

Quando il dispositivo ashmem è accessibile, utilizza 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

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

  • file_operations falsi — hijack del puntatore fops del miscdevice ashmem
  • rt_mutex_waiter falso — simula nodo waiter nella catena PI
  • task_struct falso — riferimento task durante l'attraversamento PI
  • rt_mutex (lock) falso — informazioni corrette su waiter/owner

Implementato tramite SKB (socket buffer) + KernelSnitch:

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

4. Lettura/Scrittura memoria fisica (Pipe)

Dopo aver ottenuto la base KASLR, utilizza i buffer pipe per l'accesso a livello fisico:

root@kitploit:~
1. Individua il buffer pipe nella physmap
2. Forgia la tabella delle operazioni del pipe_buffer puntando a pipe_buf_ops noti
3. Hijack di pipe_buffer.page per puntare all'indirizzo fisico target
4. Lettura/scrittura fisica arbitraria tramite normali operazioni pipe

Supportato: pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Scrittura in due fasi

Scrittura 1 — Disabilita SELinux

root@kitploit:~
Target: selinux_state.enforcing (offset 0x00)
Metodo: scrittura PI child-node → forja __rb_parent_color del waiter
        puntando a selinux_enforcing - 8
        il ribilanciamento dell'albero rb scrive 0x00

Scrittura 2 — Eleva a root

root@kitploit:~
Target: puntatore cred del processo figlio
Metodo: 1. fork child → perf_find_task() localizza task_struct
        2. calcola offset del campo cred
        3. scrittura PI child-node → cred = init_cred (uid=0, caps complete)
        4. cancella seccomp (TIF_SECCOMP + struct seccomp azzerata)

Dopo la sovrascrittura delle cred viene eseguita la verifica delle capacità in lettura.

6. Mini client ADB integrato

src/core/miniadb.c — client leggero del protocollo ADB per la modalità bootstrap:

root@kitploit:~
1. TCP connetti a 127.0.0.1:5555
2. A_CNXN → richiesta di connessione
3. A_AUTH → sfida token RSA
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → risposta firmata
6. A_CNXN → connessione stabilita
7. A_OPEN "shell:/data/local/tmp/a/e" → exploit completo

Supporta algoritmi di firma SHA-1 e SHA-256.


Struttura dei file

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # Configurazione build (cross-compilazione NDK)
├── README.md                       # Documentazione
├── src/
│   ├── core/                       # Codice exploit principale
│   │   ├── main.c                  # Punto di ingresso: scrittura in due fasi + shell root
│   │   ├── fops.c                  # Modalità FOPS/CFI: percorso pselect, scrittura PI, leak KASLR
│   │   ├── util.c                  # Utility: heap spray, KASLR, primitive R/W del kernel
│   │   ├── slide.c                 # Modalità SLIDE: leak KASLR tramite boot_id + percorso pselect
│   │   ├── pipe.c                  # Lettura/scrittura memoria fisica tramite buffer pipe (physrw)
│   │   ├── root.c                  # Sovrascrittura cred, cancellazione seccomp, gestione child root
│   │   ├── miniadb.c              # Client ADB integrato (TCP + autenticazione RSA)
│   │   ├── common.h               # Macro globali, struct, dichiarazioni, costanti
│   │   ├── target.h               # Layout di memoria target / offset struct / parametri KASLR
│   │   ├── offset.h               # Ponte di configurazione target in fase di compilazione (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/          # KernelSnitch — leak indirizzo mm_struct
│   │       ├── kernelsnitch.h     # Algoritmo principale: collisione hash futex + forza bruta
│   │       ├── futex_hash.h       # Funzione hash futex
│   │       ├── timeutils.h        # Misurazione timestamp CPU (RDTSC)
│   │       └── utils.h            # Macro di supporto (pr_info / SYSCHK / ASSERT ecc.)
│   └── devices/                   # Tabelle offset per dispositivo
│       ├── offsets.h              # Aggrega tutti gli offset dei dispositivi (tabella di ricerca + sentinella)
│       ├── ace6t/offsets.h        # Offset OnePlus Ace 6T (2 versioni kernel)
│       └── op15/offsets.h         # Offset OnePlus 15 (1 versione kernel)
└── tools/                         # Toolchain estrazione offset
    ├── extract_target.py          # Estrai offset dei simboli globali kallsyms (28 elementi)
    └── extract_btf.py             # Estrai offset dei campi struttura BTF (57 elementi)

Panoramica dei moduli principali


Aggiunta di nuovi dispositivi

Questo repository è stato modificato; consulta il repository originale per i dettagli.


FAQ

D: Nessun output durante l'esecuzione?

Assicurati di eseguire in una shell ADB. Il contesto App richiede --bootstrap.

D: "no offsets for this kernel"?

La versione del tuo kernel non è ancora supportata. Segui Aggiunta di nuovi dispositivi per estrarre gli offset e ricompilare.

D: La Scrittura 1 continua a fallire?

  • Assicurati di essere vincolato al core CPU corretto (macro CORE)
  • Regola il timing di PSELECT_ENTER_DELAY_USEC
  • Verifica la presenza di processi interferenti

D: perf nella Scrittura 2 restituisce 0?

  • Controlla se seccomp blocca perf_event_open (usa --bootstrap in contesto App)
  • Verifica che il bypass KASLR sia riuscito (kaslr_base valido)

D: KernelSU non si carica?

  • Conferma che ksud esista e sia eseguibile
  • Controlla l'integrità del file dei criteri di rete (fix load_policy)

Licenza

Solo per scopi autorizzati di ricerca sulla sicurezza e istruzione.

Scarica lo strumento
libksud.so
Rilascio CIScarica da ReSukiSU CI (ksud-aarch64-linux-android.zip)
TipoConteggioEstrazione
Simboli globali kallsyms28tools/extract_target.py
Campi struttura BTF57tools/extract_btf.py
Valori derivati9Calcolati automaticamente
Costanti fisse12Codificate
StrutturaCampiScopo
task_struct17Descrittore di processo, cred, seccomp
rt_mutex_waiter6Obiettivo di forgiatura UAF
cred4Credenziali, capacità
seccomp3Stato del filtro seccomp
pipe_inode_info11Operazioni sul buffer pipe
file_operations13Tabella fops falsa
mm_struct1Proprietario del descrittore di memoria
ModuloFileResponsabilità
Ingressomain.cParsing CLI, dispatch W1/W2, flusso bootstrap
Percorso PIfops.c / slide.cLayout stack pselect/select, manipolazione catena futex PI
KASLRutil.c / fops.c / slide.cBypass a due modalità: leak boot_id + leak tabella fops
Heap Sprayutil.cAllocazione pagine order-3, SKB spray, layout oggetti forgiati
Lett./Scritt. Fisicapipe.cHijack buffer pipe, accesso arbitrario alla memoria fisica
Elevazione Privilegiroot.cSovrascrittura cred, verifica capacità, cancellazione seccomp
ADBminiadb.cClient ADB leggero, autenticazione RSA
Motore Leakkernelsnitch/Collisione hash futex per localizzazione mm_struct