Vulnerabilidad en OVSwrap permite a usuarios locales obtener acceso root

Publicado el

Vulnerabilidad en el kernel de Linux

Se ha descubierto una vulnerabilidad de corrupción de memoria en el datapath de Open vSwitch del kernel de Linux, que permite a usuarios locales obtener acceso root en una amplia gama de distribuciones configuradas por defecto. La vulnerabilidad, identificada como CVE-2026-64531, tiene un puntaje CVSS de 7.8 y fue revelada por el investigador de seguridad Asim Manizada el 28 de julio de 2026.

Descripción del problema

El fallo se encuentra en el datapath del kernel y no en el daemon de usuarios `ovs-vswitchd`. Según el análisis técnico de Manizada, un atacante no necesita un puente OVS existente, ni ejecutar `ovs-vswitchd`, ni contar con privilegios CAP_NET_ADMIN a nivel de host. En sistemas afectados donde el datapath del kernel OVS está disponible y se habilitan los espacios de nombres de usuario no privilegiados, un usuario ordinario puede crear espacios de nombres de usuario y red privados utilizando el comando `unshare -Urn`, obtener permisos CAP_NET_ADMIN dentro de ese espacio de nombre y acceder al camino de instalación de flujo vulnerable.

Si el módulo de Open vSwitch está instalado pero no cargado, resolver su nombre de familia de Netlink genérico puede cargarlo automáticamente. Un resultado vacío de `lsmod` no garantiza que el sistema esté a salvo.

Soluciones y recomendaciones

El arreglo para esta vulnerabilidad fue incluido en las ramas estables el 24 de julio. En caso de que no esté disponible un kernel del proveedor corregido y Open vSwitch no sea necesario, se recomienda bloquear futuras cargas de módulos. Si el módulo ya está presente en memoria, debe descargarse o reiniciarse el sistema. Manizada reportó la vulnerabilidad a security@kernel.org y a los mantenedores de OVS el 19 de junio.

Las primeras versiones corregidas del kernel son Linux 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.40 y 7.1.5. Las versiones que han llegado al final de su vida útil, como 6.13 a 6.17, 6.19 y 7.0, no recibirán correcciones estables. Es importante tener en cuenta que los números de upstream por sí solos no son suficientes, ya que los kernels de distribución pueden tener retrocesos y cambios en downstream, por lo que el rastreador del proveedor es la fuente más segura.

Detalles técnicos de la vulnerabilidad

Open vSwitch almacena las acciones de flujo generadas como atributos de Netlink, cuyo campo `nla_len` tiene un ancho de 16 bits, limitando cualquier atributo anidado a 65,535 bytes. Esta asignación insegura había existido durante 13 años, pero un límite de 32 KiB en el flujo total generado mantuvo una acción anidada por debajo del punto de envolvimiento. Sin embargo, un cambio realizado en marzo de 2025 eliminó ese límite, lo que provocó fallos impredecibles y expuso el antiguo bug de truncamiento.

Un atacante puede enviar una acción CLONE que contenga cientos de subacciones de conntrack. En arquitecturas x86-64, el kernel expande cada una a 164 bytes, lo que empuja la acción anidada generada más allá de los 65,535 bytes. Cuando OVS escribe el resultado en el campo de longitud de 16 bits, el valor se envuelve. Este comportamiento permite que el código posterior confíe en esa longitud y continúe analizando desde datos controlados por el atacante, donde están esperando acciones OVS forjadas.

Pruebas de explotación

El código de prueba de concepto (PoC) liberado es explícitamente destructivo y requiere soporte de conntrack de OVS, el asistente de conntrack FTP y sudo para instalarse. Una vez ejecutado con éxito, corrompe las credenciales del kernel en vivo, modifica `/etc/sudoers.d` o `/etc/sudoers`, abre un shell de root y deja procesos y estado de OVS atrás para evitar un desmantelamiento inseguro.

La matriz de pruebas no exhaustiva de Manizada encontró que la explotación por defecto se podía realizar en distribuciones como AlmaLinux, Amazon Linux, Arch, Debian, Fedora, Gentoo, Kali, Linux Mint, y Ubuntu, entre otras. Para mitigar esta vulnerabilidad, se debe instalar un kernel corregido en cuanto esté disponible. Si Open vSwitch no es necesario, se recomienda bloquear el módulo con el siguiente comando: `echo 'install openvswitch /bin/false' > /etc/modprobe.d/ovswrap.conf`.

Fuente

Ver noticia original