Het bedrijf Anthropic heeft informatie onthuld over een kritieke kwetsbaarheid (CVE-2026-98432) in de TCP-stack van de Linux-kernel, die het mogelijk maakt om code op afstand uit te voeren door speciaal gevormde pakketten te verzenden. Er is melding gemaakt van een werkend exploit dat het mogelijk maakt om code op kernel-niveau uit te voeren en op afstand root-rechten in het systeem te verkrijgen. Het voorbereide exploit is geschikt voor aanvallen op systemen met serverprocessen die verbindingen aannemen via netwerksockets die het gebruik van het MPTCP-protocol (Multipath TCP) ondersteunen. Ondersteuning voor MPTCP kan worden geactiveerd in koppeling met afzonderlijke netwerksockets, wat standaard gedaan wordt in de standaardbibliotheek van de Go-taal, beginnend met versie Go 1.24 (februari 2025).
Het voorbereide exploit kan worden toegepast bij het gebruik van elke servertoepassing in de Go-taal, inclusief de HTTP-server Caddy, mits er de mogelijkheid is om netwerkpakketten naar de door deze toepassingen geopende luister-socket te verzenden. Aangezien de kwetsbaarheid zich direct in de IPv4-stack bevindt en niet specifiek is voor MPTCP, is de creatie van exploits die werken zonder gebonden te zijn aan MPTCP niet uitgesloten, maar dergelijke exploits zijn nog niet gedemonstreerd. Bijvoorbeeld, het is mogelijk om de kwetsbaarheid te exploiteren bij de verwerking van verzoeken voor het migreren van sockets, beschikbaar in configuraties met de parameter net.ipv4.tcp_migrate_req=1 of bij het gebruik van eBPF-programma's met de optie BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
De kwetsbaarheid wordt veroorzaakt door een race-conditie die optreedt tijdens de gelijktijdige verwerking van herverzonden SYN-verzoeken bij het opzetten van een TCP-verbinding. Aangezien de functie tcp_v4_syn_recv_sock() parameters vanuit de structuur ireq->ireq_opt via een referentie doorgeeft in plaats van door kopiƫren, doet zich onder bepaalde omstandigheden een situatie voor waarin het geheugen voor de structuren inet_opt en ireq_opt met socketparameters al is vrijgegeven, maar de gerelateerde socketopties nog steeds worden gebruikt (use-after-free).
De externe exploitatie vindt plaats door het verzenden van een reeks tijdsynchroniseerde netwerkverzoeken. De ontwikkelde exploit is ook toepasbaar op kernels die adresrandomisatie (KASLR) gebruiken, maar het vinden van de race-condition-venster kost aanzienlijke tijd en vereist veel herhalingen. Het wordt vergemakkelijkt doordat het niet vinden van het race-condition-venster alleen leidt tot het resetten van de handshake, en niet tot een kernelcrash, wat de mogelijkheid biedt om pogingen oneindig voort te zetten. In de ontwikkelde prototype-exploit duurde de aanval ongeveer een uur: 48 minuten voor het bepalen van de geheugenlayout en nog eens 5 minuten voor de organisatie van de code-uitvoering.
Er zijn geen gegarandeerd blokkering van beveiligingslekken manieren gepresenteerd; de enige betrouwbare optie is om de kernelupdate te installeren. Het probleem begint met kernel Linux 4.4 en is opgelost in versies 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 en 7.3. De status van de kwetsbaarheden in distributies kan worden beoordeeld op de volgende pagina's: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
Van de aanbevelingen voor het bestrijden van specifieke exploitatiemethoden, die de kwetsbaarheid niet in het algemeen blokkeren, kan het uitschakelen van de MPTCP-ondersteuning en het instellen van de sysctl-parameter net.ipv4.tcp_migrate_req op 0 worden opgemerkt:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
Om te bepalen of er processen in het systeem zijn die sockets met
MPTCP gebruiken, kunnen de volgende commando's worden gebruikt:
ip mptcp endpoint show
ip mptcp limits show
Om de ondersteuning voor MPTCP in Go-programma's uit te schakelen, moet de vlag "multipathtcp=0" worden gebruikt, waarvoor de omgevingsvariabele "GODEBUG=multipathtcp=0" kan worden ingesteld. Om de ondersteuning voor MPTCP tijdens de bouwfase uit te schakelen, kan "godebug multipathtcp=0" aan het go.mod modulebestand worden toegevoegd. In de applicatiecode kan MPTCP worden uitgeschakeld via de functies net.Dialer.SetMultipathTCP en net.ListenConfig.SetMultipathTCP.
Naast het besproken probleem heeft het bedrijf Anthropic ook een reeks lokaal uitbuitbare kwetsbaarheden in de Linux-kernel, OpenBSD en FreeBSD aangekondigd, waarmee root-rechten op het systeem kunnen worden verkregen en uit geĆÆsoleerde containers kan worden gekomen; kwetsbaarheden in Chrome en Safari, die leiden tot code-executie op het systeem bij het openen van speciaal opgemaakte webpagina's; een kwetsbaarheid in de Windows-kernel die leidt tot een crash; een kwetsbaarheid op het Android-platform die het mogelijk maakt om het vergrendelscherm te omzeilen en toegang te krijgen tot persoonlijke informatie en foto's zonder het apparaat te ontgrendelen (de aanval werd gedemonstreerd op de Google Pixel 9 smartphone).
Addition:
- In nginx is de mogelijkheid om de optie IPPROTO_MPTCP voor de luisterende netwerk socket te activeren beschikbaar sinds versie 1.29.7, maar wordt deze niet standaard toegepast.
- In Lighttpd is de optie om MPTCP in te schakelen beschikbaar vanaf release 1.4.76.
- In Apache httpd zijn patches voor MPTCP-ondersteuning toegevoegd aan de Apache httpd 2.5-HEAD tak in 2024.
- In systemd is ondersteuning voor het inschakelen van MPTCP bij socketactivatie toegevoegd in versie 257.
- In Apache Traffic Server wordt de optie om MPTCP in te schakelen ondersteund vanaf versie 9.2.4.
- In HAProxy is de optie 'mptcp{,4,6}@' beschikbaar vanaf versie 3.1.0.
- In Traefik is het instellen van de vlag IPPROTO_MPTCP standaard ingeschakeld vanaf releases 2.11.26, 3.4.2 en v3.5.0-rc1.
- In de database Valkey is de optie '--mptcp' en de instellingen 'mptcp yes' en 'repl-mptcp yes' beschikbaar vanaf versie 9.0.0.
Bron: opennet.ru
