
Ejercicio de detección en laboratorio para DirtyFrag (CVE-2026-43284) - escalada de privilegios del kernel de Linux mediante corrupción de caché de página xfrm-ESP. Informe completo que cubre la ejecución del exploit, brechas de detección y reglas EQL corregidas utilizando Elastic Stack.
Clasificación: Laboratorio Interno - CyberLAB
Fecha: 24 de mayo de 2026
Plataforma: Elastic Stack v9.4.1
Estado: Detección Confirmada
Un ejercicio controlado de explotación simulando un adversario posterior al acceso inicial utilizando DirtyFrag (CVE-2026-43284), una vulnerabilidad de escalada de privilegios del kernel de Linux. El escenario simulado del atacante: un usuario con pocos privilegios (saskia, uid=1001) obtenido mediante credenciales phishing intenta escalar a root en un host Linux interno. El laboratorio utilizó una máquina Ubuntu deliberadamente vulnerable (ubuntu-vuln, kernel 6.0.0-22-generic) aislada de las redes de producción.
El atacante obtuvo acceso completo como root (uid=0) dentro del entorno del laboratorio. La pila de detección de Elastic Security generó 3 alertas de ALTA gravedad (puntuación de riesgo 73) identificando correctamente la cadena de explotación. Sin embargo, la detección requirió ajustes manuales: la configuración predeterminada tenía carencias que habrían resultado en alertas omitidas.
Conclusión: Los hosts Linux sin parches que ejecutan kernel <= 6.x son vulnerables. Si un atacante ya tiene un punto de apoyo con pocos privilegios, este exploit les otorga root completo de forma silenciosa y rápida, sin dejar rastro en disco visible para las herramientas de integridad de archivos.
| Elemento | Detalle |
|---|---|
| Vulnerabilidad | DirtyFrag - CVE-2026-43284 (ruta xfrm-ESP), CVE-2026-43500 (ruta RxRPC) |
| Impacto CVSS | Escalada completa de privilegios local a root |
| Kernels afectados | Linux kernel >= enero 2017 (9 años de vida) |
| Distribuciones afectadas | Ubuntu 24.04.4, RHEL 10.1, AlmaLinux 10, openSUSE, CentOS Stream 10, Fedora 44 |
| Omisión de integridad de archivos | Archivos en disco sin cambios - AIDE, Tripwire, monitoreo de hash reportan todo limpio |
| PoC público | Disponible (V4bel/dirtyfrag en GitHub) |
| Tiempo para root | < 10 minutos desde un punto de apoyo con pocos privilegios |
auditd no producen evidencia. Sin reglas explícitas de syscall para socket, splice y unshare, el exploit se ejecuta silenciosamente: sin registros, sin alertas. La implementación predeterminada de Elastic Agent no añade estas reglas automáticamente.process.parent.pid como clave de correlación. En la práctica, DirtyFrag bifurca procesos intermedios, rompiendo esa correlación. La solución —correlacionar por auditd.session— fue identificada e implementada durante este ejercicio./etc/shadow, accedió a las claves autorizadas de SSH, escribió un marcador de persistencia (/root/pwned.txt) e inició reconocimiento de red mediante nc. Todo ocurrió dentro de los 30 minutos posteriores al acceso inicial.| Prioridad | Acción |
|---|---|
| Inmediata | Parchear el kernel de Linux a una versión corregida en todos los hosts. Aplicar los avisos de seguridad del proveedor para Ubuntu, RHEL, AlmaLinux, openSUSE, CentOS, Fedora. |
| Corto plazo | Implementar reglas explícitas de syscall de auditd para socket, splice y unshare en todos los hosts Linux monitoreados por Elastic Agent. |
| Corto plazo | Actualizar las reglas de detección EQL para correlacionar por auditd.session en lugar de process.parent.pid para secuencias de manipulación de espacios de nombres. |
| Continuo | Tratar las alertas de escalada de privilegios con puntuación de riesgo >= 73 como prioridad alta de triaje. La regla actual se activa en segundos después de la escalada. |
Objetivo: Validar la cobertura de detección para la explotación de DirtyFrag en el SOC del laboratorio local, identificar brechas de detección y producir una regla de detección corregida basada en el comportamiento real observado del atacante.
Modelo de amenaza: Adversario simulado posterior al acceso inicial con credenciales phishing para una cuenta de usuario con pocos privilegios (saskia, uid=1001). Objetivo: escalada de privilegios a root mediante DirtyFrag usando la ruta de recepción xfrm-ESP. La ejecución en el laboratorio se realizó mediante consola de Proxmox, funcionalmente equivalente a SSH posterior al acceso.
Se consideraron dos niveles de capacidad del atacante:
Este ejercicio cubrió el nivel vanilla.
DirtyFrag es la tercera de una familia de errores relacionados del kernel de Linux que todos abusan de la misma causa raíz:
| CVE | Apodo | Introducido | Ruta |
|---|---|---|---|
| CVE-2022-0847 | Dirty Pipe | - | pipe |
| CVE-2026-31431 | Copy Fail | - | splice |
| CVE-2026-43284 | DirtyFrag | Ene 2017 (commit cac2661c53f3) | xfrm-ESP |
| CVE-2026-43500 | DirtyFrag | Jun 2023 (commit 2dc334f1a63a) | RxRPC |
Causa raíz: Las rutas de anexado de datagramas IPv4/IPv6 no establecían SKBFL_SHARED_FRAG después de que skb_splice_from_iter() colocara una página de la caché de páginas en un búfer de socket (sk_buff). Luego, la ruta de entrada de ESP realizaba criptografía in situ en páginas de la caché de páginas controladas por el atacante, tratándolas como skbs no lineales normales no clonados.
Primitiva del exploit: Escritura controlada de 4 u 8 bytes en la caché de páginas. Determinista: no se requiere condición de carrera.
Cadena del exploit:
/usr/bin/su) en la caché de páginassplice() para que la página del archivo se ubique en frag[0] de struct sk_buffxfrm-ESPexecve() del kernel— devuelven bytes corruptosPropiedad crítica de evasión: El archivo en disco nunca se modifica. Las herramientas de monitoreo de integridad de archivos (AIDE, Tripwire, verificaciones hash) todas reportan el archivo objetivo como limpio.
Distribuciones vulnerables confirmadas: Ubuntu 24.04.4, RHEL 10.1, AlmaLinux 10, openSUSE Tumbleweed, CentOS Stream 10, Fedora 44.