Dirty Frag es una vulnerabilidad de escalada de privilegios local (LPE) universal en el kernel de Linux que afecta a todas las distribuciones principales. Se compone de dos cadenas de exploits distintas: una que abusa del subsistema ESP (Encapsulating Security Payload) y otra que explota el subsistema rxrpc/rxkad. Ambas permiten a un usuario local sin privilegios obtener acceso de root.

La cadena ESP aprovecha una debilidad en el manejo de XFRM Security Associations (SAs) y la interacción con splice/vmsplice. Permite a un atacante escribir datos arbitrarios en el page cache de un archivo arbitrario (en este caso, /usr/bin/su). Al sobrescribir los primeros 160 bytes de /usr/bin/su con un ELF de shell root estático, se logra que cualquier invocación posterior de su ejecute /bin/sh como uid 0, eludiendo completamente PAM.

La cadena rxrpc/rxkad explota una debilidad en la verificación de paquetes rxkad v1. Un atacante puede forzar al kernel a realizar una operación de descifrado in-place de 8 bytes en una página del page cache de un archivo arbitrario (en este caso, /etc/passwd). Mediante un ataque de fuerza bruta offline sobre la clave de cifrado (SESSION_KEY) para predecir el resultado del descifrado, el atacante puede modificar selectivamente partes de la entrada de 'root' en /etc/passwd para establecer un campo de contraseña vacío y un UID/GID de 0. Esto, combinado con la opción nullok de pam_unix.so en PAM, permite iniciar sesión como root sin contraseña. La complejidad de la fuerza bruta se gestiona mediante la predicción de los cambios en el ciphertext debido a las escrituras solapadas de los splices.

La falla de las salvaguardas reside en la existencia de estas vulnerabilidades de corrupción de memoria o lógica en componentes de red del kernel que no deberían permitir escrituras arbitrarias en el page cache de archivos del sistema. La capacidad de un usuario sin privilegios para manipular estructuras de datos del kernel de esta manera, incluso dentro de un user namespace, es una falla fundamental en el modelo de seguridad. La ausencia de parches en el momento de la divulgación pública exacerbó el riesgo, dejando a los sistemas expuestos hasta que los mantenedores de las distribuciones pudieran reaccionar.