Vulnerabilità nello stack IPv6 del kernel Linux che consente l'esecuzione di codice in modalità remota

Sono state divulgate informazioni sulla vulnerabilità CVE-2023-6200) nello stack di rete del kernel Linux, che in determinate circostanze consente a un utente malintenzionato da una rete locale di ottenere l'esecuzione del suo codice inviando un pacchetto ICMPv6 appositamente progettato con un messaggio RA (Router Advertisement) destinato a pubblicizzare informazioni sul router.

La vulnerabilità è sfruttabile solo dalla rete locale e compare sui sistemi con il supporto IPv6 abilitato e il parametro sysctl “net.ipv6.conf.<network_interface_name>.accept_ra” attivo (può essere verificato con il comando “sysctl net.ipv6.conf | grep Accept_ra") , che è disabilitato per impostazione predefinita in RHEL e Ubuntu per le interfacce di rete esterne, ma abilitato per l'interfaccia di loopback, che consente un attacco dallo stesso sistema.

La vulnerabilità è causata da una race condition quando il garbage collector elabora record fib6_info obsoleti, che può portare all'accesso a un'area di memoria già liberata (use-after-free). Quando si riceve un pacchetto ICMPv6 con un messaggio di annuncio del router (RA, Router Advertisement), lo stack di rete chiama la funzione ndisc_router_discovery() che, se il messaggio RA contiene informazioni sulla durata del percorso, chiama la funzione fib6_set_expires() e riempie il gc_link struttura. Per ripulire le voci obsolete, utilizzare la funzione fib6_clean_expires(), che stacca la voce in gc_link e cancella la memoria utilizzata dalla struttura fib6_info. In questo caso, c'è un certo momento in cui la memoria per la struttura fib6_info è già stata liberata, ma il collegamento ad essa continua ad essere nella struttura gc_link.

La vulnerabilità è apparsa a partire dal ramo 6.6 ed è stata risolta nelle versioni 6.6.9 e 6.7. Lo stato di correzione della vulnerabilità nelle distribuzioni può essere valutato in queste pagine: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Tra le distribuzioni che forniscono pacchetti con il kernel 6.6 ricordiamo Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva e Manjaro; in altre distribuzioni è possibile che la modifica con errore venga backport in pacchetti con rami del kernel più vecchi (ad esempio (ad esempio, in Debian viene menzionato che il pacchetto con kernel 6.5.13 è vulnerabile, mentre la modifica problematica è apparsa nel ramo 6.6). Come soluzione alternativa alla sicurezza, è possibile disabilitare IPv6 o impostare i parametri "net.ipv0.conf.*.accept_ra" su 6.

Fonte: opennet.ru

Aggiungi un commento