Vulnerabilitate exploatabilă de la distanță în stiva TCP a nucleului Linux

Compania Anthropic a dezvăluit informații despre o vulnerabilitate critică (CVE-2026-98432) în stiva TCP a nucleului Linux, care permite executarea de cod de la distanță prin trimiterea de pachete special formate. A fost raportată crearea unui exploit de lucru care permite executarea codului la nivel de nucleu și obținerea de privilegii root în sistem de la distanță. Exploitul pregătit este utilizabil pentru atacuri împotriva sistemelor cu procese server care acceptă conexiuni prin socket-uri de rețea ce suportă utilizarea protocolului MPTCP (Multipath TCP). Suportul MPTCP poate fi activat prin legarea la socket-uri de rețea individuale, ceea ce se întâmplă implicit în biblioteca standard a limbajului Go, începând cu versiunea Go 1.24 (februarie 2025).

Exploitul pregătit poate fi aplicat în utilizarea oricăror aplicații server scrise în limbajul Go, inclusiv serverul HTTP Caddy, în condițiile în care există posibilitatea de a trimite pachete de rețea către socket-ul de ascultare creat de acestea. Deoarece vulnerabilitatea este prezentă direct în stiva IPv4 și nu este specifică pentru MPTCP, nu se exclud creația de exploituri care funcționează fără legare la MPTCP, însă astfel de exploituri nu au fost încă demonstrate. De exemplu, exploatarea vulnerabilității este posibilă în procesarea cererilor de migrare a socket-urilor, disponibilă în configurațiile cu parametrul net.ipv4.tcp_migrate_req=1 sau în utilizarea programelor eBPF cu opțiunea BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.

Vulnerabilitatea este cauzată de o stare de competiție care apare în timpul procesării simultane a cererilor SYN retransmise la stabilirea unei conexiuni TCP. Deoarece funcția tcp_v4_syn_recv_sock() transmite socket-ului fiu parametrii din structura ireq->ireq_opt prin referință, și nu prin copiere, în anumite circumstanțe apare o situație în care memoria pentru structurile inet_opt și ireq_opt cu parametrii socket-ului a fost deja eliberată, dar opțiunile asociate continuă să fie utilizate (use-after-free).

Exploatarea de la distanță se realizează prin trimiterea unei serii de cereri de rețea sincronizate temporal. Exploit-ul creat este aplicabil cu succes, inclusiv kernel-urilor care utilizează randomizarea adreselor (KASLR), dar atingerea feronului de stare de competiție necesită o perioadă considerabilă de timp și un număr mare de încercări repetate. Exploatarea este simplificată de faptul că nereușita de a atinge fereastra de stare de competiție duce doar la resetarea sesiunii de stabilire a conexiunii (handshake), și nu la prăbușirea kernel-ului, ceea ce permite continuarea încercărilor infinite. În prototipul creat, atacul a necesitat aproximativ o oră — 48 de minute pentru determinarea aranjamentului memoriei și încă 5 minute pentru organizarea execuției codului.

Până în prezent, nu sunt prezentate soluții de ocolire garantate ale vulnerabilității — ca singura variantă de încredere se propune instalarea actualizării kernel-ului. Problema se manifestă începând cu kernel-ul Linux 4.4 și este rezolvată în versiunile 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 și 7.3. Statusul remedierii vulnerabilităților în distribuții poate fi evaluat pe aceste pagini: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.

Din recomandările de contracarare a metodologiilor specifice de exploatare, care nu blochează vulnerabilitatea în mod general, se poate menționa dezactivarea suportului MPTCP și setarea parametrului sysctl al kernel-ului net.ipv4.tcp_migrate_req la valoarea 0:

sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0

Pentru a determina prezența proceselor din sistem care utilizează socket-uri cu
MPTCP, se pot folosi comenzile:

ip mptcp endpoint show
ip mptcp limits show

Pentru a dezactiva suportul MPTCP în programele scrise în Go, este necesar să se folosească opțiunea «multipathtcp=0», care poate fi setată prin variabila de mediu «GODEBUG=multipathtcp=0». Pentru a dezactiva suportul MPTCP în etapa de compilare, se poate adăuga «godebug multipathtcp=0» în fișierul modul go.mod. În codul aplicației, utilizarea MPTCP poate fi dezactivată prin funcțiile net.Dialer.SetMultipathTCP și net.ListenConfig.SetMultipathTCP.

Pe lângă problema discutată, compania Anthropic a anunțat, de asemenea, o serie de vulnerabilități exploatabile local în nucleul Linux, OpenBSD și FreeBSD, care permit obținerea de privilegii root în sistem și ieșirea din containerele izolate; vulnerabilități în Chrome și Safari, care conduc la executarea de cod în sistem atunci când sunt deschise pagini web special concepute; o vulnerabilitate în nucleul Windows, care duce la întreruperea bruscă a funcționării; o vulnerabilitate în platforma Android, care permite ocolirea blocării ecranului și accesarea informațiilor personale și a fotografiilor fără deblocarea dispozitivului (atacul a fost demonstrat pe smartphone-ul Google Pixel 9).

Adăugare:

  • În nginx, posibilitatea activării opțiunii IPPROTO_MPTCP pentru socket-ul de rețea ascultător este disponibilă începând cu versiunea 1.29.7, dar nu este aplicată implicit.
  • În Lighttpd, opțiunea pentru activarea MPTCP este disponibilă începând cu versiunea 1.4.76.
  • În Apache httpd, patch-urile pentru suportul MPTCP au fost adăugate în ramura Apache httpd 2.5-HEAD în 2024.
  • În systemd, suportul pentru activarea MPTCP la activarea prin socket a fost adăugat în versiunea 257.
  • În Apache Traffic Server, opțiunea pentru activarea MPTCP este suportată începând cu versiunea 9.2.4.
  • În HAProxy, începând cu versiunea 3.1.0, este disponibilă opțiunea 'mptcp{,4,6}@
    '.
  • În Traefik, activarea flag-ului IPPROTO_MPTCP este activată implicit începând cu versiunile 2.11.26, 3.4.2 și v3.5.0-rc1.
  • În baza de date Valkey, începând cu versiunea 9.0.0, este disponibilă opțiunea '--mptcp' și setările 'mptcp yes' și 'repl-mptcp yes'.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster