
Este repositorio contiene un informe de validación de laboratorio y artefactos de detección para DirtyFrag CVE-2026-43284, un problema de escalada de privilegios local en Linux relacionado con la ruta de escritura de la caché de páginas XFRM/ESP. El enfoque se centra en la telemetría de auditd, la correlación de eventos y la lógica de detección orientada a SOC.
Alcance: Validación de escalada local de privilegios (LPE) en Linux centrada en la ruta XFRM/ESP asociada con CVE-2026-43284.
Este repositorio contiene un informe en inglés y artefactos de evidencia de una validación controlada en laboratorio del PoC público DirtyFrag. El enfoque no es proporcionar una guía de explotación, sino documentar qué fue visible en los registros de auditoría de Linux y cómo esos eventos pueden transformarse en lógica práctica de detección para SOC.
Informe PDF completo:
EN: reports/DirtyFrag_CVE-2026-43284_EN.pdf
PL: reports/DirtyFrag_CVE-2026-43284_PL.pdf
La prueba se realizó para verificar si un usuario local normal podía obtener una shell root en una VM de laboratorio vulnerable y para determinar qué eventos se pueden capturar con auditd.
CVE-2026-43284 se relaciona con el manejo incorrecto de fragmentos de página compartidos durante operaciones ESP/IPsec. Bajo condiciones específicas, un atacante local puede influir en los datos de la caché de páginas y escalar privilegios. Ubuntu Security califica esta vulnerabilidad como CVSS 3.1: 7.8 Alta.
| Vulnerabilidad | Alcance | Componente | CVSS |
|---|---|---|---|
| CVE-2026-43284 | Escritura en caché de páginas XFRM/ESP | XFRM / ESP, esp4/esp6 | 7.8 Alta |
Referencias técnicas:
Línea base completa del sistema: evidence/logs/system-info-table.md
Antes de la ejecución del PoC, el contexto de prueba era una cuenta de usuario normal. Después de ejecutar ./exp, se obtuvo una shell root y se confirmó con whoami e id.

Después de la prueba, los registros de auditd y las salidas de resumen se exportaron a un directorio de evidencia local y se copiaron en este repositorio.






La detección más útil no es un único evento. La señal más fuerte es la cadena completa observada en una ventana de tiempo corta:
user namespace -> vmsplice/splice -> ESP/XFRM -> su -> root shell with AUID of a normal user
IF
dirty_frag_unshare by auid>=1000
AND count(dirty_frag_vmsplice + dirty_frag_splice by same exe or pid) >= 3 within 600s
AND MAC_IPSEC_EVENT / XFRM activity within 1200s
AND (dirty_frag_su_exec OR execve with euid=0 and auid>=1000) within 1200s
THEN
alert = "Possible DirtyFrag CVE-2026-43284 Linux LPE"
severity = high/critical
euid=0; esto también detecta el uso legítimo de sudo.unshare, vmsplice, splice, la actividad XFRM/ESP, su y la creación de procesos root desde una sesión de usuario normal.kernel.unprivileged_userns_clone donde la compatibilidad de aplicaciones lo permita.lost debe permanecer en 0 durante las pruebas y la monitorización en producción.El estado de auditd recopilado mostró lost=2555, lo que significa que algunos eventos de auditoría pueden haberse descartado. La cadena clave sigue siendo visible, pero las pruebas futuras deberían aumentar el backlog de auditoría y confirmar lost=0 antes de ejecutar el PoC.
El informe se centra intencionalmente en CVE-2026-43284 / XFRM/ESP para evitar mezclar el alcance de detección del SOC con otras rutas relacionadas con DirtyFrag.
| Parámetro | Valor |
|---|
| Distribución | Ubuntu 24.04.4 LTS / noble |
| Kernel de prueba | 6.17.0-23-generic |
| Arquitectura | x86_64 |
| Virtualización | Oracle VirtualBox |
| CPU | 12th Gen Intel(R) Core(TM) i5-12450H, 1 vCPU |
| RAM | 12 GiB |
| Sistema de archivos raíz | ext4 |
| Usuario de prueba | uid=1000(user), gid=1000(user), grupos incluyen sudo, adm, lpadmin |
| unprivileged_userns_clone | 1 |
| auditd | activo, reglas de auditoría DirtyFrag/LPE cargadas |
| AppArmor | activo; perfil unprivileged_userns visible en los registros |
| Ruta | Descripción |
|---|
docs/DirtyFrag_CVE-2026-43284_auditd_detection_report.docx | Informe DOCX en inglés. |
evidence/logs/audit.log | Registro completo de auditd con eventos sin procesar. |
evidence/logs/dirtyfrag-filtered.log | Registro filtrado con eventos relacionados con DirtyFrag/LPE. |
evidence/logs/dirty_frag_vmsplice.log | Eventos vmsplice del proceso del PoC. |
evidence/logs/dirty_frag_splice.log | Eventos splice del proceso del PoC. |
evidence/logs/dirty_frag_execve_su.log | Ejecución de /usr/bin/su después de la actividad del PoC. |
evidence/logs/lpe_root_exec_from_user_session.log | Procesos ejecutados como root desde la sesión de usuario original. |
evidence/logs/audit-key-summary.txt | Resumen del recuento de eventos por clave de auditd. |
evidence/logs/audit-exec-summary.txt | Resumen de ejecutables de aureport. |
evidence/logs/audit-rules-loaded.txt | Reglas de detección de auditd activas. |
evidence/logs/system-info-table.md | Tabla de línea base del sistema. |
evidence/screenshots/01-dirtyfrag-root-shell.png | Captura de pantalla que confirma la transición de usuario a shell root. |
tools/generate-system-info-table.sh | Script auxiliar utilizado para generar la tabla de información del sistema. |
| Clave | Significado |
|---|
dirty_frag_unshare | unshare ejecutado por un usuario sin privilegios; indica preparación de un namespace de usuario. |
dirty_frag_vmsplice | Actividad vmsplice desde un proceso de usuario; principal señal de caché de páginas. |
dirty_frag_splice | Actividad splice desde un proceso de usuario; correlacionada con vmsplice. |
dirty_frag_su_exec / dirty_frag_execve_su | Ejecución de /usr/bin/su después de la fase de caché de páginas. |
lpe_root_exec_from_user_session | execve con euid=0 en una sesión propiedad de auid>=1000; prueba sólida de LPE cuando se correlaciona. |
| Hora | Evento | Artefacto | Significado |
|---|
| 21:10:48 | reglas de auditd cargadas | audit-rules-loaded.txt, audit.log | La monitorización estaba activa antes de la ejecución del PoC. |
| 21:11:32 | unshare por ./exp | dirtyfrag-filtered.log | El proceso de usuario entró en unprivileged_userns. |
| 21:11:32-21:11:39 | vmsplice / splice por ./exp | dirty_frag_vmsplice.log, dirty_frag_splice.log | Comportamiento de la caché de páginas visible a través de la telemetría de llamadas al sistema. |
| 21:11:32-21:11:39 | MAC_IPSEC_EVENT / XFRM ESP | audit.log | Eventos SAD-add y SA-icv-failure en 127.0.0.1 con SPI 0xdeadbeXX. |
| 21:11:39 | su - | dirty_frag_execve_su.log | Intento de entrar en una shell root después de la ejecución del PoC. |
| 21:11:39 | sh / dash como root | lpe_root_exec_from_user_session.log | UID=root y EUID=root mientras AUID=user. |
| 21:11:48 | whoami como root | lpe_root_exec_from_user_session.log, captura de pantalla | Confirmación manual de la escalada exitosa. |
| 21:11:49 | id como root | lpe_root_exec_from_user_session.log, captura de pantalla | Confirmación manual de uid=0(root). |