Společnost Anthropic zveřejnila informace o kritické zranitelnosti (CVE-2026-98432) v TCP zásobníku jádra Linux, která umožňuje vzdálené provádění kódu prostřednictvím odesílání speciálně formátovaných paketů. Bylo hlášeno o vytvoření funkčního exploit, který umožňuje vykonání kódu na úrovni jádra a vzdálené získání práv root v systému. Připravený exploit je vhodný pro útoky na systémy s serverovými procesy, které přijímají připojení přes síťové sokety podporující používání protokolu MPTCP (Multipath TCP). Podpora MPTCP může být aktivována při vazbě na jednotlivé síťové sokety, což je prováděno jako výchozí v standardní knihovně programovacího jazyka Go od verze Go 1.24 (únor 2025).
Připravený exploit může být použit při využití jakýchkoli serverových aplikací napsaných v jazyce Go, včetně HTTP serveru Caddy, za předpokladu, že existuje možnost odesílání síťových paketů na vytvořený jejich naslouchající soket. Vzhledem k tomu, že zranitelnost existuje přímo ve zásobníku IPv4 a není specifická pro MPTCP, není vyloučeno vytvoření exploitů, které fungují bez vazby na MPTCP, ale takové exploity zatím nebyly prokázány. Například je možné zneužití zranitelnosti při zpracování požadavků na migraci soketů, které je dostupné v konfiguracích s parametrem net.ipv4.tcp_migrate_req=1 nebo při použití eBPF programů s možností BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
Zranitelnost je způsobena stavem závodu, který nastává při současném zpracování opakovaně odeslaných SYN požadavků při navazování TCP spojení. Vzhledem k tomu, že funkce tcp_v4_syn_recv_sock() předává podřízenému soketu parametry ze struktury ireq->ireq_opt prostřednictvím odkazu, nikoli kopírováním, při určitých okolnostech vzniká situace, kdy je paměť pro struktury inet_opt a ireq_opt s parametry soketu již uvolněna, ale s ní spojené možnosti soketu jsou stále používány (use-after-free).
Vzdálené zneužití se provádí odesláním série synchronizovaných časových síťových požadavků. Vytvořený exploit je úspěšně použitelný také na jádrech, která využívají randomizaci adres (KASLR), ale zasáhnout do okna závodu trvá dost času a vyžaduje velké množství opakovaných pokusů. Zjednodušuje to, že nezasáhnout do okna závodu vede pouze k resetování relace navazování spojení (handshake), a nikoli k pádu jádra, což umožňuje pokračovat v pokusech bez omezení. Vytvořený prototyp exploitu pro provedení útoku vyžadoval zhruba hodinu — 48 minut na určení rozložení paměti a dalších 5 minut na organizaci provádění kódu.
Garantované blokující obrané cesty k zranitelnosti zatím nebyly předloženy — jako jediná spolehlivá varianta se doporučuje nainstalovat aktualizaci jádra. Problém se projevuje od jádra Linux 4.4 a byl odstraněn ve verzích 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 a 7.3. Stav odstranění zranitelností v distribucích lze posoudit na těchto stránkách: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
Z doporučení k odolnosti vůči konkrétním metodám zneužití, která nezablokují zranitelnost obecně, lze uvést deaktivaci podpory MPTCP a nastavení parametru jádra sysctl net.ipv4.tcp_migrate_req na hodnotu 0:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
Pro určení přítomnosti v systému procesů využívajících sokety s
MPTCP lze použít příkazy:
ip mptcp endpoint show
ip mptcp limits show
Pro deaktivaci podpory MPTCP v programech v jazyce Go je nutné použít příznak "multipathtcp=0", který lze nastavit pomocí proměnné prostředí "GODEBUG=multipathtcp=0". Pro vypnutí podpory MPTCP během kompilace lze přidat "godebug multipathtcp=0" do souboru s modulem go.mod. V kódu aplikace lze vypnout používání MPTCP pomocí funkcí net.Dialer.SetMultipathTCP a net.ListenConfig.SetMultipathTCP.
Kromě projednávaného problému společnost Anthropic také oznámila řadu lokalizovaných zranitelností v jádru Linux, OpenBSD a FreeBSD, které umožňují získat práva root v systému a vystoupit z izolovaných kontejnerů; zranitelnosti v Chrome a Safari, které vedou k vykonání kódu v systému při otevření speciálně upravených webových stránek; zranitelnost v jádru Windows, vedoucí k havárii; zranitelnost na platformě Android, která umožňuje obejít uzamčení obrazovky a získat přístup k osobním údajům a fotografiím, aniž by bylo nutné zařízení odemknout (útok byl demonstrován na smartphonu Google Pixel 9).
Doplňující informace:
- V nginx je možnost aktivace volby IPPROTO_MPTCP pro naslouchající síťový socket dostupná od verze 1.29.7, ale není použita jako výchozí.
- V Lighttpd je volba pro povolení MPTCP dostupná od vydání 1.4.76.
- V Apache httpd byly patche pro podporu MPTCP přidány do větve Apache httpd 2.5-HEAD v roce 2024.
- Ve systemd byla podpora pro povolení MPTCP při aktivaci podle socketu přidána ve verzi 257.
- V Apache Traffic Server je volba pro povolení MPTCP podporována od verze 9.2.4.
- V HAProxy je od verze 3.1.0 dostupná volba „mptcp{,4,6}@“.
- V Traefiku je nastavení příznaku IPPROTO_MPTCP zapnuto ve výchozím nastavení od vydání 2.11.26, 3.4.2 a v3.5.0-rc1.
- V databázi Valkey je od verze 9.0.0 dostupná volba „—mptcp“ a nastavení „mptcp yes“ a „repl-mptcp yes“.
Zdroj: opennet.ru
