1 pontos por GN⁺ 4 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Vulnerabilidade UAF por condição de corrida no subsistema epoll do 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 epoll outra 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 commit a6dc643c6931, 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 epoll do 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
  • epoll nã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 58c9b016e128 introduziu duas condições de corrida distintas em cerca de 2.500 linhas de código de epoll
  • 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
  • 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 epoll sã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 epoll em 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

  • epoll não pode ser desativado, portanto não há mitigação simples
  • A solução é aplicar o commit upstream a6dc643c6931 ou 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
  • 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% reliable
    • cos-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 epoll pelo commit 58c9b016e128
  • 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
  • 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

 
GN⁺ 4 시간 전
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

    • É meio constrangedor admitir, mas, sinceramente, esse também foi meu primeiro pensamento
    • Fiquei curioso. Não conheço o contexto do que ele acertou
    • Seria bom se alguém pudesse dar um pouco de contexto, se possível
  • 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

    • Comprei um celular Android em 2023 e a última atualização de kernel foi em meados de 2024. Se este bug for dessa época, talvez receber um patch seja até algo incomum
  • Isso também funciona no Android?

    • Está escrito na segunda frase
  • 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