{"id":"CVE-2025-21836","state":"PUBLISHED","title":"io_uring/kbuf: reallocate buf lists on upgrade","description":"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.","publishedAt":"2025-03-07T09:09:56.127Z","updatedAt":"2026-10-15T21:51:53.980Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"146a185f6c05ee263db715f860620606303c4633","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"7d0dc28dae836caf7645fef62a10befc624dd17b","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"2a5febbef40ce968e295a7aeaa5d5cbd9e3e5ad4","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"8802766324e1f5d414a81ac43365c20142e85603","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["io_uring/kbuf.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.19","versionType":"semver"},{"version":"6.6.79","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.16","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.13.4","status":"unaffected","lessThanOrEqual":"6.13.*","versionType":"semver"},{"version":"6.14","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["io_uring/kbuf.c"]}],"references":["https://git.kernel.org/stable/c/146a185f6c05ee263db715f860620606303c4633","https://git.kernel.org/stable/c/7d0dc28dae836caf7645fef62a10befc624dd17b","https://git.kernel.org/stable/c/2a5febbef40ce968e295a7aeaa5d5cbd9e3e5ad4","https://git.kernel.org/stable/c/8802766324e1f5d414a81ac43365c20142e85603","https://u1f383.github.io/slides/talks/2025_Hexacon-Deja_Vu_in_Linux_io_uring_Breaking_Memory_Sharing_Again_After_Generations_of_Fixes.pdf"],"weaknesses":[],"ingestedAt":"2026-10-29T20:08:39.238Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2025/21xxx/CVE-2025-21836.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-21836","state":"PUBLISHED","datePublished":"2025-03-07T09:09:56.127Z","dateUpdated":"2026-10-15T21:51:53.980Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-12-29T08:45:45.777Z"},"containers":{"cna":{"title":"io_uring/kbuf: reallocate buf lists on upgrade","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."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"146a185f6c05ee263db715f860620606303c4633","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"7d0dc28dae836caf7645fef62a10befc624dd17b","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"2a5febbef40ce968e295a7aeaa5d5cbd9e3e5ad4","versionType":"git"},{"version":"2fcabce2d7d34f69a888146dab15b36a917f09d4","status":"affected","lessThan":"8802766324e1f5d414a81ac43365c20142e85603","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["io_uring/kbuf.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.19","versionType":"semver"},{"version":"6.6.79","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.16","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.13.4","status":"unaffected","lessThanOrEqual":"6.13.*","versionType":"semver"},{"version":"6.14","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["io_uring/kbuf.c"]}],"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"}],"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."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:54:49.695Z"},"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"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2025-21836","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-15T21:43:15.462435Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-15T21:51:53.980Z"}}]}}}