Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
bad-epoll — Exploit de escalada de privilegios del kernel de Linux para CVE-2026-46242, una condición de carrera de use-after-free en epoll, con root fiable al 99 % en escritorios, servidores y dispositivos Android. | Kitploit
Herramientas/GitHubGitHub/j-jaeyoung/bad-epoll
Seguridad AndroidEscalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónCTFAprendizaje y EducaciónExplotación de Binarios
GitHubj-jaeyoung/bad-epoll

bad-epoll

Exploit de escalada de privilegios del kernel de Linux para CVE-2026-46242, una condición de carrera de use-after-free en epoll, con root fiable al 99 % en escritorios, servidores y dispositivos Android.

Ver Repositorio
50644hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Bad Epoll: el bug que Mythos pasó por alto

Exploit de Bad Epoll en ejecución: un proceso sin privilegios escalando a root

Un proceso sin privilegios escalando a root en Google kernelCTF.

Bad Epoll (CVE-2026-46242) es un use-after-free por condición de carrera en el subsistema epoll del kernel de Linux. Este bug permite que un proceso sin privilegios se convierta en root, no solo en escritorios y servidores Linux, sino también en dispositivos Android.

Bad Epoll fue reportado y explotado por Jaeyoung Chung como un envío de 0-day a Google kernelCTF, que recompensa un exploit del kernel de Linux con 71.337+ dólares.

[!NOTE] La IA de Anthropic, Mythos, encontró otro bug de carrera en el mismo código de epoll, pero pasó por alto Bad Epoll.


Por qué es grave

  1. Un bug poco común que puede rootear Android. La mayoría de los bugs de escalada de privilegios en Linux no pueden rootear Android en absoluto. Copy Fail y sus variantes, por ejemplo, necesitan módulos que Android nunca carga. De las aproximadamente 130 vulnerabilidades explotadas en el kernelCTF de Google, solo unas diez son candidatas para rootear Android. Bad Epoll es una de ellas.

    • Bad Epoll también se puede desencadenar desde dentro del sandbox de renderizado de Chrome, que bloquea casi cualquier otro bug del kernel. Un exploit de renderer podría, por tanto, encadenarse con Bad Epoll para lograr ejecución de código en el kernel, el mismo impacto que Project Zero demostró en "From Chrome renderer code exec to kernel with MSG_OOB".
  2. Sin kill-switch. Copy Fail y sus variantes pueden neutralizarse descargando sus módulos vulnerables, pero epoll no tiene esa opción. Es una función central del kernel de la que dependen el sistema operativo, los servicios de red y los navegadores. La única forma de solucionarlo es aplicar el parche.

  3. Ventana de carrera diminuta, pero el ataque es fiable al 99 %. La ventana de carrera del bug tiene solo unas seis instrucciones de ancho, y un intento normal casi nunca acierta. El exploit amplía esa ventana y ejecuta un bucle de reintentos que nunca hace fallar el kernel. El resultado es un exploit fiable al 99 %, como se describe en la descripción general del ataque más abajo.


El bug que Mythos pasó por alto

Un único commit en 2023 introdujo dos condiciones de carrera separadas en el código de epoll, de solo unas 2.500 líneas en total. Ambas resultaron ser bugs críticos que pueden conducir a una escalada de privilegios.

La primera fue encontrada por Mythos de Anthropic y reportada como CVE-2026-43074. Ese resultado es impresionante por sí solo, porque se sabe que los bugs de carrera en el kernel son difíciles de encontrar. Demostró la capacidad de un modelo de IA de frontera para encontrar bugs de carrera. Un investigador independiente presentó posteriormente un exploit de 1-day para kernelCTF.

La otra carrera es Bad Epoll, que Mythos pasó por alto. Dado que Mythos encontró el primer bug en esta pequeña ruta de código de epoll, es probable que examinara la misma zona con una profundidad considerable. No podemos saber exactamente por qué no vio Bad Epoll, pero es probable que dos factores dificultaran su hallazgo.

  • La ventana de carrera es diminuta. Tiene solo unas seis instrucciones de ancho, por lo que la intercalación exacta de hilos es difícil de imaginar incluso al mirar el código vulnerable.

  • Había poca evidencia en tiempo de ejecución. Una vez corregido CVE-2026-43074, el use-after-free de Bad Epoll normalmente no activa KASAN, el principal detector de errores de memoria del kernel. Sin esa señal, Mythos puede no haber tenido suficiente confianza para reportarlo como un bug real.

Bad Epoll también fue difícil de corregir. El primer parche de los mantenedores no solucionó el problema por completo, y un parche correcto llegó solo dos meses después de que se reportara el bug por primera vez. Es mucho tiempo para un kernel que normalmente trata los problemas de seguridad con urgencia.

En general, Bad Epoll demuestra lo difíciles que son las condiciones de carrera en todas las etapas. Son difíciles de encontrar incluso para un modelo de frontera, difíciles de corregir correctamente y, como muestra la siguiente sección, difíciles de explotar de forma fiable. También sugiere una dirección de investigación de vulnerabilidades que sigue mereciendo la pena explorar en presencia de modelos de IA de frontera: descubrir el impacto de seguridad real detrás de condiciones de temporización estrechas y evidencia débil.


Cómo funciona el ataque

Aquí tienes una descripción general de alto nivel del ataque, para los curiosos.

ep_waiter observa a ep_target: las estructuras de epoll detrás del bug

Dos objetos epoll enlazados. Cerrar ambos a la vez desencadena la carrera.

Dos de las rutas de cierre de epoll se ejecutan al mismo tiempo y chocan. Una libera un objeto mientras la otra aún está escribiendo en él, y eso es el use-after-free (UAF).

La ventana de carrera close-vs-close y cómo la impulsa el exploit mediante una interrupción de temporizador

La ventana de carrera y cómo la impulsa el exploit.

El exploit utiliza cuatro objetos epoll agrupados en dos pares. Un par desencadena la carrera, mientras que el otro se convierte en la víctima. A partir de ahí, el exploit convierte la escritura UAF de 8 bytes en un UAF sobre un objeto de archivo, y utiliza un ataque de cross-cache para controlar por completo el contenido del archivo.

Lectura arbitraria del kernel: un struct file colgante respaldado por un pipe filtra direcciones del kernel a través de /proc/self/fdinfo

Convirtiendo el bug en una lectura arbitraria de la memoria del kernel a través de /proc/self/fdinfo.

Con ese control, el exploit consigue una lectura arbitraria de la memoria del kernel a través de /proc/self/fdinfo. Finalmente, secuestra el flujo de control y ejecuta una cadena ROP para obtener una shell de root.

Hay más detalles disponibles en el informe técnico completo del exploit y en el código.


Mitigación

Debido a que epoll no se puede deshabilitar, Bad Epoll no tiene una solución alternativa sencilla. El único remedio es aplicar el parche.

  • Aplica el commit upstream a6dc643c6931, o el backport de tu distribución en cuanto esté disponible.

Versiones afectadas

Bad Epoll fue introducido por 58c9b016e128 (2023-04-08) y corregido por a6dc643c6931 (2026-04-24).

Muchas distribuciones de Linux pueden verse afectadas si usan kernels basados en v6.4 o más recientes y aún no han aplicado el backport de la corrección. Consulta las actualizaciones de seguridad del kernel de tu distribución para ver si hay un backport del commit de corrección mencionado arriba. Los kernels más antiguos basados en v6.1 no se ven afectados porque el bug se introdujo en v6.4.

El exploit actual está escrito para los siguientes objetivos de Google kernelCTF.

  • lts-6.12.67 (LTS), fiable al 99 %
  • cos-121-18867.294.100 (COS), fiable al 98 %

El exploit para Android aún está en curso.

  • Pixel 10 (kernel v6.6+): el PoC actual desencadena el UAF y un exploit de root completo está en curso. Publicaremos el exploit de Android y el informe técnico una vez estén completos.
  • Pixel 8 y otros dispositivos basados en v6.1: no se ven afectados, ya que el bug se introdujo en v6.4.

Cronología


Preguntas frecuentes

¿Por qué se llama "Bad Epoll"?

El nombre sigue la serie "Bad" de bugs del kernel que rootean Android, cuyas entradas anteriores incluyen Bad Binder, Bad IO_uring y Bad Spin. Bad Epoll es la contraparte de epoll.

¿Dónde puedo encontrar los detalles técnicos?

Esta página es la versión breve. Puedes encontrar el análisis completo de la causa raíz, el informe del exploit y el código del exploit en los siguientes enlaces.

  • Informe de la causa raíz
  • Informe del exploit
  • Código del exploit

Créditos

Bad Epoll fue reportado y explotado por Jaeyoung Chung.

Muchas gracias a nuestro grupo de investigación, CompSec Lab, y especialmente a Eulgyu Kim, Woohyuk Choi, Dae R. Jeong y a mi asesor Byoungyoung Lee, por su orientación y apoyo.

Descargar herramienta
FechaEvento
2023-04-08El bug se introdujo en epoll (commit 58c9b016e128).
2026-02-17Reportamos el bug a [email protected].
2026-02-17Los mantenedores propusieron un prototipo de parche, pero no era una corrección adecuada y la discusión se estancó.
2026-04-02La corrección del bug que encontró Mythos (CVE-2026-43074) llegó a mainline.
2026-04-22Volvimos a reportar el problema restante.
2026-04-24La corrección de este bug llegó a mainline (commit a6dc643c6931).