
Ricerca e exploit CVE per aiutare a ottenere i root sui dispositivi Pixel
Esegui il root su un Google Pixel stock con bootloader bloccato da una adb shell non privilegiata, sfruttando una
CVE del kernel — senza sblocco, senza flash, senza aiuto del produttore.
Un bug del kernel raggiungibile dallo spazio utente fornisce una primitiva di lettura/scrittura di breve durata. Tale primitiva
viene spesa per il late-loading di un modulo KernelSU nel kernel
GKI
in esecuzione, dopodiché il root viene ceduto a qualunque gestore KernelSU sia già installato.
Nessuna partizione viene scritta, quindi un riavvio è la disinstallazione. Tutto viene eseguito dall'host tramite
adb attraverso un singolo eseguibile, ./pixel-ksu-root.
| CVE | il bug | a che punto è |
|---|---|---|
| CVE-2026-43499 — GhostLock | una passeggiata PI su futex segue un rt_mutex_waiter che remove_waiter() ha lasciato penzolante, letto da uno slot dello stack che pselect(2) ha rioccupato | esegue il root, verificato su hardware; è la ricetta default, quindi una semplice esecuzione la adotta |
| CVE-2026-43049 — FFWheel | hidpp_probe() pubblica il dispositivo di input prima dell'inizializzazione del force-feedback e restituisce l'errore senza hid_hw_stop(), quindi una struct uhid_device liberata resta raggiungibile tramite /dev/input/eventN | esegue il root, verificato su hardware; un use-after-free da una shell non privilegiata a lettura/scrittura arbitraria del kernel, poi una sovrascrittura della propria cred sul posto |
| CVE-2026-93189 — Joyride | hid_hw_stop() non attende mai che l'input si fermi, quindi una probe fallita libera la struct hidraw nella quale hidraw_report_event() sta ancora scrivendo su un altro processore | successore candidato; il percorso verso la free viene attraversato su hardware da una shell non privilegiata tramite /dev/uhid, ed è aperto su build che chiudono entrambe le catene precedenti |
| CVE-2026-46242 — BadEpoll | __ep_remove() azzera file->f_ep e continua a usare il file, quindi un __fput() concorrente libera l'eventpoll attraverso cui sta ancora scrivendo | parziale; sia la catena di lettura che quella di scrittura vengono eseguite dall'inizio alla fine, ma la consegna attraverso il confine dello slab non è risolta |
| CVE-2026-56945 — RogueWave | bigo_iommu_fault_handler() percorre una lista di istanze globale del driver senza lock, su un'assunzione documentata e errata sul suo chiamante | raggiungibile senza privilegi tramite l'API pubblica AMediaCodec; il fault handler stesso non è ancora stato raggiunto |
| CVE-2026-56914 — DirtyDock | gcip_iommu_mapping_unmap_buffer() sporca una pagina DMA pinned con la set_page_dirty() senza lock invece della sua variante con locking, gareggiando con il teardown della memoria sottostante | attivabile dall'inizio alla fine, sebbene il device node sia protetto da privilegi; due strategie di race smentite, il timing non ancora vinto |
| CVE-2026-64468 — Frostbind | binder_free_transaction() dereferenzia t->to_proc senza tenere un riferimento | caccia; la lettura vulnerabile viene eseguita, ma la race viene persa su bare metal |
| CVE-2026-64469 — Frostwalk | un fratello di Frostbind, nella stessa funzione: la lettura senza lock di binder_free_transaction() gareggia con binder_thread_release() che percorre il transaction_stack di un altro thread | caccia; sia la free che la passeggiata confermate raggiungibili, senza alcuna dipendenza da root nel meccanismo — raggiunge un processo app come fa Shizuku; un tentativo di reclaim senza una verify-read (flood + pin) deve ancora andare a segno — il bersaglio effettivo della scrittura non è ancora distinto |
| CVE-2026-64560 — Zombietick | un timer POSIX CPU a livello di processo viene liberato mentre è ancora in coda, perché posix_cpu_timer_del() ritorna in anticipo una volta che de_thread() ha azzerato ->sighand | caccia; lo stadio KASLR va a segno, il descrittore bridge non viene mai validato |
| CVE-2026-49881 — Telecom | Telecom si fida di un nome di componente fornito dal chiamante e lo carica con CONTEXT_INCLUDE_CODE, quindi un'app esca esegue Java arbitrario dentro system_server | ricerca; un pivot di dominio nello spazio utente piuttosto che un bug del kernel, abbinato a domainprobe/ |