Una vulnerabilidad de corrupción de memoria en el datapath del kernel de Linux para Open vSwitch permite a usuarios locales sin privilegios obtener acceso root en una amplia gama de distribuciones con configuraciones por defecto. El exploit público incluye registros precompilados para unas 800 versiones de kernel.
La vulnerabilidad, identificada como CVE-2026-64531 con una puntuación CVSS de 7.8 y denominada OVSwrap, fue divulgada por el investigador de seguridad Asim Manizada el 28 de julio de 2026. El fallo reside en el datapath del kernel, no en el daemon de usuariospace ovs-vswitchd.
En sistemas afectados donde el datapath de OVS está disponible y los espacios de nombres de usuario sin privilegios están habilitados, un usuario común puede crear espacios de nombres privados con unshare -Urn, obtener CAP_NET_ADMIN dentro de ese namespace y alcanzar la ruta vulnerable de instalación de flujos. Si el módulo openvswitch no está cargado, resolver su nombre de familia Generic Netlink puede cargarlo automáticamente; una salida vacía de lsmod no garantiza seguridad.
Corrección y versiones afectadas
El parche ascendente se publicó en las ramas estables el 24 de julio. Las primeras versiones corregidas son Linux 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.40 y 7.1.5. Las series 6.13 a 6.17, 6.19 y 7.0 (fin de vida) no recibirán correcciones ascendentes. Dado que los kernels de las distribuciones incluyen backports y cambios propios, se recomienda consultar el rastreador del proveedor.
Detalles técnicos
Open vSwitch almacena las acciones de flujo generadas como atributos Netlink cuyo campo nla_len es de 16 bits, limitando cada atributo anidado a 65.535 bytes. La asignación insegura existía desde hacía 13 años, pero un límite de 32 KiB en el flujo total mantenía las acciones anidadas por debajo del punto de desbordamiento.
Un cambio de marzo de 2025 eliminó ese límite por causar fallos impredecibles, exponiendo el bug de truncamiento. El atacante envía una acción CLONE con cientos de subacciones de conntrack; en x86-64 el kernel expande cada una a 164 bytes, superando los 65.535 bytes. Al escribir el resultado en el campo de 16 bits, el valor se desborda.
El código posterior confía en esa longitud y reanuda el análisis desde datos de conntrack controlados por el atacante, donde se encuentran acciones forjadas. Como el punto de aterrizaje es determinista en el mismo búfer contiguo, no se necesita grooming de heap. Manizada describe el resultado como una corrupción de memoria con fiabilidad de bug lógico.
Explotación y alcance
El exploit encadena tres primitivas: fuga de puntero mediante una acción OUTPUT falsa, lectura arbitraria del kernel a través de una acción SET de túnel falsa y un decremento dirigido mediante la liberación de un puntero tun_dst falsificado. Estas primitivas permiten localizar las credenciales de un proceso del host y, en kernels modernos, decrementar fsuid y fsgid a cero.
El PoC publicado es explícitamente destructivo y requiere soporte de conntrack de OVS, el helper FTP conntrack y sudo instalado. En caso de éxito, corrompe una credencial activa, modifica /etc/sudoers.d o /etc/sudoers, abre un shell root y deja procesos y estado de OVS para evitar un cierre inseguro. El repositorio incluye registros para aproximadamente 800 compilaciones x86-64 exactas e intenta derivación dinámica desde símbolos o BTF para otras.
La matriz de pruebas de Manizada encontró explotación en configuraciones por defecto en AlmaLinux 9 y 10, Alpine 3.22 a 3.24, Amazon Linux 2023, Arch, CentOS Stream 9 y 10, Debian 12 y 13, Fedora 42 a 44, Gentoo, Kali 2026.1, Linux Mint 22.3, NixOS, openSUSE Tumbleweed, Pop!_OS, Rocky Linux 9 y 10, y Ubuntu 22.04.
En Ubuntu 24.04, AppArmor bloqueó la creación directa de namespaces, pero el fallback aa-exec -p trinity del PoC restableció la accesibilidad. Ubuntu 26.04 bloqueó la ruta de usuario común por defecto, pero deshabilitar su restricción de namespaces de usuario de AppArmor hizo explotables los sistemas probados. Amazon Linux 2, Debian 11, Rocky Linux 8 y Ubuntu 20.04 conservan rutas de código antiguas y no fueron explotables.
Mitigaciones
Instale un kernel parcheado del proveedor si está disponible. Si Open vSwitch no es necesario, la medida provisional más rápida es bloquear el módulo: echo 'install openvswitch /bin/false' > /etc/modprobe.d/ovswrap.conf. El bloqueo evita futuras cargas del módulo, pero si ya está cargado, debe descargarse o reiniciar.
Deshabilitar los espacios de nombres de usuario sin privilegios cierra la ruta de usuario local, pero no bloquea procesos que ya tengan CAP_NET_ADMIN sobre un namespace controlado por el atacante. El repositorio del PoC incluye una guardia BPF para entornos que necesiten mantener OVS y nombres de espacios activos.
El riesgo es especialmente crítico en hosts compartidos por múltiples usuarios o cargas de trabajo no confiables. Como señaló CloudLinux, el usuario local puede ser un atacante que ya comprometió un sitio mediante un fallo no relacionado, y OVSwrap convierte ese problema de una sola cuenta en uno de todo el servidor.



















Deja una respuesta