Vulnerabilidad en la pila IPv6 del kernel de Linux que permite la ejecución remota de código

Se ha divulgado información sobre la vulnerabilidad CVE-2023-6200) en la pila de red del kernel de Linux, que, en determinadas circunstancias, permite a un atacante desde una red local lograr la ejecución de su código enviando un paquete ICMPv6 especialmente diseñado con un mensaje RA (Anuncio de enrutador) destinado a anunciar información sobre el enrutador.

La vulnerabilidad solo puede explotarse desde la red local y aparece en sistemas con soporte IPv6 habilitado y el parámetro sysctl “net.ipv6.conf.<network_interface_name>.accept_ra” activo (se puede verificar con el comando “sysctl net.ipv6.conf | grep Accept_ra”), que está deshabilitado de forma predeterminada en RHEL y Ubuntu para interfaces de red externas, pero habilitado para la interfaz loopback, que permite un ataque desde el mismo sistema.

La vulnerabilidad es causada por una condición de carrera cuando el recolector de basura procesa registros fib6_info obsoletos, lo que puede conducir al acceso a un área de memoria ya liberada (uso después de la liberación). Al recibir un paquete ICMPv6 con un mensaje de anuncio de enrutador (RA, Anuncio de enrutador), la pila de red llama a la función ndisc_router_discovery(), que, si el mensaje RA contiene información sobre la vida útil de la ruta, llama a la función fib6_set_expires() y llena el gc_link estructura. Para limpiar entradas obsoletas, use la función fib6_clean_expires(), que separa la entrada en gc_link y borra la memoria utilizada por la estructura fib6_info. En este caso, hay un momento determinado en el que la memoria de la estructura fib6_info ya se ha liberado, pero el enlace a la misma sigue estando en la estructura gc_link.

La vulnerabilidad apareció a partir de la rama 6.6 y se solucionó en las versiones 6.6.9 y 6.7. El estado de la reparación de la vulnerabilidad en distribuciones se puede evaluar en estas páginas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Entre las distribuciones que incluyen paquetes con el kernel 6.6, podemos destacar Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva y Manjaro; en otras distribuciones, es posible que el cambio con un error sea backportado a paquetes con ramas de kernel más antiguas (por ejemplo Por ejemplo, en Debian se menciona que el paquete con kernel 6.5.13 es vulnerable, mientras que el cambio problemático apareció en la rama 6.6). Como solución de seguridad, puede desactivar IPv6 o establecer los parámetros “net.ipv0.conf.*.accept_ra” en 6.

Fuente: opennet.ru

Añadir un comentario