CVE-2026-31635 'DirtyDecrypt': Vulnerabilidad de Escalada de Privilegios en el Kernel de Linux y Disponibilidad de su PoC
DirtyDecrypt (CVE-2026-31635): Análisis de la Vulnerabilidad de Escalada de Privilegios en el Kernel de Linux y Disponibilidad Pública de su PoC
Fecha de publicación: 19 de mayo de 2026
CVE: CVE-2026-31635 | CVSS v3.1: 7.5 (HIGH)
Introducción
En mayo de 2026, la comunidad de seguridad fue alertada sobre la disponibilidad pública de un código de prueba de concepto (PoC) para una vulnerabilidad de escalada local de privilegios (LPE, por sus siglas en inglés) en el kernel de Linux, bautizada como DirtyDecrypt (también conocida como DirtyCBC). La falla, formalmente identificada como CVE-2026-31635 con una puntuación CVSS v3.1 de 7.5, reside en el módulo rxgk del kernel y fue descubierta de manera independiente por los equipos de seguridad V12 y Zellic, quienes la reportaron el 9 de mayo de 2026, solo para ser informados de que ya había sido corregida silenciosamente en el árbol principal (mainline) el 25 de abril de 2026. La liberación del PoC convierte esta vulnerabilidad en una amenaza activa y concreta: cualquier atacante con acceso local a un sistema que ejecute una distribución con la opción de compilación CONFIG_RXGK habilitada —como Fedora, Arch Linux u openSUSE Tumbleweed— puede escalar sus privilegios hasta root en sistemas sin parchear. La ventana de explotación, amplificada por la disponibilidad del exploit público, exige una respuesta inmediata por parte de equipos de operaciones de seguridad y administradores de sistemas.
¿Qué es DirtyDecrypt?
DirtyDecrypt es una vulnerabilidad de clase escritura arbitraria en la caché de páginas del kernel (page cache write), causada por la ausencia de una guarda de Copy-On-Write (COW) en la función rxgk_decrypt_skb(). En términos conceptuales, el fallo permite que un usuario sin privilegios —es decir, un proceso que corre bajo un UID ordinario— escriba datos arbitrarios en la memoria de procesos privilegiados o en la caché de páginas de archivos de sistema críticos, como binarios con el bit SUID activado, /etc/shadow o /etc/sudoers.
La caché de páginas es la región de memoria donde el kernel almacena temporalmente el contenido de archivos del sistema de ficheros para agilizar el acceso. Normalmente, cuando un proceso intenta modificar una página compartida, el mecanismo COW crea una copia privada antes de permitir la escritura, evitando que la modificación se propague al original. La ausencia de esta verificación en el flujo de descifrado del subsistema RxGK es el punto central de la vulnerabilidad.
DirtyDecrypt forma parte de una familia emergente de vulnerabilidades de escalada de privilegios en el kernel de Linux que comparten la misma clase de fallo: debilidades sutiles en la gestión de memoria y la caché de páginas. Sus parientes directos son Dirty Frag (CVE-2026-43284 / CVE-2026-43500), Fragnesia (CVE-2026-46300) y CopyFail, todos capaces de otorgar acceso root en sistemas vulnerables.
Contexto del subsistema afectado: RxGK es una clase de seguridad para el protocolo de red RxRPC, utilizado principalmente por el Andrew File System (AFS) y OpenAFS. Depende del marco GSSAPI para proveer autenticación, confidencialidad e integridad. Su presencia en el kernel es condicional: solo se activa si el sistema fue compilado con
CONFIG_RXGK.
¿Cómo Funciona?
El Fallo Raíz: Verificación Invertida de Longitud
La causa técnica precisa fue documentada en el registro del CVE y en el análisis de Moselwal Digitalagentur. La función rxgk_verify_response() decodifica el campo auth_len de un paquete de red entrante y debería verificar que dicho valor no exceda el tamaño del payload restante. Sin embargo, la comparación estaba invertida, lo que provoca que autenticadores de respuesta con longitud excesiva (oversized RESPONSE authenticators) sean aceptados y pasados directamente a rxgk_decrypt_skb().
# Pila de llamadas en el kernel vulnerable (extraída del registro CVE-2026-31635):
RIP: __skb_to_sgvec() [net/core/skbuff.c:5285]
skb_to_sgvec() [net/core/skbuff.c:5305]
rxgk_decrypt_skb() [net/rxrpc/rxgk_common.h:81]
rxgk_verify_response() [net/rxrpc/rxgk.c:1268]
rxrpc_process_connection()
process_one_work()
worker_thread()
kthread()
Flujo de Explotación
El PoC publicado por V12 sigue el siguiente flujo para lograr la escalada de privilegios:
- Preparación del entorno: El atacante, con acceso local sin privilegios, verifica que el sistema tenga
CONFIG_RXGKcompilado y activo. - Construcción del paquete malicioso: Se crea un paquete RxRPC con un campo
auth_lensobredimensionado que supera los límites del buffer legítimo. - Omisión de la guarda COW: Al pasar la validación invertida en
rxgk_verify_response(), el paquete llega arxgk_decrypt_skb()sin las verificaciones de integridad necesarias. - Escritura fuera de límites en la caché de páginas: La función de descifrado opera sobre el socket buffer (
sk_buff) con una longitud imposible, permitiendo escribir datos controlados por el atacante en páginas de memoria privilegiadas. - Escalada a root: Dependiendo de la ruta de explotación, el atacante puede sobrescribir un binario SUID (como
/usr/bin/sudo), modificar/etc/sudoerspara añadir permisos irrestrictos, o corromper directamente la memoria de un proceso privilegiado, obteniendo una shell con UID 0.
Condición de Explotación en Entornos de Contenedores
En plataformas de contenedores (Kubernetes, Docker), la explotación es especialmente grave: si un nodo trabajador (worker node) ejecuta una distribución vulnerable, un atacante que haya comprometido un pod podría utilizar DirtyDecrypt como primitiva de escape del contenedor, comprometiendo el nodo subyacente completo.
Sistemas Afectados
La explotación de DirtyDecrypt requiere que el kernel haya sido compilado con la opción CONFIG_RXGK habilitada. Las distribuciones confirmadas como vulnerables (en versiones de kernel anteriores al parche del 25 de abril de 2026) incluyen:
| Distribución | Estado | Notas |
|---|---|---|
| Fedora (versiones recientes) | Vulnerable (sin parche) | CONFIG_RXGK habilitado por defecto |
| Arch Linux | Vulnerable (sin parche) | Kernel de rol rolling release |
| openSUSE Tumbleweed | Vulnerable (sin parche) | Distribución rolling |
| Debian / Ubuntu | Generalmente no afectadas | CONFIG_RXGK no habilitado por defecto |
| Red Hat Enterprise Linux / CentOS | Verificar configuración | Depende de la compilación del kernel |
| Kernels personalizados | Verificar configuración | Cualquier kernel con CONFIG_RXGK=y es potencialmente vulnerable |
Recapitulando
La publicación del exploit para DirtyDecrypt (CVE-2026-31635) es un recordatorio contundente de que la gestión proactiva de parches no es una práctica opcional, sino un pilar fundamental de la postura de seguridad en entornos Linux y servidores de producción. La brecha entre la disponibilidad de un parche (25 de abril de 2026) y la publicación del PoC (mayo de 2026) representa una ventana de riesgo crítica que los equipos de operaciones de seguridad deben esforzarse por cerrar lo más rápidamente posible.
La pertenencia de DirtyDecrypt a una familia activa de LPEs del kernel (Dirty Frag, Fragnesia, CopyFail, Pack2TheRoot) sugiere que estamos ante un período de intensa investigación y divulgación de vulnerabilidades en la gestión de memoria del kernel de Linux. Esto demanda que los equipos de seguridad adopten un enfoque de gestión continua de vulnerabilidades, que incluya el inventariado constante de configuraciones del kernel, la aplicación automatizada de actualizaciones y el monitoreo activo de indicadores de compromiso.
Cuando el código de explotación es público, la pregunta ya no es si los atacantes lo utilizarán, sino cuándo. La velocidad de respuesta en la aplicación de parches es el diferencial más importante entre una organización resiliente y una comprometida.
Referencias
The Hacker News. (2026, 19 de mayo). DirtyDecrypt PoC released for Linux kernel CVE-2026-31635 LPE vulnerability. https://thehackernews.com/2026/05/dirtydecrypt-poc-released-for-linux.html
Goodin, D. (2026, 19 de mayo). Exploit available for new DirtyDecrypt Linux root escalation flaw. BleepingComputer. https://www.bleepingcomputer.com/news/security/exploit-available-for-new-dirtydecrypt-linux-root-escalation-flaw/
Kovacs, E. (2026, 19 de mayo). PoC released for DirtyDecrypt Linux kernel vulnerability. SecurityWeek. https://www.securityweek.com/poc-released-for-dirtydecrypt-linux-kernel-vulnerability/
Moselwal Digitalagentur. (2026, 16 de mayo). DirtyDecrypt — Linux kernel LPE (CVE-2026-31635). https://moselwal.com/blog/dirtydecrypt-linux-kernel-rxgk-cve-2026-31635
THREATINT. (2026). CVE-2026-31635 — rxrpc: fix oversized RESPONSE authenticator length check. https://cve.threatint.eu/CVE/CVE-2026-31635