Vulnerabilidade na pila IPv6 do núcleo de Linux que permite a execución remota de código

Revelouse información sobre a vulnerabilidade CVE-2023-6200) na pila de rede do núcleo de Linux, que, en determinadas circunstancias, permite que un atacante dunha rede local logre a execución do seu código enviando un paquete ICMPv6 especialmente deseñado con unha mensaxe RA (Router Advertisement) destinada a anunciar información sobre o router.

A vulnerabilidade só se pode explotar desde a rede local e aparece en sistemas con compatibilidade con IPv6 activado e o parámetro sysctl “net.ipv6.conf.<network_interface_name>.accept_ra” activo (pódese comprobar co comando “sysctl net.ipv6.conf | grep accept_ra”) , que está desactivada por defecto en RHEL e Ubuntu para interfaces de rede externas, pero habilitada para a interface de loopback, que permite un ataque dende o mesmo sistema.

A vulnerabilidade é causada por unha condición de carreira cando o colector de lixo procesa rexistros fib6_info obsoletos, o que pode levar a acceso a unha área de memoria xa liberada (use-after-free). Ao recibir un paquete ICMPv6 cunha mensaxe de anuncio do enrutador (RA, Anuncio do enrutador), a pila de rede chama á función ndisc_router_discovery() que, se a mensaxe RA contén información sobre a duración da ruta, chama á función fib6_set_expires() e enche o gc_link. estrutura. Para limpar entradas obsoletas, use a función fib6_clean_expires(), que separa a entrada en gc_link e borra a memoria utilizada pola estrutura fib6_info. Neste caso, hai un momento determinado no que a memoria para a estrutura fib6_info xa foi liberada, pero a ligazón a ela segue estando na estrutura gc_link.

A vulnerabilidade apareceu a partir da rama 6.6 e solucionouse nas versións 6.6.9 e 6.7. O estado de arranxar a vulnerabilidade nas distribucións pódese avaliar nestas páxinas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Entre as distribucións que envían paquetes co kernel 6.6, podemos sinalar Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva e Manjaro; noutras distribucións, é posible que o cambio cun erro se traslade a paquetes con ramas do kernel máis antigas (por exemplo, en Debian menciónase que o paquete co núcleo 6.5.13 é vulnerable, mentres que o cambio problemático apareceu na rama 6.6). Como solución de seguridade, pode desactivar IPv6 ou establecer os parámetros "net.ipv0.conf.*.accept_ra" en 6.

Fonte: opennet.ru

Engadir un comentario