HIGH
mptcp SubflowReset UAF
CVE-2026-97524
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
KernelScan AI8.1HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: mptcp: avoid unneeded actions on subflow reset Once in a blue moon, the mptcp receive path can recursively call mptcp_data_ready() via state change under unlucky error conditions, and then try to hold the data lock again. Break the recursion loop explicitly checking for the exceptional condition. Add a new flag instead of using an existing one like 'closing', to exit early in subflow_state_change(), and explicitly flush the RX queue at reset time. This avoids unneeded processing to check for available data -- calling get_mapping_status() and more on a dying subflow -- but also in error reporting and worker scheduling. Note that we must consume the currently peeked skb before invoking mptcp_dss_corruption to avoid consuming it again after the eventual reset has freed it.
02KernelScan AI Analysis
Risk summary
A remote attacker can trigger a use-after-free and recursive deadlock in the MPTCP receive path by sending corrupted DSS options to a victim host. This can lead to kernel memory corruption or a system hang, with no local privileges required on the target.
Vulnerability analysis
A remote peer sending corrupted MPTCP DSS options can trigger an error-handling path that resets a subflow while the receive code is still processing a packet buffer, leading to a use-after-free on that buffer. The same reset can also cause the receive path to recurse into itself and deadlock trying to re-acquire a lock it already holds. The fix ensures the packet buffer is consumed before the reset is triggered, marks the subflow as resetting so the state-change handler skips redundant receive processing, and flushes the receive queue at reset time. Any remote peer able to send MPTCP traffic to the vulnerable host can trigger this; no local privileges are required.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 5.10.228 | 5.10.271 | 6d669c740933 |
| 5.15 | 5.15.169 | 5.15.222 | 83a7dcdd2b10 |
| 6.1 | 6.1.113 | 6.1.189 | a370e56024df |
| 6.6 | 6.6.57 | 6.6.158 | 196284138708 |
| 6.11 | 6.11.4 | 6.12 | 4b7abdcb5ba8 |
| 6.12 | — | 6.12.111 | b2dbcc1ed48b |
| 6.18 | — | 6.18.53 | ce7e4ede01ed |
| 7.2 | — | 7.2.7 | 2b0f561f21b2 |
| mainline | — | 7.3-rc4 | — |
| cip/6.12 | — | 6.12.111-cip32 | 4b7abdcb5ba8 |