Una nueva vulnerabilidad de Linux permite el acceso de administrador mediante
la manipulación de binarios en caché. La vulnerabilidad en el subsistema de
control de tráfico del kernel de Linux permite que un usuario local sin
privilegios obtenga acceso de root en los sistemas afectados.
La vulnerabilidad
CVE-2026-46331, apodado
«pedit COW», permite a los usuarios locales obtener acceso de
administrador en sistemas Linux
afectados corrompiendo la memoria caché de páginas a través de
act_pedit.
Esta vulnerabilidad es una escritura fuera de límites en la acción de edición
de paquetes (act_pedit) que corrompe la memoria caché de páginas
compartida. Un
exploit público
y funcional apareció apenas un día después de la asignación de la CVE, el 16
de junio. Red Hat
considera esta vulnerabilidad importante.
El exploit nunca accede al archivo en disco. Envenena la copia en caché
de un binario de root setuid (/bin/su) en memoria, inyecta una
pequeña carga útil y ejecuta esa imagen modificada como root. Las
comprobaciones de integridad de archivos no generan ningún problema mientras
ya hay una shell de root abierta.
El exploit requiere dos condiciones: que act_pedit sea cargable
y que los espacios de nombres de usuario sin privilegios estén abiertos, lo
que otorga al atacante la capacidad de red local del espacio de nombres
(CAP_NET_ADMIN) necesaria para activar el fallo.
En los sistemas RHEL y Debian probados, ambas condiciones estaban presentes.
Cómo funciona el error
La herramienta de control de tráfico tc de Linux puede reescribir las
cabeceras de los paquetes en tránsito mediante una acción llamada
pedit. La función del kernel que realiza esta acción,
tcf_pedit_act(), debería crear una copia privada de los datos antes de
editarlos, siguiendo el patrón estándar de copia en escritura.
Se verifica el rango de escritura una sola vez, antes de conocerse los
desplazamientos finales. Algunas claves de edición solo resuelven su
desplazamiento en tiempo de ejecución. Cuando esto sucede, la escritura se
produce fuera de la región copiada privadamente, por lo que el kernel modifica
una página de la caché de páginas compartida en lugar de una copia privada. Si
esa página pertenece a un archivo en caché, la imagen en memoria del archivo
se corrompe.
El patrón es conocido.
Dirty Pipe,
Copy Fail,
Dirty Clone
y
Dirty Frag
comparten la misma estructura: una ruta rápida del kernel escribe en
una página que no le pertenece exclusivamente, y la caché de páginas sufre la
penalización.
La novedad reside en el punto de entrada. Un usuario sin privilegios puede
configurar las acciones de tc desde dentro de un espacio de nombres de
usuario, lo que le otorga el CAP_NET_ADMIN que necesita el
exploit.
Sistemas afectados
El autor de la prueba de concepto informó de una explotación de usuario sin
privilegios a root en RHEL 10 y Debian 13 (trixie), donde los espacios
de nombres de usuario sin privilegios están abiertos por defecto. Ubuntu 24.04
requería enrutar la ejecución a través de perfiles de AppArmor que aún
permitían espacios de nombres de usuario. Ubuntu 26.04 bloquea esta ruta por
defecto, ya que sus perfiles de AppArmor restringen los espacios de
nombres de usuario sin privilegios, aunque el kernel subyacente sigue siendo
vulnerable.
Las correcciones varían según el proveedor.
-
Debian ha corregido trixie
a través de su canal de seguridad. Debian 11 y 12 siguen figurando como
vulnerables. -
Ubuntu enumera las versiones compatibles
desde la 18.04 hasta la 26.04
como vulnerables a fecha de 25 de junio. -
Red Hat enumera RHEL 8, 9 y 10 como afectadas; RHEL 7 no aparece en el
boletín.
Qué hacer
Instalar el kernel parcheado y reiniciar. Priorizar los sistemas donde
«usuario local» no significa usuario de confianza: hosts multiusuario,
ejecutores de CI/CD, nodos de Kubernetes, trabajadores de compilación y
máquinas compartidas de investigación o laboratorio.
Si aún no puedes aplicar el parche, existen dos medidas para interrumpir la
cadena de explotación. En sistemas que no requieren reglas de `tc pedit`,
verifica si el módulo está en uso:
lsmod | grep act_pedit
echo 'install act_pedit /bin/true' | sudo tee /etc/modprobe.d/disable-act_pedit.conf`
Como alternativa, desactivar los espacios de nombres de usuario sin
privilegios (user.max_user_namespaces=0 en RHEL,
kernel.unprivileged_userns_clone=0 en Debian/Ubuntu). Esto
elimina la capacidad de acceso local al espacio de nombres que necesita la
explotación, pero afecta a los contenedores sin privilegios de root, a algunos
entornos aislados de CI y a los navegadores aislados. Realiza pruebas antes de
comenzar.
Dado que la sobrescritura se realiza en la memoria caché, es posible que las
comprobaciones de integridad de archivos no la detecten. Se puede vaciar la caché de
páginas:
echo 3 > /proc/sys/vm/drop_caches
Con esto se borra la copia en memoria infectada, pero no se soluciona el
problema de la shell de root que el atacante ya había abierto.
Se debe considerar el host como comprometido.
La solución se publicó en la
lista de correo de netdev
a finales de mayo, presentada como un parche rutinario para la corrupción de
datos. El detalle explotable permaneció en una lista de correo pública durante
semanas. Se incluyó en la advertencia de seguridad CVE. La CVE se asignó
cuando se integró la solución el 16 de junio. La prueba de concepto con
potencial de explotación se publicó al día siguiente. Para los errores de
corrupción de la caché de páginas del kernel, esperar a que se complete una
regla de escaneo es demasiado lento.
Fuente:
THN

