Fjärrutnyttjad sårbarhet i TCP-stacken i Linux-kärnan

Företaget Anthropic har avslöjat information om en kritisk sårbarhet (CVE-2026-98432) i TCP-stackens kärnstruktur för Linux, som möjliggör fjärrexekvering av kod genom att skicka specialdesignade paket. Det har rapporterats om skapandet av en fungerande exploit som möjliggör att köra kod på kärnnivå och fjärråtkomst till root-rättigheter i systemet. Den förberedda exploiten är användbar för attacker på system med serverprocesser som accepterar anslutningar via nätverksuttag som stöder användning av protokollet MPTCP (Multipath TCP). Stödet för MPTCP kan aktiveras knutet till specifika nätverksuttag, vilket görs som standard i det standardbibliotek som följer med programmeringsspråket Go, från version Go 1.24 (februari 2025).

Den förberedda exploiten kan användas med alla serverapplikationer skrivna på Go, inklusive HTTP-servern Caddy, om det finns möjlighet att skicka nätverkspaket till de hörande uttagen som de skapade. Eftersom sårbarheten finns direkt i IPv4-stacken och inte är specifik för MPTCP, är det inte uteslutet att skapa exploiter som fungerar utan koppling till MPTCP, men sådana exploiter har ännu inte demonstrerats. Till exempel kan sårbarheten utnyttjas vid hantering av socket-migreringsförfrågningar, tillgängliga i konfigurationer med parametern net.ipv4.tcp_migrate_req=1 eller vid användning av eBPF-program med alternativet BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.

Sårbarheten orsakas av ett tävlingsförhållande som uppstår vid samtidig behandling av återanvända SYN-förfrågningar vid etablering av en TCP-anslutning. Eftersom funktionen tcp_v4_syn_recv_sock() vidarebefordrar parametrar från strukturen ireq->ireq_opt genom en referens, snarare än genom kopiering, kan en viss kombination av omständigheter leda till en situation där minnet för strukturerna inet_opt och ireq_opt med socketparametrar redan har frigjorts, men de relaterade socketalternativen fortsätter att användas (use-after-free).

Fjärrutnyttjande sker genom att skicka en serie tidsynkroniserade nätverksförfrågningar. Den skapade exploiten är framgångsrik även på kärnor som använder adressrandomisering (KASLR), men att träffa i race condition-fönstret tar ganska lång tid och kräver ett stort antal försök. Det underlättar utnyttjandet att om man missar i race condition-fönstret leder det bara till en återställning av sessionen för anslutningsetablering (handshake), snarare än att kärnan kraschar, vilket möjliggör oändliga försök. I den skapade prototypen av exploiten tog det ungefär en timme - 48 minuter för att bestämma minneslayouten och ytterligare 5 minuter för att organisera kodkörning.

Garantin för blockering av sårbarhetens skyddande kring-gångar har hittills inte presenterats - som det enda pålitliga alternativet föreslås att upprätta en kärnuppdatering. Problemet förekommer från och med kärnan Linux 4.4 och har åtgärdats i versionerna 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 och 7.3. Statusen för åtgärdande av sårbarheter i distributionerna kan utvärderas på följande sidor: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.

Bland rekommendationerna för att motverka specifika metoder för utnyttjande, som inte blockerar sårbarheten i allmänhet, kan nämnas att stänga av MPTCP-stödet och ställa in sysctl-parametern net.ipv4.tcp_migrate_req till värdet 0:

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

För att identifiera om det finns processer i systemet som använder sockets med
MPTCP, kan följande kommandon användas:

ip mptcp endpoint show
ip mptcp limits show

För att stänga av MPTCP-stödet i program på programspråket Go bör flaggan "multipathtcp=0" användas, för att ställa in detta kan miljövariabeln "GODEBUG=multipathtcp=0" sättas. För att stänga av MPTCP-stödet vid bygget kan "godebug multipathtcp=0" läggas till i go.mod-filen. I applikationens kod kan användningen av MPTCP stängas av genom funktionerna net.Dialer.SetMultipathTCP och net.ListenConfig.SetMultipathTCP.

Förutom det diskuterade problemet har företaget Anthropic även tillkännagett en serie lokalt exploaterbara sårbarheter i Linux-kärnan, OpenBSD och FreeBSD som möjliggör elevarbete av root-rättigheter i systemet och utträde från isolerade containrar; sårbarheter i Chrome och Safari som leder till körning av kod i systemet när speciellt utformade webbsidor öppnas; en sårbarhet i Windows-kärnan som leder till oväntat avslut; en sårbarhet i Android-plattformen som möjliggör kringgående av skärmlås och åtkomst till personlig information och foton utan att låsa upp enheten (attacken demonstrerades på Google Pixel 9-smarttelefonen).

Tillägg:

  • I nginx finns möjligheten att aktivera alternativet IPPROTO_MPTCP för den lyssnande nätverksocketen från och med version 1.29.7, men det används inte som standard.
  • I Lighttpd är alternativet för att aktivera MPTCP tillgängligt från version 1.4.76.
  • I Apache httpd lades patchar för att stödja MPTCP till Apache httpd 2.5-HEAD-grenen år 2024.
  • I systemd lades stöd för att aktivera MPTCP vid aktivering per socket till version 257.
  • I Apache Traffic Server stöds alternativet för att aktivera MPTCP från version 9.2.4.
  • I HAProxy är alternativet «mptcp{,4,6}@
    » tillgängligt från och med version 3.1.0.
  • I Traefik är flaggan IPPROTO_MPTCP aktiv som standard sedan versionerna 2.11.26, 3.4.2 och v3.5.0-rc1.
  • I databasen Valkey är alternativet «—mptcp» och inställningarna «mptcp yes» och «repl-mptcp yes» tillgängliga från version 9.0.0.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster