Vulnerabilidad en Linux permite acceso root mediante corrupción de memoria
Publicado el
Introducción
La reciente vulnerabilidad identificada en el kernel de Linux, CVE-2026-46331, apodada 'pedit COW', representa un riesgo significativo al permitir que usuarios no privilegiados obtengan acceso root en sistemas afectados. Esta falla se origina en el subsistema de control de tráfico y se debe a una escritura fuera de límites en la acción de edición de paquetes (act_pedit).
Descripción de la vulnerabilidad
El exploit no interactúa con el archivo en disco, sino que contamina la copia en caché de un binario setuid root, como /bin/su, inyectando un pequeño payload y ejecutando esta imagen alterada como root. Los chequeos de integridad de archivos pueden no detectar este acceso no autorizado, ya que el exploit actúa sobre la memoria en lugar de los archivos físicos.
Para que el exploit funcione, se requieren dos condiciones: que la acción act_pedit sea cargable y que los espacios de nombres de usuario no privilegiados estén habilitados, lo que proporciona al atacante la capacidad de red necesaria (CAP_NET_ADMIN) para activar la vulnerabilidad. En pruebas realizadas en RHEL y Debian, ambas condiciones estaban presentes.
Funcionamiento del exploit
La herramienta de control de tráfico tc de Linux puede reescribir encabezados de paquetes en vuelo utilizando la acción pedit. La función del kernel que realiza esta acción, tcf_pedit_act(), se supone que hace una copia privada de los datos antes de editarlos, siguiendo el patrón estándar de copia en escritura. Sin embargo, si algunas claves de edición solo resuelven su desplazamiento en tiempo de ejecución, esto puede llevar a que la escritura se realice fuera de la región copiada de manera privada, afectando en su lugar una página de caché compartida.
Sistemas afectados
El autor del PoC ha reportado que la explotación de esta vulnerabilidad ha sido exitosa en RHEL 10 y Debian 13 (trixie), donde los espacios de nombres de usuario no privilegiados están habilitados por defecto. Ubuntu 24.04 requiere ejecutar enrutamiento a través de perfiles de AppArmor que aún permiten estos espacios de nombres, mientras que Ubuntu 26.04 bloquea este acceso por defecto.
Medidas recomendadas
Es crucial instalar el kernel parcheado y reiniciar los sistemas afectados. Se deben priorizar aquellos en los que un "usuario local" no se considera confiable, como hosts multi-inquilino, runners de CI/CD, nodos de Kubernetes, trabajadores de construcción y equipos compartidos.
Si no es posible aplicar el parche, existen dos mitigaciones que pueden neutralizar la cadena de explotación: 1. Para sistemas que no requieren reglas tc pedit, se puede comprobar si el módulo está en uso y bloquear su carga. 2. Desactivar los espacios de nombres de usuario no privilegiados.
Sin embargo, esta última opción puede afectar a contenedores sin root y algunas configuraciones de sandboxing.
Conclusiones
Dada la naturaleza de la vulnerabilidad, que permite la corrupción de memoria en caché, los chequeos de integridad de archivos pueden no detectar el acceso no autorizado. Los administradores de sistemas deben tratar cualquier host afectado como comprometido y aplicar las medidas correctivas necesarias de inmediato. La amenaza fue discutida en una lista de correo pública antes de que se asignara la CVE y se publicara un exploit funcional, lo que enfatiza la necesidad de una mayor vigilancia en torno a las vulnerabilidades del kernel.