KernelScan.io

HIGH

mptcp SubflowReset UAF

CVE-2026-97524

CVSS 7.5 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

KernelScan AI8.1HIGH

01

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.

02

Engine v0.6.0

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.

Affectednet/mptcp/protocol.c (mptcp)

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.

03

BranchIntroducedFixed inPatch commit
5.105.10.2285.10.2716d669c740933
5.155.15.1695.15.22283a7dcdd2b10
6.16.1.1136.1.189a370e56024df
6.66.6.576.6.158196284138708
6.116.11.46.124b7abdcb5ba8
6.12—6.12.111b2dbcc1ed48b
6.18—6.18.53ce7e4ede01ed
7.2—7.2.72b0f561f21b2
mainline—7.3-rc4—
cip/6.12—6.12.111-cip324b7abdcb5ba8