Vzdialene zneužívaná zraniteľnosť v TCP zásobe jadra Linuxu

Spoločnosť Anthropic odhalila informácie o kritickej zraniteľnosti (CVE-2026-98432) v TCP stacku linuxového jadra, ktorá umožňuje vzdialené vykonávanie kódu prostredníctvom odosielania špeciálne formátovaných paketov. Bolo oznámené o vytvorení funkčného exploit-u, ktorý umožňuje vykonanie kódu na úrovni jadra a vzdialený zisk práv root v systéme. Pripravený exploit je vhodný na útoky na systémy so serverovými procesmi, ktoré prijímajú spojenia cez sieťové socket-y podporujúce používanie protokolu MPTCP (Multipath TCP). Podpora MPTCP môže byť aktivovaná viazaním na jednotlivé sieťové socket-y, čo sa deje predvolene v štandardnej knižnici jazyka Go, začínajúc s verziou Go 1.24 (február 2025).

Pripravený exploit môže byť aplikovaný pri používaní akýchkoľvek serverových aplikácií v jazyku Go, vrátane HTTP servera Caddy, ak existuje možnosť odosielania sieťových paketov na vytvorený počúvajúci socket. Keďže zraniteľnosť je prítomná priamo v IPv4 stacku a nie je špecifická pre MPTCP, nevylučuje sa vytvorenie exploitov, ktoré fungujú bez viazania na MPTCP, ale takéto exploits zatiaľ neboli demonštrované. Napríklad, možné je zneužitie zraniteľnosti pri spracovaní požiadaviek na migráciu socketov, dostupné v konfiguráciách s parametrom net.ipv4.tcp_migrate_req=1 alebo pri používaní eBPF programov s voľbou BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.

Zraniteľnosť je spôsobená stavom pretekania, ktorý vzniká pri súčasnom spracovaní opakovane odoslaných SYN požiadaviek pri nadviazaní TCP spojenia. Keďže funkcia tcp_v4_syn_recv_sock() odovzdáva podriadenému socketu parametre zo štruktúry ireq->ireq_opt cez referenciu, a nie cez kopírovanie, za určitých okolností vzniká situácia, kedy pamäť pre štruktúry inet_opt a ireq_opt s parametrami socketu je už uvoľnená, ale s ňou spojené voľby socketu pokračujú v používaní (use-after-free).

Diaľkové vykonávanie sa uskutočňuje prostredníctvom zasielania série synchronizovaných časových sieťových požiadaviek. Vytvorený exploit je úspešne aplikovateľný aj na jadrá, v ktorých sa používa randomizácia adries (KASLR), ale dostať sa do okna stavu pretečenia trvá dosť veľa času a vyžaduje veľké množstvo pokusov. Vykonanie útoku uľahčuje to, že nedostanie sa do okna stavu pretečenia vedie len k obnove relácie nastavenia spojenia (handshake), a nie k pádu jadra, čo umožňuje nekonečne pokračovať v pokusoch. Vytvorenie prototypu exploitu pre vykonanie útoku trvalo približne hodinu — 48 minút na určenie rozloženia pamäte a ďalších 5 minút на organizovanie vykonávania kódu.

Garantované blokovanie ochrán voči zraniteľnosti zatiaľ neexistuje — ako jediná spoľahlivá možnosť sa odporúča nainštalovať aktualizáciu jadra. Problém sa objavuje od jadra Linux 4.4 a bol odstránený v verziá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 odstránenia zraniteľností v distribúciách môžete vyhodnotiť na týchto stránkach: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.

Z odporúčaní na prevenciu konkrétnych metód vykonávania, ktoré nezablokujú zraniteľnosť vo všeobecnosti, môžeme spomenúť vypnutie podpory MPTCP a nastavenie parametra sysctl jadra net.ipv4.tcp_migrate_req na hodnotu 0:

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

Na určenie prítomnosti v systéme procesov využívajúcich sokety s
MPTCP, môžeme použiť príkazy:

ip mptcp endpoint show
ip mptcp limits show

Pre vypnutie podpory MPTCP v programoch v jazyku Go je potrebné použiť parameter «multipathtcp=0», pričom premennú prostredia «GODEBUG=multipathtcp=0» môžeme nastaviť. Na vypnutie podpory MPTCP počas kompilácie možno pridať «godebug multipathtcp=0» do súboru s modulom go.mod. Vo kóde aplikácie možno vypnúť použitie MPTCP prostredníctvom funkcií net.Dialer.SetMultipathTCP a net.ListenConfig.SetMultipathTCP.

Okrem uvedenej problematiky spoločnosť Anthropic oznámila sériu lokálne exploatovaných zraniteľností v jadre Linux, OpenBSD a FreeBSD, ktoré umožňujú získať práva root v systéme a vystúpiť z izolovaných kontajnerov; zraniteľnosti v Chrome a Safari, ktoré vedú k vykonaniu kódu v systéme pri otvorení špeciálne upravených webových stránok; zraniteľnosť v jadre Windows, ktorá vedie k havarijnému ukončeniu práce; zraniteľnosť v platforme Android, ktorá umožňuje obísť blokovanie obrazovky a získať prístup k osobným informáciám a fotografiám bez odomknutia zariadenia (útok bol demonštrovaný na smartfóne Google Pixel 9).

Doplnenie:

  • V nginx je možnosť aktivácie voľby IPPROTO_MPTCP pre počúvajúci sieťový socket dostupná od verzie 1.29.7, avšak nie je používaná predvolene.
  • V Lighttpd je voľba pre povolenie MPTCP dostupná od vydania 1.4.76.
  • V Apache httpd boli patche pre podporu MPTCP pridané do vetvy Apache httpd 2.5-HEAD v roku 2024.
  • V systemd bola podpora pre aktiváciu MPTCP pri aktivácii cez socket pridaná vo verzii 257.
  • V Apache Traffic Server je voľba pre aktiváciu MPTCP podporovaná od verzie 9.2.4.
  • V HAProxy je od verzie 3.1.0 dostupná voľba „mptcp{,4,6}@
    “.
  • V Traefik je nastavenie flagu IPPROTO_MPTCP predvolene zapnuté od vydaní 2.11.26, 3.4.2 a v3.5.0-rc1.
  • V DB Valkey je od verzie 9.0.0 dostupná voľba „—mptcp“ a nastavenia „mptcp yes“ a „repl-mptcp yes“.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster