Bad Epoll (CVE-2026-46242)
(github.com/J-jaeyoung)- Vulnerabilidade UAF por condição de corrida no subsistema
epolldo kernel Linux, que permite a um processo sem privilégios obter permissões de root não só em desktops e servidores Linux, mas também em dispositivos Android - A vulnerabilidade foi reportada e explorada como 0-day por Jaeyoung Chung no kernelCTF do Google; o kernelCTF oferece recompensas de US$ 71.337+ por exploits do kernel Linux
- A IA Mythos, da Anthropic, encontrou no mesmo código de
epolloutra falha de condição de corrida, a CVE-2026-43074, mas deixou passar a Bad Epoll epollé uma função central do kernel da qual dependem sistemas operacionais, serviços de rede e navegadores, portanto não pode ser desativada; sem uma mitigação simples, aplicar o patch é a única solução- A vulnerabilidade foi introduzida no commit
58c9b016e128, de 2023-04-08, e corrigida pelo commita6dc643c6931, de 2026-04-24; distribuições baseadas em kernels v6.4 ou superiores que não tenham backport da correção podem ser afetadas
Natureza e gravidade da Bad Epoll
- Bad Epoll é uma vulnerabilidade use-after-free (UAF) por condição de corrida no subsistema
epolldo kernel Linux, identificada como CVE-2026-46242 - Um processo sem privilégios pode obter permissões de root, e a falha pode afetar não só desktops e servidores Linux, mas também dispositivos Android
- Foi submetida como 0-day ao kernelCTF do Google e reportada e explorada por Jaeyoung Chung
- O kernelCTF oferece recompensas de US$ 71.337+ por exploits do kernel Linux
Por que é perigosa
- É uma falha de escalonamento de privilégios no Linux com rara possibilidade de root no Android
- Muitas vulnerabilidades de escalonamento de privilégios no Linux exigem módulos que o Android não carrega, portanto não levam a root no Android
- Entre cerca de 130 vulnerabilidades exploradas no Google kernelCTF, aproximadamente 10 são candidatas a root no Android, e a Bad Epoll é uma delas
- Pode ser acionada mesmo dentro do renderer sandbox do Chrome
- Esse sandbox bloqueia quase todos os outros bugs de kernel
- Encadear um exploit de renderer com a Bad Epoll pode levar a impacto de execução de código no kernel, como no caso mostrado pelo Project Zero com
MSG_OOB
epollnão tem kill-switch- A família Copy Fail pode ser neutralizada descarregando o módulo vulnerável
epollé uma função central da qual dependem o sistema operacional, serviços de rede e navegadores, portanto não pode ser desativada- A única solução é aplicar o patch
- A janela de corrida é muito pequena, de cerca de 6 instruções
- Tentativas comuns quase nunca acertam
- O exploit amplia a janela de corrida e executa um loop de tentativas que não causa crash do kernel
- Como resultado, apresentou confiabilidade em torno de 99% nos alvos do kernelCTF
O bug que o Mythos deixou passar
- Em 2023, um único commit
58c9b016e128introduziu duas condições de corrida distintas em cerca de 2.500 linhas de código deepoll - O Mythos, da Anthropic, encontrou uma delas e a reportou como CVE-2026-43074
- Esse resultado é um caso relevante por mostrar a dificuldade de detectar bugs de condição de corrida no kernel
- Depois, um pesquisador independente submeteu ao kernelCTF um exploit 1-day para essa vulnerabilidade
- A outra condição de corrida é a Bad Epoll, que o Mythos deixou passar
- Como o Mythos encontrou o primeiro bug no mesmo pequeno caminho de código de
epoll, é possível que tenha investigado essa área de forma significativa - O motivo exato de ter deixado passar a Bad Epoll é desconhecido
- Como o Mythos encontrou o primeiro bug no mesmo pequeno caminho de código de
- Fatores que podem ter dificultado a detecção da Bad Epoll
- A janela de corrida tem apenas cerca de 6 instruções, tornando difícil imaginar a intercalação correta de threads apenas olhando o código vulnerável
- Após a correção da CVE-2026-43074, o UAF da Bad Epoll normalmente não aciona o KASAN
- Sem o sinal do KASAN, o Mythos pode não ter tido confiança suficiente para reportar como um bug real
- A correção também não foi fácil
- O primeiro patch do mantenedor não corrigiu o problema por completo
- O patch correto entrou na mainline dois meses após o primeiro relatório
Fluxo do ataque
- Dois caminhos de fechamento de
epollsão executados simultaneamente e entram em conflito- Enquanto um caminho libera o objeto, o outro continua escrevendo nele, causando UAF
- O exploit organiza quatro objetos
epollem dois pares- Um par aciona a condição de corrida
- O outro par se torna o objeto vítima
- Em seguida, converte um UAF write de 8 bytes em um UAF de objeto file
- Com um ataque cross-cache, passa a controlar todo o conteúdo de file
- Depois de obter controle, consegue leitura arbitrária de memória do kernel por meio de
/proc/self/fdinfo - Na etapa final, sequestra o fluxo de controle e executa uma cadeia ROP para obter um shell root
- Materiais técnicos detalhados
Mitigação e versões afetadas
epollnão pode ser desativado, portanto não há mitigação simples- A solução é aplicar o commit upstream
a6dc643c6931ou o backport da distribuição - Momento de introdução e correção da vulnerabilidade
- Introdução: [
58c9b016e128], 2023-04-08 - Correção: [
a6dc643c6931], 2026-04-24
- Introdução: [
- Distribuições Linux que usam kernels baseados na v6.4 ou superiores e que ainda não aplicaram o backport da correção podem ser afetadas
- Kernels antigos baseados na v6.1 não são afetados, pois a vulnerabilidade foi introduzida na v6.4
Alvos do exploit e status no Android
- O exploit atual foi escrito para os alvos do Google kernelCTF
lts-6.12.67(LTS): 99% reliablecos-121-18867.294.100(COS): 98% reliable
- O exploit para Android ainda está em andamento
- Pixel 10, kernel v6.6+: a PoC atual aciona o UAF, e o exploit completo para root está em andamento
- O exploit para Android e o writeup serão publicados após a conclusão
- Pixel 8 e outros dispositivos baseados na v6.1 não são afetados, pois a vulnerabilidade foi introduzida na v6.4
Linha do tempo
- 2023-04-08: o bug foi introduzido em
epollpelo commit58c9b016e128 - 2026-02-17: o bug foi reportado a security@kernel.org
- 2026-02-17: o mantenedor propôs um protótipo de patch, mas ele não era a correção correta, e a discussão parou
- 2026-04-02: a correção da CVE-2026-43074 encontrada pelo Mythos entrou na mainline
- 2026-04-22: o problema remanescente foi reportado novamente
- 2026-04-24: o commit de correção da Bad Epoll,
a6dc643c6931, entrou na mainline
Nome e referências
- O nome Bad Epoll segue a série “Bad” de bugs de kernel com potencial de root no Android
- Exemplos anteriores incluem Bad Binder, Bad IO_uring e Bad Spin
- Esta página é a versão curta; a análise completa de root-cause, a documentação do exploit e o código são fornecidos em links separados
1 comentários
Opiniões no Lobste.rs
O fato de essa vulnerabilidade ser acessível a partir da sandbox do Chrome é realmente grave, e é um pouco surpreendente que tenha sido reportada via kCTF e a recompensa tenha ficado em apenas US$ 71 mil
Bryan Cantrill acertou de novo
Não se deixe enganar pelo repositório que parece vazio à primeira vista. O exploit está linkado mais abaixo no README
Ainda não testei, e não há mitigação. Os autores dizem que também é possível fazer root no Android, então, pensando no ecossistema Android, acho que minha fabricante só vai me dar um patch daqui a mais ou menos um mês. Além disso, também funciona na sandbox do renderizador do Chrome
Isso também funciona no Android?
Há alguma informação sobre como isso foi descoberto? Dizem que o Mythos deixou passar, então fiquei curioso se foi encontrado com a ajuda de outro modelo de linguagem grande ou por revisão humana
Se for o caso, também fico curioso sobre por que olharam para essa parte
“Muitas distribuições Linux podem ser afetadas se usam kernels baseados na v6.4 ou superior e ainda não fizeram backport da correção. Para saber se o commit de correção acima foi backportado, verifique as atualizações de segurança do kernel da sua distribuição. Kernels mais antigos baseados na v6.1 não são afetados porque o bug foi introduzido na v6.4.”
Que pena. Eu esperava que fosse uma boa forma de fazer root em celulares, mas é recente demais, então provavelmente não será especialmente útil. O meu celular usa a versão 5.15