Informațiile despre vulnerabilitatea CVE-2023-6200 din stiva de rețea a nucleului Linux au fost dezvăluite. Aceasta permite unui atacator din rețeaua locală să execute codul său prin trimiterea unui pachet ICMPv6 special formatat, conținând un mesaj RA (Router Advertisement), destinat anunțării informațiilor despre router.
Vulnerabilitatea poate fi exploatată doar din rețeaua locală și se manifestă în sistemele cu suport IPv6 activat și parametrul sysctl activ «net.ipv6.conf.<numele_interfeței_rețelei>.accept_ra» (poate fi verificat cu comanda «sysctl net.ipv6.conf| grep accept_ra»), care este dezactivat în mod implicit în RHEL și Ubuntu pentru interfețele externe, dar este activat pentru interfața loopback, ceea ce permite atacurile din aceeași sistem.
Vulnerabilitatea este cauzată de o stare de concurență în timp ce colectorul de gunoi procesează înregistrările depășite fib6_info, ceea ce poate duce la accesarea unei zone de memorie deja eliberate (use-after-free). La primirea unui pachet ICMPv6 cu un mesaj de anunț de router (RA, Router Advertisement), stiva de rețea apelează funcția ndisc_router_discovery(), care, în prezența unor date în mesajul RA referitoare la timpul de viață al rutei, apelează funcția fib6_set_expires() și umple structura gc_link. Pentru curățarea înregistrărilor depășite se folosește funcția fib6_clean_expires(), care desprinde înregistrarea din gc_link și eliberează memoria utilizată de structura fib6_info. Există un moment anume în care memoria pentru structura fib6_info este deja eliberată, dar referința la aceasta continuă să existe în structura gc_link.
Vulnerabilitatea se manifestă începând cu ramura 6.6 și a fost remediată în versiunile 6.6.9 și 6.7. Starea remediării vulnerabilității în distribuitorii poate fi evaluată pe aceste pagini: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Printre distribuitorii care livreză pachete cu nucleul 6.6, se pot menționa Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva și Manjaro; în celelalte distribuitoare, nu este exclusă portarea retroactivă a modificărilor cu erori în pachetele cu ramuri mai vechi ale nucleului (de exemplu, în Debian se menționează că pachetul vulnerabil conține nucleul 6.5.13, în timp ce modificarea problematică a apărut în ramura 6.6). Ca o cale alternativă de protecție, se poate dezactiva IPv6 sau se pot aloca valori de 0 parametrilor «net.ipv6.conf.*.accept_ra».
Sursa: opennet.ro
