
Repositorio de investigación para CVE-2026-80844 (DirtyAH6), una escalada de privilegios local en el kernel de Linux IPv6 AH6/XFRM, con PoC, análisis de causa raíz y parche.
DirtyAH6
CVE-2026-80844 es una vulnerabilidad del kernel de Linux que afecta al subsistema IPv6 Authentication Header (AH6) / XFRM.
La vulnerabilidad se debe a una validación insuficiente del campo
segments_left de la cabecera de enrutamiento IPv6, lo que puede provocar
una operación de memoria fuera de límites y la corrupción de la memoria del
kernel.
Este repositorio está destinado únicamente a la investigación de seguridad autorizada, el análisis de vulnerabilidades, los CTFs y las pruebas defensivas.
No utilice esta investigación contra sistemas que no sean de su propiedad o para los que no tenga permiso explícito de realizar pruebas.
La vulnerabilidad existe en la ruta de procesamiento de IPv6 AH6.
El código afectado realiza la manipulación de la cabecera de enrutamiento a través de:
net/ipv6/ah6.c
En concreto, la lógica vulnerable implica:
ipv6_rearrange_rthdr()
La función no validaba adecuadamente la relación entre:
hdrlen
y:
segments_left
Por lo tanto, un atacante capaz de proporcionar un paquete IPv6 especialmente manipulado puede provocar que el kernel opere sobre memoria fuera de los límites esperados de la cabecera de enrutamiento.
Esto puede dar lugar a:
Paquete IPv6 malformado
│
▼
Procesamiento AH6 / XFRM
│
▼
Estado inválido de la cabecera de enrutamiento
│
▼
Operación de memoria fuera de límites
│
▼
Corrupción de la memoria del kernel
│
▼
Potencial escalada de privilegios
El problema fundamental es la validación insuficiente del valor
segments_left de la cabecera de enrutamiento IPv6.
Conceptualmente, la condición vulnerable puede representarse como:
segments_left > direcciones disponibles en la cabecera de enrutamiento
El kernel debe asegurarse de que el número de segmentos solicitados por la cabecera de enrutamiento sea coherente con la longitud real de la cabecera antes de manipular los datos de direcciones asociados.
Sin esa validación, las operaciones de memoria posteriores pueden operar más allá de los límites válidos del búfer.
La explotación exitosa puede permitir a un atacante con las capacidades y el entorno local requeridos corromper la memoria del kernel.
Las posibles consecuencias incluyen:
La explotabilidad exacta depende de la configuración del kernel, los namespaces/capacidades disponibles y otras condiciones del entorno.
net/ipv6/ah6.c
Procesamiento relevante:
AH6
└── Cabecera de enrutamiento IPv6
└── ipv6_rearrange_rthdr()
El escenario problemático implica metadatos incoherentes en la cabecera de enrutamiento.
Por ejemplo, conceptualmente:
hdrlen → describe un número limitado de direcciones
segments_left → afirma que hay más direcciones de las disponibles
Esta discrepancia debe rechazarse antes de que el kernel realice la reorganización de direcciones.
La corrección upstream introduce la validación del valor segments_left de la
cabecera de enrutamiento antes de que el kernel realice la operación
vulnerable.
El commit upstream asociado es:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
La corrección de seguridad puede resumirse como:
Antes:
Confiar en segments_left
↓
Reorganizar direcciones
↓
Potencial acceso fuera de límites
Después:
Validar segments_left
↓
Rechazar cabecera malformada
↓
Procesamiento AH6 seguro
Las versiones afectadas dependen del historial de backports upstream y de los proveedores.
Los usuarios deben verificar el aviso de seguridad de su distribución en lugar de basarse únicamente en el número de versión upstream.
Ejemplos de versiones estables upstream parcheadas incluyen:
Compruebe el kernel en ejecución:
uname -a
o:
uname -r
Compruebe la información detallada del kernel:
cat /proc/version
Para sistemas basados en Debian/Kali:
apt-cache policy linux-image-amd64
Para sistemas basados en RPM:
rpm -q kernel
Los kernels de las distribuciones con frecuencia aplican backports de correcciones de seguridad sin cambiar la versión upstream de forma obvia. Compruebe siempre el aviso/changelog del proveedor.
La mitigación principal es actualizar a un kernel que contenga la corrección de seguridad.
Debian/Kali:
sudo apt update
sudo apt full-upgrade
Después, reinicie:
sudo reboot
Verifique:
uname -r
Para sistemas en producción, consulte el aviso de seguridad oficial de la distribución de Linux antes de aplicar actualizaciones del kernel.
Entorno aislado recomendado:
Host
│
├── Kali Linux
│
└── VM Linux vulnerable
│
├── Kernel de depuración
├── IPv6 habilitado
├── Soporte AH6/XFRM
└── Símbolos del kernel
Herramientas de depuración útiles:
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
Depuración del kernel:
sudo dmesg -w
Inspeccionar los símbolos del kernel:
cat /proc/kallsyms
CVE-2026-80844-DirtyAH6/
│
├── README.md
│
├── exploit/
│ ├── poc.c
│ └── Makefile
│
├── analysis/
│ ├── vulnerability.md
│ ├── root-cause.md
│ └── patch-analysis.md
│
├── kernel/
│ ├── vulnerable.patch
│ └── fixed.patch
│
├── docs/
│ └── research-notes.md
│
├── screenshots/
│
└── LICENSE
El material de la PoC solo debe ejecutarse dentro de un entorno de laboratorio aislado.
La implementación de la investigación se centra en demostrar la condición de cabecera de enrutamiento IPv6 malformada y observar el comportamiento resultante del kernel.
Flujo de trabajo de investigación esperado:
Crear cabecera IPv6 malformada
↓
Transmitir dentro del laboratorio aislado
↓
Procesamiento AH6/XFRM
↓
Observar el comportamiento del kernel
↓
Capturar información de dmesg / crash
↓
Comparar kernel vulnerable vs parcheado
Ejemplo de monitorización:
sudo dmesg -w
Un kernel parcheado debería rechazar la entrada malformada sin llegar a la operación de memoria vulnerable.
Esta vulnerabilidad demuestra por qué los analizadores de red del kernel nunca deben confiar en los campos de longitud o recuento proporcionados por un atacante.
El análisis crítico para la seguridad debe seguir:
Entrada
↓
Validación de límites
↓
Validación de relaciones
↓
Validación de estado
↓
Operación de memoria
en lugar de:
Entrada
↓
Operación de memoria
↓
Validación
Incluso una pequeña incoherencia entre dos campos de metadatos de un paquete puede convertirse en una vulnerabilidad de seguridad de memoria a nivel del kernel.
7bad4bda74dc4713f398d3b7624ff05478e3a568xfrm: ah6: validate routing header segments_leftInvestigación de seguridad del kernel de Linux
CVE-2026-80844 · IPv6 · AH6 · XFRM · LPE
Investigar • Analizar • Comprender • Fortalecer
| Campo | Detalles |
|---|
| CVE | CVE-2026-80844 |
| Nombre en clave | DirtyAH6 |
| Componente | Linux Kernel |
| Subsistema | IPv6 / XFRM / AH6 |
| Tipo de vulnerabilidad | Escalada de privilegios local |
| Vector de ataque | Local |
| Complejidad del ataque | Baja |
| Privilegios requeridos | Bajos |
| Interacción del usuario | Ninguna |
| CVSS v3.1 | 7.8 — Alta |
| Código afectado | net/ipv6/ah6.c |
| Estado | Parcheado |
| Rama del kernel | Versión parcheada |
|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |
| Comportamiento | Kernel vulnerable | Kernel parcheado |
|---|
segments_left malformado | Validación insuficiente | Validado |
| Procesamiento de la cabecera de enrutamiento | Puede continuar | Rechazado cuando es inválido |
| Operación de memoria fuera de límites | Potencialmente alcanzable | Prevenida |
| Corrupción del kernel | Posible | Mitigada |
| Escalada de privilegios | Potencial | Mitigada |