{"id":"CVE-2024-49855","state":"PUBLISHED","title":"nbd: fix race between timeout and normal completion","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnbd: fix race between timeout and normal completion\n\nIf request timetout is handled by nbd_requeue_cmd(), normal completion\nhas to be stopped for avoiding to complete this requeued request, other\nuse-after-free can be triggered.\n\nFix the race by clearing NBD_CMD_INFLIGHT in nbd_requeue_cmd(), meantime\nmake sure that cmd->lock is grabbed for clearing the flag and the\nrequeue.","publishedAt":"2024-10-21T12:18:47.391Z","updatedAt":"2026-08-05T11:40:05.597Z","severity":{"score":9.8,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"9c25faf72d780a9c71081710cd48759d61ff6e9b","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"6e73b946a379a1dfbb62626af93843bdfb53753d","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"5236ada8ebbd9e7461f17477357582f5be4f46f7","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"9a74c3e6c0d686c26ba2aab66d15ddb89dc139cc","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"c9ea57c91f03bcad415e1a20113bdb2077bcf990","versionType":"git"},{"version":"cdf62c535a9bfd5ff0eef4b91669da39d8abc0c3","status":"affected","versionType":"git"},{"version":"5171ef20bae852ff38f4cfdb368bcdcc744776d0","status":"affected","versionType":"git"},{"version":"5.17.15","status":"affected","lessThan":"5.18","versionType":"semver"},{"version":"5.18.4","status":"affected","lessThan":"5.19","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/block/nbd.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.19","versionType":"semver"},{"version":"6.1.113","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.54","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.10.13","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11.2","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/block/nbd.c"]}],"references":["https://git.kernel.org/stable/c/9c25faf72d780a9c71081710cd48759d61ff6e9b","https://git.kernel.org/stable/c/6e73b946a379a1dfbb62626af93843bdfb53753d","https://git.kernel.org/stable/c/5236ada8ebbd9e7461f17477357582f5be4f46f7","https://git.kernel.org/stable/c/9a74c3e6c0d686c26ba2aab66d15ddb89dc139cc","https://git.kernel.org/stable/c/c9ea57c91f03bcad415e1a20113bdb2077bcf990","https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:56.516Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/49xxx/CVE-2024-49855.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-49855","state":"PUBLISHED","datePublished":"2024-10-21T12:18:47.391Z","dateUpdated":"2026-08-05T11:40:05.597Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-10-21T12:17:06.016Z"},"containers":{"cna":{"title":"nbd: fix race between timeout and normal completion","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnbd: fix race between timeout and normal completion\n\nIf request timetout is handled by nbd_requeue_cmd(), normal completion\nhas to be stopped for avoiding to complete this requeued request, other\nuse-after-free can be triggered.\n\nFix the race by clearing NBD_CMD_INFLIGHT in nbd_requeue_cmd(), meantime\nmake sure that cmd->lock is grabbed for clearing the flag and the\nrequeue."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"9c25faf72d780a9c71081710cd48759d61ff6e9b","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"6e73b946a379a1dfbb62626af93843bdfb53753d","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"5236ada8ebbd9e7461f17477357582f5be4f46f7","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"9a74c3e6c0d686c26ba2aab66d15ddb89dc139cc","versionType":"git"},{"version":"2895f1831e911ca87d4efdf43e35eb72a0c7e66e","status":"affected","lessThan":"c9ea57c91f03bcad415e1a20113bdb2077bcf990","versionType":"git"},{"version":"cdf62c535a9bfd5ff0eef4b91669da39d8abc0c3","status":"affected","versionType":"git"},{"version":"5171ef20bae852ff38f4cfdb368bcdcc744776d0","status":"affected","versionType":"git"},{"version":"5.17.15","status":"affected","lessThan":"5.18","versionType":"semver"},{"version":"5.18.4","status":"affected","lessThan":"5.19","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/block/nbd.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.19","versionType":"semver"},{"version":"6.1.113","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.54","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.10.13","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11.2","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/block/nbd.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/9c25faf72d780a9c71081710cd48759d61ff6e9b"},{"url":"https://git.kernel.org/stable/c/6e73b946a379a1dfbb62626af93843bdfb53753d"},{"url":"https://git.kernel.org/stable/c/5236ada8ebbd9e7461f17477357582f5be4f46f7"},{"url":"https://git.kernel.org/stable/c/9a74c3e6c0d686c26ba2aab66d15ddb89dc139cc"},{"url":"https://git.kernel.org/stable/c/c9ea57c91f03bcad415e1a20113bdb2077bcf990"}],"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 race is driven by the NBD reply stream received over TCP in `recv_work()`/`nbd_handle_reply()`, code that processes data from a remote peer; a malicious or compromised NBD server — or an on-path attacker, since the NBD protocol is plaintext and unauthenticated on port 10809 — controls reply timing and content.\nAC:L - The remote server controls both sides of the race: it withholds a reply to force `nbd_xmit_timeout()` to fire, then delivers the reply at that instant to collide with `nbd_requeue_cmd()`, and it can repeat this across many in-flight requests indefinitely at no cost.\nPR:N - The NBD protocol carries no authentication, so the attacking server or MITM needs no credentials or privileges on the victim host; the CAP_SYS_ADMIN gate only covers the victim admin's own legitimate `nbd-client` setup, which is a pre-existing deployment condition rather than an attacker privilege.\nUI:N - No victim action is needed at attack time — an already-established NBD session (diskless boot, cloud block storage) is enough, and a compromised server or on-path attacker triggers the race unilaterally.\nS:U - The use-after-free and block-layer corruption stay within the kernel of the affected host; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Re-dispatching an already-completed request makes `nbd_send_cmd()` walk freed bio/bvec memory and transmit its contents over the socket to the attacker-controlled server, directly disclosing freed kernel/page-cache data.\nI:H - A re-dispatched READ writes the server's attacker-chosen reply payload into freed and possibly reallocated pages, and the requeue of a reused request corrupts `q->requeue_list`/`rq->queuelist` — a controlled write primitive usable for control-flow hijacking.\nA:H - The double completion and requeue of a freed/reused request reliably produce list corruption, KASAN use-after-free splats, oops, or hang of the storage path and the machine."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:40:05.597Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.1.113"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.6.54"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.10.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.11.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.19","versionEndExcluding":"6.12"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17.15"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.18.4"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-49855","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-10-21T12:56:24.992815Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-10-21T13:04:11.227Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T22:22:24.136Z"}}]}}}