Anthropic har avslørt en kritisk sårbarhet (CVE-2026-98432) i kjernens TCP-stakk. Linux, som tillater ekstern kjøring av kode ved å sende spesiallagde pakker. Det er rapportert om et fungerende angrep som tillater kodekjøring på kjernenivå og ekstern tilgang til root-rettigheter på systemet. Angrepet er egnet for å angripe systemer med serverprosesser som godtar tilkoblinger via nettverkssockets som støtter Multipath TCP (MPTCP)-protokollen. MPTCP-støtte kan aktiveres per nettverkssocket, som er standard i Go-standardbiblioteket, fra og med Go 1.24 (februar 2025).
Den forberedte utnyttelsen kan brukes med alle serverapplikasjoner skrevet i Go, inkludert Caddy HTTP-serveren, så lenge den kan sende nettverkspakker til lyttesocketen den oppretter. Siden sårbarheten finnes direkte i IPv4-stakken og ikke er spesifikk for MPTCP, er det mulig å lage utnyttelser som fungerer uten å være avhengig av MPTCP, men slike utnyttelser har ennå ikke blitt demonstrert. For eksempel er det mulig å utnytte sårbarheten når man behandler forespørsler om socket-migrering, som er tilgjengelig i konfigurasjoner med parameteren net.ipv4.tcp_migrate_req=1 eller når man bruker eBPF-programmer med alternativet BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
Sårbarheten skyldes en kappløpstilstand som oppstår under samtidig behandling av SYN-forespørsler som sendes på nytt under etablering av TCP-tilkobling. Siden tcp_v4_syn_recv_sock()-funksjonen sender parametere fra ireq->ireq_opt-strukturen til den underordnede socketen via en referanse i stedet for å kopiere dem, oppstår det under visse omstendigheter en situasjon der minnet for inet_opt- og ireq_opt-strukturene som inneholder socket-parameterne allerede er frigjort, men de tilhørende socket-alternativene fortsetter å brukes (use-after-free).
Fjernutnyttelse oppnås ved å sende en serie tidssynkroniserte nettverksforespørsler. Utnyttelsen gjelder vellykket kjerner som bruker adresserandomisering (KASLR), men det tar betydelig tid å nå kappløpsvinduet og krever et stort antall nye forsøk. Utnyttelse forenkles av det faktum at det å gå glipp av kappløpsvinduet bare resulterer i et håndtrykk, snarere enn et kjernekrasj, noe som gir mulighet for ubestemte forsøk. I prototypen av utnyttelsen tok angrepet omtrent en time – 48 minutter for å bestemme minneoppsettet og ytterligere 5 minutter for å organisere kodekjøring.
Det finnes ingen løsninger ennå som garanterer en løsning på sårbarheten – å installere en kjerneoppdatering er det eneste pålitelige alternativet. Problemet manifesterer seg fra kjernen og oppover. Linux 4.4 og fikset i utgivelsene 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 og 7.3. Statusen for sikkerhetsrettinger i distribusjoner kan vurderes på disse sidene: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch
Fedora.
Anbefalinger for å motvirke spesifikke utnyttelsesmetoder som ikke blokkerer sårbarheten generelt, inkluderer å deaktivere MPTCP-støtte og sette kjerneparameteren sysctl net.ipv4.tcp_migrate_req til 0:
sysctl -w net.mptcp.aktivert=0
sysctl -w net.ipv4.tcp_migrate_req=0
For å finne ut om det finnes prosesser i systemet som bruker sokkeler med
MPTCP, du kan bruke kommandoer:
ip mptcp endepunktvisning
IP mptcp-grenser viser
For å deaktivere MPTCP-støtte i Go-programmer, bruk flagget "multipathtcp=0", som kan angis ved å angi miljøvariabelen "GODEBUG=multipathtcp=0". For å deaktivere MPTCP-støtte under bygging, legg til "godebug multipathtcp=0" i go.mod-filen. I programkoden din kan du deaktivere MPTCP ved hjelp av funksjonene net.Dialer.SetMultipathTCP og net.ListenConfig.SetMultipathTCP.
I tillegg til problemet som ble diskutert, annonserte Anthropic også en rekke lokalt utnyttbare sårbarheter i kjernen. Linux, OpenBSD og FreeBSD som gir root-tilgang til systemet og escape fra isolerte containere; sårbarheter i Chrome og Safari som fører til kodekjøring på systemet når spesialdesignede nettsider åpnes; en sårbarhet i kjernen Windows, noe som fører til et krasj; plattformsårbarhet Android, som lar deg omgå skjermlåsen og få tilgang til personlig informasjon og bilder uten å låse opp enheten (angrepet ble demonstrert på en Google Pixel 9-smarttelefon).
supplere:
- I nginx har muligheten til å aktivere IPPROTO_MPTCP-alternativet for en lyttende nettverkssocket vært tilstede siden versjon 1.29.7, men brukes ikke som standard.
- I Lighttpd har alternativet for å aktivere MPTCP vært tilgjengelig siden versjon 1.4.76.
- I Apache httpd ble det lagt til patcher for å støtte MPTCP i Apache httpd 2.5-HEAD-grenen i 2024.
- I systemd ble støtte for aktivering av MPTCP når den aktiveres over en socket lagt til i versjon 257.
- I Apache Traffic Server støttes alternativet for å aktivere MPTCP siden versjon 9.2.4.
- I HAProxy, fra versjon 3.1.0, er alternativet "mptcp{,4,6}@" tilgjengelig. ".
- I Traefik er det aktivert som standard å sette IPPROTO_MPTCP-flagget siden versjon 2.11.26, 3.4.2 og v3.5.0-rc1.
- I Valkey DBMS, fra og med versjon 9.0.0, er alternativet "--mptcp" og innstillingene "mptcp yes" og "repl-mptcp yes" tilgjengelig.
Kilde: opennet.ru
