CVE-2026-89483
In the Linux kernel, the following vulnerability has been resolved:
nvme: zero the discard fallback page
nvme_setup_discard() always maps sizeof(struct nvme_dsm_range) * NVME_DSM_MAX_RANGES = 4096 bytes as the DSM payload however many ranges the command declares, because some devices ignore the 'Number of Ranges' field - the Fixes: commit records two that read past the declared ranges. A single-range discard fills only the first 16 bytes.
Normally the buffer comes from kzalloc() and the other 4080 bytes are zero. When that allocation fails the code falls back to the per-controller ctrl->discard_page, which nvme_init_ctrl() obtains with alloc_page(GFP_KERNEL) and nothing ever zeroes, so those 4080 bytes are whatever the page last held and are handed to the controller. Reaching it requires the kzalloc(GFP_ATOMIC | __GFP_NOWARN) to fail, that is memory pressure; it is not remotely triggerable. Failing the allocation under KMSAN reproduces it, with the leaked tail full of vmemmap struct page pointers. The extent in the report is a partial transfer of the payload, not the whole 4096 bytes; the 16-byte boundary in it is the one declared range:
Leer descripción completaMostrar menos
Allocate the page with __GFP_ZERO. The single allocation site covers every use of it: bytes no discard has written stay zero, and bytes one did write hold that controller's own range list, which it has already been sent.
Detalles técnicos trazas, registros y código del informe original
[ 11.991601] BUG: KMSAN: uninit-value in dma_map_phys+0x14c8/0x1900 [ 11.991969] dma_map_phys+0x14c8/0x1900 [ 11.992220] dma_map_page_attrs+0xcf/0x130 [ 11.992485] e1000_xmit_frame+0x4099/0x6d10 [ 11.992768] dev_hard_start_xmit+0x22f/0xa80 [ 11.993068] sch_direct_xmit+0x35c/0xcb0 [ 11.993315] __dev_queue_xmit+0x1ee5/0x5eb0 [ 11.993608] ip_finish_output2+0x1903/0x1c30 [ 11.993881] ip_finish_output+0x288/0x870 [ 11.994125] ip_output+0x15e/0x400 [ 11.994365] __ip_queue_xmit+0x1e85/0x1fb0 [ 11.994639] ip_queue_xmit+0x60/0x80 [ 11.994899] __tcp_transmit_skb+0x4e71/0x5fa0 [ 11.995210] tcp_write_xmit+0x3a36/0x9160 [ 11.995533] __tcp_push_pending_frames+0xc5/0x3c0 [ 11.995854] tcp_push+0x7dc/0x840 [ 11.996076] tcp_sendmsg_locked+0x766c/0x8400 [ 11.996371] tcp_sendmsg+0x4b/0x90 [ 11.996572] inet_sendmsg+0x134/0x2a0 [ 11.996823] __sock_sendmsg+0x265/0x360 [ 11.997076] sock_sendmsg+0x100/0x1e0 [ 11.997293] nvme_tcp_try_send+0x196f/0x6370 [ 11.997605] nvme_tcp_queue_rq+0x1d54/0x20b0 [ 11.997882] blk_mq_dispatch_rq_list+0x5ee/0x2e50 [ 11.998175] __blk_mq_sched_dispatch_requests+0x16dc/0x24a0 [ 11.998539] blk_mq_sched_dispatch_requests+0x11b/0x2c0 [ 11.998865] blk_mq_run_work_fn+0x13b/0x280 [ 11.999146] process_scheduled_works+0x966/0x1ad0 [ 11.999465] worker_thread+0xe44/0x1480 [ 11.999709] kthread+0x53b/0x600 [ 11.999927] ret_from_fork+0x29f/0x7c0 [ 12.000191] ret_from_fork_asm+0x1a/0x30 [ 12.000460] [ 12.000558] Uninit was created at: [ 12.000788] __alloc_frozen_pages_noprof+0x8bf/0xd30 [ 12.001096] alloc_pages_mpol+0x1d0/0x5f0 [ 12.001326] alloc_pages_noprof+0x102/0x290 [ 12.001627] nvme_init_ctrl+0x5a3/0x9f0 [ 12.001891] nvme_tcp_create_ctrl+0xd75/0x19b0 [ 12.002170] nvmf_dev_write+0x4c68/0x4fd0 [ 12.002426] vfs_write+0x587/0x1a10 [ 12.002636] __x64_sys_write+0x207/0x4f0 [ 12.002874] x64_sys_call+0x2ff0/0x3ea0 [ 12.003123] do_syscall_64+0x147/0x3b0 [ 12.003400] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 12.003680] [ 12.003777] Bytes 16-2843 of 2844 are uninitialized [ 12.004068] Memory access of size 2844 starts at ffff888109f82000 [ 12.004412] [ 12.004530] CPU: 0 UID: 0 PID: 101 Comm: kworker/0:1H Not tainted 7.2.0-rc5-NVMECTL-gf5098b6bae76 #1 PREEMPT(lazy) [ 12.005127] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 12.005762] Workqueue: kblockd blk_mq_run_work_fn [ 12.006073] =====================================================
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Puntuación base: 7.5
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.57%
- Percentil entre todas las CVEs puntuadas: 45
- Fecha de la puntuación: 5/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
🎯 Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1190Exploit Public-Facing Applicationinitial access60 %
Inferido por reglas deterministas a partir del vector CVSS y la CWE. Solo orientativo.
🛡️ Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
Referencias
- https://git.kernel.org/stable/c/3f84d2bd0d8ae8c7e8e0f8fc3cbf018a282971a1
- https://git.kernel.org/stable/c/415f2772ebcbc7f3f1ab1a71915dab82cee3465e
- https://git.kernel.org/stable/c/66b5af23b6f956e57f8205c46aa80b054631be34
- https://git.kernel.org/stable/c/67551d8430df94c827e1830bd3a5fae1f66a5219
- https://git.kernel.org/stable/c/76139b5bbf531e675934b97227be3521c7fdd537
- https://git.kernel.org/stable/c/bededeaaeff404978a5a8e2a605a6c3017cddd3e
- https://git.kernel.org/stable/c/dc4d4b70a863f7e39ef8bd137634be4e6db8b084
- https://git.kernel.org/stable/c/f5827817b4fc7feeabf4f53fb4b626e6edc52fef
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-89483",
"cveTags": [],
"metrics": {
"cvssMetricV31": [
{
"type": "Secondary",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.5,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 3.6,
"exploitabilityScore": 3.9
}
]
},
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "76139b5bbf531e675934b97227be3521c7fdd537",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "3f84d2bd0d8ae8c7e8e0f8fc3cbf018a282971a1",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "415f2772ebcbc7f3f1ab1a71915dab82cee3465e",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "66b5af23b6f956e57f8205c46aa80b054631be34",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "dc4d4b70a863f7e39ef8bd137634be4e6db8b084",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "67551d8430df94c827e1830bd3a5fae1f66a5219",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "f5827817b4fc7feeabf4f53fb4b626e6edc52fef",
"versionType": "git"
},
{
"status": "affected",
"version": "530436c45ef2e446c12538a400e465929a0b3ade",
"lessThan": "bededeaaeff404978a5a8e2a605a6c3017cddd3e",
"versionType": "git"
},
{
"status": "affected",
"version": "ffa56cbdd2409b522b4cb56461bea1c45889417b",
"versionType": "git"
},
{
"status": "affected",
"version": "8b0acb768a06083b0d28bace1481c1f6679e76f4",
"versionType": "git"
},
{
"status": "affected",
"version": "4.19.92",
"lessThan": "4.20",
"versionType": "semver"
},
{
"status": "affected",
"version": "5.4.7",
"lessThan": "5.5",
"versionType": "semver"
}
],
"programFiles": [
"drivers/nvme/host/core.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "5.5"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "5.5",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver",
"lessThanOrEqual": "5.10.*"
},
{
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver",
"lessThanOrEqual": "5.15.*"
},
{
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver",
"lessThanOrEqual": "6.1.*"
},
{
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver",
"lessThanOrEqual": "6.6.*"
},
{
"status": "unaffected",
"version": "6.12.109",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3-rc1",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"drivers/nvme/host/core.c"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-09-11T20:19:29.880",
"references": [
{
"url": "https://git.kernel.org/stable/c/3f84d2bd0d8ae8c7e8e0f8fc3cbf018a282971a1",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/415f2772ebcbc7f3f1ab1a71915dab82cee3465e",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/66b5af23b6f956e57f8205c46aa80b054631be34",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/67551d8430df94c827e1830bd3a5fae1f66a5219",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/76139b5bbf531e675934b97227be3521c7fdd537",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/bededeaaeff404978a5a8e2a605a6c3017cddd3e",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/dc4d4b70a863f7e39ef8bd137634be4e6db8b084",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/f5827817b4fc7feeabf4f53fb4b626e6edc52fef",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvme: zero the discard fallback page\n\nnvme_setup_discard() always maps sizeof(struct nvme_dsm_range) *\nNVME_DSM_MAX_RANGES = 4096 bytes as the DSM payload however many ranges\nthe command declares, because some devices ignore the 'Number of Ranges'\nfield - the Fixes: commit records two that read past the declared ranges.\nA single-range discard fills only the first 16 bytes.\n\nNormally the buffer comes from kzalloc() and the other 4080 bytes are\nzero. When that allocation fails the code falls back to the\nper-controller ctrl->discard_page, which nvme_init_ctrl() obtains with\nalloc_page(GFP_KERNEL) and nothing ever zeroes, so those 4080 bytes are\nwhatever the page last held and are handed to the controller. Reaching\nit requires the kzalloc(GFP_ATOMIC | __GFP_NOWARN) to fail, that is\nmemory pressure; it is not remotely triggerable. Failing the allocation\nunder KMSAN reproduces it, with the leaked tail full of vmemmap struct\npage pointers. The extent in the report is a partial transfer of the\npayload, not the whole 4096 bytes; the 16-byte boundary in it is the one\ndeclared range:\n\n[ 11.991601] BUG: KMSAN: uninit-value in dma_map_phys+0x14c8/0x1900\n[ 11.991969] dma_map_phys+0x14c8/0x1900\n[ 11.992220] dma_map_page_attrs+0xcf/0x130\n[ 11.992485] e1000_xmit_frame+0x4099/0x6d10\n[ 11.992768] dev_hard_start_xmit+0x22f/0xa80\n[ 11.993068] sch_direct_xmit+0x35c/0xcb0\n[ 11.993315] __dev_queue_xmit+0x1ee5/0x5eb0\n[ 11.993608] ip_finish_output2+0x1903/0x1c30\n[ 11.993881] ip_finish_output+0x288/0x870\n[ 11.994125] ip_output+0x15e/0x400\n[ 11.994365] __ip_queue_xmit+0x1e85/0x1fb0\n[ 11.994639] ip_queue_xmit+0x60/0x80\n[ 11.994899] __tcp_transmit_skb+0x4e71/0x5fa0\n[ 11.995210] tcp_write_xmit+0x3a36/0x9160\n[ 11.995533] __tcp_push_pending_frames+0xc5/0x3c0\n[ 11.995854] tcp_push+0x7dc/0x840\n[ 11.996076] tcp_sendmsg_locked+0x766c/0x8400\n[ 11.996371] tcp_sendmsg+0x4b/0x90\n[ 11.996572] inet_sendmsg+0x134/0x2a0\n[ 11.996823] __sock_sendmsg+0x265/0x360\n[ 11.997076] sock_sendmsg+0x100/0x1e0\n[ 11.997293] nvme_tcp_try_send+0x196f/0x6370\n[ 11.997605] nvme_tcp_queue_rq+0x1d54/0x20b0\n[ 11.997882] blk_mq_dispatch_rq_list+0x5ee/0x2e50\n[ 11.998175] __blk_mq_sched_dispatch_requests+0x16dc/0x24a0\n[ 11.998539] blk_mq_sched_dispatch_requests+0x11b/0x2c0\n[ 11.998865] blk_mq_run_work_fn+0x13b/0x280\n[ 11.999146] process_scheduled_works+0x966/0x1ad0\n[ 11.999465] worker_thread+0xe44/0x1480\n[ 11.999709] kthread+0x53b/0x600\n[ 11.999927] ret_from_fork+0x29f/0x7c0\n[ 12.000191] ret_from_fork_asm+0x1a/0x30\n[ 12.000460]\n[ 12.000558] Uninit was created at:\n[ 12.000788] __alloc_frozen_pages_noprof+0x8bf/0xd30\n[ 12.001096] alloc_pages_mpol+0x1d0/0x5f0\n[ 12.001326] alloc_pages_noprof+0x102/0x290\n[ 12.001627] nvme_init_ctrl+0x5a3/0x9f0\n[ 12.001891] nvme_tcp_create_ctrl+0xd75/0x19b0\n[ 12.002170] nvmf_dev_write+0x4c68/0x4fd0\n[ 12.002426] vfs_write+0x587/0x1a10\n[ 12.002636] __x64_sys_write+0x207/0x4f0\n[ 12.002874] x64_sys_call+0x2ff0/0x3ea0\n[ 12.003123] do_syscall_64+0x147/0x3b0\n[ 12.003400] entry_SYSCALL_64_after_hwframe+0x77/0x7f\n[ 12.003680]\n[ 12.003777] Bytes 16-2843 of 2844 are uninitialized\n[ 12.004068] Memory access of size 2844 starts at ffff888109f82000\n[ 12.004412]\n[ 12.004530] CPU: 0 UID: 0 PID: 101 Comm: kworker/0:1H Not tainted 7.2.0-rc5-NVMECTL-gf5098b6bae76 #1 PREEMPT(lazy)\n[ 12.005127] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014\n[ 12.005762] Workqueue: kblockd blk_mq_run_work_fn\n[ 12.006073] =====================================================\n\nAllocate the page with __GFP_ZERO. The single allocation site covers\nevery use of it: bytes no discard has written stay zero, and bytes one\ndid write hold that controller's own range list, which it has already\nbeen sent."
}
],
"lastModified": "2026-09-14T13:19:05.107",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}