Security
CVE-2026-98432: is your Linux server affected, and how to fix it
A plain-English guide to the critical Linux TCP bug CVE-2026-98432: who is affected, a 3-step check, patch commands for each distribution, and a temporary fix.
CriticalCVSS 9.8
- Remote attack
- No login needed
- Fixed by a kernel update
A bug in how Linux accepts new TCP connections over IPv4. Someone on the network can trigger it before any password, firewall-protected app or login screen is involved.
Affected
Linux machines that accept connections: VPS and cloud servers, web and mail servers, Kubernetes nodes, home servers and NAS boxes.
Not affected
Windows and macOS. Phones and Chromebooks run Linux but rarely accept incoming connections, so normal updates are enough.
Do this now
- Check your kernelThree commands, two minutes
- Update and rebootThe only complete fix
- Block the triggerTemporary, if no update yet
PatchedDebianOracleAmazonSUSEWaitingUbuntuRHELAs of November 1, 2026
Do I need to worry?
Probably, if you look after a Linux machine that is reachable over the network. The attack happens while a connection is being set up, before your web server, SSH or app even sees it. Strong passwords and app updates don't help here. Only a kernel update fixes it.
Containers don't protect you. Every container on a host shares the host's kernel, so you patch the host, not the container.
Check your server in 3 steps
Run these on the server itself (over SSH is fine), not inside a container.
Find your distribution and kernel
cat /etc/os-release | head -3 uname -rExample outputPRETTY_NAME="Ubuntu 24.04.3 LTS" NAME="Ubuntu" VERSION_ID="24.04" 6.8.0-85-genericWrite down the name and kernel version. You need them for the next step.
See if that kernel has the fix
Distributions patch old version numbers instead of jumping to a new one, so compare against your distribution's fixed version, not the upstream one. Open the section for your system:
Debian Fixed
uname -vExample output#1 SMP PREEMPT_DYNAMIC Debian 6.1.190-1The number after “Debian” is the running package. You are patched at 6.1.190-1 or newer on Debian 12 (bookworm), or 6.12.113-1 or newer on Debian 13 (trixie). Source: Debian tracker.
Ubuntu Not yet
uname -r apt list --upgradable 2>/dev/null | grep linux-imageOn November 1, 2026, no Ubuntu release had a fix yet. Fixes were listed as in progress for 22.04, 24.04, 26.04 and 26.10. Watch the Ubuntu CVE page. When it shows “Released”, update and reboot.
RHEL, AlmaLinux, Rocky, Oracle Linux Varies
rpm -q --changelog kernel-core-$(uname -r) | grep -c CVE-2026-98432Example output01 or more means the fix is in your running kernel. 0 means you're probably still vulnerable. To make sure the check itself works, run it again with
CVE-20instead. That should return a big number.AlmaLinux fixed versions:
4.18.0-553.180.2.el8_10,5.14.0-687.61.2.el9_8,6.12.0-211.69.2.el10_2(advisory). Red Hat had no fixed kernel yet on November 1.SUSE / openSUSE Mostly fixed
zypper patches --cve=CVE-2026-98432If the patch shows as needed, install it (see below). If it shows as applied, check that you've rebooted since.
See how exposed the machine is
sudo ss -tlnp sudo ss -Mlnp sysctl net.mptcp.enabledExample outputState Recv-Q Send-Q Local Address:Port Process LISTEN 0 4096 0.0.0.0:443 users:(("nginx",pid=812)) LISTEN 0 128 0.0.0.0:22 users:(("sshd",pid=640)) net.mptcp.enabled = 1The first command lists every service accepting TCP connections. The second lists Multipath TCP (MPTCP) listeners, which the published exploit targets. Any line there raises the risk.
Running Go programs?Programs built with Go 1.24 or newer open MPTCP listeners automatically, according to the Go security team. They often show up in the second list even though nobody turned MPTCP on.
Patch status by distribution
Last checked November 1, 2026. Each distribution name links to its own tracker, which is the place to confirm, because this changes daily.
| Distribution | Status | Fixed in |
|---|---|---|
| Debian 12 / 13 | Fixed | 6.1.190-1 and 6.12.113-1 |
| Ubuntu (all LTS) | Not yet | Fix in progress |
| RHEL 8 / 9 / 10, OpenShift | Not yet | Firewall mitigation only |
| AlmaLinux 8 / 9 / 10 | Testing | Testing repository |
| Rocky Linux (CIQ LTS/FIPS) | Partial | Some CIQ builds |
| Oracle Linux UEK, Amazon Linux, SUSE | Fixed | Most releases; see each vendor's advisory |
Upstream kernels with the fix: 7.3, 7.2.10, 6.18.56, 6.12.113, 6.6.159, 6.1.190, 5.15.223 and 5.10.272. These matter mainly if you build your own kernel.
Fix it: update and reboot
A kernel update only protects you after the machine boots into it. Until then you're still running the old, vulnerable kernel.
Debian / Ubuntu
sudo apt update && sudo apt full-upgrade
sudo rebootRHEL, Rocky, Oracle Linux
sudo dnf update 'kernel*'
sudo rebootAlmaLinux (fix still in testing)
sudo dnf install -y almalinux-release-testing
sudo dnf update 'kernel*' --enablerepo=almalinux-testing
sudo reboot
# after the reboot, switch the testing repo off again
sudo dnf config-manager --disable almalinux-testingSUSE / openSUSE
sudo zypper patch --cve=CVE-2026-98432
sudo rebootAfter the reboot, run step 2 again to confirm the new kernel is running. Managing several machines? Start with the ones reachable from the internet, then Kubernetes nodes and container hosts.
Can't patch yet? Temporary protection
Normal web traffic almost never uses IPv4 options, the rarely used header field that triggers the bug. Red Hat suggests a firewall rule that blocks TCP packets carrying them. It takes three steps:
Save the rule
Create a file with this content:
cve-2026-98432.nft table inet cve_2026_98432 { chain input { type filter hook input priority -310; policy accept; ip protocol tcp ip hdrlength > 5 counter drop } }Test and load it
sudo nft --check --file cve-2026-98432.nft sudo nft --file cve-2026-98432.nft sudo nft list table inet cve_2026_98432No output from the first command means the file is valid. The last command shows the rule and a counter of blocked packets.
Remove it after patching
sudo nft delete table inet cve_2026_98432
Red Hat says the rule “reduces exposure” but “cannot fully prevent” an attack. The rule disappears on reboot unless you save it. Traffic between containers on the same host can skip it, and it breaks networks that use CIPSO/NetLabel labels. Try it on one machine first. AlmaLinux and CIQ publish a similar version.
If nothing on the machine needs Multipath TCP, turn it off too, then restart any service still shown by ss -Mlnp:
echo 'net.mptcp.enabled = 0' | sudo tee /etc/sysctl.d/90-disable-mptcp.conf
sudo sysctl -w net.mptcp.enabled=0The bug also lives in plain TCP. CIQ found the vulnerable code still reachable with MPTCP disabled. Use it together with the firewall rule, never instead of patching.
FAQ
Is anyone attacking this right now?
Not that anyone has reported. No vendor reports attacks in the wild, and it wasn't on CISA's list of exploited bugs when we checked. Patch anyway: details are public, and similar bugs tend to get exploited quickly.
Is there public exploit code?
Not from a trusted source. Anthropic says an internal AI model built a working remote root attack, but it didn't release the code. Some GitHub repositories claim proofs of concept. Don't run them on systems you care about.
Does IPv6 protect me?
The main bug is IPv4-only. Most servers accept both, though, so you're still exposed through IPv4.
Can live patching cover it?
Possibly. Ubuntu Livepatch, kpatch and KernelCare can apply kernel fixes without a reboot, but only after the provider publishes a patch for this CVE. Check before relying on it.
Technical details
The kernel CVE record is titled “ipv4: free inet_opt and ireq_opt after an RCU grace period.” Saved IPv4 options were freed with kfree() while another CPU could still read them. That reader is a retransmitted SYN building a SYN-ACK, or a request-socket migration. The read ends up in freed memory inside ip_options_build(). The fix by Eric Dumazet switches to kfree_rcu() in inet_sock_destruct() and tcp_v4_reqsk_destructor(). The bug dates back to Linux 4.4.
Severity debate. The kernel CNA and Red Hat score it 9.8. Red Hat's machine-readable data and several vendors use 8.1, citing high attack complexity. Ubuntu calls it High. NVD has no score of its own yet.
The exploit claim. Anthropic reports that its exploit against MPTCP listeners first leaks a kernel address, which takes about 48 minutes. It then hijacks a callback to run commands as root about five minutes later. A failed attempt only drops one handshake, so an attacker can keep retrying quietly. This hasn't been independently reproduced.
Extra hardening. The init_on_free=1 boot parameter zeroes freed memory and limits what a stale read can leak. It doesn't fix the bug (oss-security discussion). Setting net.ipv4.tcp_migrate_req=0 closes only the migration path.
Sources and further reading
Sources checked November 1, 2026. Patch status changes quickly, so confirm on your vendor's page.
