{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-46858","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-09-11T15:12:18.291Z","datePublished":"2024-09-27T12:42:49.167Z","dateUpdated":"2026-08-05T11:39:03.201Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:39:03.201Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nmptcp: pm: Fix uaf in __timer_delete_sync\n\nThere are two paths to access mptcp_pm_del_add_timer, result in a race\ncondition:\n\n     CPU1\t\t\t\tCPU2\n     ====                               ====\n     net_rx_action\n     napi_poll                          netlink_sendmsg\n     __napi_poll                        netlink_unicast\n     process_backlog                    netlink_unicast_kernel\n     __netif_receive_skb                genl_rcv\n     __netif_receive_skb_one_core       netlink_rcv_skb\n     NF_HOOK                            genl_rcv_msg\n     ip_local_deliver_finish            genl_family_rcv_msg\n     ip_protocol_deliver_rcu            genl_family_rcv_msg_doit\n     tcp_v4_rcv                         mptcp_pm_nl_flush_addrs_doit\n     tcp_v4_do_rcv                      mptcp_nl_remove_addrs_list\n     tcp_rcv_established                mptcp_pm_remove_addrs_and_subflows\n     tcp_data_queue                     remove_anno_list_by_saddr\n     mptcp_incoming_options             mptcp_pm_del_add_timer\n     mptcp_pm_del_add_timer             kfree(entry)\n\nIn remove_anno_list_by_saddr(running on CPU2), after leaving the critical\nzone protected by \"pm.lock\", the entry will be released, which leads to the\noccurrence of uaf in the mptcp_pm_del_add_timer(running on CPU1).\n\nKeeping a reference to add_timer inside the lock, and calling\nsk_stop_timer_sync() with this reference, instead of \"entry->add_timer\".\n\nMove list_del(&entry->list) to mptcp_pm_del_add_timer and inside the pm lock,\ndo not directly access any members of the entry outside the pm lock, which\ncan avoid similar \"entry->x\" uaf."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.1,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:N - The use-after-free dereference occurs in the TCP/MPTCP receive path (`mptcp_incoming_options()` → `mptcp_pm_del_add_timer()`), driven entirely by an `ADD_ADDR` echo option in a TCP segment sent by the remote MPTCP peer, executed in softirq context. Any internet-facing MPTCP-enabled endpoint (server or Android/mobile client with a `signal` endpoint configured) processes this attacker-supplied option, so the vulnerable code is reached over the network.\nAC:H - The remote peer can hammer the racing side without limit by repeatedly sending ADD_ADDR echoes, but the freeing side must be executed concurrently by the local path manager (netlink FLUSH_ADDRS/DEL_ADDR, e.g. mptcpd reacting to an interface change), which is timing the attacker cannot influence. Winning that window is a condition beyond the remote attacker's control.\nPR:N - The attacker-controlled side requires only being the peer of an established MPTCP connection to a listening service — no account, credentials, or privileges on the target are needed, and the ADD_ADDR echo is accepted as part of normal protocol processing once the connection is fully established.\nUI:N - No victim action is required; the ADD_ADDR announcement and the peer's echo are automatic protocol behaviour, and the concurrent endpoint flush is performed by a background path-manager daemon rather than an interactive user.\nS:U - The corruption is confined to kernel heap memory within the same security authority; there is no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - The freed `mptcp_pm_add_entry` lives in a generic kmalloc cache and can be reclaimed with attacker-shaped data, and the subsequent `timer_delete_sync()`/`__sock_put()` on that stale object gives a foothold for arbitrary kernel memory disclosure, as is standard for slab use-after-free.\nI:H - `__timer_delete_sync()` on the reclaimed object acts on attacker-influenced `timer->flags` and can perform an hlist unlink write (`*pprev = next; next->pprev = pprev`), and the spurious `__sock_put()` underflows the socket refcount — both yield write primitives leveragable for control-flow hijack. The same missing-lock defect also permits a double `kfree()` of the entry from two concurrent netlink removals.\nA:H - The use-after-free reliably produces a KASAN slab-use-after-free / kernel oops in softirq context (as reported by syzbot), and the resulting timer-base list corruption or socket refcount underflow causes a kernel panic."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/mptcp/pm_netlink.c"],"versions":[{"version":"00cfd77b9063dcdf3628a7087faba60de85a9cc8","lessThan":"0e7814b028cd50b3ff79659d23dfa9da6a1e75e1","status":"affected","versionType":"git"},{"version":"00cfd77b9063dcdf3628a7087faba60de85a9cc8","lessThan":"3554482f4691571fc4b5490c17ae26896e62171c","status":"affected","versionType":"git"},{"version":"00cfd77b9063dcdf3628a7087faba60de85a9cc8","lessThan":"67409b358500c71632116356a0b065f112d7b707","status":"affected","versionType":"git"},{"version":"00cfd77b9063dcdf3628a7087faba60de85a9cc8","lessThan":"6452b162549c7f9ef54655d3fb9977b9192e6e5b","status":"affected","versionType":"git"},{"version":"00cfd77b9063dcdf3628a7087faba60de85a9cc8","lessThan":"12134a652b0a10064844ea235173e70246eba6dc","status":"affected","versionType":"git"},{"version":"00cfd77b9063dcdf3628a7087faba60de85a9cc8","lessThan":"b4cd80b0338945a94972ac3ed54f8338d2da2076","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/mptcp/pm_netlink.c"],"versions":[{"version":"5.10","status":"affected"},{"version":"0","lessThan":"5.10","status":"unaffected","versionType":"semver"},{"version":"5.10.227","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.168","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.111","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.52","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.10.11","lessThanOrEqual":"6.10.*","status":"unaffected","versionType":"semver"},{"version":"6.11","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.10.227"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.15.168"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.1.111"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.6.52"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.10.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.11"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/0e7814b028cd50b3ff79659d23dfa9da6a1e75e1"},{"url":"https://git.kernel.org/stable/c/3554482f4691571fc4b5490c17ae26896e62171c"},{"url":"https://git.kernel.org/stable/c/67409b358500c71632116356a0b065f112d7b707"},{"url":"https://git.kernel.org/stable/c/6452b162549c7f9ef54655d3fb9977b9192e6e5b"},{"url":"https://git.kernel.org/stable/c/12134a652b0a10064844ea235173e70246eba6dc"},{"url":"https://git.kernel.org/stable/c/b4cd80b0338945a94972ac3ed54f8338d2da2076"}],"title":"mptcp: pm: Fix uaf in __timer_delete_sync","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-09-29T13:57:46.692938Z","id":"CVE-2024-46858","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-09-29T13:57:52.178Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html"},{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2025-11-03T22:19:44.734Z"}}]}}