Security· Security Disclosure

Linux's October 2026 TCP Use-After-Free: CVE-2026-98432

CVE-2026-98432 is a CVSS 9.8 remote use-after-free in Linux's IPv4 TCP handshake, fixed upstream Oct 15. Ubuntu and RHEL haven't shipped a fixed kernel yet.

Atlas Security
Security Advisories
10 min read · 2,116 words

Overview

Linux's stable kernels shipped a fix on October 11 and 15, 2026 for CVE-2026-98432, a use-after-free in the IPv4 TCP handshake that a remote, unauthenticated peer can reach. The kernel's own CVE Numbering Authority (CNA) scores it CVSS 3.1 9.8, Critical. The fixed releases are 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10, and 7.3, and the bug goes back to Linux 4.4. The upstream fix is a four-line change, but most servers run a distribution's kernel, and as of 11:00 AM CDT, October 29, Ubuntu's tracker still reads "Vulnerable" for its kernel on every release, and Red Hat lists RHEL 8, 9, and 10 as affected with no fix.

Why it's urgent: the bug sits in code every Linux server runs when it accepts an IPv4 TCP connection, before any application sees the connection. Anthropic, whose researcher reported it, says its Claude model wrote a working proof-of-concept exploit that runs commands as root on "Linux servers with a multipath TCP listener," with no credentials. See the timeline.

Key facts

FieldDetail
CVECVE-2026-98432, "ipv4: free inet_opt and ireq_opt after an RCU grace period," issued by the Linux kernel CNA
SeverityCritical, CVSS 3.1 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), the kernel CNA's score. Red Hat rates it Important with CVSS 3.1 8.1 (AC:H), SUSE rates it important, and Ubuntu rates it High.
WeaknessUse-after-free of IPv4 option data during the TCP handshake (the record lists no CWE)
ImpactPer the CNA's scoring notes: kernel heap contents disclosed to the remote peer, kernel memory corruption, or a crash. Red Hat: "primarily results in a system crash leading to a Denial of Service (DoS) or potential memory corruption."
Fixed in7.2.10 and 6.18.56 (Oct 11) · 6.12.113, 6.6.159, 6.1.190, 5.15.223, and 5.10.272 (Oct 15) · 7.3 (Oct 18)
No fix yetUbuntu (every release) and RHEL 8, 9, and 10, as of 11:00 AM CDT, October 29. Upstream branches that reached end-of-life before 5.10 get no fix.
Proof of conceptAnthropic says Claude built a remote root exploit for servers with a multipath TCP listener. It hasn't published the exploit.
CVE recordsPublished on cve.org on October 15. NVD lists it as "Received," with no analysis of its own, as of 11:00 AM CDT, October 29.
CreditReported by Xinyang Ge of Anthropic. Fixed by Eric Dumazet and reviewed by Kuniyuki Iwashima, per the fix commit.

Who is affected

Any Linux kernel from 4.4 on that lacks the fix, whether it serves the network directly or hosts containers: a container runs on the host's kernel, so a new image doesn't change anything. IPv6 connections aren't affected by the main issue; the commit says "IPv6 is not affected by the first issue."

Release lineStatus on Oct 29, 2026Fixed inReleased
7.3Mainline7.3 (from 7.3-rc7)Oct 18, 2026
7.2Stable7.2.10Oct 11, 2026
6.18Longterm6.18.56Oct 11, 2026
6.12Longterm6.12.113Oct 15, 2026
6.6Longterm6.6.159Oct 15, 2026
6.1Longterm6.1.190Oct 15, 2026
5.15Longterm5.15.223Oct 15, 2026
5.10Longterm5.10.272Oct 15, 2026
4.4 – 5.4End-of-life upstreamdistro fixes only—

Distribution status

Distribution kernels carry backported fixes under their own version numbers, so check the tracker, not the upstream number. As of 11:00 AM CDT, October 29:

  • Ubuntu: the tracker lists the linux package as "Vulnerable" on every release. On 26.10, 26.04, 24.04, and 22.04 it adds "work in progress" in 7.3.0-10.10, 7.0.0-43.43, 6.8.0-149.149, and 5.15.0-203.213; 20.04, 18.04, and 16.04 show only "Vulnerable." Many cloud and hardware-enablement kernels are listed the same way, and no Ubuntu Security Notice has been published.
  • Red Hat: RHEL 8, 9, and 10 and OpenShift Container Platform 4 are listed as affected, with no fix; RHEL 6 and 7 aren't affected (CVE page). Red Hat says mitigation "is either not available or the currently available options do not meet the Red Hat Product Security criteria."
  • Debian: fixed in 12 "bookworm" (6.1.190-1, DLA-4841-1, and linux-6.12 6.12.113-1~deb12u1, DLA-4850-1), 13 "trixie" (6.12.113-1, DSA-6568-1), and unstable (tracker).
  • SUSE: rated important. SUSE Linux Enterprise Server 16.0 (kernel-default 6.12.0-160000.40.1) and the 15 SP4, SP5, and SP6 LTSS kernels are fixed; 15 SP7 is in progress, and openSUSE Leap 15.6 and 16.0 are listed as affected (CVE page).

How the vulnerability works

When a Linux server accepts a TCP connection, the kernel tracks the half-open handshake in a lightweight "request socket," then creates a full socket once the handshake completes. If the connecting peer's IPv4 header carried options, the kernel keeps them to echo in its replies. The bug: the kernel handed those saved options from the request socket to the new connection without copying them, then freed them immediately when the connection went away, while another CPU could still be reading them to build a handshake reply. Reading freed kernel memory is a use-after-free.

The peer needs no login, and it all happens inside the kernel's handshake handling, before any application code runs. The CNA's scoring notes say the stale data can leak kernel heap memory back to the peer, steer kernel writes out of bounds, or crash the machine. Anthropic says a lost race "only fails the handshake without crashing the whole system, so a determined attacker can retry indefinitely until they succeed."

The fix

Eric Dumazet's commit, "ipv4: free inet_opt and ireq_opt after an RCU grace period," changes two plain kfree() calls to kfree_rcu(), which waits until every reader has finished with the memory before freeing it. Other code paths that replace these options already did that. The commit also fixes the same problem in request-socket migration (net.ipv4.tcp_migrate_req=1, or a BPF_SK_REUSEPORT_SELECT_OR_MIGRATE program), and says a related IPv6 case "will be addressed in a separate patch."

torvalds/linux · e3f33b0 · Oct 1, 2026
net/ipv4/af_inet.c
1 lines added, 1 removed
net/ipv4/tcp_ipv4.c
1 lines added, 1 removed
2 files changed2 lines added, 2 removed

Which servers are exposed

  • Every Linux host that accepts IPv4 TCP connections on an affected kernel: web servers, SSH, databases, load balancers, and Kubernetes nodes. The CNA's notes say the vulnerable path runs "during the TCP handshake, before application authentication."
  • Hosts with a multipath TCP (MPTCP) listener first. That's the setup Anthropic's working exploit needs: "Linux servers with a multipath TCP listener." Anthropic hasn't said why that listener matters, and the CVE record doesn't mention MPTCP. A server has one only if an application opens an MPTCP socket; the check is below.

Red Hat rates the bug lower than the CNA. It scores the attack complexity as High (CVSS 8.1) and describes the result as mainly a crash "or potential memory corruption." Anthropic's lab exploit shows a remote root shell on at least one configuration, so a lower rating isn't a reason to wait.

How to check your systems

Check the kernel

Shell
1uname -r                             # the running kernel2uname -v                             # Debian: the package version running3dpkg -l 'linux-image*' | grep ^ii    # Debian/Ubuntu: installed kernel packages4rpm -q kernel                        # RHEL and derivatives: installed kernels5needs-restarting -r                  # RHEL (dnf-utils): is a reboot needed?

Compare the result with your distribution's status above, not with the upstream version. If the installed kernel is newer than the running one, the fix isn't active until you reboot. Run these on container hosts and Kubernetes nodes, not inside containers: a container reports the host's kernel. We ran them on a Debian 12 host and in a Rocky Linux 9 container.

Check for multipath TCP listeners

Shell
1ss -Mlnp                   # MPTCP listening sockets and the processes that own them2sysctl net.mptcp.enabled   # 1 means applications may open MPTCP sockets

ss -M lists only MPTCP sockets, so an empty result means no MPTCP listener. net.mptcp.enabled = 1 alone doesn't create one: an application has to open an MPTCP socket. We tested both with iproute2 6.1 in a Debian 12 container, where ss -Mlnp listed a test MPTCP listener and skipped a plain TCP one beside it.

How to fix

Update the kernel and reboot

Install your distribution's fixed kernel as soon as it ships, then reboot: a kernel update doesn't take effect until the machine boots into it. Reboot container hosts and Kubernetes nodes too. Appliances and cloud images that bundle a kernel need their vendor's update.

On Debian and on SUSE Linux Enterprise Server 16.0 and the 15 LTSS releases, the fix is out. On Ubuntu and RHEL, it isn't yet, as of 11:00 AM CDT, October 29. Watch the trackers linked above. Running a self-built kernel? Move to the fixed stable release for its line.

If you can't patch yet

Red Hat publishes no mitigation. The following is Atlas's interim recommendation, based on the CNA's scoring notes, which say the attacking peer supplies IPv4 Record Route or Timestamp options in its SYN. TCP traffic almost never carries IPv4 options legitimately, so dropping TCP packets that have them should cost nothing:

Shell
1nft add table ip cve_2026_984322nft add chain ip cve_2026_98432 pre '{ type filter hook prerouting priority -300; }'3nft add rule ip cve_2026_98432 pre meta l4proto tcp ip hdrlength gt 5 counter drop

ip hdrlength gt 5 matches any IPv4 header longer than the 20-byte minimum, which only options produce. The rule runs before connection tracking and doesn't touch IPv6 or non-TCP traffic. We tested it in a Debian 12 container: it dropped a SYN carrying a Record Route option, and ordinary TCP connections still worked. We haven't tested it against an exploit, and it doesn't fix the kernel. It lasts until reboot, which is fine if the reboot is into a fixed kernel; remove it with nft delete table ip cve_2026_98432. If your edge firewall can drop IPv4 packets with options, doing it there protects every host behind it.

Until then, keep MPTCP listeners off the internet, and put the hosts that have one at the top of the patch list.

Timeline and exploitation status

All times are CDT (UTC−5).

WhenWhat
Oct 1 · 5:12 PMEric Dumazet posts the fix, crediting Xinyang Ge of Anthropic as reporter
Oct 5The fix is merged into the kernel's networking tree
Oct 11Linux 7.2.10 and 6.18.56 ship the fix; 7.3-rc7 follows that night
Oct 15 · 4:56–7:16 AMLinux 6.12.113, 6.6.159, 6.1.190, 5.15.223, and 5.10.272 ship the fix; the CVE record is published at 7:08 AM
Oct 18Linux 7.3 is released with the fix
Oct 27Anthropic's Frontier Red Team describes a remote root exploit for the bug, built by Claude in its lab
Oct 29Ubuntu still lists its kernels as vulnerable; GitHub repositories referencing the CVE appear

Exploitation status. Anthropic says Claude wrote the exploit "after initial prompting," that it runs "arbitrary commands as root, without any credentials or user interaction" on servers with a multipath TCP listener, and that in its proof of concept "it takes 48 minutes to leak a kernel pointer and another five minutes to reach the shell command execution." Anthropic hasn't published the exploit. Its disclosure policy gives developers 90 days to patch and a further 45 days before Anthropic discusses details beyond a public advisory. GitHub repositories referencing the CVE appeared on October 29, one describing itself as an audit script. We haven't tested any of them, and we aren't linking them.

Updates to this post

We'll revise this post and mark it updated when any of these change: fixed kernels from Ubuntu or Red Hat; NVD's analysis; a KEV listing or any report of exploitation; the separate IPv6 fix.

Get help

If the hard part is knowing which hosts, nodes, and appliances run which kernel, and which of them can reboot this week, our advisors can help plan it.

Atlas Service
Atlas Technical Consulting
Senior advisors for security audits, code reviews, and DevOps work — a two-hour discovery block with no retainer commitment, and a 24-hour response SLA.

The bug is reachable through any listening TCP port, so it helps to know which ones the internet can see. Our free external audit checks the domains and public IPs you verify for exposed services, publicly visible software versions with known CVEs, TLS, email security, DNS, and HTTP headers.

Atlas Service
Free External Security Audit
Non-destructive checks of your verified domains and public IPs, and a PDF report with every finding ranked and a fix for each, within 3 business days of verification.

It's the second Linux kernel fix this month that only takes effect after a reboot. The other, Fragnesia, is being chained with PHP2Shell to get root.

Sources

Atlas Security
Security Advisories

The Atlas security byline: write-ups of vulnerabilities in widely deployed software — what changed, who is exposed, and what to check — verified against primary sources.

Continue reading

More from the Atlas Meridian

Security
21 min read

Tailscale's October 2026 SSH and Serve Vulnerabilities: TS-2026-014 to TS-2026-017

Tailworm: Tailscale 1.104.4 fixes four SSH and Serve flaws, TS-2026-014 to -017, with no CVEs. Who's exposed, how to check, and what headscale can't switch off.

Atlas Security
Security Advisories
View category
Security
26 min read

PHP's October 2026 Critical RCEs: CVE-2026-109618 and CVE-2026-109619

PHP fixed two critical unauthenticated RCEs in 8.5.12, 8.4.27, 8.3.36, and 8.2.35. Attackers chain them with a Linux kernel bug to get root: patch both now.

Atlas Security
Security Advisories
View category
Security
31 min read

Google Brotli's October 2026 Decoder RCE: CVE-2026-111497

CVE-2026-111497 (Node2Shell) is a CVSS 9.2 RCE in Google's Brotli decoder, now in CISA's KEV. Fixed in Brotli 1.2.1 and Node.js 22.23.4, 24.22.1, and 26.12.1.

Atlas Security
Security Advisories
View category
Engage · Atlas Engineering

Reading is one thing. Shipping is another.

If this writeup resonates with what you're building, let's talk. We'll connect you directly with an engineer to assist.