CVE-2026-43449
High · 7.1CVSS
7.1
EPSS
0.2%
Published
May 8, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux systems using NVMe storage can let someone with local access crash the machine or potentially expose sensitive system memory.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This flaw is a slab out-of-bounds read in the Linux kernel NVMe PCI driver, specifically in the doorbell buffer handling path used during NVMe controller reset and queue management. The vulnerable logic iterates beyond the valid range of online NVMe queues: online_queues is a count, so valid queue indexes end at online_queues - 1, while the buggy loop can access one entry past the allocated queue metadata. Because this occurs in kernel memory, a local attacker who can influence NVMe device state, trigger NVMe reset paths, or operate in an environment with controllable PCI/NVMe devices may be able to cause kernel memory disclosure or a kernel crash. The published CVSS vector indicates local attack, low complexity, low privileges, no user interaction, high confidentiality impact, and high availability impact.
Why it matters to the business
Successful exploitation could expose sensitive kernel memory or cause affected Linux systems using NVMe PCI storage to crash or become unstable. The most likely operational impact is denial of service on servers, workstations, appliances, or virtualized systems that use the vulnerable NVMe PCI driver path. Because this is not listed in CISA KEV, has no known exploit maturity, and has a very low EPSS score, broad active exploitation is not currently indicated; however, kernel memory-corruption issues should still be prioritized for systems where local users, containers, virtual machines, or untrusted hardware access are present.
How an attack unfolds
An attacker first needs local execution or another way to interact with a vulnerable Linux host where the nvme-pci driver is in use. They then attempt to trigger NVMe queue initialization, reset, teardown, or error-handling paths that call the vulnerable doorbell buffer setup/free logic. When the kernel processes the affected NVMe reset workflow, the off-by-one queue iteration can read outside the allocated slab object. In a basic exploitation scenario this results in a kernel oops, panic, or service outage. In a more advanced scenario, the out-of-bounds kernel read may expose adjacent kernel memory contents, although practical exploitation depends heavily on kernel build options, memory layout, hardening features, device accessibility, and the attacker’s ability to repeatedly shape NVMe driver state.
How to fix it
Upgrade to a Linux kernel version from the distribution or kernel vendor that includes the nvme-pci fix for the out-of-bounds access in nvme_dbbuf_set/nvme_dbbuf_free. No exact fixed package versions were provided in the input, so use the fixed kernel builds published by the relevant Linux distribution, appliance vendor, cloud image provider, or upstream stable kernel branch once available. After installing the fixed kernel, reboot the system so the patched kernel and nvme-pci module are active. Where immediate patching is not possible, reduce exposure by limiting local shell access, restricting untrusted workloads, preventing untrusted users from managing PCI/NVMe devices, avoiding passthrough of untrusted NVMe devices to guests, and disabling or avoiding affected NVMe PCI hardware paths only where operationally feasible. Kernel hardening features such as KASLR, slab hardening, module signing, lockdown mode, and panic-on-oops policy may reduce exploitability or improve containment but should not be treated as substitutes for patching.
How to confirm the fix worked
Confirm the running kernel is a vendor build that includes the nvme-pci bounds-check correction. Validate with the distribution advisory, package changelog, kernel commit reference, or source diff showing the loop condition was changed so queue indexes stay below dev->online_queues and skip only the admin queue at index 0. Check the running kernel with commands such as uname -r and package-manager queries, then ensure the host has rebooted into the patched kernel rather than merely installing it. On systems with NVMe PCI devices, verify normal device operation after reboot using tools such as dmesg, journalctl, lsblk, lspci, and nvme-cli. Exposure can be confirmed by identifying systems that load the nvme driver and have PCI NVMe controllers present; systems without the affected driver path are less exposed.
Typical attack path
- Gain local code execution or equivalent low-privileged access on a Linux system using the NVMe PCI driver.
- Confirm the system has NVMe PCI storage or an emulated/attached NVMe PCI controller handled by the vulnerable kernel driver.
- Trigger NVMe controller reset, queue reinitialization, device removal/reprobe, power-state transition, or error-recovery behavior.
- Cause the vulnerable nvme_dbbuf_set/nvme_dbbuf_free path to iterate beyond the valid online queue index range.
- Observe a kernel crash, KASAN report, oops, panic, or potential kernel memory disclosure depending on system configuration and exploit reliability.
How to detect it
Look for evidence of kernel crashes or memory-safety reports involving the NVMe PCI driver. Primary log sources include dmesg, journalctl -k, /var/log/kern.log, /var/log/messages, /var/log/syslog, crash dumps, kdump/vmcore records, hypervisor console logs, and endpoint telemetry that captures kernel oops or panic events. Search for KASAN reports referencing slab-out-of-bounds in nvme_dbbuf_set or nvme_dbbuf_free, call traces involving nvme_reset_work and nvme-reset-wq, and repeated NVMe controller resets preceding a crash. Exploitation may leave no durable artifact beyond kernel logs, system instability, reboot records, or crash dumps. If crash dumps are available, inspect stack traces for drivers/nvme/host/pci.c around nvme_dbbuf_set, nvme_dbbuf_free, and nvme_reset_work. Because this issue is local and no public exploitation or named threat actor activity is indicated, detection should focus on anomalous local activity around NVMe reset paths and kernel fault artifacts rather than network indicators.
- BUG: KASAN: slab-out-of-bounds in nvme_dbbuf_free
- BUG: KASAN: slab-out-of-bounds in nvme_dbbuf_set
- nvme_dbbuf_set+
- nvme_dbbuf_free drivers/nvme/host/pci.c
- nvme_dbbuf_set drivers/nvme/host/pci.c
- nvme_reset_work+
- Workqueue: nvme-reset-wq nvme_reset_work
- Read of size 2 at addr
- The buggy address belongs to the object
- drivers/nvme/host/pci.c:377
- drivers/nvme/host/pci.c:404
- KASAN: slab-out-of-bounds
- kernel BUG at drivers/nvme/host/pci.c
- Oops:
- Kernel panic
- nvme-reset-wq
What your security team should do
- Inventory Linux systems using NVMe PCI storage or NVMe PCI passthrough and prioritize them for kernel updates.
- Patch and reboot affected systems using vendor-supported kernel packages that include the nvme-pci bounds-check fix.
- Prioritize multi-user systems, virtualization hosts, container hosts, developer workstations, CI runners, and systems where untrusted users or workloads have local execution.
- Review kernel logs for prior KASAN, oops, panic, or nvme-reset-wq events matching the vulnerable call path.
- Restrict local administrative capabilities related to PCI device binding, NVMe reset operations, hotplug, and hardware passthrough until patched.
- For virtualization platforms, avoid exposing untrusted or user-controlled NVMe PCI devices to guests unless the host kernel is patched.
- Monitor vendor advisories because exact fixed kernel package versions may differ across distributions and downstream products.
- Do not defer remediation solely because EPSS is low or the issue is not in CISA KEV; local kernel flaws can become more relevant when paired with sandbox escapes or initial footholds.
The record
In the Linux kernel, the following vulnerability has been resolved: nvme-pci: Fix slab-out-of-bounds in nvme_dbbuf_set dev->online_queues is a count incremented in nvme_init_queue. Thus, valid indices are 0 through dev->online_queues − 1. This patch fixes the loop condition to ensure the index stays within the valid range. Index 0 is excluded because it is the admin queue. KASAN splat: ================================================================== BUG: KASAN: slab-out-of-bounds in nvme_dbbuf_free drivers/nvme/host/pci.c:377 [inline] BUG: KASAN: slab-out-of-bounds in nvme_dbbuf_set+0x39c/0x400 drivers/nvme/host/pci.c:404 Read of size 2 at addr ffff88800592a574 by task kworker/u8:5/74 CPU: 0 UID: 0 PID: 74 Comm: kworker/u8:5 Not tainted 6.19.0-dirty #10 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 Workqueue: nvme-reset-wq nvme_reset_work Call Trace: <TASK> __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0xea/0x150 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xce/0x5d0 mm/kasan/report.c:482 kasan_report+0xdc/0x110 mm/kasan/report.c:595 __asan_report_load2_noabort+0x18/0x20 mm/kasan/report_generic.c:379 nvme_dbbuf_free drivers/nvme/host/pci.c:377 [inline] nvme_dbbuf_set+0x39c/0x400 drivers/nvme/host/pci.c:404 nvme_reset_work+0x36b/0x8c0 drivers/nvme/host/pci.c:3252 process_one_work+0x956/0x1aa0 kernel/workqueue.c:3257 process_scheduled_works kernel/workqueue.c:3340 [inline] worker_thread+0x65c/0xe60 kernel/workqueue.c:3421 kthread+0x41a/0x930 kernel/kthread.c:463 ret_from_fork+0x6f8/0x8c0 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246 </TASK> Allocated by task 34 on cpu 1 at 4.241550s: kasan_save_stack+0x2c/0x60 mm/kasan/common.c:57 kasan_save_track+0x1c/0x70 mm/kasan/common.c:78 kasan_save_alloc_info+0x3c/0x50 mm/kasan/generic.c:570 poison_kmalloc_redzone mm/kasan/common.c:398 [inline] __kasan_kmalloc+0xb5/0xc0 mm/kasan/common.c:415 kasan_kmalloc include/linux/kasan.h:263 [inline] __do_kmalloc_node mm/slub.c:5657 [inline] __kmalloc_node_noprof+0x2bf/0x8d0 mm/slub.c:5663 kmalloc_array_node_noprof include/linux/slab.h:1075 [inline] nvme_pci_alloc_dev drivers/nvme/host/pci.c:3479 [inline] nvme_probe+0x2f1/0x1820 drivers/nvme/host/pci.c:3534 local_pci_probe+0xef/0x1c0 drivers/pci/pci-driver.c:324 pci_call_probe drivers/pci/pci-driver.c:392 [inline] __pci_device_probe drivers/pci/pci-driver.c:417 [inline] pci_device_probe+0x743/0x920 drivers/pci/pci-driver.c:451 call_driver_probe drivers/base/dd.c:583 [inline] really_probe+0x29b/0xb70 drivers/base/dd.c:661 __driver_probe_device+0x3b0/0x4a0 drivers/base/dd.c:803 driver_probe_device+0x56/0x1f0 drivers/base/dd.c:833 __driver_attach_async_helper+0x155/0x340 drivers/base/dd.c:1159 async_run_entry_fn+0xa6/0x4b0 kernel/async.c:129 process_one_work+0x956/0x1aa0 kernel/workqueue.c:3257 process_scheduled_works kernel/workqueue.c:3340 [inline] worker_thread+0x65c/0xe60 kernel/workqueue.c:3421 kthread+0x41a/0x930 kernel/kthread.c:463 ret_from_fork+0x6f8/0x8c0 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246 The buggy address belongs to the object at ffff88800592a000 which belongs to the cache kmalloc-2k of size 2048 The buggy address is located 244 bytes to the right of allocated 1152-byte region [ffff88800592a000, ffff88800592a480) The buggy address belongs to the physical page: page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x5928 head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0 anon flags: 0xfffffc0000040(head|node=0|zone=1|lastcpupid=0x1fffff) page_type: f5(slab) raw: 000fffffc0000040 ffff888001042000 0000000000000000 dead000000000001 raw: 0000000000000000 0000000000080008 00000000f5000000 0000000000000000 head: 000fffffc0000040 ffff888001042000 00000 ---truncated---
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-92824 A flaw was found in libmodulemd. CWE-125
- CVE-2026-114038 A flaw was found in device-mapper-multipath. CWE-125
- CVE-2026-112896 Pillow is a Python imaging library. CWE-125
- CVE-2026-112278 rdesktop through 1.9.0 contains a heap out-of-bounds read vulnerability in… CWE-125
- CVE-2026-112273 libtins through 4.6 contains a heap out-of-bounds read vulnerability in DNS::compose_name… CWE-125
- CVE-2026-112073 A vulnerability was identified in Tencent ncnn up to 44b02dabdcf97499281a4692ebd65bad73dc… CWE-125
- CVE-2026-112020 LodePNG through 20261006 contains a heap out-of-bounds read vulnerability in… CWE-125
- CVE-2026-88842 A flaw was found in BusyBox dpkg. CWE-125