1 puntos por GN⁺ 4 시간 전 | 1 comentarios | Compartir por WhatsApp
  • Vulnerabilidad UAF por condición de carrera en el subsistema epoll del kernel de Linux, que permite a un proceso sin privilegios obtener permisos de root no solo en escritorios y servidores Linux, sino también en dispositivos Android
  • Esta vulnerabilidad fue reportada y explotada como 0-day por Jaeyoung Chung en kernelCTF de Google; kernelCTF ofrece recompensas de $71,337+ por exploits del kernel de Linux
  • La IA Mythos de Anthropic encontró otro bug de condición de carrera en el mismo código de epoll, CVE-2026-43074, pero se le escapó Bad Epoll
  • epoll es una función central del kernel de la que dependen sistemas operativos, servicios de red y navegadores, por lo que no se puede desactivar; sin un workaround simple, la única solución es aplicar el parche
  • La vulnerabilidad fue introducida en el commit 58c9b016e128 del 2023-04-08 y corregida con el commit a6dc643c6931 del 2026-04-24; pueden verse afectadas las distribuciones con kernels basados en v6.4 o superiores que no tengan el backport de la corrección

Naturaleza y gravedad de Bad Epoll

  • Bad Epoll es una vulnerabilidad use-after-free (UAF) por condición de carrera en el subsistema epoll del kernel de Linux, identificada como CVE-2026-46242
  • Un proceso sin privilegios puede obtener permisos de root y puede afectar no solo escritorios y servidores Linux, sino también dispositivos Android
  • Fue enviada como 0-day a kernelCTF de Google, y Jaeyoung Chung la reportó y la explotó
  • kernelCTF ofrece recompensas de $71,337+ por exploits del kernel de Linux

Por qué es peligrosa

  • Es un bug de escalada de privilegios en Linux con una rara posibilidad de root en Android
    • Muchas vulnerabilidades de escalada de privilegios en Linux requieren módulos que Android no carga, por lo que no llevan a root en Android
    • De unas 130 vulnerabilidades explotadas en Google kernelCTF, alrededor de 10 son candidatas para root en Android, y Bad Epoll es una de ellas
  • Puede dispararse incluso dentro del renderer sandbox de Chrome
    • Este sandbox bloquea casi todos los demás bugs del kernel
    • Encadenar un exploit del renderer con Bad Epoll puede llegar a tener impacto de ejecución de código en el kernel, como en el caso que Project Zero mostró con MSG_OOB
  • epoll no tiene kill-switch
    • Los de la familia Copy Fail pueden neutralizarse descargando el módulo vulnerable
    • epoll es una función central de la que dependen el sistema operativo, los servicios de red y los navegadores, por lo que no se puede desactivar
    • La única solución es aplicar el parche
  • La ventana de carrera es extremadamente pequeña, de alrededor de 6 instrucciones
    • Los intentos comunes casi nunca aciertan
    • El exploit amplía la ventana de carrera y ejecuta un loop de reintentos que no crashea el kernel
    • Como resultado, muestra una confiabilidad de alrededor del 99% en los objetivos de kernelCTF

El bug que Mythos no detectó

  • En 2023, un único commit 58c9b016e128 introdujo dos condiciones de carrera separadas en unas 2,500 líneas de código de epoll
  • Mythos de Anthropic encontró una de ellas y la reportó como CVE-2026-43074
    • Ese resultado es un caso significativo porque demuestra lo difícil que es detectar bugs de condición de carrera en el kernel
    • Luego, un investigador independiente envió a kernelCTF un exploit 1-day para esta vulnerabilidad
  • La otra condición de carrera es Bad Epoll, y Mythos no la detectó
    • Dado que Mythos encontró el primer bug en la misma pequeña ruta de código de epoll, es posible que haya investigado esa misma área de forma significativa
    • No se sabe la razón exacta por la que se le escapó Bad Epoll
  • Factores que pudieron dificultar la detección de Bad Epoll
    • La ventana de carrera es de apenas unas 6 instrucciones, lo que hace difícil imaginar el interleaving exacto de hilos solo mirando el código vulnerable
    • Después de la corrección de CVE-2026-43074, el UAF de Bad Epoll normalmente no dispara KASAN
    • Sin una señal de KASAN, Mythos pudo no haber tenido suficiente confianza para reportarlo como un bug real
  • Corregirlo tampoco fue fácil
    • El primer parche del mantenedor no solucionó completamente el problema
    • El parche correcto entró en mainline dos meses después del primer reporte

Flujo del ataque

  • Dos rutas de cierre de epoll se ejecutan al mismo tiempo y colisionan
    • Mientras una ruta libera un objeto, la otra sigue escribiendo en ese objeto, provocando un UAF
  • El exploit organiza cuatro objetos epoll en dos pares
    • Un par dispara la condición de carrera
    • El otro par se convierte en el objeto víctima
  • Luego convierte una escritura UAF de 8 bytes en un UAF de objeto file
    • Con un ataque cross-cache, controla todo el contenido de file
  • Tras obtener control, consigue lectura arbitraria de memoria del kernel a través de /proc/self/fdinfo
  • En la etapa final, secuestra el flujo de control y ejecuta una cadena ROP para obtener una shell root
  • Material técnico detallado

Mitigación y versiones afectadas

  • epoll no se puede desactivar, así que no hay un workaround simple
  • La solución es aplicar el commit upstream a6dc643c6931 o el backport de la distribución
  • Momento de introducción y corrección de la vulnerabilidad
    • Introducida: [58c9b016e128], 2023-04-08
    • Corregida: [a6dc643c6931], 2026-04-24
  • Pueden verse afectadas las distribuciones Linux que usen kernels basados en v6.4 o superiores y que todavía no hayan aplicado el backport de la corrección
  • Los kernels antiguos basados en v6.1 no se ven afectados porque la vulnerabilidad se introdujo en v6.4

Objetivos del exploit y estado en Android

  • El exploit actual está escrito para los objetivos de Google kernelCTF
    • lts-6.12.67 (LTS): 99% reliable
    • cos-121-18867.294.100 (COS): 98% reliable
  • El exploit para Android todavía está en progreso
    • Pixel 10, kernel v6.6+: el PoC actual dispara el UAF, y el exploit completo para root está en desarrollo
    • El exploit para Android y el writeup se publicarán cuando estén terminados
    • Pixel 8 y otros dispositivos basados en v6.1 no se ven afectados porque la vulnerabilidad se introdujo en v6.4

Línea de tiempo

  • 2023-04-08: el bug se introdujo en epoll con el commit 58c9b016e128
  • 2026-02-17: se reportó el bug a security@kernel.org
  • 2026-02-17: el mantenedor propuso un prototipo de parche, pero no era la corrección adecuada y la discusión se detuvo
  • 2026-04-02: la corrección de CVE-2026-43074 encontrada por Mythos entró en mainline
  • 2026-04-22: se volvió a reportar el problema restante
  • 2026-04-24: el commit de corrección de Bad Epoll a6dc643c6931 entró en mainline

Nombre y referencias

  • El nombre Bad Epoll sigue la serie “Bad” de bugs del kernel con posibilidad de root en Android
  • Esta página es una versión breve; el análisis completo de root-cause, la documentación del exploit y el código se ofrecen en enlaces separados

1 comentarios

 
GN⁺ 4 시간 전
Opiniones en Lobste.rs
  • Que esta vulnerabilidad sea alcanzable desde el sandbox de Chrome es realmente grave, y me sorprende un poco que se haya reportado vía kCTF y que la recompensa haya sido de solo $71k

  • Bryan Cantrill volvió a tener razón

    • Me da un poco de pena admitirlo, pero honestamente mi primer pensamiento fue el mismo
    • Tengo curiosidad. No conozco el contexto de qué fue lo que acertó
    • Si es posible, agradecería un poco de contexto
  • No se dejen engañar por el repositorio que a primera vista parece vacío. El exploit está enlazado más abajo en el README
    Todavía no lo he probado, y no hay mitigaciones. Los autores afirman que también permite rootear Android, así que, pensando en el ecosistema Android, siento que mi fabricante me dará el parche recién dentro de un mes más o menos. Además, también funciona desde el sandbox del renderer de Chrome

    • Compré un teléfono Android en 2023 y la última actualización del kernel fue a mediados de 2024. Si este bug es de esa época, recibir el parche podría ser más bien algo poco común
  • ¿Esto también funciona en Android?

    • Está escrito en la segunda oración
  • ¿Hay información sobre cómo se descubrió esto? Dicen que Mythos no lo detectó, así que me pregunto si lo encontraron con ayuda de otro modelo de lenguaje grande o si fue una revisión hecha por una persona
    Si fue así, también me pregunto por qué estaban revisando esta parte

  • “Muchas distribuciones de Linux pueden verse afectadas si usan kernels basados en v6.4 o posteriores y aún no han hecho backport de la corrección. Para saber si el commit de corrección anterior fue backporteado, revisen las actualizaciones de seguridad del kernel de su distribución. Los kernels antiguos basados en v6.1 no se ven afectados porque el bug se introdujo en v6.4.”
    Qué lástima. Esperaba que fuera una buena forma de rootear teléfonos, pero parece demasiado reciente como para ser particularmente útil. Mi teléfono usa 5.15