{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-21972","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-12-29T08:45:45.797Z","datePublished":"2025-04-01T15:47:04.960Z","dateUpdated":"2026-08-05T11:55:47.567Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:55:47.567Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: mctp: unshare packets when reassembling\n\nEnsure that the frag_list used for reassembly isn't shared with other\npackets. This avoids incorrect reassembly when packets are cloned, and\nprevents a memory leak due to circular references between fragments and\ntheir skb_shared_info.\n\nThe upcoming MCTP-over-USB driver uses skb_clone which can trigger the\nproblem - other MCTP drivers don't share SKBs.\n\nA kunit test is added to reproduce the issue."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - The vulnerable code is a network-stack packet handler (`ETH_P_MCTP` packet_type → `mctp_route_input`), but MCTP has no internet-routable transport in the kernel — packets arrive from a device on the local management bus (SMBus/I2C, I3C, USB, serial), a limited administrative domain directly analogous to the Bluetooth/WiFi case.\nAC:L - The attacker fully controls both preconditions: sending a multi-packet (SOM/EOM) fragmented message, and causing the skbs to be clones by packing several MCTP packets into a single transfer (`mctp-usb.c:219`). No race, memory-layout dependency, or victim state is involved, and the kunit reproducer added by the fix triggers it deterministically.\nPR:N - There is no authentication or authorization anywhere on the path from `mctp_pkttype_receive()` to `mctp_frag_queue()` — MCTP packets are parsed and reassembled purely on header contents, so a device on the bus needs no credentials or local account.\nUI:N - Reassembly happens in softirq context on packet receive; no user action is needed on the victim system beyond having MCTP configured, which is the normal state for the affected BMC/host management deployments.\nS:U - The corruption and its consequences are confined to kernel skb structures within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Writing the reassembly `frag_list` into a shared `skb_shared_info` cross-links skbs belonging to different reassembly contexts and to other subsystems (e.g. AF_PACKET clones), so a socket can be delivered a fragment chain from an unrelated message with mismatched length accounting — memory-state corruption leveragable for disclosure of data from another context.\nI:H - The bug both delivers incorrectly reassembled message content to MCTP sockets (corrupting PLDM/NVMe-MI/NC-SI management traffic) and plants an attacker-influenced skb pointer into a `skb_shared_info` owned by other subsystems, which is later dereferenced and freed by an owner that never expected a fragment list.\nA:H - Every cloned fragmented message permanently leaks its skbs and backing data buffer through the circular `frag_list`/`dataref` reference, and the attacker can repeat this without limit — driving memory exhaustion and OOM/kernel failure on the memory-constrained BMC and embedded systems where MCTP is deployed."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/mctp/route.c","net/mctp/test/route-test.c"],"versions":[{"version":"4a992bbd365094730a31bae1e12a6ca695336d57","lessThan":"5c47d5bfa7b096cf8890afac32141c578583f8e0","status":"affected","versionType":"git"},{"version":"4a992bbd365094730a31bae1e12a6ca695336d57","lessThan":"f44fff3d3c6cd67b6f348b821d73c4d6888c7a6e","status":"affected","versionType":"git"},{"version":"4a992bbd365094730a31bae1e12a6ca695336d57","lessThan":"f5d83cf0eeb90fade4d5c4d17d24b8bee9ceeecc","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/mctp/route.c","net/mctp/test/route-test.c"],"versions":[{"version":"5.15","status":"affected"},{"version":"0","lessThan":"5.15","status":"unaffected","versionType":"semver"},{"version":"6.12.20","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.13.8","lessThanOrEqual":"6.13.*","status":"unaffected","versionType":"semver"},{"version":"6.14","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.15","versionEndExcluding":"6.12.20"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.13.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.14"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/5c47d5bfa7b096cf8890afac32141c578583f8e0"},{"url":"https://git.kernel.org/stable/c/f44fff3d3c6cd67b6f348b821d73c4d6888c7a6e"},{"url":"https://git.kernel.org/stable/c/f5d83cf0eeb90fade4d5c4d17d24b8bee9ceeecc"}],"title":"net: mctp: unshare packets when reassembling","x_generator":{"engine":"bippy-1.2.0"}}}}