DirtyClone es una vulnerabilidad de escalado de privilegios en el kernel de Linux perteneciente a la familia DirtyFrag. JFrog Security Research publicó una demostración funcional del exploit el 25 de junio, siendo la primera demostración pública de esta variante.
Rastreada como CVE-2026-43503 (CVSS 8.8), permite a un usuario local corromper la memoria respaldada por archivos a través de un paquete de red clonado y obtener root. El parche llegó a mainline el 21 de mayo; si tu kernel no lo tiene, actualiza ahora.
Cuando el kernel copia internamente un paquete de red, dos funciones auxiliares eliminan una bandera de seguridad que marca la memoria del paquete como compartida con un archivo en disco. Esa bandera faltante constituye toda la vulnerabilidad.
El atacante carga un binario privilegiado como /usr/bin/su en memoria, vincula esas páginas de memoria a un paquete de red y fuerza al kernel a clonarlo. El paquete clonado pasa a través de un túnel IPsec controlado por el atacante, y el paso de descifrado sobrescribe las comprobaciones de inicio de sesión del binario con bytes elegidos por el atacante. La próxima vez que alguien ejecute su, otorgará acceso root.
El archivo en disco nunca cambia. La modificación reside únicamente en la copia en memoria del kernel, por lo que las herramientas de integridad de archivos no la detectan, el ataque no deja rastro en los registros de auditoría y un reinicio restaura el binario original. El atacante ya tiene root cuando alguien podría pensar en verificarlo.
La explotación requiere CAP_NET_ADMIN para configurar el túnel IPsec de loopback. En Debian y Fedora, los espacios de nombres de usuario sin privilegios están habilitados por defecto, por lo que un usuario local puede obtener esa capacidad dentro de un nuevo espacio de nombres.
Ubuntu 24.04 y versiones posteriores restringen la creación de espacios de nombres mediante AppArmor, bloqueando la ruta de explotación predeterminada. El caché de páginas se comparte a nivel del host, por lo que las modificaciones realizadas dentro de un espacio de nombres afectan a todos los procesos de la máquina.
Los sistemas expuestos son servidores multiinquilino, ejecutores de CI, hosts de contenedores y clústeres de Kubernetes donde usuarios no confiables pueden crear espacios de nombres. JFrog confirmó el exploit en sistemas Debian, Ubuntu y Fedora con configuraciones de espacios de nombres por defecto.
Cuarta de una serie
Esta es la cuarta vulnerabilidad de escalado de privilegios reciente con el mismo modo de falla: la memoria respaldada por archivos se trata como datos de paquete, y luego una operación de red in situ escribe donde debería haber copiado.
- Copy Fail (CVE-2026-31431) apareció primero a finales de abril, explotando el módulo algif_aead para una escritura de cuatro bytes en el caché de páginas.
- DirtyFrag (CVE-2026-43284 y CVE-2026-43500) le siguió el 7 de mayo, encadenando rutas IPsec ESP y RxRPC para una primitiva de escritura completa.
- Fragnesia (CVE-2026-46300) apareció el 13 de mayo, evitando el parche de DirtyFrag mediante un error de eliminación de bandera en skb_try_coalesce().
Cada parche cerró una ruta de código y dejó otras abiertas. El exploit demostrado de DirtyClone se centra en __pskb_copy_fclone(), y skb_shift() también se ve afectado; la corrección más amplia de CVE cubre ayudantes adicionales de transferencia de fragmentos donde la misma bandera podría perderse.
El problema subyacente no es una función auxiliar defectuosa. Es un problema de contrato: cada ruta de código que mueve fragmentos de skb debe preservar el bit de fragmento compartido, en todo momento.
La red de copia cero del kernel permite que la memoria respaldada por archivos sirva como datos de paquete, y una sola bandera caída en cualquier punto de la cadena convierte una optimización de rendimiento en una primitiva de escritura. Cada variante encontró una ruta donde no se respetó el contrato.
El investigador original de DirtyFrag, Hyunwoo Kim, había presentado un parche multisitio más amplio que cubría varios ayudantes de transferencia de fragmentos restantes el 16 de mayo. La corrección combinada se fusionó el 21 de mayo (commit 48f6a5356a33), se asignó CVE-2026-43503 el 23 de mayo y se incluyó en Linux v7.1-rc5 el 24 de mayo.
Qué hacer
Instala la actualización del kernel de tu distribución. La corrección llegó a upstream en v7.1-rc5 y se ha retroportado a las ramas estable y LTS. Ubuntu, Debian y SUSE han publicado avisos; Red Hat tiene una entrada de seguimiento en Bugzilla.
Si no puedes parchear hoy, dos soluciones temporales reducen la superficie de ataque. Restringe los espacios de nombres de usuario sin privilegios: en Debian y Ubuntu, establece kernel.unprivileged_userns_clone=0 (otras distribuciones usan mecanismos diferentes).
Alternativamente, bloquea los módulos del kernel esp4, esp6 y rxrpc, aunque eso rompe IPsec y AFS y solo funciona cuando esas características son módulos cargables en lugar de estar compiladas en el kernel. Ambos son controles temporales, no correcciones.
La clase DirtyFrag probablemente no ha terminado. Cualquier función que mueva descriptores de fragmentos sin propagar la bandera de fragmento compartido es un posible nuevo CVE, y la auditoría debería cubrir cada ruta que toque skb_shinfo()->flags durante la transferencia de fragmentos.