È stata rivelata una vulnerabilità CVE-2023-6200 nel stack di rete del kernel di Linux, che in determinate circostanze consente a un attaccante all'interno della rete locale di eseguire il proprio codice inviando un pacchetto ICMPv6 appositamente formattato con un messaggio RA (Router Advertisement), destinato ad annunciare informazioni sul router.
La vulnerabilità può essere sfruttata solo dalla rete locale e si manifesta in sistemi con il supporto IPv6 attivo e il parametro sysctl ‘net.ipv6.conf.<nome_interfaccia_rete>.accept_ra’ attivato (può essere verificato con il comando ‘sysctl net.ipv6.conf| grep accept_ra’), che per impostazione predefinita è disattivato in RHEL e Ubuntu per le interfacce di rete esterne, ma è attivato per l'interfaccia loopback, il che consente un attacco dallo stesso sistema.
La vulnerabilità è causata da una condizione di corsa durante l'elaborazione del garbage collector di voci obsolete fib6_info, che può portare a un accesso a una zona di memoria già rilasciata (use-after-free). Quando un pacchetto ICMPv6 con un messaggio di annuncio del router (RA, Router Advertisement) viene ricevuto, lo stack di rete chiama la funzione ndisc_router_discovery(), che in presenza di dati sulla durata del percorso nel messaggio RA chiama la funzione fib6_set_expires() e riempie la struttura gc_link. Per la pulizia delle voci obsolete viene utilizzata la funzione fib6_clean_expires(), che scollega la voce nel gc_link e libera la memoria utilizzata dalla struttura fib6_info. In quel momento, la memoria per la struttura fib6_info è già stata liberata, ma il riferimento ad essa rimane nella struttura gc_link.
La vulnerabilità si manifesta a partire dalla versione 6.6 ed è stata corretta nelle versioni 6.6.9 e 6.7. Lo stato di risoluzione della vulnerabilità nei vari distributivi può essere valutato su queste pagine: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Tra i distributivi che forniscono pacchetti con il kernel 6.6, si possono notare Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva e Manjaro; nei restanti distributivi non è escluso il backporting di modifiche con errori nei pacchetti con versioni di kernel più vecchie (ad esempio, in Debian si segnala che il pacchetto con il kernel 6.5.13 è vulnerabile, mentre la modifica problematica è emersa nella versione 6.6). Come misura tampone di protezione, è possibile disabilitare IPv6 o impostare a 0 i parametri ‘net.ipv6.conf.*.accept_ra’.
Fonte: opennet.ru
