Seguridad y privacidad

Los valores predeterminados de MPTCP en Go 1.24 exponen a los servidores Linux al riesgo de RCE del kernel

Una vulnerabilidad crítica del kernel de Linux permite la ejecución remota de código mediante MPTCP. Go 1.24 habilita este protocolo por defecto, lo que exige una mitigación inmediata para los desarrolladores.

Ilustración de símbolos de Go y Linux indicando una vulnerabilidad de seguridad
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

Una vulnerabilidad de seguridad crítica en el kernel de Linux, identificada como CVE-2026-98432, representa un grave riesgo para los servidores que ejecutan aplicaciones Go. El problema consiste en un error de uso posterior a la liberación (use-after-free) en el manejo de conexiones TCP IPv4 que puede derivar en Ejecución Remota de Código (RCE). Dado que la versión 1.24 de Go habilita Multipath TCP (MPTCP) por defecto en Linux, muchos servicios modernos escritos en Go quedan inadvertidamente expuestos a esta vía de ataque si no se aplican mitigaciones específicas o si el kernel no está parcheado.

Qué ha ocurrido

El equipo de Go emitió un aviso urgente tras la divulgación de CVE-2026-98432. Esta vulnerabilidad reside en el kernel de Linux y afecta a la forma en que gestiona las conexiones TCP IPv4. Investigadores de seguridad de Anthropic demostraron un exploit práctico donde un servidor que escucha conexiones MPTCP podría verse comprometido, permitiendo a un atacante ejecutar código arbitrario de forma remota. Aunque la prueba de concepto se dirigió específicamente a sistemas con oyentes (listeners) activos de MPTCP, el bug subyacente de corrupción de memoria no está estrictamente limitado al tráfico MPTCP. Esto significa que incluso los sistemas no configurados explícitamente para redes multipath podrían seguir siendo vulnerables a técnicas de explotación similares.

La principal preocupación para la comunidad de Go surge de un cambio introducido en Go 1.24. En esta versión, el runtime habilita automáticamente MPTCP para todos los sockets de escucha en sistemas Linux. Este comportamiento por defecto tenía como objetivo mejorar la resiliencia y el rendimiento de la red, pero ahora se ha convertido en una superficie de ataque significativa debido a la falla del kernel. Los mantenedores de Go enfatizan que, aunque deshabilitar MPTCP en la capa de aplicación proporciona un escudo temporal, no es una solución completa. La corrección fundamental requiere actualizar el sistema operativo anfitrión a una versión del kernel que incluya el parche para CVE-2026-98432.

Cómo funciona

Multipath TCP es una extensión del protocolo TCP estándar que permite que una sola conexión utilice múltiples rutas de red simultáneamente. Esto mejora la fiabilidad y el throughput agregando ancho de banda o cambiando de ruta si una falla. En Go 1.24, el paquete net establece automáticamente las opciones de socket necesarias para habilitar MPTCP al crear listeners en Linux. Esto ocurre de manera transparente, lo que significa que los desarrolladores no necesitan escribir código adicional para activarlo.

La vulnerabilidad CVE-2026-98432 es un error de uso posterior a la liberación en la pila TCP del kernel. Cuando el kernel procesa ciertos paquetes TCP, puede liberar prematuramente un objeto de memoria pero continuar referenciándolo. Un atacante puede elaborar paquetes específicos para desencadenar esta condición, potencialmente sobrescribiendo estructuras de memoria y tomando el control del flujo de ejecución. Dado que Go 1.24 abre la puerta a la negociación de MPTCP por defecto, cualquier servicio Go que escuche en una interfaz pública se convierte en un posible objetivo para este exploit a nivel de kernel, independientemente de si la lógica de la aplicación utiliza realmente funciones multipath.

Detalles clave

  • ID de la vulnerabilidad: CVE-2026-98432 afecta el manejo de TCP IPv4 del kernel de Linux.
  • Impacto: Es posible la Ejecución Remota de Código (RCE) mediante paquetes elaborados.
  • Versión de Go: Go 1.24 habilita MPTCP por defecto para los sockets de escucha en Linux.
  • Corrección principal: Actualizar el kernel de Linux a una versión parcheada inmediatamente.
  • Mitigación en tiempo de ejecución: Establecer GODEBUG=multipathtcp=0 en el entorno para deshabilitar MPTCP.
  • Mitigación en tiempo de compilación: Añadir godebug multipathtcp=0 al archivo go.mod.

Por qué importa

Para ingenieros de software y líderes técnicos, este incidente destaca las dependencias ocultas entre los runtimes de aplicación y los kernels del sistema operativo. Muchos equipos asumen que actualizar su runtime de lenguaje o el código de la aplicación es suficiente para la seguridad. Sin embargo, dado que Go 1.24 cambia un valor predeterminado de bajo nivel de la red, interactúa peligrosamente con un kernel sin parchear. Esto crea un escenario donde una base de código de aplicación segura aún puede verse comprometida debido a vulnerabilidades a nivel de infraestructura. Obliga a los equipos de DevOps y plataforma a coordinar urgentemente los parches del kernel en todos los entornos de producción.

Además, el aviso advierte contra la dependencia exclusiva de desactivaciones a nivel de aplicación. Establecer GODEBUG=multipathtcp=0 se describe como una "mitigación frágil". Si una sola instancia de servicio está mal configurada o si se despliega un nuevo servicio sin esta bandera, todo el host permanece en riesgo. Además, este enfoque asume que todas las explotaciones requieren un listener activo de MPTCP, lo cual puede no ser cierto dada la naturaleza general del bug de uso posterior a la liberación. Esta incertidumbre significa que deshabilitar MPTCP es una medida provisional, no una estrategia de seguridad a largo plazo.

Qué puedes hacer

  • Prioriza el parcheo de tus kernels de Linux a versiones que resuelvan CVE-2026-98432.
  • Si las actualizaciones inmediatas del kernel son imposibles, establece GODEBUG=multipathtcp=0 en tus variables de entorno de producción.
  • Añade godebug multipathtcp=0 a tu archivo go.mod para forzar la desactivación en tiempo de compilación.
  • Audita tu infraestructura para asegurar que ningún servicio heredado esté exponiendo accidentalmente listeners de MPTCP.
  • Monitorea la discusión en el rastreador de issues de Go para futuros cambios en los comportamientos predeterminados.
  • Revisa el uso de net.Dialer.SetMultipathTCP y net.ListenConfig.SetMultipathTCP para gestionar explícitamente el comportamiento de los sockets.
  • #go
  • #linux
  • #security
  • #mptcp
  • #kernel

Herramientas de la Tienda de Bytechap

Seguir leyendo

Todos los artículos