
Informe de validación en laboratorio y artefactos de detección para CVE-2026-43284 (DirtyFrag) LPE en Linux. Proporciona telemetría de auditd, reglas de correlación de eventos y lógica de detección orientada a SOC para la ruta de escritura de page-cache en XFRM/ESP.
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:
| 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 |
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.






| 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. |
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
| 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). |