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:

  1. Preparación del entorno: El atacante, con acceso local sin privilegios, verifica que el sistema tenga CONFIG_RXGK compilado y activo.
  2. Construcción del paquete malicioso: Se crea un paquete RxRPC con un campo auth_len sobredimensionado que supera los límites del buffer legítimo.
  3. Omisión de la guarda COW: Al pasar la validación invertida en rxgk_verify_response(), el paquete llega a rxgk_decrypt_skb() sin las verificaciones de integridad necesarias.
  4. 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.
  5. Escalada a root: Dependiendo de la ruta de explotación, el atacante puede sobrescribir un binario SUID (como /usr/bin/sudo), modificar /etc/sudoers para 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