Firmaen Anthropic har afsløret en kritisk sårbarhed (CVE-2026-98432) i TCP-stakken i Linux-kernen, som muliggør fjernudførelse af kode gennem sending af specielt formaterede pakker. Der er rapporteret om oprettelsen af en fungerende exploit, der giver mulighed for at udføre kode på kerneniveau og fjernadgang til root-rettigheder i systemet. Den forberedte exploit er egnet til angreb på systemer med serverprocesser, der accepterer forbindelser gennem netværkssokler, der understøtter brugen af MPTCP-protokollen (Multipath TCP). Understøttelse af MPTCP kan aktiveres i bindningen til de enkelte netværkssokler, hvilket gøres som standard i standardbiblioteket for Go-sprog, der starter fra version Go 1.24 (februar 2025).
Den forberedte exploit kan anvendes med enhver serverapplikation skrevet i Go, herunder HTTP-serveren Caddy, når der er mulighed for at sende netværkspakker til den lytteboks, som de opretter. Da sårbarheden er til stede direkte i IPv4-stakken og ikke er specifik for MPTCP, kan der ikke udelukkes oprettelse af exploits, der fungerer uden tilknytning til MPTCP, men sådanne exploits er endnu ikke blevet demonstreret. For eksempel kan sårbarheden udnyttes ved behandling af forespørgsler om migrering af sokler, som er tilgængelig i konfigurationer med parameteren net.ipv4.tcp_migrate_req=1 eller ved brug af eBPF-programmer med indstillingen BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
Sårbarheden skyldes en racetilstand, der opstår ved samtidig behandling af genoverførte SYN-forespørgsler under oprettelse af TCP-forbindelser. Da funktionen tcp_v4_syn_recv_sock() overfører parametre fra strukturen ireq->ireq_opt via reference og ikke via kopi, opstår der under bestemte omstændigheder en situation, hvor hukommelsen til strukturerne inet_opt og ireq_opt med sokkelparametre allerede er frigivet, men de tilknyttede sokkelindstillinger fortsætter med at blive brugt (use-after-free).
Fjernudnyttelse sker gennem en række tids-synkroniserede netværksanmodninger. Den udviklede exploit kan med succes anvendes på kerner, der anvender adresserandomisering (KASLR), men at ramme et race condition vindue tager temmelig lang tid og kræver mange forsøg. Udnyttelsen lettes af, at det at misse race condition vinduet kun medfører nulstilling af forbindelsesoprettelses-sessionen (handshake) og ikke en kernefejl, hvilket giver mulighed for uendeligt at fortsætte med at forsøge. I den udviklede prototype af exploiten tog det omkring en time at udføre angrebet — 48 minutter til at bestemme hukommelseslayoutet og yderligere 5 minutter til at organisere koden udførsel.
Garantiserede blokeringer af sårbarheden er endnu ikke præsenteret — som den eneste pålidelige mulighed foreslås det at opdatere kernen. Problemet optræder fra Linux-kernen 4.4 og er løst i versionerne 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 og 7.3. Status for sårbarhedslukninger i distributioner kan vurderes på disse sider: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
Af anbefalinger til modvirkning af specifikke udnyttelsesmetoder, der ikke blokerer sårbarheden generelt, kan nævnes at deaktivere understøttelse af MPTCP og sætte sysctl-parameteren net.ipv4.tcp_migrate_req til værdien 0:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
For at bestemme tilstedeværelsen af processer i systemet, der bruger sokler med
MPTCP, kan kommandoerne bruges:
ip mptcp endpoint show
ip mptcp limits show
For at deaktivere understøttelse af MPTCP i Go-programmer, skal man bruge flaget «multipathtcp=0», som kan indstilles ved at sætte miljøvariablen «GODEBUG=multipathtcp=0». For at deaktivere understøttelse af MPTCP under opbygningen, kan man tilføje «godebug multipathtcp=0» i go.mod-modulfilen. I applikationskoden kan brugen af MPTCP deaktiveres via funktionerne net.Dialer.SetMultipathTCP og net.ListenConfig.SetMultipathTCP.
Udover det behandlede problem har selskabet Anthropic også annonceret en række lokalt udnyttelige sårbarheder i kernen af Linux, OpenBSD og FreeBSD, som muliggør root-rettigheder i systemet og kan bryde ud af isolerede containere; sårbarheder i Chrome og Safari, der fører til udførelse af kode i systemet ved åbning af særligt udformede web-sider; en sårbarhed i Windows-kernen, der fører til nedbrud; en sårbarhed i Android-platformen, der muliggør omgåelse af skærmlåsning og adgang til personlige oplysninger og fotos uden at låse enheden op (angrebet blev demonstreret på Google Pixel 9 smartphone).
Sårbarheden er bekræftet i mange officielle Docker-billeder, herunder billeder af couchbase, elasticsearch, flink, solr, storm osv.
- Muligheden for at aktivere IPPROTO_MPTCP-optionen for en lytternetværks-socket er tilgængelig i nginx fra version 1.29.7, men er ikke aktiv som standard.
- I Lighttpd er muligheden for at aktivere MPTCP tilgængelig fra udgivelsen 1.4.76.
- I Apache httpd blev patches for MPTCP-support tilføjet til Apache httpd 2.5-HEAD i 2024.
- I systemd blev support til aktivering af MPTCP ved socket-aktivering tilføjet i version 257.
- I Apache Traffic Server understøttes MPTCP-optionen fra version 9.2.4.
- I HAProxy er muligheden "mptcp{,4,6}@" tilgængelig fra version 3.1.0.
- I Traefik er flaget IPPROTO_MPTCP aktiveret som standard fra versioner 2.11.26, 3.4.2 og v3.5.0-rc1.
- I databasesystemet Valkey er muligheden "—mptcp" og indstillingerne "mptcp yes" og "repl-mptcp yes" tilgængelige fra version 9.0.0.
Kilde: opennet.ru
