Bad Epoll: La race del kernel che può consegnare le chiavi a un utente locale
Un use-after-free nella fase di teardown di epoll in Linux, tracciato come CVE-2026-46242, mostra come un piccolo bug di lifetime nel codice privilegiato possa trasformare un normale accesso utente in un controllo a livello root.
Alcune delle vulnerabilità più pericolose non si trovano mai in driver appariscenti o interfacce esotiche. Si nascondono nella logica di manutenzione che mantiene in vita il kernel. CVE-2026-46242 fa esattamente questo: vive nel teardown di epoll di Linux, dove una race attorno al lifetime degli oggetti può permettere a un utente locale non privilegiato di ottenere i privilegi root su sistemi Linux e Android interessati.
Fatti rapidi
- CVE-2026-46242 è un use-after-free del kernel Linux nel percorso di codice di epoll.
- La vulnerabilità è legata a `fs/eventpoll.c` e alla logica di teardown di `ep_remove()` / `ep_remove_file()`.
- Il bug può consentire a un utente locale non privilegiato di ottenere root su sistemi Linux e Android interessati.
- La correzione si concentra sulla risoluzione di una race sul lifetime del file, bloccando il file prima che il teardown prosegua.
- L'esposizione su Android dipende dai backport del vendor e dallo stato delle patch, non solo dal numero di versione della piattaforma.
Perché questo bug conta
epoll è un meccanismo fondamentale di Linux per monitorare in modo efficiente i file descriptor. È profondamente integrato in server, software desktop e stack mobili perché consente ai programmi di attendere eventi I/O senza consumare CPU. Questo significa anche che epoll vive molto vicino alla gestione della memoria del kernel con privilegi elevati, dove piccoli errori possono avere conseguenze enormi.
Il guasto tecnico qui è un classico use-after-free. In termini pratici, un percorso nel kernel può rilasciare o azzerare un riferimento a un file mentre un altro percorso concorrente sta ancora agendo sullo stesso oggetto. Se il tempismo coincide, il kernel può operare su memoria già liberata o riutilizzata. Nel codice privilegiato, questo non è solo un problema di stabilità. Può diventare corruzione della memoria e, in questo caso, escalation di privilegi locale.
La correzione mostra perché questi bug sono così ostinati: raramente si risolvono con un semplice controllo. Il kernel aveva bisogno di una correzione del lifetime che fissasse il file prima, in modo che il teardown concorrente non potesse invalidarlo a metà operazione. È il tipo di modifica che riflette una race condition nella proprietà degli oggetti, non un errore di coding di una sola riga.
Per i difensori, la lezione è chiara. Le vulnerabilità di escalation di privilegi locale contano ancora anche quando non sono raggiungibili da remoto. Un punto d'appoggio ottenuto da un altro bug, un account locale malevolo o codice in esecuzione in un ambiente ristretto può diventare un percorso verso il controllo completo a livello kernel se l'host non è patchato. Su Android, la questione dell'esposizione è particolarmente complessa perché i vendor dei dispositivi spesso eseguono backport delle patch del kernel Linux secondo tempistiche proprie.
Al momento della stesura, il quadro tecnico disponibile supporta un rischio di escalation locale a livello kernel, ma non una affermazione universale per ogni build Linux o Android. L'esposizione dipende dal fatto che il codice epoll vulnerabile sia ancora presente in un determinato ramo del kernel o nel backport del vendor.
Conclusione
Bad Epoll ricorda che il kernel non ha bisogno di un bug spettacolare per diventare pericoloso. Può bastare una race in un sottosistema comune. Quando i confini dei privilegi dipendono da lifetime degli oggetti gestiti con precisione, la disciplina delle patch e il controllo delle versioni specifiche del vendor diventano parte della sopravvivenza di base, non igiene opzionale.
WIKICROOK
- epoll: Un sistema di notifica degli eventi I/O del kernel Linux usato per attendere in modo efficiente l'attività dei file descriptor.
- use-after-free: Un difetto di sicurezza della memoria in cui il codice accede alla memoria dopo che è stata liberata, spesso causando corruzione.
- escalation di privilegi: Una tecnica o un risultato di un bug che porta un utente da permessi limitati a privilegi di sistema più elevati.
- teardown del kernel: Il percorso di pulizia in cui il sistema operativo rilascia oggetti e risorse non più in uso.
- backport: Il processo di portare una correzione di sicurezza in un ramo software più vecchio senza aggiornare l'intera versione.




