Az Anthropic vállalat nyilvánosságra hozta a Linux kernel TCP stack-jében felfedezett kritikus sebezhetőséget (CVE-2026-98432), amely távoli kódvégrehajtásra ad lehetőséget speciálisan megformált csomagok küldésével. Kijelentették, hogy létrehoztak egy működő exploitot, amely lehetővé teszi a kód kernel szintű végrehajtását, és távolról root jogok megszerzését a rendszerben. A kidolgozott exploit alkalmas támadásokhoz olyan rendszerek ellen, amelyek szerverfolyamatokat futtatnak, és elfogadják a kapcsolatokat hálózati socketeken keresztül, amelyek támogatják az MPTCP (Multipath TCP) protokoll használatát. Az MPTCP támogatás különböző hálózati socketekhez köthető, ami alapértelmezetten aktív a Go programozási nyelv standard könyvtárában az 1.24-es verziótól (2025 februárjától).
A kidolgozott exploit bármilyen Go nyelven írt szerveralkalmazás esetében alkalmazható, beleértve a Caddy HTTP-szervert is, amennyiben lehetőség van hálózati csomagok küldésére az általuk létrehozott hallgató sockethez. Mivel a sebezhetőség közvetlenül az IPv4 stack-ben található, és nem specifikus az MPTCP-re, nem zárható ki az MPTCP-hez nem kötődő exploitok létrehozása, de ilyen exploitokat eddig nem mutattak be. Például a sebezhetőség kihasználható socket-migrációs kérések feldolgozásakor, amely elérhető a net.ipv4.tcp_migrate_req=1 paramétert használó konfigurációkban, vagy eBPF programok alkalmazásakor a BPF_SK_REUSEPORT_SELECT_OR_MIGRATE opcióval.
A sebezhetőség versenyhelyzetből ered, amely a TCP kapcsolatállítás során egyszerre megismételt SYN kérések feldolgozásakor jön létre. Mivel a tcp_v4_syn_recv_sock() funkció az ireq->ireq_opt struktúrából paramétereket közvetít a gyermek sockethez referencián keresztül, nem másolással, bizonyos körülmények között olyan helyzet alakulhat ki, amikor az inet_opt és az ireq_opt struktúrákhoz tartozó memória már felszabadult, de a hozzájuk kapcsolódó socket opciók továbbra is használatban maradnak (use-after-free).
A távoli kihasználás időben szinkronizált hálózati kérések sorozatának elküldésével valósul meg. A létrehozott exploit sikeresen alkalmazható olyan kernel verzióknál is, ahol címek véletlenszerűsítése (KASLR) történik, de a versenyállapot ablakába való bejutás elég sok időt vesz igénybe, és nagy számú kísérletet igényel. A kihasználást segíti, hogy a versenyállapot ablakába való be nem jutás csak a kapcsolat felállítási szakaszának (handshake) megszakadását eredményezi, nem pedig a kernel összeomlását, ami lehetővé teszi a kísérletek végtelen folytatását. A létrehozott exploit prototípus esetén a támadás végrehajtásához körülbelül egy óra szükséges — 48 perc a memória elrendezésének meghatározásához és további 5 perc a kód végrehajtásának megszervezésére.
Jelenleg nem állnak rendelkezésre megbízható, garantáltan a sebezhetőséget megkerülő megoldások — az egyetlen megbízható lehetőség a kernel frissítése. A probléma a Linux 4.4 kernel verziótól kezdődik, és a 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 és 7.3 verziókban lett orvosolva. A sebezhetőségek eltávolításának státusát a következő oldalakon lehet értékelni: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
A konkrét kihasználási módszerek elleni védekezés érdekében, amelyek nem zárják le a sebezhetőséget általános értelemben, megemelhető a MPTCP támogatásának letiltása és a kernel sysctl paraméterének net.ipv4.tcp_migrate_req 0-ra állítása:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
A rendszerben lévő folyamatok meghatározásához, amelyek MPTCP socketeket használnak, a következő parancsok használhatók:
ip mptcp endpoint show
ip mptcp limits show
A MPTCP támogatásának letiltásához a Go nyelvű programokban a "multipathtcp=0" zászló használatos, amit a "GODEBUG=multipathtcp=0" környezeti változó beállításával lehet megtenni. A MPTCP támogatásának letiltásához a fordítás során a go.mod fájlhoz "godebug multipathtcp=0" hozzáadásával is lehet eljárni. Az alkalmazás kódjában a MPTCP használatát a net.Dialer.SetMultipathTCP és net.ListenConfig.SetMultipathTCP funkciók segítségével lehet letiltani.
Az MPTCP támogatásának letiltásához Go nyelven írt programokban a „multipathtcp=0” kapcsolót kell használni, amelyet a „GODEBUG=multipathtcp=0” környezeti változó beállításával lehet elérni. Az MPTCP támogatás letiltásához a fordítási szakaszban a „godebug multipathtcp=0” bejegyzést kell hozzáadni a go.mod modul fájlhoz. Az alkalmazás kódjában az MPTCP használatát a net.Dialer.SetMultipathTCP és a net.ListenConfig.SetMultipathTCP függvények segítségével lehet letiltani.
Az Anthropic a már tárgyalt probléma mellett bejelentett egy sor helyben kihasználható sebezhetőséget a Linux, OpenBSD és FreeBSD kernelében, amelyek lehetővé teszik a root jogosultságok megszerzését és az elszigetelt konténerek elhagyását; Chrome és Safari sebezhetőségek, amelyek kód végrehajtásához vezetnek a rendszerben speciálisan kialakított weboldalak megnyitásakor; a Windows kernelében rejlő sebezhetőség, amely váratlan leálláshoz vezet; egy Android platform sebezhetőség, amely lehetővé teszi a képernyő lezárásának megkerülését és a személyes információkhoz és fényképekhez való hozzáférést anélkül, hogy a készüléket feloldanánk (a támadást a Google Pixel 9 okostelefonon demonstrálták).
Kiegészítés:
- Az nginx-ben az IPPROTO_MPTCP kapcsoló aktiválásának lehetősége a hallgató hálózati socket számára az 1.29.7 verziótól áll rendelkezésre, de alapértelmezés szerint nem alkalmazzák.
- A Lighttpd lehetőség az MPTCP bekapcsolására az 1.4.76 verziótól elérhető.
- Az Apache httpd-ben az MPTCP támogatásához szükséges javítások az Apache httpd 2.5-HEAD ágába kerültek 2024-ben.
- A systemd-ben az MPTCP aktiválásának támogatása socket alapú aktiválásnál a 257-es verzióban került bevezetésre.
- Az Apache Traffic Server az MPTCP aktiválásának lehetőségét a 9.2.4 verziótól támogatja.
- A HAProxy-ban a 3.1.0 verziótól kezdve elérhető az „mptcp{,4,6}@” opció.
- A Traefik-ben az IPPROTO_MPTCP zászló alapértelmezés szerint be van kapcsolva a 2.11.26, 3.4.2 és v3.5.0-rc1 kiadásoktól kezdődően.
- A Valkey DB-ben a 9.0.0 verziótól elérhető a „—mptcp” opció és a „mptcp yes” és „repl-mptcp yes” beállítások.
Forrás: opennet.ru
