{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-21836","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-12-29T08:45:45.777Z","datePublished":"2025-03-07T09:09:56.127Z","dateUpdated":"2026-08-05T11:54:49.695Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:54:49.695Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nio_uring/kbuf: reallocate buf lists on upgrade\n\nIORING_REGISTER_PBUF_RING can reuse an old struct io_buffer_list if it\nwas created for legacy selected buffer and has been emptied. It violates\nthe requirement that most of the field should stay stable after publish.\nAlways reallocate it instead."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable code is reached only through the io_uring_setup/io_uring_register syscalls; there is no network or adjacent path, so exploitation requires local access to issue syscalls.\nAC:L - The attacker performs every step themselves (create a legacy buffer group, empty it, upgrade the same bgid via PBUF_RING, then mmap), controlling both sides of any race; the trigger is fully deterministic and reliable.\nPR:L - io_uring is available to unprivileged users by default (kernel.io_uring_disabled=0) and provided-buffer registration needs no capability, so only a basic local user account is required.\nUI:N - The entire sequence is driven by the attacking process; no action by any other user or victim is needed.\nS:U - The corruption is confined to the kernel's own security authority (standard local privilege escalation) and does not cross a VM, IOMMU, or sandbox boundary.\nC:H - The type confusion / use-after-free of the io_buffer_list and the retained user mapping to freed kernel pages give the attacker read access to reallocated kernel memory, enabling arbitrary kernel information disclosure.\nI:H - The same UAF and shared-page primitive give write access to freed/reallocated kernel memory, exploitable for arbitrary kernel write and privilege escalation as demonstrated for this io_uring buffer-ring bug class.\nA:H - At minimum the type confusion and use-after-free corrupt kernel structures, causing an oops/panic and denial of service."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["io_uring/kbuf.c"],"versions":[{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","lessThan":"146a185f6c05ee263db715f860620606303c4633","status":"affected","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","lessThan":"7d0dc28dae836caf7645fef62a10befc624dd17b","status":"affected","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","lessThan":"2a5febbef40ce968e295a7aeaa5d5cbd9e3e5ad4","status":"affected","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","lessThan":"8802766324e1f5d414a81ac43365c20142e85603","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["io_uring/kbuf.c"],"versions":[{"version":"5.19","status":"affected"},{"version":"0","lessThan":"5.19","status":"unaffected","versionType":"semver"},{"version":"6.6.79","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.16","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.13.4","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.19","versionEndExcluding":"6.6.79"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.12.16"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.13.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.14"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/146a185f6c05ee263db715f860620606303c4633"},{"url":"https://git.kernel.org/stable/c/7d0dc28dae836caf7645fef62a10befc624dd17b"},{"url":"https://git.kernel.org/stable/c/2a5febbef40ce968e295a7aeaa5d5cbd9e3e5ad4"},{"url":"https://git.kernel.org/stable/c/8802766324e1f5d414a81ac43365c20142e85603"},{"url":"https://u1f383.github.io/slides/talks/2025_Hexacon-Deja_Vu_in_Linux_io_uring_Breaking_Memory_Sharing_Again_After_Generations_of_Fixes.pdf"}],"title":"io_uring/kbuf: reallocate buf lists on upgrade","x_generator":{"engine":"bippy-1.2.0"}}}}