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
Herramientas/GitHubGitHub/binarymasc/cve-2026-46242
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubbinarymasc/cve-2026-46242

CVE-2026-46242

Verificador de prueba de concepto para Aarch64 de CVE-2026-46242 'Bad Epoll', que desencadena la condición de carrera use-after-free close-vs-close del epoll del kernel de Linux para validar la escalada local de privilegios.

Ver Repositorio
hace 4 díasAún no revisado

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

CVE-2026-46242 — "Bad Epoll"

Este repositorio es un validador de Bad Epoll para kernels aarch64 basado en un exploit que ya existe para x86.

Escalada de privilegios local del kernel de Linux mediante condición de carrera de use-after-free en epoll

CampoDetalle
CVECVE-2026-46242
ApodoBad Epoll
TipoUse-After-Free (UAF) mediante condición de carrera
CVSS7.8 (High)
ImpactoEscalada local de privilegios → root
Kernels afectados5.10 – 6.11 (LTS y COS)
Subsistemafs/eventpoll.c (ruta ep_remove() / cierre)

Resumen de la vulnerabilidad

Existe una condición de carrera en el subsistema epoll del kernel de Linux durante operaciones close() concurrentes sobre descriptores de archivo monitoreados y monitoreadores. Cuando dos rutas de cierre se ejecutan simultáneamente:

  1. Una ruta libera un objeto eventpoll mediante ep_remove().
  2. La escritura pendiente hlist_del_rcu() de la otra ruta aterriza en la memoria ya liberada.

Esto produce un Use-After-Free que corrompe la lista refs del eventpoll reclamado, dejando un puntero epi->ffd.file colgante en el waiter de epoll sobreviviente — la base de la cadena de explotación completa.


Flujo de explotación

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│ 1. KASLR Leak       (prefetch side-channel via libxdk)  │
├─────────────────────────────────────────────────────────┤
│ 2. Race Trigger      (close-vs-close UAF on eventpoll)  │
│    ├─ Adaptive timer: stat/exec phases calibrate ahead  │
│    ├─ False-sharing:  dup()+close() widens race window  │
│    └─ Oracle:         EPOLL_CTL_ADD depth-3 → ELOOP?    │
├─────────────────────────────────────────────────────────┤
│ 3. Reclaim           (freed eventpoll → ep_uaf_target)  │
│    └─ Dangling epi->ffd.file in ep_uaf_waiter           │
├─────────────────────────────────────────────────────────┤
│ 4. Cross-Cache       (filp slab → buddy → pipe_buffer)  │
│    ├─ Drain per-CPU partial list                        │
│    ├─ Free enclosing objects → slab page freed          │
│    └─ Reclaim as pipe pages (256 × 4 KiB)              │
├─────────────────────────────────────────────────────────┤
│ 5. Constrained AAR   (fdinfo ino:/sdev: as read oracle) │
│    ├─ Fake file spray tiles forged struct file in pipe  │
│    ├─ 8B read: ino: ← i_ino at controlled offset       │
│    ├─ 4B read: sdev: ← sigaltstack(sas_ss_sp) cursor   │
│    └─ Walk: init_task → find exploit task → resolve     │
│       files → fdt → fd[] → pipe_buffer → struct page   │
├─────────────────────────────────────────────────────────┤
│ 6. RIP Control       (f_op→poll hijack → JOP → ROP)    │
│    ├─ Forge f_op = virt, f_count = virt - 1             │
│    ├─ JOP pivot chain lands rsp on controlled page      │
│    └─ libxdk ROP: commit_creds(init_cred) + ns switch  │
├─────────────────────────────────────────────────────────┤
│ 7. Ret2Usr           execve("/bin/bash") as root        │
└─────────────────────────────────────────────────────────┘

Compilación

root@kitploit:~
# aarch64 (cross-compile or native)
aarch64-linux-gnu-gcc -O2 -Wall -pthread -march=armv8-a \
    race_check_aarch64.c -o race_check

Uso

root@kitploit:~
./race_check [timeout_seconds]   # default: 300s (5 min)
./race_check 120                 # 2-minute timeout

Códigos de salida

CódigoSignificado
0Carrera ganada — el kernel es vulnerable
1Tiempo de espera agotado — carrera no detectada (posible falso negativo, no demuestra que el kernel esté parcheado)

Referencias

  • PoC original (J-jaeyoung)
  • NVD — CVE-2026-46242

⚠️ Aviso legal: Este repositorio se proporciona únicamente con fines educativos y de investigación de seguridad autorizada. El uso no autorizado de este exploit contra sistemas que no posees o para los que no tienes permiso explícito de prueba es ilegal.

Descargar herramienta