{"dataType":"CVE_RECORD","cveMetadata":{"cveId":"CVE-2024-39292","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-06-21T11:16:40.627Z","datePublished":"2024-06-24T13:52:26.769Z","dateUpdated":"2026-08-05T11:33:22.163Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:33:22.163Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\num: Add winch to winch_handlers before registering winch IRQ\n\nRegistering a winch IRQ is racy, an interrupt may occur before the winch is\nadded to the winch_handlers list.\n\nIf that happens, register_winch_irq() adds to that list a winch that is\nscheduled to be (or has already been) freed, causing a panic later in\nwinch_cleanup().\n\nAvoid the race by adding the winch to the winch_handlers list before\nregistering the IRQ, and rolling back if um_request_irq() fails."}],"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 UML console/tty setup reached by opening a UML console or serial device (`/dev/tty*`, `/dev/ttyS*`) inside the guest, i.e. via a local `open()` syscall. Although the `con=port:` telnet channel type can have its setup triggered by an incoming connection, the standard and reliable reach is local.\nAC:L - The attacker creates and repeats the race themselves — closing and reopening the line clears `line->sigio` and re-runs `register_winch_irq()`, so the tiny window between `um_request_irq()` and `list_add()` can be attacked in an unbounded retry loop. Once the early interrupt lands, the freed object stays linked in the global `winch_handlers` list deterministically, and the later dereference is delayed long enough for reliable heap grooming.\nPR:L - No capability or credential check exists anywhere on the path from `open()` through `line_open()` → `line_activate()` → `register_winch_irq()`; only device-node permissions gate it, and a plain unprivileged guest user is sufficient both to open a console/serial line and to spray the `kmalloc-96` slab that reclaims the freed `struct winch`.\nUI:N - Winch registration happens automatically when a configured console line is first opened (including at boot), and the attacker can drive that open themselves. No action by any other user is required.\nS:U - The corruption and its impact are confined to the UML kernel's own memory and the process it already fully controls, which is standard in-kernel privilege escalation. No hypervisor, IOMMU, or sandbox authority boundary is crossed by the vulnerable component.\nC:H - This is a use-after-free on a small, easily reclaimed slab object; the later walk of `winch_handlers` calls `tty_port_tty_get(winch->port)` on an attacker-controlled pointer, giving an arbitrary-dereference read primitive usable to disclose kernel memory.\nI:H - The stale `list_add()` writes two pointers into freed (reclaimable) memory, and the later `free_winch()` performs `free_stack(winch->stack, 0)` on an attacker-controlled address plus a double `kfree()` and `os_kill_process(winch->pid, 1)`, yielding write/free primitives suitable for control-flow hijack.\nA:H - The commit itself states the dangling list entry causes a panic in `winch_cleanup()`, and any use-after-free of this kind reliably produces an oops or kernel panic in the UML instance."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["arch/um/drivers/line.c"],"versions":[{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"66ea9a7c6824821476914bed21a476cd20094f33","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"dc1ff95602ee908fcd7d8acee7a0dadb61b1a0c0","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"351d1a64544944b44732f6a64ed65573b00b9e14","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"31960d991e43c8d6dc07245f19fc13398e90ead2","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"0c02d425a2fbe52643a5859a779db0329e7dddd4","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"434a06c38ee1217a8baa0dd7c37cc85d50138fb0","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"73b8e21f76c7dda4905655d2e2c17dc5a73b87f1","status":"affected","versionType":"git"},{"version":"42a359e31a0e438b5b978a8f0fecdbd3c86bb033","lessThan":"a0fbbd36c156b9f7b2276871d499c9943dfe5101","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["arch/um/drivers/line.c"],"versions":[{"version":"2.6.23","status":"affected"},{"version":"0","lessThan":"2.6.23","status":"unaffected","versionType":"semver"},{"version":"4.19.316","lessThanOrEqual":"4.19.*","status":"unaffected","versionType":"semver"},{"version":"5.4.278","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.219","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.161","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.93","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.33","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.9.4","lessThanOrEqual":"6.9.*","status":"unaffected","versionType":"semver"},{"version":"6.10","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":"2.6.23","versionEndExcluding":"4.19.316"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"5.4.278"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"5.10.219"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"5.15.161"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"6.1.93"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"6.6.33"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"6.9.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.23","versionEndExcluding":"6.10"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/66ea9a7c6824821476914bed21a476cd20094f33"},{"url":"https://git.kernel.org/stable/c/dc1ff95602ee908fcd7d8acee7a0dadb61b1a0c0"},{"url":"https://git.kernel.org/stable/c/351d1a64544944b44732f6a64ed65573b00b9e14"},{"url":"https://git.kernel.org/stable/c/31960d991e43c8d6dc07245f19fc13398e90ead2"},{"url":"https://git.kernel.org/stable/c/0c02d425a2fbe52643a5859a779db0329e7dddd4"},{"url":"https://git.kernel.org/stable/c/434a06c38ee1217a8baa0dd7c37cc85d50138fb0"},{"url":"https://git.kernel.org/stable/c/73b8e21f76c7dda4905655d2e2c17dc5a73b87f1"},{"url":"https://git.kernel.org/stable/c/a0fbbd36c156b9f7b2276871d499c9943dfe5101"}],"title":"um: Add winch to winch_handlers before registering winch IRQ","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-06-24T15:15:10.639136Z","id":"CVE-2024-39292","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":"2024-06-24T15:15:20.044Z"}},{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/66ea9a7c6824821476914bed21a476cd20094f33","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/dc1ff95602ee908fcd7d8acee7a0dadb61b1a0c0","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/351d1a64544944b44732f6a64ed65573b00b9e14","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/31960d991e43c8d6dc07245f19fc13398e90ead2","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/0c02d425a2fbe52643a5859a779db0329e7dddd4","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/434a06c38ee1217a8baa0dd7c37cc85d50138fb0","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/73b8e21f76c7dda4905655d2e2c17dc5a73b87f1","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/a0fbbd36c156b9f7b2276871d499c9943dfe5101","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2025-11-04T17:21:58.690Z"}}]},"dataVersion":"5.2"}