{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-52801","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-05-21T15:19:24.247Z","datePublished":"2024-05-21T15:31:13.700Z","dateUpdated":"2026-08-05T09:11:28.903Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T09:11:28.903Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\niommufd: Fix missing update of domains_itree after splitting iopt_area\n\nIn iopt_area_split(), if the original iopt_area has filled a domain and is\nlinked to domains_itree, pages_nodes have to be properly\nreinserted. Otherwise the domains_itree becomes corrupted and we will UAF."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The bug is reached only through local ioctls on /dev/iommu or /dev/vfio/vfio (VFIO_IOMMU_UNMAP_DMA → iopt_cut_iova → iopt_area_split); there is no network or adjacent-network path.\nAC:L - The attacker fully controls the preconditions—disable large pages (VFIO_TYPE1_IOMMU or IOMMU_OPTION_HUGE_PAGES), map an IOVA range with a filled domain, then partial-unmap to force the split—so the domains_itree UAF is deterministic with no race or external condition.\nPR:L - iommufd_fops_open() has no capability check; access is only DAC on /dev/iommu (0660) or /dev/vfio/vfio (0666), routinely granted to unprivileged qemu/libvirt passthrough users, matching other iommufd CVEs scored PR:L.\nUI:N - The full map/set-iommu/partial-unmap sequence is issued by the attacker's own process with no victim interaction required.\nS:C - domains_itree tracks which iopt_areas hold DMA-mapped PFNs in live iommu_domains; leaving a freed area linked and then walking/removing from that tree corrupts IOMMU mapping bookkeeping and can unpin or mis-resolve pages still device-mapped, defeating the DMA isolation boundary.\nC:H - The commit documents a use-after-free on the freed iopt_area still linked in domains_itree; UAF of a sprayable kzalloc object enables arbitrary kernel memory disclosure, and corrupted domain PFN lookup can expose host pages to device DMA.\nI:H - The same UAF/tree corruption yields write primitives via interval-tree remove/insert on attacker-reclaimed memory and broken unpin/unmap of IOMMU-backed pages, enabling control-flow hijack and integrity compromise.\nA:H - Use-after-free on domains_itree walks causes kernel oops/panic, and interval-tree operations on a dangling freed node can hang or crash subsequent iommufd unmap/destroy paths."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/iommu/iommufd/io_pagetable.c"],"versions":[{"version":"51fe6141f0f64ae0bbc096a41a07572273e8c0ef","lessThan":"836db2e7e4565d8218923b3552304a1637e2f28d","status":"affected","versionType":"git"},{"version":"51fe6141f0f64ae0bbc096a41a07572273e8c0ef","lessThan":"fcb32111f01ddf3cbd04644cde1773428e31de6a","status":"affected","versionType":"git"},{"version":"51fe6141f0f64ae0bbc096a41a07572273e8c0ef","lessThan":"e7250ab7ca4998fe026f2149805b03e09dc32498","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/iommu/iommufd/io_pagetable.c"],"versions":[{"version":"6.2","status":"affected"},{"version":"0","lessThan":"6.2","status":"unaffected","versionType":"semver"},{"version":"6.5.13","lessThanOrEqual":"6.5.*","status":"unaffected","versionType":"semver"},{"version":"6.6.3","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.7","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":"6.2","versionEndExcluding":"6.5.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2","versionEndExcluding":"6.6.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2","versionEndExcluding":"6.7"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/836db2e7e4565d8218923b3552304a1637e2f28d"},{"url":"https://git.kernel.org/stable/c/fcb32111f01ddf3cbd04644cde1773428e31de6a"},{"url":"https://git.kernel.org/stable/c/e7250ab7ca4998fe026f2149805b03e09dc32498"}],"title":"iommufd: Fix missing update of domains_itree after splitting iopt_area","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"problemTypes":[{"descriptions":[{"type":"CWE","cweId":"CWE-284","lang":"en","description":"CWE-284 Improper Access Control"}]}],"affected":[{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"51fe6141f0f6","status":"affected","lessThan":"836db2e7e456","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"51fe6141f0f6","status":"affected","lessThan":"fcb32111f01d","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"51fe6141f0f6","status":"affected","lessThan":"e7250ab7ca49","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6..2","status":"affected"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"0","status":"unaffected","lessThan":"6.2","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6.5.13","status":"unaffected","lessThanOrEqual":"6.5.*","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6.6.3","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6.7","status":"unaffected"}]}],"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":9.1,"attackVector":"NETWORK","baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"NONE","confidentialityImpact":"NONE"}},{"other":{"type":"ssvc","content":{"timestamp":"2024-05-24T15:13:11.142898Z","id":"CVE-2023-52801","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":"2025-10-01T19:19:30.119Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T23:11:35.602Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/836db2e7e4565d8218923b3552304a1637e2f28d","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/fcb32111f01ddf3cbd04644cde1773428e31de6a","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/e7250ab7ca4998fe026f2149805b03e09dc32498","tags":["x_transferred"]}]}]}}