Se ha revelado información sobre la vulnerabilidad CVE-2023-6200 en la pila de red del núcleo de Linux, que bajo ciertas circunstancias permite a un atacante de la red local lograr la ejecución de su código mediante el envío de un paquete ICMPv6 especialmente elaborado con un mensaje RA (Router Advertisement), destinado a anunciar información sobre el enrutador.
La vulnerabilidad solo puede ser explotada desde la red local y se manifiesta en sistemas con soporte de IPv6 habilitado y el parámetro sysctl activo «net.ipv6.conf..accept_ra» (se puede verificar con el comando «sysctl net.ipv6.conf| grep accept_ra»), que por defecto está deshabilitado en RHEL y Ubuntu para interfaces de red externas, pero habilitado para la interfaz de loopback, lo que permite un ataque desde el mismo sistema.
La vulnerabilidad es causada por una condición de carrera al procesar el recolector de basura de entradas obsoletas fib6_info, lo que puede llevar a un acceso a un área de memoria ya liberada (use-after-free). Al recibir un paquete ICMPv6 con un mensaje de anuncio de enrutador (RA, Router Advertisement), la pila de red llama a la función ndisc_router_discovery(), que si el mensaje RA contiene datos sobre el tiempo de vida de la ruta llama a la función fib6_set_expires() y llena la estructura gc_link. Para limpiar las entradas obsoletas se aplica la función fib6_clean_expires(), que desacopla la entrada en gc_link y libera la memoria usada por la estructura fib6_info. En este proceso, hay un momento en el que la memoria para la estructura fib6_info ya ha sido liberada, pero la referencia a ella sigue estando en la estructura gc_link.
La vulnerabilidad se manifiesta a partir de la rama 6.6 y ha sido corregida en las versiones 6.6.9 y 6.7. El estado de corrección de la vulnerabilidad en las distribuciones se puede evaluar en estas páginas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. De las distribuciones que incluyen paquetes con el núcleo 6.6, se pueden mencionar Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva y Manjaro; en otras distribuciones no se descarta la reimplementación de cambios problemáticos en paquetes con ramas de núcleo más antiguas (por ejemplo, en Debian se menciona que el paquete con el núcleo 6.5.13 está afectado, mientras que el cambio problemático apareció en la rama 6.6). Como solución alternativa de protección, se puede desactivar IPv6 o asignar el valor 0 a los parámetros «net.ipv6.conf.*.accept_ra».
Fuente: opennet.ru
