Security

CVE-2026-98432 Checker

A race in the Linux kernel's IPv4 TCP handshake lets a remote attacker use freed memory (CVSS 9.8). Anthropic turned it into a root exploit against servers with a multipath TCP listener, and Ubuntu and Red Hat have no fixed kernel yet. Paste the output of the commands below to see where this server stands.

Run on the server and paste the output (read-only)uname -rgrep -E '^(ID|VERSION_ID)=' /etc/os-releasesysctl net.mptcp.enabled net.ipv4.tcp_migrate_reqss -Mltn(apt changelog linux-image-$(uname -r) 2>/dev/null; rpm -q --changelog kernel-$(uname -r) 2>/dev/null; rpm -q --changelog kernel-default 2>/dev/null) | grep -m1 -o CVE-2026-98432 || echo 'kernel changelog: fix not listed'
Paste the command output

Paste at least the uname -r line and the changelog line. The checker needs the kernel version and whether its changelog names the fix.

Fix: install a patched kernel

Debian already ships fixed kernels. As of October 29, Ubuntu and Red Hat do not: run the update anyway so the fix lands as soon as it ships, and reboot after a new kernel arrives. For other distributions, look up CVE-2026-98432 in your vendor's security tracker.

sudo apt update && sudo apt full-upgrade # Debian, Ubuntusudo dnf upgrade kernel # RHEL, Rocky, Alma, Oracle, Amazon Linux 2023sudo zypper patch # SUSEsudo reboot
Until then: shrink the attack surface

Turn off multipath TCP (new MPTCP sockets fail, most programs fall back to plain TCP) and request migration, now and after reboot. Restart any program that was listening with MPTCP.

sudo sysctl -w net.mptcp.enabled=0sudo sysctl -w net.ipv4.tcp_migrate_req=0printf 'net.mptcp.enabled = 0\nnet.ipv4.tcp_migrate_req = 0\n' | sudo tee /etc/sysctl.d/90-cve-2026-98432.conf

These settings close the published attack path, not the bug. No vendor has confirmed them as a full workaround.

Checked in your browser. What you paste is never uploaded.

How to use

  1. Read the first two sections below to understand what the bug is and which servers can be reached by it.
  2. On the server, run the five read-only commands next to the box (or copy them all at once) and paste the output.
  3. Read the verdict: Exposed, Vulnerable, Patched kernel or Not affected. The table under it shows what the checker found.
  4. Install the fixed kernel if your distribution has one and reboot. Until it does, turn off multipath TCP and request migration with the commands under the result.

What causes CVE-2026-98432, in plain words

Every TCP connection starts with a three-step handshake: the client sends SYN, the server answers SYN-ACK, the client replies ACK. Between the SYN and the final ACK the kernel keeps a small placeholder for the half-open connection, called a request socket. If the client's SYN carried IPv4 options (extra fields such as Record Route or Timestamp), the kernel stores a copy of them with that placeholder, because the SYN-ACK has to echo them back.

When the ACK arrives, the kernel turns the placeholder into a full connection, tcp_v4_syn_recv_sock() in the source. The bug: it hands the full connection the same block of option memory instead of its own copy. Two objects now point at one block. When the full connection is closed, inet_sock_destruct() frees the block at once with a plain kfree().

Freeing would be harmless if nobody else could still be reading the block. But the placeholder lives in a shared lookup table that other CPU cores read without taking a lock. If the client resends its SYN at just the wrong moment, another core is busy resending the SYN-ACK and reads the options inside ip_options_build() exactly while the block is being freed. That is a use-after-free: the kernel reads, and may write, memory that already belongs to something else.

Think of a coat check that gives the same ticket to two people. When one of them leaves, the attendant throws the ticket away, while the other is still walking to the counter with it.

Why it is rated so high

Three things make this worse than a typical kernel bug. It is reached from the network, before any login: the attacker only has to open TCP connections to a listening port. A lost race does not crash the server, it only fails that one handshake, so an attacker can retry for as long as it takes; Anthropic's proof of concept needed 48 minutes of retries to leak a kernel address and five more to run a command as root. And the code has been there since 2015, so almost every Linux server in use carries it.

Scores differ because winning the race takes timing. The kernel's own CVE team rates it 9.8 (attack complexity low). Red Hat rates it 8.1, scoring the complexity as high, and Ubuntu lists it as High priority. Every scorer agrees on remote, no login, no user action.

WhoScoreNote
Linux kernel CVE team (CNA)9.8 CriticalAV:N/AC:L/PR:N/UI:N, full impact
Red Hat8.1 ImportantAC:H: the race is hard to win; marked preliminary
Ubuntu9.8, priority HighFix in progress for 22.04, 24.04, 26.04, 26.10

Where MPTCP comes in

Multipath TCP (MPTCP) lets one connection use several network paths at once, for example Wi-Fi and mobile data. On Linux it is opt-in: a program has to ask for an MPTCP socket, and ss -Mltn lists the ones listening. Anthropic's Frontier Red Team wrote on October 27, 2026 that its exploit lets a remote attacker run commands as root on Linux servers with a multipath TCP listener, without any credentials or user interaction.

The bug itself is in plain IPv4 TCP code. Neither the CVE record nor the fix mentions MPTCP, and Anthropic has not said whether servers without an MPTCP listener can be taken over. So read it this way: an MPTCP listener is the proven path to root, and every unpatched server still runs the faulty code.

Who is affected

Linux kernels from 4.4 (2015) until the fix. The flaw came with commit 079096f103fa, which put half-open connections into the shared lookup table. IPv6 handshakes are not affected by the main issue, because tcp_v6_syn_recv_sock() copies the options. A second path to the same memory exists when request migration is on (net.ipv4.tcp_migrate_req=1, or a BPF reuseport program that migrates requests).

Desktops and laptops run the same kernel code, but the risk is for machines that accept connections from untrusted networks: web servers, load balancers, VPN and mail gateways, and anything with an open port on the internet. Containers share the host kernel, so patch the host, not the image.

DistributionStatus on October 29, 2026
Debian 12 bookwormFixed: linux 6.1.190-1 (DLA-4841-1), linux-6.12 6.12.113-1~deb12u1
Debian 13 trixieFixed: linux 6.12.113-1 (DSA-6568-1)
Ubuntu 22.04, 24.04, 26.04, 26.10Vulnerable, fix in progress
Ubuntu 16.04, 18.04, 20.04Vulnerable
Ubuntu 14.04Not affected
Red Hat Enterprise LinuxAffected; Red Hat says no mitigation meets its criteria
Upstream stable kernelsFixed 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

Ways to protect a server

Patch: the only real fix is a kernel with the change "ipv4: free inet_opt and ireq_opt after an RCU grace period". It frees the option memory with kfree_rcu(), which waits until every core has finished reading before the memory is reused. Install it and reboot; a kernel that is installed but not running protects nothing. Livepatch services can apply it without a reboot once they cover this CVE.

Remove the proven path: set net.mptcp.enabled to 0 so programs can no longer open MPTCP sockets, then restart any service that was listening with MPTCP. Most programs fall back to plain TCP. Set net.ipv4.tcp_migrate_req to 0 (the default) to close the second path.

Shrink who can reach you: an attacker needs to complete many handshakes against an open port. Ports that only partners or your office use should be allowed only from their addresses. Per-source limits on new connections slow a retry-heavy attack down, though they do not stop it.

Watch for it: a won race usually leaves no trace, but a crash does. Kernel log lines naming ip_options_build or ip_build_and_send_pkt (journalctl -k), or a burst of SYNs with IPv4 options from one source, deserve a closer look. None of these steps replace the patch, and no vendor has confirmed them as a full workaround.

Timeline

Date (2026)Event
October 15Ubuntu publishes CVE-2026-98432 in its tracker
October (7.3-rc7)Fix merged upstream (commit e3f33b0a1d89) and backported to the stable branches
October 27Anthropic describes the zero-click root exploit over MPTCP; no exploit code published
October 29Wide news coverage; Debian fixed, Ubuntu and Red Hat still without a fixed kernel

Frequently asked questions

My server has no MPTCP listener. Am I safe?

Safer, not safe. The only published exploit path needs an MPTCP listener, but the bug is in plain IPv4 TCP code and nobody has shown that other servers are immune. Install the fixed kernel when it ships.

Does blocking IPv4 options at the firewall help?

Partly at best. The faulty memory holds IPv4 options from the client's SYN, and some guides drop packets with the Record Route option. Common firewalls cannot match every option type, and no vendor has confirmed it as a workaround.

Is IPv6 affected?

Not by the main issue: the IPv6 handshake copies the options instead of sharing them. A related problem with IPv6 options set only by CALIPSO is being fixed separately.

Is there exploit code online?

Anthropic described how its proof of concept works but did not publish it. Now that the cause and fix are public, expect others to try; patch before that happens.

Is what I paste uploaded?

No. The check runs in your browser and nothing you paste leaves your device.

Found a problem or have an idea? Report a problem

Share

You might also like