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
CVE-2026-98260-pudding-android — Port di ricerca CVE-2026-98260 Android specifico per il target Xiaomi 17 (pudding) | Kitploit
Strumenti/GitHubGitHub/addxemmm/cve-2026-98260-pudding-android
Sicurezza AndroidEscalation di PrivilegiMemory ForensicsExploitPost-ExploitSicurezza MobileBinary Exploitation
GitHubaddxemmm/cve-2026-98260-pudding-android

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

CVE-2026-98260-pudding-android

Port di ricerca CVE-2026-98260 Android specifico per il target Xiaomi 17 (pudding)

Vedi Repository
311 giorni faNon ancora revisionato

CVE-2026-98260 · Android 17 / pudding 本地提权移植

Catena di exploit Android AArch64 per una build kernel precisa di Xiaomi 17 (nome in codice pudding): partendo da una normale shell ADB, imposta SELinux in modalità Permissive, azzera UID/GID del processo corrente, completa le Linux capabilities e fornisce un servizio root per il ciclo di avvio corrente.

Riferimenti e fonti

Questo progetto fa riferimento e porta da CVE-2026-98260-popsicle-android (Xiaomi 17 Pro Max / popsicle), non è una ricerca indipendente implementata da zero.

  • Scoperta della vulnerabilità, analisi pubblica e PoC per il target Ubuntu: InfinityCore
  • Catena completa in tre fasi su Android GKI, layout degli oggetti e progettazione del riutilizzo delle pagine: il summenzionato repository popsicle
  • Questo repository si occupa solo dell'adattamento al target di pudding (due indirizzi di collegamento, un simbolo di probe inlineato, la scala di scansione); il resto del codice e delle idee appartiene agli autori originali

Panoramica della vulnerabilità

Una execve() da un thread non principale esegue prima de_thread() per scambiare l'identità del thread. Se l'exec fallisce dopo questo punto (ad esempio exec_mmap() viene interrotta da SIGKILL e restituisce -EINTR), il task esce prima di ripulire i timer POSIX: il k_itimer viene liberato, ma il suo nodo timerqueue rimane nell'albero del task ancora vivo. Quando il processo padre successivamente raccoglie quel task, cleanup_timerqueue() opera di nuovo su questo nodo già liberato, generando un use-after-free.

L'exploit trasforma questo UAF in una scrittura zero limitata di otto byte, quindi procede in tre fasi: SELinux → UID/GID → capabilities complete. Per una spiegazione completa pensata per principianti, vedere docs/VULNERABILITY.md.

Target verificati e risultati

VoceValore misurato
DispositivoXiaomi 17, modello 25113PN0EC, nome in codice pudding
SistemaXiaomi HyperOS 4 OS4.0.5.0.XPCCNXM, Android 17
Kernel6.12.69-android16-6-g43b5ab7e247d-abogki561813157-4k
Dimensione pagina4 KiB
Punto di partenzaShell ADB normale autorizzata, UID 2000, SELinux Enforcing, bootloader bloccato
Risultato ottenutoUID/GID 0, SELinux Permissive, CapPrm/CapEff/CapBnd=000001ffffffffff
Ciclo di vitaIl servizio root è disponibile per le nuove shell ADB successive nell'ambito di questo avvio; dopo un riavvio è necessario rieseguire

Verifica indipendente dopo il successo (nuova shell ADB):

uid=0(root) gid=0(root)
CapInh: 000001ffffffffff
CapPrm: 000001ffffffffff
CapEff: 000001ffffffffff
CapBnd: 000001ffffffffff
getenforce: Permissive

Questo non è un root permanente. Non è stato scritto nulla in boot/init_boot o in qualsiasi partizione, il bootloader rimane bloccato; dopo il riavvio SELinux torna a Enforcing e il servizio root scompare.

Tasso di successo

Nessuna garanzia di successo. Nei test, su 9 avvii è stato completato una sola volta l'intero percorso A→B→C. Le condizioni di superamento delle tre fasi sono indipendenti tra loro:

FaseProgramma lato dispositivoCondizione di superamento
1. SELinuxexploit-android-perfgetenforce restituisce Permissive, gli altri campi della word di stato restano come previsto
2. Identitàexploit-android-perf-chainUID/GID dello stesso processo diventano 0, quindi exec fullcap
3. Permessi completiexploit-android-key-ptr + pc98260_rootd.ccapabilities complete, il servizio root è accessibile da una nuova shell

Se uno qualsiasi dei passaggi non va a segno viene emesso [PARKED] e lo stato pericoloso viene mantenuto; è necessario riavviare e non si può forzare un nuovo tentativo nello stesso avvio.

--aio 16384 è il valore di tuning di questa macchina (il tentativo riuscito ha centrato la 3903ª pagina di metadati perf).

Differenze rispetto alla versione popsicle

Posizionepopsiclepudding
LINK_SELINUX_STATE0xffffffc08289aba00xffffffc0827f9ba0
LINK_GETPID0xffffffc080074eac0xffffffc080102e10
leak dell'indirizzo del timersonda sul valore restituito da alloc_posix_timeril simbolo è stato inlined, si usa invece l'ingresso $arg1 di posix_cpu_timer_create
PERF_MAX819216384 (aumenta le probabilità di colpire la pagina)

Per la motivazione e le prove vedere docs/ADAPTATION.md.

Compilazione dai sorgenti

È necessario un Android NDK. La directory bin/ nel repository è compilata con NDK 26.3.11579264 / API 34:

powershell -NoProfile -ExecutionPolicy Bypass -File .\build.ps1 -NdkHome "$env:LOCALAPPDATA\Android\Sdk\ndk\26.3.11579264" -ApiLevel 34

-VerifyReference confronta uno per uno l'SHA-256 dei nuovi artefatti con quelli in bin/; solo usando la stessa toolchain di bin/ si otterrà un'identità byte per byte. Cambiando versione dell'NDK è comunque possibile eseguire, ma gli hash risulteranno diversi.

Artefatti:

ArtefattoSorgente di input
exploit-android-perfsrc/exploit-android-perf.c
exploit-android-perf-chainsrc/exploit-android-perf-chain.c
exploit-android-key-ptrsrc/exploit-android-key-ptr.c + src/pc98260_rootd.c
pc98260-susrc/pc98260_su.c

La build non si connette al telefono e non scrive sul dispositivo.

Esecuzione su un target autorizzato

Collegare un dispositivo con il debug USB abilitato e già autorizzato, aggiungere platform-tools al PATH:

.\开始98260临时ROOT.bat

o specifica esplicitamente il dispositivo:

powershell -NoProfile -ExecutionPolicy Bypass -File .\run_98260.ps1 -Serial <ADB序列号> -Reboot

Lo script host verifica il modello del dispositivo, la versione incrementale del sistema, la stringa completa del kernel, il boot ID e gli hash dei quattro binari; inoltre imposta /sys/kernel/tracing/tracing_on a 0 prima di avviare ogni fase (in alcune build di HyperOS miuibpf lo mantiene a 1, e la catena di exploit si rifiuterà di funzionare). Quando compare [PARKED], lo script si ferma e suggerisce di riavviare.

In caso di successo, è possibile utilizzare root in questo modo:

adb shell -t /data/local/tmp/pc98260-su
adb shell /data/local/tmp/pc98260-su -c "id"

Perché si blocca in caso di fallimento

La catena di exploit richiede il recupero preciso della "pagina in cui si trova il timer di destinazione". Se non si osserva la stessa pagina di destinazione, o se la verifica dopo la scrittura del puntatore risulta incoerente, il programma mantiene gli zombie/mapping correlati e si arresta, evitando un recupero cieco mentre il nodo pendente è ancora referenziato dal kernel. In questo caso, il confine per il tentativo successivo deve essere un nuovo avvio del telefono.

Confini del repository

Questo repository non contiene: backup del dispositivo, immagini boot/init_boot, immagini di partizione, payload.bin, kernel/ELF estratti dal firmware, log di esecuzione grezzi, numeri di serie ADB o boot ID. logs/ e build/ sono ignorati da Git. In bin/ sono presenti solo i quattro binari temporanei della catena di privilege escalation.

Avvertenze di sicurezza

Scarica lo strumento