Pedit COW: nueva vulnerabilidad en Linux permite a los usuarios obtener root
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


0 Comments:
Publicar un comentario
Gracias por dejar un comentario en Segu-Info.
Gracias por comentar!