CVE-2026-89554: mptcp: fix uninitialized local_id in syncookie MP_JOIN reconstruction
In the Linux kernel, the following vulnerability has been resolved:
mptcp: fix uninitialized localid in syncookie MPJOIN reconstruction
mptcptokenjoincookieinitstate() restores remotenonce, localnonce, backup, joinid, token and msk from the saved cookie entry when rebuilding the request socket for a MPJOIN 4th-ACK handled under SYN cookies, but it does not restore localid, even though the SYN path saved it. subflowulpclone() then reads that uninitialized field and stores it as the joined subflow's address-ID. Because the request-sock slab is SLABTYPESAFEBYRCU and not zeroed on allocation, the value is the stale byte of a previously freed request socket, which an off-path peer can influence by sending concurrent MPJOIN SYNs. This corrupts the path manager's id-based subflow bookkeeping for the connection.
Restore subflowreq->localid from the cookie entry, as done for the other fields.
Affected Software
Event History
Frequently Asked Questions
Which connections are exposed to this issue?
The issue affects MPTCP connections that process an MP_JOIN fourth ACK while SYN cookies are in use. The vulnerable path reconstructs a request socket from saved cookie state.
What does an attacker need to influence the vulnerable state?
An off-path peer can influence the stale local_id value by sending concurrent MP_JOIN SYNs. The uninitialized byte comes from a previously freed request socket because the request-socket slab is not zeroed on allocation.
What is the resulting impact on an affected connection?
The joined subflow can be assigned an incorrect address-ID. This corrupts the MPTCP path manager's ID-based subflow bookkeeping for that connection.
What does the fix change?
The fix restores subflow_req->local_id from the saved cookie entry during MP_JOIN request-socket reconstruction, matching the restoration of the other saved fields.