Ranjivost u TCP steku kernela koja se može iskoristiti daljinski Linux

Anthropic je otkrio kritičnu ranjivost (CVE-2026-98432) u kernel TCP steku. Linux, koji omogućava udaljeno izvršavanje koda slanjem posebno kreiranih paketa. Prijavljen je funkcionalni exploit, koji omogućava izvršavanje koda na nivou kernela i udaljeno dobijanje root privilegija na sistemu. Exploit je pogodan za napad na sisteme sa serverskim procesima koji prihvataju veze putem mrežnih socketa koji podržavaju Multipath TCP (MPTCP) protokol. MPTCP podrška se može omogućiti za svaki mrežni socket ponaosob, što je zadana postavka u standardnoj Go biblioteci, počevši od Go 1.24 (februar 2025).

Pripremljeni exploit se može koristiti s bilo kojom serverskom aplikacijom napisanom u Go-u, uključujući Caddy HTTP server, sve dok može slati mrežne pakete na socket za slušanje koji kreira. Budući da je ranjivost prisutna direktno u IPv4 steku i nije specifična za MPTCP, moguće je kreirati exploite koji rade bez oslanjanja na MPTCP, ali takvi exploiti još nisu demonstrirani. Na primjer, moguće je iskoristiti ranjivost prilikom obrade zahtjeva za migraciju socketa, što je dostupno u konfiguracijama s parametrom net.ipv4.tcp_migrate_req=1 ili prilikom korištenja eBPF programa s opcijom BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.

Ranjivost je uzrokovana stanjem utrke koje se javlja tokom simultane obrade ponovo poslanih SYN zahtjeva tokom uspostavljanja TCP veze. Budući da funkcija tcp_v4_syn_recv_sock() prosljeđuje parametre iz strukture ireq->ireq_opt podređenom socketu putem reference, umjesto da ih kopira, pod određenim okolnostima nastaje situacija u kojoj je memorija za strukture inet_opt i ireq_opt koje sadrže parametre socketa već oslobođena, ali se povezane opcije socketa i dalje koriste (use-after-free).

Daljinsko iskorištavanje se postiže slanjem serije vremenski sinhronizovanih mrežnih zahtjeva. Eksploatacija se uspješno primjenjuje na kernele koji koriste randomizaciju adresa (KASLR), ali prolazak kroz prozor za uslov trke (ratke condition window) traje znatno vrijeme i zahtijeva veliki broj ponovnih pokušaja. Eksploatacija je pojednostavljena činjenicom da propuštanje prozora za uslov trke rezultira samo uspostavljanjem veze (handshake), a ne padom kernela, što omogućava neograničen broj pokušaja. U prototipu eksploitacije, napad je trajao otprilike sat vremena - 48 minuta za određivanje rasporeda memorije i dodatnih 5 minuta za organizaciju izvršavanja koda.

Još uvijek nema dostupnih rješenja koja garantuju ispravljanje ranjivosti - instaliranje ažuriranja kernela je jedina pouzdana opcija. Problem se manifestuje počevši od kernela. Linux 4.4 i ispravljeno u izdanjima 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 i 7.3. Status ispravki ranjivosti u distribucijama može se procijeniti na ovim stranicama: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.

Preporuke za suzbijanje specifičnih metoda iskorištavanja koje ne blokiraju ranjivost općenito uključuju onemogućavanje podrške za MPTCP i postavljanje parametra sysctl kernela net.ipv4.tcp_migrate_req na 0:

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

Da biste utvrdili da li u sistemu postoje procesi koji koriste sockete sa
MPTCP, možete koristiti naredbe:

prikaži krajnju tačku IP mptcp-a
Prikaz ograničenja IP mptcp-a

Da biste onemogućili podršku za MPTCP u Go programima, koristite zastavicu "multipathtcp=0", koja se može postaviti postavljanjem varijable okruženja "GODEBUG=multipathtcp=0". Da biste onemogućili podršku za MPTCP tokom izgradnje, dodajte "godebug multipathtcp=0" u go.mod datoteku. U kodu vaše aplikacije možete onemogućiti MPTCP pomoću funkcija net.Dialer.SetMultipathTCP i net.ListenConfig.SetMultipathTCP.

Pored razmatranog problema, Anthropic je također najavio niz lokalno iskoristivih ranjivosti u kernelu. Linux, OpenBSD i FreeBSD koji omogućavaju root pristup sistemu i izlaz iz izolovanih kontejnera; ranjivosti u Chromeu i Safariju koje dovode do izvršavanja koda na sistemu prilikom otvaranja posebno dizajniranih web stranica; ranjivost u kernelu Windows, što dovodi do pada sistema; ranjivost platforme Android, koji vam omogućava da zaobiđete zaključavanje ekrana i pristupite ličnim informacijama i fotografijama bez otključavanja uređaja (napad je demonstriran na pametnom telefonu Google Pixel 9).

Dodatak:

  • U nginxu, mogućnost omogućavanja opcije IPPROTO_MPTCP za mrežni socket koji sluša postoji od verzije 1.29.7, ali se ne koristi podrazumevano.
  • U Lighttpd-u, opcija za omogućavanje MPTCP-a dostupna je od verzije 1.4.76.
  • U Apache httpd-u, zakrpe za podršku MPTCP-u dodane su u granu Apache httpd 2.5-HEAD 2024. godine.
  • U systemd-u, podrška za omogućavanje MPTCP-a kada se aktivira preko socketa dodana je u verziji 257.
  • U Apache Traffic Serveru, opcija za omogućavanje MPTCP-a je podržana od verzije 9.2.4.
  • U HAProxy-ju, počevši od verzije 3.1.0, dostupna je opcija "mptcp{,4,6}@". ".
  • U Traefiku, postavljanje zastavice IPPROTO_MPTCP je podrazumevano omogućeno od izdanja 2.11.26, 3.4.2 i v3.5.0-rc1.
  • U Valkey DBMS-u, počevši od verzije 9.0.0, dostupne su opcija "--mptcp" i postavke "mptcp yes" i "repl-mptcp yes".

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster