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
Strumenti/GitHubGitHub/j-jaeyoung/bad-epoll
Sicurezza AndroidEscalation di PrivilegiAnalisi delle VulnerabilitàExploitCTFApprendimento e FormazioneBinary Exploitation
GitHubj-jaeyoung/bad-epoll

bad-epoll

Exploit di escalation dei privilegi del kernel Linux per CVE-2026-46242, una race condition use-after-free in epoll, con root affidabile al 99% su desktop, server e dispositivi Android.

Vedi Repository
5064432 mesi 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

Bad Epoll: il bug sfuggito a Mythos

Exploit Bad Epoll in esecuzione: un processo non privilegiato che scala a root

Un processo non privilegiato che scala a root su Google kernelCTF.

Bad Epoll (CVE-2026-46242) è una use-after-free da race condition nel sottosistema epoll del kernel Linux. Questo bug consente a un processo non privilegiato di diventare root, non solo su desktop e server Linux ma anche su dispositivi Android.

Bad Epoll è stato segnalato e sfruttato da Jaeyoung Chung come invio 0-day a Google kernelCTF, che premia un exploit per il kernel Linux con $71.337+.

[!NOTE] L'IA di Anthropic, Mythos, ha trovato un altro bug di race nello stesso codice di epoll ma non ha visto Bad Epoll.


Perché è grave

  1. Un bug raro in grado di dare root su Android. La maggior parte dei bug di escalazione dei privilegi su Linux non può assolutamente dare root su Android. Copy Fail e le sue varianti, ad esempio, richiedono moduli che Android non carica mai. Delle circa 130 vulnerabilità sfruttate su kernelCTF di Google, solo una decina sono candidate per dare root su Android. Bad Epoll è una di queste.

    • Bad Epoll può essere innescato anche dall'interno della sandbox del renderer di Chrome, che blocca quasi tutti gli altri bug del kernel. Un exploit del renderer potrebbe quindi concatenarsi con Bad Epoll per ottenere l'esecuzione di codice nel kernel, lo stesso impatto dimostrato da Project Zero in "Dall'esecuzione di codice nel renderer di Chrome al kernel con MSG_OOB".
  2. Nessun kill-switch. Copy Fail e le sue varianti possono essere neutralizzati scaricando i loro moduli vulnerabili, ma epoll non ha questa opzione. È una funzionalità fondamentale del kernel su cui si basano il sistema operativo, i servizi di rete e i browser. L'unico modo per risolverlo è applicare la patch.

  3. Finestra di race minuscola, ma l'attacco è affidabile al 99%. La finestra di race del bug copre solo circa sei istruzioni, e un tentativo normale quasi mai la centra. L'exploit allarga quella finestra ed esegue un ciclo di ripetizione che non manda mai in crash il kernel. Il risultato è un exploit affidabile al 99%, come descrive la panoramica dell'attacco qui sotto.


Il bug sfuggito a Mythos

Un singolo commit del 2023 ha introdotto due race condition separate nel codice di epoll, composto in tutto da circa 2.500 righe. Entrambe si sono rivelate bug critici che possono portare all'escalation dei privilegi.

La prima è stata trovata dall'IA Mythos di Anthropic e segnalata come CVE-2026-43074. Quel risultato è di per sé impressionante, perché i bug di race nel kernel sono noti per essere difficili da trovare. Ha dimostrato la capacità di un modello AI di frontiera di individuare bug di race. Un ricercatore indipendente ha in seguito inviato un exploit 1-day relativo a quel bug a kernelCTF.

L'altra race è Bad Epoll, quella sfuggita a Mythos. Dato che Mythos ha trovato il primo bug in questo piccolo percorso di codice di epoll, probabilmente ha esaminato la stessa area con una profondità significativa. Non possiamo sapere esattamente perché gli sia sfuggito Bad Epoll, ma due fattori probabilmente ne hanno reso difficile la scoperta.

  • La finestra di race è minuscola. Copre solo circa sei istruzioni, quindi l'esatta interleaving dei thread è difficile da immaginare anche osservando il codice vulnerabile.

  • C'erano poche prove a runtime. Dopo la correzione di CVE-2026-43074, la use-after-free di Bad Epoll di solito non attiva KASAN, il principale rilevatore di errori di memoria del kernel. Senza quel segnale, Mythos potrebbe non aver avuto abbastanza sicurezza per segnalarlo come un bug reale.

Anche correggere Bad Epoll è stato difficile. La prima patch dei manutentori non ha risolto completamente il problema, e una patch corretta è arrivata solo due mesi dopo la prima segnalazione del bug. È un lasso di tempo lungo per un kernel che di solito gestisce i problemi di sicurezza con urgenza.

Nel complesso, Bad Epoll mostra quanto le race condition siano difficili in ogni fase. Sono difficili da trovare persino per un modello di frontiera, difficili da correggere correttamente e, come mostra la sezione successiva, difficili da sfruttare in modo affidabile. Suggerisce inoltre una direzione di ricerca sulle vulnerabilità che vale ancora la pena esplorare in presenza di modelli AI di frontiera: scoprire il reale impatto sulla sicurezza dietro condizioni temporali ristrette e prove deboli.


Come funziona l'attacco

Ecco una panoramica di alto livello dell'attacco, per i curiosi.

ep_waiter osserva ep_target: le strutture epoll alla base del bug

Due oggetti epoll collegati. Chiuderli entrambi contemporaneamente innesca la race.

Due dei percorsi di chiusura di epoll vengono eseguiti contemporaneamente e collidono. Uno libera un oggetto mentre l'altro vi sta ancora scrivendo, e questa è la use-after-free (UAF).

La finestra di race close-vs-close e come l'exploit la pilota tramite un interrupt del timer

La finestra di race e come l'exploit la pilota.

L'exploit usa quattro oggetti epoll raggruppati in due coppie. Una coppia innesca la race, mentre l'altra diventa la vittima. Da lì, l'exploit trasforma la scrittura UAF di 8 byte in una UAF su un oggetto file e usa un attacco cross-cache per controllare completamente il contenuto del file.

Lettura arbitraria del kernel: una struct file dangling supportata da una pipe fa trapelare indirizzi del kernel tramite /proc/self/fdinfo

Trasformare il bug in una lettura arbitraria della memoria del kernel tramite /proc/self/fdinfo.

Con quel controllo, l'exploit ottiene una lettura arbitraria della memoria del kernel tramite /proc/self/fdinfo. Infine, dirotta il flusso di controllo ed esegue una catena ROP per ottenere una shell root.

Maggiori dettagli sono disponibili nel writeup completo dell'exploit e nel codice.


Mitigazione

Poiché epoll non può essere disabilitato, Bad Epoll non ha una semplice soluzione alternativa. L'unico rimedio è applicare la patch.

  • Applica il commit upstream a6dc643c6931, oppure il backport della tua distribuzione appena disponibile.

Versioni interessate

Bad Epoll è stato introdotto da 58c9b016e128 (2023-04-08) e corretto da a6dc643c6931 (2026-04-24).

Molte distribuzioni Linux potrebbero essere interessate se utilizzano kernel basati su v6.4 o versioni successive e non hanno ancora applicato il backport della correzione. Controlla gli aggiornamenti di sicurezza del kernel della tua distribuzione per un backport del commit di correzione sopra indicato. I kernel più vecchi basati su v6.1 non sono interessati perché il bug è stato introdotto in v6.4.

L'exploit attuale è scritto per i seguenti target di Google kernelCTF.

  • lts-6.12.67 (LTS), affidabile al 99%
  • cos-121-18867.294.100 (COS), affidabile al 98%

L'exploit per Android è ancora in lavorazione.

  • Pixel 10 (kernel v6.6+): il PoC attuale innesca la UAF e un exploit root completo è in lavorazione. Rilasceremo l'exploit e il writeup per Android quando saranno completi.
  • Pixel 8 e altri dispositivi basati su v6.1: non interessati, poiché il bug è stato introdotto in v6.4.

Cronologia


FAQ

Perché si chiama "Bad Epoll"?

Il nome segue la serie "Bad" di bug del kernel in grado di dare root su Android, le cui voci precedenti includono Bad Binder, Bad IO_uring, e Bad Spin. Bad Epoll è la controparte per epoll.

Dove posso trovare i dettagli tecnici?

Questa pagina è la versione breve. Puoi trovare l'analisi completa della causa principale, il writeup dell'exploit e il codice dell'exploit nei seguenti link.

  • Writeup della causa principale
  • Writeup dell'exploit
  • Codice dell'exploit

Crediti

Bad Epoll è stato segnalato e sfruttato da Jaeyoung Chung.

Un enorme ringraziamento al nostro gruppo di ricerca, CompSec Lab, e in particolare a Eulgyu Kim, Woohyuk Choi, Dae R. Jeong e al mio advisor Byoungyoung Lee, per la loro guida e il loro supporto.

Scarica lo strumento
DataEvento
2023-04-08Il bug è stato introdotto in epoll (commit 58c9b016e128).
2026-02-17Abbiamo segnalato il bug a [email protected].
2026-02-17I manutentori hanno proposto un prototipo di patch, ma non era la correzione giusta e la discussione si è poi arenata.
2026-04-02La correzione per il bug trovato da Mythos (CVE-2026-43074) è arrivata in mainline.
2026-04-22Abbiamo risegnalato il problema rimanente.
2026-04-24La correzione per questo bug è arrivata in mainline (commit a6dc643c6931).