{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-38408","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-04-16T04:51:24.013Z","datePublished":"2025-07-25T13:20:13.253Z","dateUpdated":"2026-08-05T12:01:39.572Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T12:01:39.572Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ngenirq/irq_sim: Initialize work context pointers properly\n\nInitialize `ops` member's pointers properly by using kzalloc() instead of\nkmalloc() when allocating the simulation work context. Otherwise the\npointers contain random content leading to invalid dereferencing."}],"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 through a local ioctl on the GPIO character device (/dev/gpiochipN) exposed by the gpio-mockup simulator, or via the local iio-dummy device; there is no network-facing path to irq_sim.\nAC:L - A single GPIO_V2_GET_LINE_IOCTL with an edge-detect flag deterministically drives request_threaded_irq() into irq_sim_request_resources(), which unconditionally tests and calls the uninitialized ops pointer on every request; the attacker can additionally groom the kmalloc-96 slab to shape the stale contents.\nPR:L - An unprivileged local account with access to the GPIO chardev — routinely granted via the \"gpio\" group udev rule on embedded, IoT and automation systems — can request an edge-triggered line and reach the wild call; no root or capability is required for the triggering ioctl.\nUI:N - The attacker triggers the faulty indirect call entirely through their own ioctl/close sequence; no action by another user or administrator is needed.\nS:U - The uninitialized function-pointer call executes in kernel context on the same host and does not cross a virtualization, IOMMU, or sandbox authority boundary.\nC:H - Branching to an attacker-groomable stale heap value is a direct control-flow hijack primitive that can be leveraged into arbitrary kernel memory disclosure; the call also leaks the state of recycled slab memory into control flow.\nI:H - Calling through an uninitialized function pointer whose backing slab object can be sprayed with attacker-controlled data yields instruction-pointer control and hence arbitrary kernel code execution and memory modification.\nA:H - Even without successful grooming, the indirect branch to stale garbage causes an immediate kernel oops or CFI panic, and it can be triggered repeatedly."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/irq/irq_sim.c"],"versions":[{"version":"337cbeb2c13eb4cab84f576fd402d7ae4ed31ae1","lessThan":"186df821de0f34490ed5fc0861243748b2483861","status":"affected","versionType":"git"},{"version":"337cbeb2c13eb4cab84f576fd402d7ae4ed31ae1","lessThan":"c71aa4bb528ae6f8fd7577a0a39e5a03c60b04fb","status":"affected","versionType":"git"},{"version":"337cbeb2c13eb4cab84f576fd402d7ae4ed31ae1","lessThan":"ec3656a8cb428d763def32bc2fa695f94be23629","status":"affected","versionType":"git"},{"version":"337cbeb2c13eb4cab84f576fd402d7ae4ed31ae1","lessThan":"19bd7597858dd15802c1d99fcc38e528f469080a","status":"affected","versionType":"git"},{"version":"337cbeb2c13eb4cab84f576fd402d7ae4ed31ae1","lessThan":"7f73d1def72532bac4d55ea8838f457a6bed955c","status":"affected","versionType":"git"},{"version":"337cbeb2c13eb4cab84f576fd402d7ae4ed31ae1","lessThan":"8a2277a3c9e4cc5398f80821afe7ecbe9bdf2819","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/irq/irq_sim.c"],"versions":[{"version":"5.8","status":"affected"},{"version":"0","lessThan":"5.8","status":"unaffected","versionType":"semver"},{"version":"5.15.199","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.162","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.120","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.37","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.15.6","lessThanOrEqual":"6.15.*","status":"unaffected","versionType":"semver"},{"version":"6.16","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.8","versionEndExcluding":"5.15.199"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.1.162"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.6.120"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.12.37"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.15.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.16"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/186df821de0f34490ed5fc0861243748b2483861"},{"url":"https://git.kernel.org/stable/c/c71aa4bb528ae6f8fd7577a0a39e5a03c60b04fb"},{"url":"https://git.kernel.org/stable/c/ec3656a8cb428d763def32bc2fa695f94be23629"},{"url":"https://git.kernel.org/stable/c/19bd7597858dd15802c1d99fcc38e528f469080a"},{"url":"https://git.kernel.org/stable/c/7f73d1def72532bac4d55ea8838f457a6bed955c"},{"url":"https://git.kernel.org/stable/c/8a2277a3c9e4cc5398f80821afe7ecbe9bdf2819"}],"title":"genirq/irq_sim: Initialize work context pointers properly","x_generator":{"engine":"bippy-1.2.0"}}}}