{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-39293","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-06-24T13:53:25.541Z","datePublished":"2024-06-25T14:22:39.550Z","dateUpdated":"2026-08-05T11:33:23.224Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:33:23.224Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nRevert \"xsk: Support redirect to any socket bound to the same umem\"\n\nThis reverts commit 2863d665ea41282379f108e4da6c8a2366ba66db.\n\nThis patch introduced a potential kernel crash when multiple napi instances\nredirect to the same AF_XDP socket. By removing the queue_index check, it is\npossible for multiple napi instances to access the Rx ring at the same time,\nwhich will result in a corrupted ring state which can lead to a crash when\nflushing the rings in __xsk_flush(). This can happen when the linked list of\nsockets to flush gets corrupted by concurrent accesses. A quick and small fix\nis not possible, so let us revert this for now."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - The vulnerable code is `xsk_rcv_check()` on the XDP packet-receive path in net/xdp/, reached solely by inbound network frames being redirected via `bpf_redirect_map()` into an XSKMAP. The corruption is driven entirely by remote traffic arriving on multiple RX queues, with no local access required.\nAC:L - The attacker controls both sides of the race by flooding the interface — RSS hashes distinct 5-tuples across RX queues, so varying source ports deterministically puts multiple NAPI instances on multiple CPUs into the same socket's Rx ring and flush node simultaneously. The reporter hit this reliably with ordinary production traffic, and the race window recurs on every packet.\nPR:N - Triggering requires only sending packets to the target; the redirect and ring-producer path runs before any authentication or authorization in the network stack. The attacker needs no account, credential, or capability on the victim system.\nUI:N - The corruption occurs in softirq/NAPI context on packet arrival with no victim action required. No user must open, mount, or configure anything at exploit time.\nS:U - The concurrent ring, buffer-pool, and flush-list corruption is confined to kernel memory managed by the same security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - The flush-list corruption produces a type-confused `struct xdp_sock *` derived from a per-CPU list head, giving reads through wild pointers, and the corrupted producer index leaks stale ring/umem contents to userspace. Additionally the new `dev->_rx[qid]` dereference with cpumap's uninitialized `queue_index` is an unbounded out-of-bounds kernel read.\nI:H - The same list corruption yields writes through attacker-influenceable wild pointers (`xs->rx->ring->producer`, `xs->pool->fq`), `__list_del_clearprev()` writes into stale/freed neighbours, and use-after-free on sockets left linked past `xskq_destroy()`/`sock_put()`. `sock_def_readable()` then walks a wait queue on the confused object, providing an indirect-call control-flow hijack primitive.\nA:H - The maintainer's revert states the change \"introduced a potential kernel crash,\" with the corrupted flush list leading to a crash in `__xsk_flush()`. NULL dereference in the unchecked `xsk_buff_alloc()` multi-frag path and list-corruption oopses give a reliably reachable kernel panic."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/xdp/xsk.c"],"versions":[{"version":"2863d665ea41282379f108e4da6c8a2366ba66db","lessThan":"19cb40b1064566ea09538289bfcf5bc7ecb9b6f5","status":"affected","versionType":"git"},{"version":"2863d665ea41282379f108e4da6c8a2366ba66db","lessThan":"7fcf26b315bbb728036da0862de6b335da83dff2","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/xdp/xsk.c"],"versions":[{"version":"6.9","status":"affected"},{"version":"0","lessThan":"6.9","status":"unaffected","versionType":"semver"},{"version":"6.9.5","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":"6.9","versionEndExcluding":"6.9.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.10"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/19cb40b1064566ea09538289bfcf5bc7ecb9b6f5"},{"url":"https://git.kernel.org/stable/c/7fcf26b315bbb728036da0862de6b335da83dff2"}],"title":"Revert \"xsk: Support redirect to any socket bound to the same umem\"","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-06-25T20:47:03.644056Z","id":"CVE-2024-39293","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-25T20:47:15.195Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T04:19:20.676Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/19cb40b1064566ea09538289bfcf5bc7ecb9b6f5","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/7fcf26b315bbb728036da0862de6b335da83dff2","tags":["x_transferred"]}]}]}}