Una vulnerabilidad crítica recientemente descubierta en el kernel de Linux, catalogada como CVE-2025-38236, ha encendido las alarmas en la comunidad de ciberseguridad. El fallo, localizado en una funcionalidad poco conocida llamada MSG_OOB (out-of-band) de los sockets de dominio UNIX, permitiría a un atacante elevar privilegios desde dentro del sandbox del renderizador de Google Chrome en sistemas Linux, poniendo en riesgo la integridad completa del sistema.
El hallazgo, atribuido al investigador de Google Project Zero Jann Horn, afecta a las versiones del kernel 6.9 y superiores y pone de relieve los peligros de mantener activas funciones del kernel poco utilizadas o “exóticas”, así como las carencias en el diseño de algunos entornos de aislamiento (sandbox) en navegadores modernos.
Origen del fallo: una característica casi olvidada
El origen del problema se remonta a 2021, cuando la funcionalidad MSG_OOB fue introducida en el kernel de Linux 5.15. Aunque rara vez se utiliza fuera de entornos muy específicos —principalmente algunos productos de Oracle—, esta característica estaba habilitada por defecto en kernels con soporte para sockets UNIX.
En el caso de Chrome, la función quedaba accesible desde el sandbox del renderizador debido a la ausencia de filtros adecuados sobre ciertas banderas de llamadas al sistema (syscall flags). Horn identificó que este acceso podía aprovecharse para desencadenar una condición de use-after-free (UAF), un fallo de gestión de memoria que, si es explotado, permite manipular memoria del kernel y conseguir control total del sistema.
Demostración de la explotación
En un análisis publicado en el rastreador de errores de Google Project Zero, Horn mostró cómo, con una secuencia simple de operaciones sobre sockets, era posible:
- Ejecutar código nativo en el sandbox del renderizador de Chrome.
- Escalar privilegios hasta obtener control a nivel del kernel en un sistema Debian Trixie con arquitectura x86-64.
- Superar mitigaciones como usercopy hardening para copiar memoria arbitraria del kernel al espacio de usuario.
- Reasignar memoria liberada como páginas de pipes o pilas del kernel para manipular estructuras críticas.
- Aprovechar la manipulación de tablas de páginas y retardos introducidos con
mprotect()
para ajustar el momento exacto de la corrupción de memoria.
Un detalle llamativo es que el exploit conseguía convertir en ventaja una mitigación de seguridad del propio Debian, el parámetro CONFIG_RANDOMIZE_KSTACK_OFFSET
, que aleatoriamente cambia la posición de la pila del kernel para dificultar ataques. Horn logró usar esa aleatoriedad para alinear con precisión los objetivos de memoria.
Un reto para el fuzzing y para el diseño de sandboxes
El investigador localizó inicialmente el fallo durante una revisión de código de nuevas funciones del kernel. Posteriormente, en agosto de 2024, la herramienta de fuzzing syzkaller de Google detectó un problema relacionado. Sin embargo, Horn señala que descubrir vulnerabilidades en estructuras complejas como los búferes de sockets (SKBs) es difícil para las técnicas de prueba automatizadas actuales.
El primer fallo identificado requería seis llamadas al sistema para reproducirse, mientras que el segundo —más complejo— necesitaba ocho. Según Horn, una posible mejora sería que los fuzzers pudieran dirigirse a subsistemas específicos del kernel, aumentando así las probabilidades de detectar errores poco comunes.
Una superficie de ataque demasiado amplia en Chrome para Linux
La investigación también evidenció que el sandbox de Chrome en Linux expone demasiadas interfaces del kernel a procesos no privilegiados. Entre ellas:
- Áreas de memoria virtual anónimas (anonymous VMAs).
- Sockets UNIX.
- Pipes.
- Syscalls como
sendmsg()
omprotect()
.
Muchas de estas funciones no son esenciales para el funcionamiento del renderizador, pero sí amplían el potencial de ataque para un adversario que logre ejecutar código malicioso dentro de Chrome. Casos anteriores —como vulnerabilidades relacionadas con futex()
, memfd_create()
y pipe2()
— ya habían demostrado el riesgo de estas exposiciones innecesarias.
Horn también cuestiona la eficacia de ciertas mitigaciones probabilísticas, como la aleatorización de pila por llamada al sistema, frente a atacantes que cuentan con primitivas de lectura arbitraria y pueden medir los resultados para sortear la protección.
Respuesta y medidas de mitigación
Tras la divulgación responsable del fallo:
- El kernel de Linux fue parcheado para corregir el problema de MSG_OOB.
- Google Chrome bloqueó el envío de mensajes MSG_OOB dentro del sandbox del renderizador, reduciendo así la superficie de ataque.
- Los usuarios de Linux fueron instados a actualizar inmediatamente a la versión más reciente del kernel.
Horn adelantó que publicará un análisis más profundo del sandbox de Chrome para Linux en un próximo informe, en el que propondrá restricciones más estrictas y una revisión de las funciones del kernel expuestas a procesos no privilegiados.
Impacto y lecciones para el ecosistema Linux
El incidente CVE-2025-38236 es un recordatorio claro de que incluso características muy poco usadas pueden convertirse en puntos críticos de ataque si no se controlan adecuadamente. En este caso, el fallo fue especialmente grave porque combinaba:
- Una función exótica (
MSG_OOB
) habilitada por defecto. - Una exposición innecesaria de dicha función al sandbox de un navegador ampliamente usado.
- Una falla de gestión de memoria aprovechable para ejecutar código en modo kernel.
Para la comunidad de seguridad y los desarrolladores del kernel, el caso refuerza la necesidad de:
- Auditar y revisar periódicamente funciones poco comunes para evaluar si deberían estar habilitadas por defecto.
- Limitar al máximo las interfaces del kernel a las que pueden acceder los procesos en entornos aislados.
- Mejorar las herramientas de fuzzing para detectar vulnerabilidades complejas.
Recomendaciones para usuarios y administradores
- Actualizar el kernel de Linux a la última versión disponible para recibir el parche contra CVE-2025-38236.
- Mantener Google Chrome y otros navegadores en su versión más reciente para beneficiarse de las mitigaciones aplicadas.
- Revisar configuraciones de seguridad y limitar el acceso a funciones del kernel innecesarias en entornos de alta exposición.
- Seguir de cerca las publicaciones de seguridad de Google Project Zero y del equipo de desarrollo del kernel.
Preguntas frecuentes (FAQ)
1. ¿Qué es la vulnerabilidad CVE-2025-38236?
Es un fallo de seguridad en el kernel de Linux que permite a un atacante escapar del sandbox de Chrome y obtener privilegios de kernel mediante la función MSG_OOB en sockets UNIX.
2. ¿Qué versiones del kernel están afectadas?
Las versiones 6.9 y posteriores del kernel de Linux, con la funcionalidad MSG_OOB habilitada por defecto.
3. ¿Cómo puedo proteger mi sistema?
Actualizando el kernel a la última versión disponible y manteniendo Chrome actualizado, ya que ambos han implementado parches y mitigaciones.
4. ¿Por qué es peligrosa la función MSG_OOB si casi no se usa?
Porque, al estar habilitada por defecto y accesible desde entornos no privilegiados, abre una vía de ataque que puede ser explotada por actores maliciosos aunque su uso legítimo sea muy limitado.