Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Dirty-Frag-CVE-2026-43284 — Un informe sobre Dirty Frag, que es una cadena de vulnerabilidades de escalada de privilegios local (LPE) en Linux que permite a un usuario sin privilegios obtener acceso root. | Kitploit
Herramientas/GitHubGitHub/kuniyal08/dirty-frag-cve-2026-43284
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónAnálisis ForenseDetección de IntrusionesAprendizaje y EducaciónRespuesta a IncidentesLabs y Práctica

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
GitHub
kuniyal08/dirty-frag-cve-2026-43284

Dirty-Frag-CVE-2026-43284

Un informe sobre Dirty Frag, que es una cadena de vulnerabilidades de escalada de privilegios local (LPE) en Linux que permite a un usuario sin privilegios obtener acceso root.

Ver Repositorio
117hace 1 mesAún no revisado

Dirty Frag (CVE-2026-43284 y CVE-2026-43500)

Laboratorio de reproducción y detección de exploits para una cadena de escalada de privilegios local en el kernel de Linux.

Estado: VERIFICADO. Completé la reproducción, la verificación sin archivos y la detección a nivel de llamadas al sistema en el laboratorio (kernel 6.18.9+kali-amd64). Este documento es un registro de laboratorio. Cada afirmación a continuación fue observada durante la ejecución de la reproducción. Las capturas de pantalla y los artefactos son capturas reales de la máquina virtual.

Tabla de Contenidos

  • Resumen
  • Por Qué Esto Importa
  • Detalles Técnicos
  • Entorno de Laboratorio
  • Estructura del Repositorio
  • Lista de Verificación de Progreso
  • Procedimiento de Reproducción
  • Ingeniería de Detección
  • Respuesta a Incidentes
  • Mitigación
  • Solución de Problemas
  • Referencias y Créditos
  • Legal y Ética

Resumen

Dirty Frag combina dos errores lógicos deterministas en el kernel de Linux. Estos errores permiten que un usuario local sin privilegios sobrescriba la caché de páginas de archivos de solo lectura (por ejemplo, /usr/bin/su) y obtenga un shell root:

VarianteCVESumideroRuta de activación¿Necesita userns sin privilegios?
Escritura en Caché de Páginas xfrm‑ESPCVE‑2026‑43284crypto_authenc_esn_decrypt() en esp_input()socket(AF_INET) con UDP‑encap, luego xfrm_input()Sí (CAP_NET_ADMIN)
Escritura en Caché de Páginas RxRPCCVE‑2026‑43500rxkad_verify_packet_1() (pcbc(fcrypt))socket(AF_RXRPC)No

Ambas variantes usan el mismo patrón raíz que Dirty Pipe y Copy Fail. La llamada al sistema splice(2) coloca una referencia a una página de caché de páginas de un archivo en la ranura frag de un sk_buff del lado del remitente. El atacante solo puede leer este archivo. El código del kernel del lado receptor luego realiza un STORE criptográfico in situ sobre ese frag. Esto muta la caché de páginas en RAM. No ocurre ninguna escritura en disco, por lo que el monitoreo de integridad de archivos (AIDE, Tripwire) no puede verlo. El ataque es determinista. No tiene ventana de carrera ni pánico del kernel en caso de fallo.

  • Rango afectado (según aviso upstream):
    • Variante ESP: desde cac2661c53f3 (2017‑01) hasta f4c50a4034e6 (parcheado 2026‑05‑05)
    • Variante RxRPC: desde 2dc334f1a63a (2023‑06) hasta aa54b1d27fe0 (parcheado 2026‑05‑10)
  • PoC público: V4bel/dirtyfrag (divulgado 2026‑05‑07)
  • Avisos: CERT VU#980487, Red Hat Bugzilla 2467771
  • Severidad (CVSS 3.1, según Canonical): CVE-2026-43284 = 8.8 (Alta), CVE-2026-43500 = 7.8 (Alta)

Por Qué Esto Importa

Dirty Frag es un LPE sin archivos. Corrompe la caché de páginas en memoria, no el archivo en disco. El monitoreo tradicional de integridad de archivos no puede verlo. La detección debe ocurrir en la capa de llamadas al sistema. La cadena usa estas primitivas de llamadas al sistema: socket(AF_ALG)/socket(AF_RXRPC), splice y unshare(CLONE_NEWUSER|CLONE_NEWNET). La ruta ESP también crea sockets UDP AF_INET y netlink. Esta capa es el enfoque de la ingeniería de detección en este repositorio.

Detalles Técnicos

Ambas variantes usan el mismo sumidero: criptografía in situ que ALMACENA bytes en una página de caché de páginas que el atacante coloca con splice(2).

Variante ESP (CVE-2026-43284)

  1. El atacante abre un par de sockets UDP en loopback y configura el lado receptor con UDP_ENCAP_ESPINUDP.
  2. Registra un encabezado ESP forjado (SPI, seq_no_lo e IV) en una tubería con vmsplice, luego 16 bytes de /usr/bin/su en el desplazamiento del archivo objetivo con splice.
  3. Un solo splice empuja la tubería hacia el socket de envío. splice_to_socket() establece MSG_SPLICE_PAGES. Esto coloca la página de caché de páginas de /usr/bin/su directamente en skb->frags[0].
  4. Al recibir, se ejecuta esta secuencia: xfrm4_udp_encap_rcv, luego xfrm_input, luego esp_input(). La rama vulnerable skip_cow (!skb_cloned() && !skb_has_frag_list()) omite skb_cow_data(). Realiza descifrado AEAD in situ con la página de caché de páginas como origen y destino.
  5. crypto_authenc_esn_decrypt() emite un STORE de los 32 bits de orden superior del ESN. Ese valor es replay_esn->seq_hi. El atacante elige este valor en el registro de SA con el atributo netlink XFRMA_REPLAY_ESN_VAL.

El atacante controla tanto la ubicación (desplazamiento de splice) como el valor (4 bytes). La verificación de autenticación se ejecuta después del store, por lo que la capa criptográfica nunca marca la escritura. Esta variante requiere CAP_NET_ADMIN y usa unshare(CLONE_NEWUSER|CLONE_NEWNET).

Variante RxRPC (CVE-2026-43500)

rxkad_verify_packet_1() realiza un descifrado pcbc(fcrypt) de un solo bloque directamente sobre el frag skb fijado con splice. No copia los datos primero. El atacante elige una clave de sesión (add_key("rxrpc", …)) para que decrypt(ciphertext) sea igual a desired_plaintext. Esto produce un STORE de 8 bytes. Esta variante apunta a /etc/passwd. No necesita espacio de nombres de usuario. Requiere el módulo rxrpc.ko (cargado por defecto en Ubuntu).

Resultado del exploit

El PoC público apunta a /usr/bin/su. Escribe 48 stores ESP de 4 bytes cada uno (192 bytes en el desplazamiento de archivo 0). Reemplaza los primeros bytes de la caché de páginas con un ELF estático de shell root. El punto de entrada del ELF ejecuta setgid(0); setuid(0); setgroups(0,NULL); execve("/bin/sh", …). Un solo execve("/usr/bin/su") luego produce un shell root.

La corrección upstream

El parche ESP (mainline f4c50a4034e6) marca los frags de página que llegan a través de splice() con la bandera SKBFL_SHARED_FRAG. La rama skip_cow en esp_input() ahora también verifica esta bandera. Los skbs con frags compartidos pasan por skb_cow_data() antes del descifrado AEAD in situ.

El parche RxRPC (mainline aa54b1d27fe0) agrega una verificación de skb->data_len junto a la verificación existente de skb_cloned(). El kernel copia un skb no lineal con datos paginados antes del descifrado pcbc(fcrypt) in situ.

Entorno de Laboratorio

ComponenteDetalles
HipervisorVirtualBox
VM objetivoKali Linux 2026.1 (instantánea restaurada a un estado vulnerable)
Kernel6.18.9+kali‑amd64 (anterior a las correcciones de mayo de 2026)
PoC del exploitV4bel/dirtyfrag (archivo C único)
Detecciónauditd (reglas en detection/dirtyfrag.rules)

Captura de pantalla de la configuración del laboratorio VirtualBox:

Configuración del laboratorio VirtualBox

Estructura del Repositorio

Descargar herramienta