È stata rivelata un'informazione su una vulnerabilità CVE-2023-6200 nel stack di rete del kernel Linux, che, in determinate circostanze, consente a un malintenzionato nella 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 nei sistemi con supporto IPv6 attivato e con il parametro sysctl "net.ipv6.conf.<nome_interfaccia_di_rete>.accept_ra" attivo (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 è attivo per l'interfaccia di loopback, permettendo un attacco dalla stessa macchina.
La vulnerabilità è causata da una condizione di corsa durante la gestione dal garbage collector delle voci obsolete fib6_info, il che può portare a un accesso a una zona di memoria già liberata (use-after-free). Quando viene ricevuto un pacchetto ICMPv6 con un messaggio di annuncio del router (RA, Router Advertisement), lo stack di rete chiama la funzione ndisc_router_discovery(), che, in presenza di dati nel messaggio RA relativi al tempo di vita della rotta, 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 in gc_link e libera la memoria utilizzata dalla struttura fib6_info. Vi è però un certo momento in cui la memoria per la struttura fib6_info è già stata liberata, ma il riferimento ad essa continua a trovarsi nella struttura gc_link.
La vulnerabilità si manifesta a partire dalla branch 6.6 ed è stata corretta nelle versioni 6.6.9 e 6.7. Lo stato della correzione della vulnerabilità nelle distribuzioni può essere valutato su queste pagine: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Tra le distribuzioni che forniscono pacchetti con il kernel 6.6, si possono notare Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva e Manjaro; nelle altre distribuzioni non è escluso il backport di modifiche errate in pacchetti con versioni di kernel più vecchie (ad esempio, in Debian si menziona che un pacchetto con kernel 6.5.13 è vulnerabile, mentre la modifica problematica è emersa nella branch 6.6). Come soluzione alternativa di protezione, è possibile disabilitare l'IPv6 o impostare a 0 i parametri "net.ipv6.conf.*.accept_ra".
Fonte: opennet.ru
