Bad Epoll (CVE-2026-46242)
(github.com/J-jaeyoung)- Une vulnérabilité UAF due à une condition de concurrence dans le sous-système
epolldu noyau Linux permet à un processus non privilégié d’obtenir les droits root, aussi bien sur des postes de travail et serveurs Linux que sur des appareils Android - Cette vulnérabilité a été signalée et exploitée comme 0-day par Jaeyoung Chung auprès de Google kernelCTF, qui offre des récompenses de 71 337 $ et plus pour les exploits du noyau Linux
- L’IA Mythos d’Anthropic a trouvé un autre bug de condition de concurrence dans le même code
epoll, CVE-2026-43074, mais a manqué Bad Epoll epollétant une fonction cœur du noyau dont dépendent les systèmes d’exploitation, les services réseau et les navigateurs, il ne peut pas être désactivé ; sans contournement simple, la seule solution est d’appliquer le correctif- La vulnérabilité a été introduite par le commit du 08/04/2023
58c9b016e128et corrigée par le commit du 24/04/2026a6dc643c6931; les distributions utilisant un noyau basé sur v6.4 ou ultérieur sans backport du correctif peuvent être affectées
Nature et gravité de Bad Epoll
- Bad Epoll est une vulnérabilité use-after-free (UAF) due à une condition de concurrence dans le sous-système
epolldu noyau Linux, identifiée sous CVE-2026-46242 - Un processus non privilégié peut obtenir les droits root, et la vulnérabilité peut affecter non seulement les postes de travail et serveurs Linux, mais aussi les appareils Android
- Elle a été soumise comme 0-day à Google kernelCTF, et signalée et exploitée par Jaeyoung Chung
- kernelCTF offre des récompenses de 71 337 $ et plus pour les exploits du noyau Linux
Pourquoi c’est dangereux
- Il s’agit d’un bug d’élévation de privilèges Linux rare par sa possibilité de root Android
- Beaucoup de vulnérabilités d’élévation de privilèges Linux nécessitent des modules qu’Android ne charge pas, et ne mènent donc pas à un root Android
- Parmi environ 130 vulnérabilités exploitées dans Google kernelCTF, une dizaine seulement sont candidates au root Android, et Bad Epoll en fait partie
- Il peut être déclenché même dans le renderer sandbox de Chrome
- Cette sandbox bloque presque tous les autres bugs du noyau
- En chaînant un exploit de renderer avec Bad Epoll, on peut atteindre un impact d’exécution de code noyau similaire au cas montré par Project Zero avec
MSG_OOB
epolln’a pas de kill-switch- Les vulnérabilités de la famille Copy Fail peuvent être neutralisées en déchargeant le module vulnérable
epollest une fonction cœur dont dépendent les systèmes d’exploitation, les services réseau et les navigateurs, et ne peut donc pas être désactivé- La seule solution consiste à appliquer le correctif
- La fenêtre de concurrence est extrêmement petite, de l’ordre de 6 instructions
- Les tentatives ordinaires ont très peu de chances de réussir
- L’exploit élargit la fenêtre de concurrence et exécute une boucle de réessai qui ne fait pas planter le noyau
- Il atteint ainsi un niveau de fiabilité d’environ 99 % sur la cible kernelCTF
Le bug manqué par Mythos
- En 2023, un seul commit
58c9b016e128a introduit deux conditions de concurrence distinctes dans environ 2 500 lignes de codeepoll - Mythos d’Anthropic en a trouvé une, signalée sous CVE-2026-43074
- Ce résultat constitue un cas significatif, compte tenu de la difficulté à détecter les bugs de condition de concurrence dans le noyau
- Par la suite, un chercheur indépendant a soumis à kernelCTF un exploit 1-day pour cette vulnérabilité
- L’autre condition de concurrence est Bad Epoll, que Mythos a manquée
- Comme Mythos a trouvé le premier bug dans le même petit chemin de code
epoll, il est possible qu’il ait exploré cette zone de manière significative - La raison exacte pour laquelle Bad Epoll a été manqué est inconnue
- Comme Mythos a trouvé le premier bug dans le même petit chemin de code
- Facteurs ayant pu rendre Bad Epoll difficile à détecter
- La fenêtre de concurrence n’est que d’environ 6 instructions, ce qui rend difficile d’imaginer l’entrelacement exact des threads en ne regardant que le code vulnérable
- Après la correction de CVE-2026-43074, l’UAF de Bad Epoll ne déclenche généralement pas KASAN
- Sans signal KASAN, Mythos n’a peut-être pas eu suffisamment de certitude pour le signaler comme un vrai bug
- La correction n’a pas non plus été simple
- Le premier patch du mainteneur n’a pas complètement résolu le problème
- Le bon correctif a été intégré à la mainline deux mois après le premier signalement
Déroulement de l’attaque
- Deux chemins de fermeture
epolls’exécutent simultanément et entrent en conflit- Pendant qu’un chemin libère l’objet, l’autre continue d’écrire dedans, provoquant une UAF
- L’exploit organise quatre objets
epollen deux paires- Une paire déclenche la condition de concurrence
- L’autre paire devient l’objet victime
- Il transforme ensuite une écriture UAF de 8 octets en UAF d’objet file
- Une attaque cross-cache permet de contrôler l’intégralité du contenu de file
- Une fois le contrôle obtenu, il assure une lecture arbitraire de la mémoire noyau via
/proc/self/fdinfo - À la dernière étape, il détourne le flux de contrôle et exécute une chaîne ROP pour obtenir un shell root
- Documentation technique détaillée
Atténuation et versions affectées
epollne peut pas être désactivé, il n’existe donc pas de contournement simple- La solution consiste à appliquer le commit upstream
a6dc643c6931ou le backport fourni par la distribution - Dates d’introduction et de correction de la vulnérabilité
- Introduction : [
58c9b016e128], 08/04/2023 - Correction : [
a6dc643c6931], 24/04/2026
- Introduction : [
- Les distributions Linux utilisant un noyau basé sur v6.4 ou ultérieur et n’ayant pas encore appliqué le backport du correctif peuvent être affectées
- Les noyaux plus anciens basés sur v6.1 ne sont pas affectés, car la vulnérabilité a été introduite dans v6.4
Cibles de l’exploit et état côté Android
- L’exploit actuel est écrit pour les cibles Google kernelCTF
lts-6.12.67(LTS) : fiable à 99 %cos-121-18867.294.100(COS) : fiable à 98 %
- L’exploit Android est encore en cours
- Pixel 10, kernel v6.6+ : le PoC actuel déclenche l’UAF, et l’exploit root complet est en cours
- L’exploit Android et le writeup seront publiés une fois terminés
- Le Pixel 8 et les autres appareils basés sur v6.1 ne sont pas affectés, car la vulnérabilité a été introduite dans v6.4
Chronologie
- 08/04/2023 : le bug est introduit dans
epollpar le commit58c9b016e128 - 17/02/2026 : le bug est signalé à security@kernel.org
- 17/02/2026 : un mainteneur propose un prototype de patch, mais ce n’est pas le bon correctif et la discussion s’interrompt
- 02/04/2026 : le correctif de CVE-2026-43074 trouvé par Mythos est intégré à la mainline
- 22/04/2026 : le problème restant est signalé à nouveau
- 24/04/2026 : le commit de correction de Bad Epoll
a6dc643c6931est intégré à la mainline
Nom et références
- Le nom Bad Epoll suit la série « Bad » des bugs noyau pouvant permettre un root Android
- Les précédents incluent Bad Binder, Bad IO_uring et Bad Spin
- Cette page est une version courte ; l’analyse complète de la root-cause, la documentation d’exploitation et le code sont fournis via des liens séparés
1 commentaires
Commentaires sur Lobste.rs
Le fait que cette vulnérabilité soit accessible depuis la sandbox de Chrome est vraiment énorme, et je suis un peu surpris qu’elle ait été signalée via kCTF et que la récompense se soit limitée à 71 k$.
Bryan Cantrill avait encore raison.
Ne vous laissez pas tromper par le dépôt qui a l’air vide au premier abord. L’exploit est lié vers le bas du README.
Je ne l’ai pas encore testé, et il n’y a pas de mesure d’atténuation. Les auteurs affirment qu’il permet aussi de rooter Android ; vu l’écosystème Android, je suppose que mon fabricant ne me fournira un correctif que dans un mois environ. En plus, il fonctionne aussi depuis la sandbox du renderer Chrome.
Ça fonctionne aussi sur Android ?
Y a-t-il des infos sur la manière dont cela a été découvert ? Apparemment, Mythos l’a raté ; je me demande si ça a été trouvé avec l’aide d’un autre grand modèle de langage, ou par une revue humaine.
Et dans ce cas, je me demande aussi pourquoi cette partie a été examinée.
« De nombreuses distributions Linux peuvent être affectées si elles utilisent un kernel basé sur v6.4 ou ultérieur et n’ont pas encore rétroporté le correctif. Pour savoir si le commit correctif ci-dessus a été rétroporté, consultez les mises à jour de sécurité du kernel de votre distribution. Les anciens kernels basés sur v6.1 ne sont pas affectés, car le bug a été introduit en v6.4. »
Dommage. J’espérais que ce serait une bonne méthode pour rooter un téléphone, mais c’est trop récent et ça ne sera probablement pas particulièrement utile. Mon téléphone est en 5.15.