CVE-2026-43405
High · 7.5CVSS
7.5
EPSS
0.6%
Published
May 8, 2026
CISA due date
—
Cloudanix analysis
A flaw in some Linux systems can let malicious storage-network data disrupt access to Ceph-backed storage and cause service outages.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
The flaw is a signedness conversion bug in the Linux kernel libceph monitor-map decoder. A 32-bit value from an incoming Ceph monitor map can be decoded into a signed integer, interpreted as negative, and bypass the intended upper-bound check against the maximum allowed monitor count. The value is then used in an unsigned allocation context, causing the kernel Ceph client to attempt an extremely large memory allocation. The likely result is allocation failure and an error path, but under pressure it can contribute to denial of service, failed Ceph client operations, mount/connect failures, or kernel memory exhaustion symptoms. The vulnerability affects availability; it does not directly provide confidentiality or integrity impact based on the published description.
Why it matters to the business
Systems that use the Linux kernel Ceph client, such as CephFS or RBD consumers, may be vulnerable to disruption if they process a malicious or malformed Ceph monitor map. Successful exploitation can interfere with storage connectivity and dependent workloads, causing application outages, failed mounts, degraded services, or operational instability. The issue has a network attack vector and requires no user interaction according to the CVSS vector, but current public exploitation indicators are low: EPSS is 0.0049, it is not listed in CISA KEV, it is not associated with known ransomware use, and no public exploit maturity is reported.
How an attack unfolds
An attacker needs a way to cause a vulnerable Linux kernel Ceph client to process a crafted Ceph monitor map. This could involve a malicious Ceph monitor endpoint, a compromised component in a Ceph environment, or another position from which the attacker can deliver malformed Ceph protocol data to the client. The attacker encodes an abnormally large 32-bit monitor count value. In vulnerable kernels, the value is stored in a signed integer, so very large unsigned values can appear negative and bypass the check that should reject monitor counts above the supported maximum. The value is later treated as unsigned during monitor-map allocation, leading the kernel client to attempt an excessive memory allocation. This can fail with an out-of-memory-style error and disrupt Ceph client initialization or operation, producing a denial-of-service condition rather than code execution.
How to fix it
Upgrade the Linux kernel to a vendor-supported version that includes the libceph ceph_monmap_decode() signedness fix. Because no exact fixed package versions were provided, use the relevant distribution or appliance vendor advisory to identify the corrected kernel build for each platform. Prioritize systems that mount CephFS, use kernel RBD, or otherwise rely on the in-kernel Ceph client. Where immediate patching is not possible, reduce exposure by restricting Ceph monitor traffic to trusted networks and trusted clients, preventing untrusted systems from impersonating or reaching Ceph monitor endpoints, enforcing network segmentation and authentication for Ceph services, and monitoring for repeated Ceph client connection failures or kernel memory-allocation errors. Mitigations reduce exploitability but do not replace the kernel fix.
How to confirm the fix worked
Confirm exposure by inventorying Linux systems that use the in-kernel Ceph client and checking their running kernel versions against the fixed versions published by the operating-system or kernel vendor. Validate remediation by confirming the active booted kernel is the patched build, not merely that an updated package is installed. On representative systems, verify CephFS mounts, RBD mappings, and Ceph-backed workloads operate normally after reboot. Review kernel changelogs or source package patches for the fix that changes non-negative decoded values in ceph_monmap_decode(), including blob_len and num_mon, to unsigned 32-bit handling. If feasible in a controlled test environment only, validate that malformed monitor maps are rejected cleanly rather than causing excessive allocation attempts or ENOMEM behavior.
Typical attack path
- Identify hosts using the Linux kernel Ceph client, such as CephFS mounts or RBD-backed workloads.
- Obtain a path to influence Ceph monitor-map data delivered to a vulnerable client, such as through a malicious, spoofed, or compromised Ceph monitor endpoint.
- Send a crafted monitor map containing an extremely large 32-bit monitor count value.
- Trigger ceph_monmap_decode() in the vulnerable kernel client as it parses the incoming monitor map.
- Cause the monitor-count validation to be bypassed because the large unsigned value is interpreted as a negative signed integer.
- Force an excessive memory allocation attempt during monitor-map handling.
- Disrupt Ceph client connectivity or storage-dependent workloads through allocation failure, memory pressure, or repeated error handling.
How to detect it
Look for evidence that Linux Ceph clients processed malformed monitor-map data or experienced unusual memory-allocation failures while communicating with Ceph monitors. Useful sources include kernel logs, system journal, dmesg output, Ceph client logs where present, Ceph monitor logs, network telemetry for Ceph monitor ports, and endpoint telemetry showing mount or RBD mapping failures. Hunt for repeated Ceph client connection resets, authentication or monitor-map parsing failures, kernel ENOMEM messages near Ceph activity, OOM-killer activity involving Ceph-dependent processes, and sudden spikes in failed CephFS mounts or RBD map operations. Also investigate any unexpected Ceph monitor IP addresses, DNS changes, routing changes, or monitor membership changes that could indicate a malicious or compromised monitor source. There are no unique public exploit strings for this issue, so detection should correlate Ceph client errors, kernel memory pressure, and suspicious Ceph monitor communications rather than relying on a single signature.
- ceph_monmap_decode
- libceph
- monmap
- mon map
- ENOMEM
- Out of memory
- oom-killer
- Killed process
- ceph:
- rbd:
- cephfs
- failed to allocate
- failed to decode
- failed to get monmap
- mount error
- rbd: map failed
- msgr2
- tcp/3300
- tcp/6789
What your security team should do
- Prioritize patching Linux systems that use CephFS, kernel RBD, or other in-kernel Ceph functionality, especially production storage clients and highly available workload nodes.
- Use vendor kernel advisories to identify exact fixed builds and ensure systems are rebooted into the patched kernel after installation.
- Restrict access to Ceph monitor ports and management networks so only trusted clients and monitors can communicate with them.
- Investigate any unexpected Ceph monitor endpoint changes, certificate or authentication anomalies, or evidence that a Ceph monitor could have been spoofed or compromised.
- Monitor kernel logs for Ceph client decode errors, repeated ENOMEM allocation failures, OOM events, and Ceph mount or RBD mapping failures.
- Treat this as primarily an availability risk; prioritize based on dependency on Ceph-backed storage, exposure of Ceph networks, and tolerance for storage disruption.
- Because the vulnerability is not in CISA KEV, has no known ransomware association, and has low EPSS at publication+95 days, handle through accelerated routine patching unless Ceph client exposure is broad or externally reachable.
The record
In the Linux kernel, the following vulnerability has been resolved: libceph: Use u32 for non-negative values in ceph_monmap_decode() This patch fixes unnecessary implicit conversions that change signedness of blob_len and num_mon in ceph_monmap_decode(). Currently blob_len and num_mon are (signed) int variables. They are used to hold values that are always non-negative and get assigned in ceph_decode_32_safe(), which is meant to assign u32 values. Both variables are subsequently used as unsigned values, and the value of num_mon is further assigned to monmap->num_mon, which is of type u32. Therefore, both variables should be of type u32. This is especially relevant for num_mon. If the value read from the incoming message is very large, it is interpreted as a negative value, and the check for num_mon > CEPH_MAX_MON does not catch it. This leads to the attempt to allocate a very large chunk of memory for monmap, which will most likely fail. In this case, an unnecessary attempt to allocate memory is performed, and -ENOMEM is returned instead of -EINVAL.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119602 libmspack through 0.11alpha contains an uninitialized memory disclosure vulnerability in… CWE-908
- CVE-2026-119375 SQLite before 3.54.0 contains an information disclosure vulnerability that allows… CWE-908
- CVE-2026-116739 VMime through 0.9.2 contains an information disclosure vulnerability in the… CWE-908
- CVE-2026-116180 vLLM from 0.8.5 before 0.31.0 has a denial of service flaw. CWE-908
- CVE-2026-115386 Wasmtime before 36.0.17, 37.0.0 before 48.0.4, and 49.0.0 before 49.0.2 contains an… CWE-908
- CVE-2026-114651 A memory-handling weakness in the BSON deserialization component of the MongoDB C# Driver… CWE-908
- CVE-2026-114501 Pillow is a Python imaging library. CWE-908
- CVE-2026-112897 Pillow is a Python imaging library. CWE-908