How to Fix CVE-2026-23321: Critical Vulnerability in Linux
Related fixes
Other vulnerabilities in the same area that are worth patching alongside this one:
- How to Fix CVE-2026-23364: Critical Vulnerability in Linux — Critical Vulnerability in Linux
- How to Fix CVE-2026-43267: Security Vulnerability in Linux — Security Vulnerability in Linux
- How to Fix CVE-2026-43233: Security Vulnerability in Linux , Security Vulnerability in Linux
- [How to Fix CVE-2026-31715: f2fs: fix UAF caused by decrementing sbi->nr_pages[] in Linux](how-to-fix-cve-2026-31715.html) , f2fs: fix UAF caused by decrementing sbi->nr_pages[] in Linux
- How to Fix CVE-2026-31737: net: ftgmac100: fix ring allocation unwind on open failure in Linux , net: ftgmac100: fix ring allocation unwind on open failure in Linux
*By Sai Kiran Pandrala*
| Severity | Not verified - see advisory |
|---|---|
| Actively exploited? | Not currently listed in CISA KEV |
| Affected | d93cf38fad9f66397093432b8917971a92ee0146 < c5c877e140e5f46023a74a51e577ce5edd0a4be7, 64815ba15880ce5f99df075fa4104fef170ac7e5 < 05799c2f1ca5eb13d65764dda688d02021b65e06, 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < 67f34ab318807989b57dfdb0f79e2d4e57018290, 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < a64aa7db39392add5be09dffaedbf1f0ce5554df, 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < 198824ccfa64ffebd918bf99c939bd8170a4a4d8, 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < 579a752464a64cb5f9139102f0e6b90a1f595ceb, and others |
| Fixed in | 0, 6.1.167, 6.6.130, 6.12.78, 6.18.17, 6.19.7 |
| Type (CWE) | Not verified |
What is CVE-2026-23321?
CVE-2026-23321 is a security flaw in Linux. In the Linux kernel, the following vulnerability has been resolved: mptcp: pm: in-kernel: always mark signal+subflow endp as used Syzkaller managed to find a combination of actions that was generating this warning: msk->pm.local_addr_used == 0 WARNING: net/mptcp/pm_kernel.c:1071 at __mark_subflow_endp_available net/mptcp/pm_kernel.c:1071 [inline], CPU#1: syz.2.17/961 WARNING: net/mptcp/pm_kernel.c:1071 at mptcp_nl_remove_subflow_and_signal_addr net/mptcp/pm_kernel.c:1103 [inline], CPU#1: syz.2.17/961 WARNING: net/mptcp/pm_kernel.c:1071 at mptcp_pm_nl_del_addr_doit+0x81d/0x8f0 net/mptcp/pm_kernel.c:1210, CPU#1: syz.2.17/961 Modules linked in: CPU: 1 UID: 0 PID: 961 Comm: syz.2.17 Not tainted 6.19.0-08368-gfafda3b4b06b #22 PREEMPT(full) Hardware name: QEMU Ubuntu 25.10 PC v2 (i440FX + PIIX, + 10.1 machine, 1996), BIOS 1.17.0-debian-1.17.0-1build1 04/01/2014 RIP: 0010:__mark_subflow_endp_available net/mptcp/pm_kernel.c:1071 [inline] RIP: 0010:mptcp_nl_remove_subflow_and_signal_addr net/mptcp/pm_kernel.c:1103 [inline] RIP: 0010:mptcp_pm_nl_del_addr_doit+0x81d/0x8f0 net/mptcp/pm_kernel.c:1210 Code: 89 c5 e8 46 30 6f fe e9 21 fd ff ff 49 83 ed 80 e8 38 30 6f fe 4c 89 ef be 03 00 00 00 e8 db 49 df fe eb ac e8 24 30 6f fe 90 <0f> 0b 90 e9 1d ff ff ff e8 16 30 6f fe eb 05 e8 0f 30 6f fe e8 9a RSP: 0018:ffffc90001663880 EFLAGS: 00010293 RAX: ffffffff82de1a6c RBX: 0000000000000000 RCX: ffff88800722b500 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffff8880158b22d0 R08: 0000000000010425 R09: ffffffffffffffff R10: ffffffff82de18ba R11: 0000000000000000 R12: ffff88800641a640 R13: ffff8880158b1880 R14: ffff88801ec3c900 R15: ffff88800641a650 FS: 00005555722c3500(0000) GS:ffff8880f909d000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f66346e0f60 CR3: 000000001607c000 CR4: 0000000000350ef0 Call Trace: <TASK> genl_family_rcv_msg_doit+0x117/0x180 net/netlink/genetlink.c:1115 genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline] genl_rcv_msg+0x3a8/0x3f0 net/netlink/genetlink.c:1210 netlink_rcv_skb+0x16d/0x240 net/netlink/af_netlink.c:2550 genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219 netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline] netlink_unicast+0x3e9/0x4c0 net/netlink/af_netlink.c:1344 netlink_sendmsg+0x4aa/0x5b0 net/netlink/af_netlink.c:1894 sock_sendmsg_nosec net/socket.c:727 [inline] __sock_sendmsg+0xc9/0xf0 net/socket.c:742 ____sys_sendmsg+0x272/0x3b0 net/socket.c:2592 ___sys_sendmsg+0x2de/0x320 net/socket.c:2646 __sys_sendmsg net/socket.c:2678 [inline] __do_sys_sendmsg net/socket.c:2683 [inline] __se_sys_sendmsg net/socket.c:2681 [inline] __x64_sys_sendmsg+0x110/0x1a0 net/socket.c:2681 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x143/0x440 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f66346f826d Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffc83d8bdc8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007f6634985fa0 RCX: 00007f66346f826d RDX: 00000000040000b0 RSI: 0000200000000740 RDI: 0000000000000007 RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6634985fa8 R13: 00007f6634985fac R14: 0000000000000000 R15: 0000000000001770 </TASK> The actions that caused that seem to be: - Set the MPTCP subflows limit to 0 - Create an MPTCP endpoint with both the 'signal' and 'subflow' flags - Create a new MPTCP connection from a different address: an ADD_ADDR linked to the MPTCP endpoint will be sent ('signal' flag), but no subflows is initiated ('subflow' flag) - Remove the MPTCP endpoint ---truncated---
Why this CVE matters
Unpatched network-facing software is the leading initial-access vector in public breach reporting. Treat any CVSS-9 class flaw on an internet-reachable system as urgent, regardless of whether public exploit code has been observed yet.
For deployments of Linux that have been exposed to the public internet during the disclosure window, the operating assumption should be that scanning has already happened. Even where exploitation has not been publicly observed, scanning for the vulnerable fingerprint is cheap and routine. Patching closes the door; log review and credential rotation close out the rest of the response.
Am I affected?
You are affected if your installation matches any of these version ranges:
- Linux: d93cf38fad9f66397093432b8917971a92ee0146 < c5c877e140e5f46023a74a51e577ce5edd0a4be7
- Linux: 64815ba15880ce5f99df075fa4104fef170ac7e5 < 05799c2f1ca5eb13d65764dda688d02021b65e06
- Linux: 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < 67f34ab318807989b57dfdb0f79e2d4e57018290
- Linux: 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < a64aa7db39392add5be09dffaedbf1f0ce5554df
- Linux: 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < 198824ccfa64ffebd918bf99c939bd8170a4a4d8
- Linux: 85df533a787bf07bf4367ce2a02b822ff1fba1a3 < 579a752464a64cb5f9139102f0e6b90a1f595ceb
- Linux: 0f21cc29bc13e86512621727a4388c8a7ad2716b
- Linux: 6.11
Check your installed version against the list above. If you cannot determine the version, treat the system as affected and follow the upgrade path below.
Run uname -r to read the kernel release. Compare against the affected ranges; on distro kernels, also check the package version with dpkg -l linux-image-$(uname -r) or rpm -q kernel.
How to fix CVE-2026-23321
- Read the vendor advisory in full: https://git.kernel.org/stable/c/c5c877e140e5f46023a74a51e577ce5edd0a4be7
- Upgrade Linux to 0, 6.1.167, 6.6.130, 6.12.78, 6.18.17, 6.19.7, 7.0 or a later version listed in the vendor advisory.
- Back up the configuration (and database, where applicable) before upgrading.
- Apply the patch in a maintenance window. For HA pairs, upgrade the standby node first, fail over, then upgrade the former primary.
- Restart the affected service so the patched binary loads, then verify the new version (see verification section).
Patch the Linux kernel
# Target fixed version: 6.1.167, 6.6.130, 6.12.78
# Source advisory: https://git.kernel.org/stable/c/c5c877e140e5f46023a74a51e577ce5edd0a4be7
# Confirm the running kernel.
uname -r
# Debian / Ubuntu - pull the security update.
sudo apt update
sudo apt install --only-upgrade linux-image-generic linux-headers-generic
sudo reboot
# RHEL / Rocky / AlmaLinux / Fedora.
sudo dnf upgrade --refresh kernel kernel-core kernel-modules -y
sudo reboot
# After reboot, confirm the new kernel is running and compare against the fixed version above.
uname -r
dpkg -l linux-image-$(uname -r) 2>/dev/null | tail -1
rpm -q kernel 2>/dev/null
# Container hosts: bump the host kernel via the same package manager,
# then restart container runtimes so workloads pick up the new host.
sudo systemctl restart docker
sudo systemctl restart containerd
# Windows admin workstation - verify Linux fleet kernels via Ansible (WinRM).
ansible linux -m shell -a "uname -r" -i inventory.ini
Verify the fix landed
# 1. Confirm the running version matches the fixed-in version listed above.
# 2. Re-scan with your vulnerability scanner (Nessus, Qualys, Tenable, OpenVAS).
# The scanner should no longer flag this CVE on the patched target.
# 3. Inspect recent service / kernel logs for crash-loops or rollback events.
journalctl --since "10 minutes ago" | tail -50
dmesg --since "10 minutes ago" 2>/dev/null | tail -50
If you cannot patch immediately
No official workaround exists beyond restricting network exposure to the affected component. Apply the vendor patch as the primary remediation.
How to verify the fix worked
- After applying the patch, verify the running version in the product's admin UI or via the vendor-documented CLI command.
- Confirm the patched build matches the version listed in the vendor advisory.
- Run an authenticated vulnerability scan with a current signature set and confirm the scanner no longer flags CVE-2026-23321.
- Review logs for the entire pre-patch window for indicators of compromise listed in the vendor or CISA advisory.
- Confirm any network-layer mitigations that were applied as a stopgap have been reverted (or left in place intentionally) once the patch is verified.
If your installation was internet-reachable during the disclosure window, treat log review as part of the remediation rather than an optional follow-up. Look for log entries that do not match your normal request patterns, especially repeated requests to the same uncommon endpoint, and any administrative changes you cannot tie back to a known operator.
Frequently asked questions
Is CVE-2026-23321 being exploited in the wild?
Public exploitation has not been confirmed by CISA at the time of writing. Treat the patch as time-sensitive anyway; reports often lag actual abuse.
Will a WAF or IDS rule fully mitigate CVE-2026-23321?
No. Network-layer filters can reduce noise and slow opportunistic scanners, but they will not stop a determined attacker. The vendor patch is the only durable fix.
How long should I plan for the upgrade?
Typical vendor-documented upgrade windows for Linux run from a few minutes to under an hour depending on cluster size. Test in a staging environment first and follow the vendor's documented HA upgrade order.
References
- Official vendor advisory: https://git.kernel.org/stable/c/c5c877e140e5f46023a74a51e577ce5edd0a4be7
- NVD entry: https://nvd.nist.gov/vuln/detail/CVE-2026-23321
- CISA KEV catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
- Additional vendor or research reference: https://git.kernel.org/stable/c/05799c2f1ca5eb13d65764dda688d02021b65e06
- Additional vendor or research reference: https://git.kernel.org/stable/c/67f34ab318807989b57dfdb0f79e2d4e57018290
- Additional vendor or research reference: https://git.kernel.org/stable/c/a64aa7db39392add5be09dffaedbf1f0ce5554df
- Additional vendor or research reference: https://git.kernel.org/stable/c/198824ccfa64ffebd918bf99c939bd8170a4a4d8
*This guide was assembled from the official vendor advisory, the NVD record, and the CISA KEV catalog entry on 2026-05-25. Always confirm against the vendor advisory before applying changes in production.*