Podjetje Anthropic je razkrilo informacije o kritični ranljivosti (CVE-2026-98432) v TCP-pletenju jedra Linux, ki omogoča oddaljeno izvajanje kode prek pošiljanja posebej oblikovanih paketov. Obstoječa je delujoča eksploatacija, ki omogoča izvajanje kode na ravni jedra in oddaljeno pridobitev pravic root v sistemu. Pripravljena eksploatacija je primerna za napade na sisteme s strežniškimi procesi, ki sprejemajo povezave prek omrežnih soketov, ki podpirajo protokol MPTCP (Multipath TCP). Podpora MPTCP se lahko aktivira za posamezne omrežne sokete, kar se privzeto izvede v standardni knjižnici programskega jezika Go, od različice Go 1.24 (februar 2025).
Pripravljena eksploatacija se lahko uporablja s katero koli strežniško aplikacijo v programskem jeziku Go, vključno s HTTP strežnikom Caddy, če obstaja možnost pošiljanja omrežnih paketov na njihov poslušalni soket. Ker je ranljivost prisotna neposredno v IPv4 pletenju in ni specifična za MPTCP, ni izključena možnost ustvarjanja eksploatacij, ki delujejo brez vezave na MPTCP, vendar takšne eksploatacije še niso bile predstavljene. Na primer, možna je izraba ranljivosti pri obdelavi zahtevkov za migracijo soketov, ki je na voljo v konfiguracijah s parametrom net.ipv4.tcp_migrate_req=1 ali pri uporabi eBPF programov z možnostjo BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
Ranljivost je povzročena zaradi stanja dirke, ki nastane pri hkratni obdelavi ponovljenih SYN zahtevkov pri vzpostavljanju TCP povezave. Ker funkcija tcp_v4_syn_recv_sock() podaja otroškemu soketu parametre iz strukture ireq->ireq_opt preko reference, ne pa preko kopiranja, se pri določeni konstelaciji okoliščin pojavi situacija, kjer je pomnilnik za strukture inet_opt in ireq_opt s parametri soketa že osvobojen, vendar se povezane možnosti soketa še vedno uporabljajo (use-after-free).
Oddaljeno izvajanje poteka prek pošiljanja niza časovno usklajenih omrežnih zahtevkov. Ustvarjena eksploitacija je uspešno uporabna tudi za jedra, ki uporabljajo randomizacijo naslovov (KASLR), vendar pa za vstop v okno stanja dirke potrebuje dovolj časa in veliko ponovitev. Poenostavi jo dejstvo, da neuspelo poskušanje v okno stanja dirke vodi le do ponastavitve seje vzpostavitve povezave (handshake), namesto do zrušenja jedra, kar omogoča neskončno nadaljevanje poskusov. V ustvarjenem prototipu eksploitacije je napad trajal približno eno uro — 48 minut za določitev razporeditve pomnilnika in še 5 minut za organizacijo izvajanja kode.
Zanesljivo blokirni obvozi za ranljivost še niso predstavljeni — edina zanesljiva možnost je priporočena namestitev posodobitve jedra. Težava se pojavi od jedra Linux 4.4 naprej in je odpravljena v izdajah 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 in 7.3. Status odprave ranljivosti v distribucijah lahko ocenite na teh straneh: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
Od priporočil za preprečevanje specifičnih metod izkoriščanja, ki ne blokirajo ranljivosti na splošno, je mogoče izpostaviti onemogočanje podpore MPTCP in nastavitev parametra sysctl jedra net.ipv4.tcp_migrate_req na vrednost 0:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
Za ugotavljanje prisotnosti procesov v sistemu, ki uporabljajo sokete z
MPTCP, lahko uporabite ukaze:
ip mptcp endpoint show
ip mptcp limits show
Za onemogočenje podpore MPTCP v programih v jeziku Go, je treba uporabiti zastavico "multipathtcp=0", katere nastavitev je mogoča z okoljsko spremenljivko "GODEBUG=multipathtcp=0". Za onemogočanje podpore MPTCP v fazi gradnje lahko dodate "godebug multipathtcp=0" v datoteko z modulom go.mod. V kodi aplikacije lahko uporabo MPTCP onemogočite prek funkcij net.Dialer.SetMultipathTCP in net.ListenConfig.SetMultipathTCP.
Poleg obravnavane težave je podjetje Anthropic prav tako napovedalo vrsto lokalno izkoriščanih ranljivosti v jedru Linux, OpenBSD in FreeBSD, ki omogočajo pridobitev pravic root v sistemu in izhod iz izoliranih kontejnerjev; ranljivosti v Chrome in Safari, ki vodijo do izvajanja kode v sistemu ob odprtju posebno oblikovanih spletnih strani; ranljivost v jedru Windows, ki vodi do nepričakovanega zaprtja; ranljivost na platformi Android, ki omogoča obhod blokade zaslona in dostop do osebnih informacij ter fotografij brez odklenitve naprave (napad je bil prikazan na pametnem telefonu Google Pixel 9).
Dopolnilo:
- V nginx je možnost aktivacije nastavitev IPPROTO_MPTCP za poslušanje omrežnega vtičnika prisotna od različice 1.29.7, vendar ni privzeto omogočena.
- V Lighttpd je možnost za omogočanje MPTCP na voljo od izdaje 1.4.76.
- V Apache httpd so bili popravki za podporo MPTCP dodani v vejo Apache httpd 2.5-HEAD leta 2024.
- V systemd je podpora za aktivacijo MPTCP pri aktivaciji preko vtičnikov dodana v različici 257.
- V Apache Traffic Server je možnost za omogočanje MPTCP podprta od različice 9.2.4.
- V HAProxy je od različice 3.1.0 na voljo možnost „mptcp{,4,6}@“.
- V Traefik je nastavitev izključno dežurstvo IPPROTO_MPTCP omogočena privzeto od izdaj 2.11.26, 3.4.2 in v3.5.0-rc1.
- V podatkovni bazi Valkey je od različice 9.0.0 na voljo možnost „—mptcp“ in nastavitve „mptcp yes“ in „repl-mptcp yes“.
Izvor: opennet.ru
