Crisus · · hourly updates in Dutch
TCP2Shell: a hole in Linux’s TCP code
A bug in the way the Linux kernel sets up a TCP connection: TCP2Shell. According to Anthropic, an attacker can use it to get root remotely, without logging in, on a server with MPTCP. Debian, SUSE, Oracle, Amazon, Red Hat and AlmaLinux have the fix. Since 6 November Ubuntu too, for 22.04 up to and including 26.10: in the regular updates, without an advisory. Don’t panic. Do update and reboot.
15.10.2026Since 15 October the fix has been in the kernel. Since 6 November it is in Ubuntu’s updates too, without an advisory. Every minute on this clock is a minute that a server without a reboot still runs the old kernel. Is the fix there for me?
Current crisis level: 3 of 5
- 0 · Business as usualEverything hums. 50 Hz. Always.
- 1 · CalmSomeone reads the changelog
- 2 · AlertThere is a Signal group
- 3 · SeriousStatus quo since 2001
- 4 · Very seriousThe manager asks if it works yet
- 5 · Friday afternoonSomeone says: “it’s only a small change”
For those who want a moment of calm: 50 hertz, like the power grid. Quiet, and only when you click.
What is going on?
- The bug
- CVE-2026-98432: a use-after-free in the kernel’s IPv4 TCP code. While setting up a connection with IP options (Record Route or Timestamp), the kernel can read memory that has just been freed, if a retransmitted SYN is handled on another CPU at the same time. It has been there since kernel 4.4, from 2016. IPv6 is not affected.
- What is MPTCP?
- Multipath TCP: one connection over several network paths at once, for example wifi and 4G on a phone. If one path drops, the connection carries on over the other. It is an extension of TCP (RFC 8684). Apple has used it on iPhones since 2013, among other things for Siri, and Linux has supported it since kernel 5.6 (mptcp.dev, Wikipedia). To the rest of the internet it looks like ordinary TCP. Two roads to Rome. For an attacker too.
- Why is it on?
- MPTCP lives in the kernel, but a program has to ask for it. Almost no program does. Except anything written in Go: since Go 1.24, from February 2025, a Go server asks the kernel for MPTCP by default, say the release notes. The programmer does not have to do anything, and usually does not know. Go itself is not vulnerable. It just opens the door to the part of the kernel that is.
- What can an attacker do?
- Anthropic’s Frontier Red Team wrote on 27 October that an unreleased Claude model built a working exploit with it: remote, without logging in, root on a server with an MPTCP listener (Anthropic). Leaking a kernel pointer took 48 minutes, the shell another five. The exploit has not been published. Whether it also works without MPTCP is not clear. Yes, Claude is related to the author of this page. We have not talked about it at home yet.
- Severity
- CVSS 9.8, from the kernel’s CVE team. Red Hat first said 8.1, “Important”: the race is hard to win. Since 30 October Red Hat says 9.8 too, “Critical”. Amazon sticks to 8.1, Feedly to 5.9. Four parties, three numbers. All four: update.
- Which versions?
- Everything from 4.4. The fix is in 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 and 7.3.
- Exploited?
- Not seen yet. The bug is not in CISA’s KEV catalog, and Anthropic’s exploit is not public. But someone is looking: since 2 November researcher Marcus Hutchins sees internet-wide scans that knock on port 443 with MPTCP (Mastodon, 3 November).
- Why TCP2Shell?
- The bug has no name of its own. After PHP2Shell and HTTP2Shell, the crisis team could not go back.
What should you do?
Stay indoors. Keep the door locked.
- Check whether your kernel has the fix. Debian 13 has
6.12.113-1, Debian 126.1.190-1. Ubuntu 22.04 has5.15.0-203, 24.046.8.0-149, 26.047.0.0-43and 26.107.3.0-10; those for 22.04 up to 26.04 are only in the regular updates, not in the security pocket, sounattended-upgradesdoes not fetch them by default. Update and reboot, or the old kernel keeps running:uname -r sudo apt update && sudo apt full-upgrade sudo reboot - No fix yet, or no reboot possible yet? (Ubuntu 20.04 and older.) Then keep out TCP packets with IPv4 options. Normal traffic does not use them; RFC 7126 already recommends filtering them. This rule comes from RFF:
It is gone after a reboot unless you make it persistent. Does your network use CIPSO labels (SELinux or Smack with NetLabel)? Then don’t, those need the options.sudo nft add table ip cve_2026_98432 sudo nft add chain ip cve_2026_98432 pre '{ type filter hook prerouting priority -300; }' sudo nft add rule ip cve_2026_98432 pre meta l4proto tcp ip hdrlength gt 5 counter drop - Running services in Go? Turn MPTCP off until the kernel is updated, and restart the service:
GODEBUG=multipathtcp=0 # Go 1.24 and later sudo ss -lnMp # which processes listen with MPTCP? - Do not click links in e-mails about this bug. We never send e-mail. And if we did, it would go over a single path.
Status per platform, 7 November 06:00
- LinuxFix available5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 and 7.3, since 15 October.
- Debian 13Fix availableDSA-6568-1:
linux 6.12.113-1. - Debian 12Fix availableDLA-4841-1:
linux 6.1.190-1. The newer packagelinux-6.12since 22 October: DLA-4850-1,6.12.113-1~deb12u1. - UbuntuPartialSince 6 November in the regular updates (
-updates, not-security):5.15.0-203.213for 22.04,6.8.0-149.149for 24.04 and7.0.0-43.43for 26.04, see Launchpad. For 26.107.3.0-10.10, in the updates since 28 October and in the security pocket since 2 November. No Ubuntu Security Notice yet; the CVE page says “Fixed” only for 26.10 and still “work in progress” for 16.04 up to 26.04. Update and reboot. - Red HatFix availableSince 1 November for RHEL 8, 9 and 10: RHSA-2026:93412 to 93415. Since 2 November also RHEL for NVIDIA 10 (RHSA-2026:93775) and RHEL 9.4 with extended support (RHSA-2026:94109), since 3 November RHEL 8.8 (RHSA-2026:94303), 9.6 (94438), 9.2 (94477 and 94558), 10.0 (94508) and 8.4 (94623) and since 4 November 8.6 (94996) with extended support. Since 6 November also OpenShift 4.22 (RHSA-2026:95346, version 4.22.22). OpenShift 4 on the RHEL 8 images, OpenShift 5 and RHEL AI 3 still say “Affected”, see the CVE page and the bulletin. RHEL 6 and 7 are not affected.
- AlmaLinuxPartialAlmaLinux 8 since 2 November: ALSA-2026:93414 (
kernel 4.18.0-553.182.1.el8_10) and ALSA-2026:93415 (kernel-rt). Nothing in the errata yet for 9 and 10. - SUSEPartialMost products have a fix, a few are still on the way, see the CVE page.
- Oracle LinuxFix availableThe UEK kernels since 16 October (ELSA-2026-500397 to 500399, newer ones since 2 November). The Red Hat Compatible Kernel since 2 November for Oracle Linux 8, 9 and 10 (ELSA-2026-93414, 93412 and 93413), see the CVE page.
- Amazon LinuxFix availableAll kernels of Amazon Linux 2 and 2023, the default 2023 kernel since 30 October (ALAS2023-2026-3365), see ALAS.
- GoRestartSince 1.24 MPTCP is on by default for listeners.
GODEBUG=multipathtcp=0turns it off, see the GODEBUG docs. - Crisus.nlWorksNo Node, no PHP and no Go. Just HTML. Like in 1997.
This is the short version. The updates, the radar and the earlier crises are on the Dutch page. The previous crisis, PHP2Shell, is closed: crisus.nl/php (in Dutch).
The war goes on
Russia has been waging war against Ukraine since 2014. That war is not over. These clocks keep running until it is.
Since the occupation of Crimea20 February 2014The date set by Ukrainian law in 2015. Russia’s own medal “For the Return of Crimea” says 20 February too.
Since the war in Donbas12 April 2014An armed unit led by the Russian Igor Girkin seizes Sloviansk.
Since MH1717 July 2014A Russian Buk missile shoots down flight MH17 from Amsterdam to Kuala Lumpur over Donbas. All 298 people on board die, 196 of them Dutch. In 2022 a Dutch court convicts three men of murder and finds that Russia was in control of the fighters in Donbas.
Since the full-scale invasion24 February 2022Just before 05:00 Kyiv time, Putin announces a “special military operation”. Within minutes, the attack begins.
Want to do something? Support Ukraine, for example through Aid to Ukraine.
Sources
- CVE-2026-98432 The record from the kernel’s CVE team, CVSS 9.8.
- Anthropic: Discovering and exploiting vulnerabilities in critical, real-world software with Claude, 27 October. The exploit on servers with MPTCP.
- Go 1.24 Release Notes. ListenConfig uses MPTCP by default on Linux.
- Go: GODEBUG.
multipathtcp=0turns it off. - RFF: how to block the Linux TCP bug. The nftables rule and its side effects.
- RFC 7126. Why IP options may be dropped at the edge.
- RFC 8684. What MPTCP is.
- Debian security tracker: DSA-6568-1, DLA-4841-1 and DLA-4850-1.
- Ubuntu: CVE-2026-98432: 26.10 fixed in 7.3.0-10.10, 16.04 up to 26.04 work in progress, no USN yet.
- Launchpad: linux in Ubuntu: 5.15.0-203.213, 6.8.0-149.149 and 7.0.0-43.43 in the updates since 6 November, 7.3.0-10.10 since 28 October; the changelogs with the fix.
- Red Hat: CVE-2026-98432: Critical, 9.8, fix for RHEL 8, 9 and 10 (RHSA-2026:93412 to 93415), RHEL for NVIDIA 10 (RHSA-2026:93775), RHEL 9.4, 8.8, 9.6, 9.2, 10.0, 8.4 and 8.6 with extended support (RHSA-2026:94109, 94303, 94438, 94477, 94558, 94508, 94623 and 94996) and OpenShift 4.22 (RHSA-2026:95346).
- Red Hat: RHSB-2026-016: the bulletin, with the nftables rule.
- SUSE: CVE-2026-98432: most products have the fix.
- Oracle Linux: CVE-2026-98432: the UEK kernels, and the Red Hat Compatible Kernel of Oracle Linux 8, 9 and 10 (ELSA-2026-93414, 93412 and 93413).
- AlmaLinux: ALSA-2026:93414 and ALSA-2026:93415: the kernels of AlmaLinux 8.
- Amazon Linux: CVE-2026-98432: all kernels of Amazon Linux 2 and 2023.