{"dataType":"CVE_RECORD","cveMetadata":{"cveId":"CVE-2023-52439","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-02-20T12:30:33.291Z","datePublished":"2024-02-20T18:34:49.323Z","dateUpdated":"2026-08-05T09:09:56.653Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T09:09:56.653Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nuio: Fix use-after-free in uio_open\n\ncore-1\t\t\t\tcore-2\n-------------------------------------------------------\nuio_unregister_device\t\tuio_open\n\t\t\t\tidev = idr_find()\ndevice_unregister(&idev->dev)\nput_device(&idev->dev)\nuio_device_release\n\t\t\t\tget_device(&idev->dev)\nkfree(idev)\nuio_free_minor(minor)\n\t\t\t\tuio_release\n\t\t\t\tput_device(&idev->dev)\n\t\t\t\tkfree(idev)\n-------------------------------------------------------\n\nIn the core-1 uio_unregister_device(), the device_unregister will kfree\nidev when the idev->dev kobject ref is 1. But after core-1\ndevice_unregister, put_device and before doing kfree, the core-2 may\nget_device. Then:\n1. After core-1 kfree idev, the core-2 will do use-after-free for idev.\n2. When core-2 do uio_release and put_device, the idev will be double\n   freed.\n\nTo address this issue, we can get idev atomic & inc idev reference with\nminor_lock."}],"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 - Exploitation requires opening a local UIO character device (/dev/uioN) via the open syscall; the vulnerable uio_open path is not reachable from the network stack or remote protocols.\nAC:L - An attacker who can open /dev/uioN can repeatedly race open against concurrent uio_unregister_device (e.g. TCMU configfs destroy or driver unbind they can also drive), so both sides of the race are attacker-influenced and do not depend on blind external timing.\nPR:L - uio_open has no capability check; access is gated only by /dev/uio* permissions, and worst-case deployments (industrial/DPDK udev rules, TCMU service accounts) grant this to unprivileged users. The UAF at get_device occurs before any driver-specific open hooks.\nUI:N - No separate victim action is required; the attacker triggers the race directly by opening the device while unregister runs.\nS:U - This is a same-host kernel heap UAF/double-free leading to privilege escalation within the kernel's security authority, not a VM/IOMMU/sandbox boundary escape.\nC:H - Use-after-free of struct uio_device lets the attacker reclaim and control the freed object contents, enabling arbitrary kernel memory disclosure primitives.\nI:H - The same UAF plus the documented double-free on put_device/uio_device_release enables heap corruption and arbitrary write/control-flow hijacking in the kernel.\nA:H - Dereferencing or double-freeing the reclaimed uio_device reliably causes kernel oops/panic even when not fully exploited for code execution."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/uio/uio.c"],"versions":[{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"3174e0f7de1ba392dc191625da83df02d695b60c","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"e93da893d52d82d57fc0db2ca566024e0f26ff50","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"5e0be1229ae199ebb90b33102f74a0f22d152570","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"5cf604ee538ed0c467abe3b4cda5308a6398f0f7","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"17a8519cb359c3b483fb5c7367efa9a8a508bdea","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"35f102607054faafe78d2a6994b18d5d9d6e92ad","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"913205930da6213305616ac539447702eaa85e41","status":"affected","versionType":"git"},{"version":"57c5f4df0a5a0ee83df799991251e2ee93a5e4e9","lessThan":"0c9ae0b8605078eafc3bea053cc78791e97ba2e2","status":"affected","versionType":"git"},{"version":"13af019c87f2d90e663742cb1a819834048842ae","status":"affected","versionType":"git"},{"version":"4.14.100","lessThan":"4.15","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/uio/uio.c"],"versions":[{"version":"4.18","status":"affected"},{"version":"0","lessThan":"4.18","status":"unaffected","versionType":"semver"},{"version":"4.19.306","lessThanOrEqual":"4.19.*","status":"unaffected","versionType":"semver"},{"version":"5.4.268","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.209","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.148","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.74","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.13","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.7.1","lessThanOrEqual":"6.7.*","status":"unaffected","versionType":"semver"},{"version":"6.8","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":"4.18","versionEndExcluding":"4.19.306"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"5.4.268"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"5.10.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"5.15.148"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.1.74"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.6.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.7.1"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.14.100"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/3174e0f7de1ba392dc191625da83df02d695b60c"},{"url":"https://git.kernel.org/stable/c/e93da893d52d82d57fc0db2ca566024e0f26ff50"},{"url":"https://git.kernel.org/stable/c/5e0be1229ae199ebb90b33102f74a0f22d152570"},{"url":"https://git.kernel.org/stable/c/5cf604ee538ed0c467abe3b4cda5308a6398f0f7"},{"url":"https://git.kernel.org/stable/c/17a8519cb359c3b483fb5c7367efa9a8a508bdea"},{"url":"https://git.kernel.org/stable/c/35f102607054faafe78d2a6994b18d5d9d6e92ad"},{"url":"https://git.kernel.org/stable/c/913205930da6213305616ac539447702eaa85e41"},{"url":"https://git.kernel.org/stable/c/0c9ae0b8605078eafc3bea053cc78791e97ba2e2"}],"title":"uio: Fix use-after-free in uio_open","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/3174e0f7de1ba392dc191625da83df02d695b60c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/e93da893d52d82d57fc0db2ca566024e0f26ff50","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/5e0be1229ae199ebb90b33102f74a0f22d152570","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/5cf604ee538ed0c467abe3b4cda5308a6398f0f7","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/17a8519cb359c3b483fb5c7367efa9a8a508bdea","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/35f102607054faafe78d2a6994b18d5d9d6e92ad","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/913205930da6213305616ac539447702eaa85e41","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/0c9ae0b8605078eafc3bea053cc78791e97ba2e2","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00016.html","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html","tags":["x_transferred"]},{"url":"https://security.netapp.com/advisory/ntap-20241227-0006/"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-12-27T16:03:00.894Z"}},{"metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2023-52439","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T16:02:55.773038Z"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-09-11T17:33:35.621Z"}}]},"dataVersion":"5.2"}