CVE-2026-46079
Medium · 5.5CVSS
5.5
EPSS
0.2%
Published
May 27, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux systems using Ceph block storage can let a local user or faulty storage operation crash the machine.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel denial-of-service flaw in the RADOS Block Device (RBD) driver error-handling path. When an RBD device is published with device_add() but device_add_disk() later fails, the cleanup path can free disk-related state twice and then re-enter block multi-queue cleanup with invalid or NULL state. The observed crash occurs in __blk_mq_free_map_and_rqs(), called from blk_mq_free_tag_set(), producing a kernel NULL-pointer dereference/general protection fault. The practical impact is local kernel crash or instability when an RBD device add operation fails at the vulnerable point; the issue does not indicate confidentiality or integrity compromise.
Why it matters to the business
Systems using the Linux kernel RBD driver for Ceph-backed block devices may be vulnerable to local denial of service. A successful trigger can crash the host or destabilize storage operations, causing workload interruption, failed mounts, VM or container disruption, and possible service downtime for applications depending on RBD-backed storage. The EPSS score is currently very low and it is not listed in CISA KEV, so broad exploitation is not indicated, but the operational impact is high for hosts where Ceph RBD is actively used.
How an attack unfolds
An attacker needs local access with sufficient privileges or delegated capability to initiate RBD device mapping through the kernel RBD interface, such as writing an RBD mapping request to the RBD sysfs add path. The attacker then causes or waits for device_add_disk() to fail after the device has already been registered by device_add(). In the vulnerable kernel, the failure path calls rbd_free_disk() directly and then later reaches the device release path, which attempts disk cleanup again. This inconsistent teardown sequence corrupts cleanup state and can drive the block layer into a NULL-pointer dereference in __blk_mq_free_map_and_rqs(). In a production environment, inducing the precise allocation failure may require memory pressure, resource exhaustion, fault-injection features, or unusual failure conditions during RBD mapping; the end result is a local availability attack rather than remote compromise.
How to fix it
Apply a vendor-supported kernel update that includes the RBD cleanup-ordering fix for the device_add_disk() failure path. No exact fixed package versions were provided in the input, so use the fixed kernel versions or errata supplied by the relevant Linux distribution or appliance vendor. Prioritize systems that load the rbd module, run Ceph clients, host RBD-backed workloads, or allow delegated storage mapping. If immediate patching is not possible, reduce exposure by disabling or blacklisting the rbd kernel module where unused, restricting access to RBD mapping tools and /sys/bus/rbd/add_single_major, removing unnecessary Ceph client credentials from general-purpose hosts, limiting CAP_SYS_ADMIN or equivalent storage-management privileges, and monitoring for memory-pressure or repeated failed RBD mapping attempts. Do not rely on mitigation alone for systems that require RBD; patching is the durable fix.
How to confirm the fix worked
Confirm the running kernel has been updated to a vendor build containing the RBD error-path fix. Validate with the distribution package manager, kernel changelog, vendor advisory, or source patch history rather than only checking the base upstream version string. Reboot into the fixed kernel and verify the active kernel with uname -r. On systems where RBD is not required, verify the rbd module is not loaded and cannot be auto-loaded. On systems where RBD is required, confirm only authorized administrators or service accounts can perform RBD mapping and that /sys/bus/rbd/add_single_major is not writable by untrusted users. Avoid reproducing the fault on production systems; if validation testing is necessary, perform it in an isolated lab with kernel debugging/fault-injection enabled and confirm that repeated failed RBD add attempts no longer produce KASAN, Oops, or panic reports.
Typical attack path
- Gain local authenticated access to a Linux host with the vulnerable kernel and the rbd module available or loaded.
- Obtain sufficient permission to map Ceph RBD devices or write to the kernel RBD add interface.
- Initiate an RBD device add operation through the sysfs RBD interface or an equivalent mapping tool.
- Trigger or coincide with a failure in device_add_disk() after device_add() succeeds, for example through resource exhaustion or controlled fault-injection conditions.
- The vulnerable cleanup path frees disk state twice and re-enters block multi-queue teardown incorrectly.
- The kernel hits a NULL-pointer dereference/general protection fault and the host may panic, reboot, or lose service availability.
How to detect it
Look for evidence of attempted or successful triggering in kernel logs, system journal, crash dumps, audit logs, and storage orchestration logs. Relevant sources include dmesg, /var/log/kern.log, /var/log/messages, journalctl -k, kdump/vmcore records, auditd syscall/file-watch events, Ceph client logs, and automation logs that invoke rbd map or write to the RBD sysfs add interface. Indicators include kernel Oops or panic messages showing NULL-pointer dereference or general protection fault in __blk_mq_free_map_and_rqs(), call traces containing blk_mq_free_tag_set() and do_rbd_add(), KASAN reports during RBD device add, repeated writes to /sys/bus/rbd/add_single_major, and unusual bursts of failed RBD map/add operations. Because this issue is a crash/DoS bug, post-exploitation artifacts are usually kernel crash evidence and triggering activity rather than persistent malware. Correlate crash timestamps with local users, sudo/session logs, audit events, Ceph credentials used, rbd CLI invocations, and memory-pressure/resource-exhaustion events.
- /sys/bus/rbd/add_single_major
- __blk_mq_free_map_and_rqs
- blk_mq_free_tag_set
- do_rbd_add
- rbd_free_disk
- device_add_disk
- KASAN: null-ptr-deref
- Oops: general protection fault
- NULL pointer dereference
- general protection fault, probably for non-canonical address
- Comm: bash
- kernfs_fop_write_iter
- vfs_write
- ksys_write
- rbd map
- modprobe rbd
- rbd:
What your security team should do
- Inventory Linux hosts that use Ceph RBD or have the rbd kernel module loaded, and prioritize those for kernel updates.
- Patch affected systems with the vendor kernel containing the RBD cleanup fix; schedule reboots because the running kernel must be replaced.
- Restrict RBD mapping privileges to trusted administrators and service accounts only; review access to storage orchestration tools that can map RBD devices.
- If RBD is unused, blacklist or disable the rbd module and verify it cannot be loaded automatically.
- Add monitoring for kernel Oops, panic, KASAN, and block multi-queue cleanup errors involving rbd, do_rbd_add, blk_mq_free_tag_set, or __blk_mq_free_map_and_rqs.
- Review audit logs for unexpected writes to /sys/bus/rbd/add_single_major or repeated RBD map/add attempts.
- Treat any crash matching this stack trace as a potential local denial-of-service attempt or unsafe storage automation behavior and preserve kernel logs for investigation.
The record
In the Linux kernel, the following vulnerability has been resolved: rbd: fix null-ptr-deref when device_add_disk() fails do_rbd_add() publishes the device with device_add() before calling device_add_disk(). If device_add_disk() fails after device_add() succeeds, the error path calls rbd_free_disk() directly and then later falls through to rbd_dev_device_release(), which calls rbd_free_disk() again. This double teardown can leave blk-mq cleanup operating on invalid state and trigger a null-ptr-deref in __blk_mq_free_map_and_rqs(), reached from blk_mq_free_tag_set(). Fix this by following the normal remove ordering: call device_del() before rbd_dev_device_release() when device_add_disk() fails after device_add(). That keeps the teardown sequence consistent and avoids re-entering disk cleanup through the wrong path. The bug was first flagged by an experimental analysis tool we are developing for kernel memory-management bugs while analyzing v6.13-rc1. The tool is still under development and is not yet publicly available. We reproduced the bug on v7.0 with a real Ceph backend and a QEMU x86_64 guest booted with KASAN and CONFIG_FAILSLAB enabled. The reproducer confines failslab injections to the __add_disk() range and injects fail-nth while mapping an RBD image through /sys/bus/rbd/add_single_major. On the unpatched kernel, fail-nth=4 reliably triggered the fault: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] CPU: 0 UID: 0 PID: 273 Comm: bash Not tainted 7.0.0-01247-gd60bc1401583 #6 PREEMPT(lazy) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 RIP: 0010:__blk_mq_free_map_and_rqs+0x8c/0x240 Code: 00 00 48 8b 6b 60 41 89 f4 49 c1 e4 03 4c 01 e5 45 85 ed 0f 85 0a 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 e9 48 c1 e9 03 <80> 3c 01 00 0f 85 31 01 00 00 4c 8b 6d 00 4d 85 ed 0f 84 e2 00 00 RSP: 0018:ff1100000ab0fac8 EFLAGS: 00000246 RAX: dffffc0000000000 RBX: ff1100000c4806a0 RCX: 0000000000000000 RDX: 0000000000000002 RSI: 0000000000000000 RDI: ff1100000c4806f4 RBP: 0000000000000000 R08: 0000000000000001 R09: ffe21c000189001b R10: ff1100000c4800df R11: ff1100006cf37be0 R12: 0000000000000000 R13: 0000000000000000 R14: ff1100000c480700 R15: ff1100000c480004 FS: 00007f0fbe8fe740(0000) GS:ff110000e5851000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007fe53473b2e0 CR3: 0000000012eef000 CR4: 00000000007516f0 PKRU: 55555554 Call Trace: <TASK> blk_mq_free_tag_set+0x77/0x460 do_rbd_add+0x1446/0x2b80 ? __pfx_do_rbd_add+0x10/0x10 ? lock_acquire+0x18c/0x300 ? find_held_lock+0x2b/0x80 ? sysfs_file_kobj+0xb6/0x1b0 ? __pfx_sysfs_kf_write+0x10/0x10 kernfs_fop_write_iter+0x2f4/0x4a0 vfs_write+0x98e/0x1000 ? expand_files+0x51f/0x850 ? __pfx_vfs_write+0x10/0x10 ksys_write+0xf2/0x1d0 ? __pfx_ksys_write+0x10/0x10 do_syscall_64+0x115/0x690 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f0fbea15907 Code: 10 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74 24 RSP: 002b:00007ffe22346ea8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 0000000000000058 RCX: 00007f0fbea15907 RDX: 0000000000000058 RSI: 0000563ace6c0ef0 RDI: 0000000000000001 RBP: 0000563ace6c0ef0 R08: 0000563ace6c0ef0 R09: 6b6435726d694141 R10: 5250337279762f78 R11: 0000000000000246 R12: 0000000000000058 R13: 00007f0fbeb1c780 R14: ff1100000c480700 R15: ff1100000c480004 </TASK> With this fix applied, rerunning the reproducer over fail-nth=1..256 yields no KASAN reports. [ idryomov: rename err_out_device_del -> err_out_device ]
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Tumbleweed | kernel-source | 0 | 7.0.11-1.1 |
Related vulnerabilities
- CVE-2026-53354 In the Linux kernel, the following vulnerability has been resolved: arm64: errata… Also affects kernel-source
- CVE-2026-53325 In the Linux kernel, the following vulnerability has been resolved: agp/amd64: Fix broken… Also affects kernel-source
- CVE-2026-52946 In the Linux kernel, the following vulnerability has been resolved: fs/fcntl: fix… Also affects kernel-source
- CVE-2026-52907 In the Linux kernel, the following vulnerability has been resolved: media: rockchip… Also affects kernel-source
- CVE-2026-52906 In the Linux kernel, the following vulnerability has been resolved: 9p: fix access mode… Also affects kernel-source
- CVE-2026-52905 In the Linux kernel, the following vulnerability has been resolved: mm/damon/core… Also affects kernel-source
- CVE-2026-52904 In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: fix… Also affects kernel-source
- CVE-2026-46332 In the Linux kernel, the following vulnerability has been resolved: greybus… Also affects kernel-source