Cloudanix VulnDB

CVE-2026-43407

Critical · 9.1

CVSS

9.1

EPSS

0.7%

Published

May 8, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malicious or compromised storage server could send a specially crafted message that crashes Linux systems using Ceph storage and may expose sensitive memory.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Exposure
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Medium

What it actually does

This flaw is an out-of-bounds read in the Linux kernel libceph authentication reply handler. A crafted CEPH_MSG_AUTH_REPLY message can set payload_len to a value greater than INT_MAX; because the vulnerable code stores that length in a signed int, the value can wrap negative and cause pointer arithmetic to move backward before subsequent parsing. The added bounds checks in the fix prevent payload_len and result_msg_len from exceeding the containing message segment. Practical impact is kernel memory corruption behavior in the Ceph client path, most notably kernel crash or panic and potential disclosure of kernel memory contents; the CVSS vector indicates network reachability, no privileges, no user interaction, high confidentiality impact, and high availability impact, with no expected integrity impact.

Why it matters to the business

Systems using the Linux kernel Ceph client stack, including CephFS or RBD consumers, may be crashed or exposed to kernel memory disclosure if they process a malicious authentication reply from a hostile, spoofed, compromised, or man-in-the-middle Ceph monitor endpoint. This can disrupt storage-backed workloads, cause service outages, and potentially expose sensitive data resident in kernel memory. Although this issue is not currently listed in CISA KEV, is not marked as ransomware-used, has low EPSS, and has no known public exploit maturity in the provided data, the high CVSS score and unauthenticated network attack characteristics make timely kernel remediation important for Ceph-connected environments.

How an attack unfolds

An attacker first needs a path to deliver a malicious Ceph authentication reply to a vulnerable kernel Ceph client. This is most plausible where the attacker controls a Ceph monitor endpoint, compromises a legitimate monitor, poisons or redirects monitor connectivity, or performs a network man-in-the-middle attack during Ceph client authentication. The attacker sends a CEPH_MSG_AUTH_REPLY message with a payload_len value larger than INT_MAX and inconsistent length fields. On vulnerable kernels, libceph stores the oversized length in a signed integer, causing integer overflow and negative length interpretation. The parsing logic then computes an invalid pointer location and may read outside the intended slab allocation when ceph_decode_need() evaluates the bounds. The resulting behavior can include a KASAN slab-out-of-bounds report, kernel oops, panic, or other Ceph client instability; depending on surrounding conditions, the out-of-bounds read may also expose kernel memory contents.

How to fix it

Upgrade to a Linux kernel build that contains the libceph fix for ceph_handle_auth_reply(), specifically the change that stores payload_len and result_msg_len as unsigned 32-bit values and validates those lengths against the overall segment length before parsing. Because no exact fixed package versions were provided, obtain the patched kernel from the relevant Linux distribution, vendor kernel stream, or upstream stable branch once available for the deployed release. Reboot systems after installing the fixed kernel, because the vulnerable code resides in kernel space. If immediate patching is not possible, reduce exposure by restricting Ceph monitor connectivity to trusted networks, preventing untrusted systems from acting as Ceph monitors, enforcing network segmentation and authentication around storage networks, disabling unused CephFS/RBD clients, and monitoring for unexpected Ceph monitor endpoint changes or authentication failures. These mitigations reduce exploitability but do not replace the kernel fix.

How to confirm the fix worked

Confirm remediation by verifying that affected systems are running a kernel package or image that includes the libceph bounds-checking fix for ceph_handle_auth_reply(). Validate through vendor advisories, kernel changelogs, package metadata, or source inspection showing payload_len and result_msg_len are handled as u32 and checked against the segment length. After reboot, confirm the active kernel version with standard OS tooling and verify Ceph workloads reconnect normally. To detect remaining exposure, inventory systems with loaded or available Ceph client components, active CephFS mounts, RBD mappings, or libceph module usage. Review whether any vulnerable kernels remain in bootloader entries, golden images, container hosts, hypervisors, or storage clients. Where packet inspection is available, test controls by alerting on CEPH_MSG_AUTH_REPLY messages with implausibly large payload_len values, especially values above 0x7fffffff.

Typical attack path

  1. Identify systems that use the Linux kernel Ceph client stack, such as CephFS mounts or RBD mappings.
  2. Gain the ability to send traffic that the client treats as coming from a Ceph monitor, by controlling a monitor, compromising one, redirecting client configuration, spoofing traffic, or intercepting the network path.
  3. Wait for or trigger Ceph client authentication or reconnection activity.
  4. Send a crafted CEPH_MSG_AUTH_REPLY message with payload_len greater than INT_MAX and malformed segment length relationships.
  5. Trigger integer overflow in ceph_handle_auth_reply() when the oversized length is stored as a signed int.
  6. Cause pointer miscalculation and an out-of-bounds read in libceph message parsing.
  7. Achieve denial of service through kernel crash or instability, and potentially expose kernel memory contents.

How to detect it

Look for evidence of prior exploitation in kernel logs, system journals, crash dumps, KASAN reports, and Ceph client logs. High-signal artifacts include kernel oops or panic events with stack traces referencing libceph and ceph_handle_auth_reply(), especially during Ceph authentication, monitor reconnects, or mount/RBD mapping operations. Review /var/log/kern.log, /var/log/messages, /var/log/syslog, journalctl -k output, kdump/vmcore data, and centralized EDR/SIEM telemetry for slab-out-of-bounds reports and Ceph messenger workqueue failures. Correlate any such crashes with network logs showing Ceph monitor connections, unexpected monitor IPs, authentication reply traffic, or repeated disconnect/reconnect activity. If packet captures, Zeek, Suricata, or custom protocol parsers are available, inspect Ceph authentication reply messages for payload_len or result_msg_len values that exceed the containing segment or payload_len values greater than 0x7fffffff. Also investigate any recent changes to Ceph monitor DNS records, client configuration, routing, or certificates/keys that could indicate redirection to a malicious monitor. Named threat actor activity was not provided, and the vulnerability is not currently flagged as KEV or ransomware-used, so detections should focus on exploit artifacts rather than actor-specific infrastructure.

  • KASAN: slab-out-of-bounds in ceph_handle_auth_reply
  • ceph_handle_auth_reply+0x642/0x7a0 [libceph]
  • BUG: KASAN: slab-out-of-bounds
  • Read of size 4 at addr
  • Workqueue: ceph-msgr ceph_con_workfn [libceph]
  • mon_dispatch+0x973/0x23d0 [libceph]
  • ceph_con_process_message+0x1f1/0x650 [libceph]
  • process_message+0x1e/0x450 [libceph]
  • ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]
  • ceph_con_workfn+0x248/0x10c0 [libceph]
  • CEPH_MSG_AUTH_REPLY
  • payload_len > 0x7fffffff
  • result_msg_len greater than segment length
  • libceph
  • ceph-msgr

What your security team should do

  • Prioritize patching Linux systems that use CephFS, RBD, or other kernel libceph functionality, especially those on shared, untrusted, or routable networks.
  • Inventory active Ceph client usage by checking for mounted CephFS filesystems, mapped RBD devices, loaded ceph/libceph modules, and configured monitor endpoints.
  • Restrict Ceph monitor communication to trusted storage networks and enforce firewall rules so clients only connect to authorized monitor addresses.
  • Review Ceph monitor configuration and DNS/service-discovery mechanisms for unauthorized or unexpected monitor endpoints.
  • Add SOC detections for kernel oops, panic, KASAN, or libceph stack traces involving ceph_handle_auth_reply(), mon_dispatch(), ceph_con_process_message(), or ceph_con_workfn().
  • Hunt historical logs for Ceph authentication failures, sudden client disconnect/reconnect loops, and crashes correlated with Ceph monitor traffic.
  • Because the issue is 95 days past publication and has high technical severity despite low EPSS and no KEV listing, include it in the next urgent kernel maintenance cycle for Ceph-connected systems.
  • If patching is delayed, isolate Ceph clients and monitors from untrusted networks and consider temporarily disabling nonessential Ceph client usage.

The record

In the Linux kernel, the following vulnerability has been resolved: libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply() This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation. This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length. Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length. BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262 CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace: <TASK> dump_stack_lvl+0x76/0xa0 print_report+0xd1/0x620 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? kasan_complete_mode_report_info+0x72/0x210 kasan_report+0xe7/0x130 ? ceph_handle_auth_reply+0x642/0x7a0 [libceph] ? ceph_handle_auth_reply+0x642/0x7a0 [libceph] __asan_report_load_n_noabort+0xf/0x20 ceph_handle_auth_reply+0x642/0x7a0 [libceph] mon_dispatch+0x973/0x23d0 [libceph] ? apparmor_socket_recvmsg+0x6b/0xa0 ? __pfx_mon_dispatch+0x10/0x10 [libceph] ? __kasan_check_write+0x14/0x30i ? mutex_unlock+0x7f/0xd0 ? __pfx_mutex_unlock+0x10/0x10 ? __pfx_do_recvmsg+0x10/0x10 [libceph] ceph_con_process_message+0x1f1/0x650 [libceph] process_message+0x1e/0x450 [libceph] ceph_con_v2_try_read+0x2e48/0x6c80 [libceph] ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph] ? save_fpregs_to_fpstate+0xb0/0x230 ? raw_spin_rq_unlock+0x17/0xa0 ? finish_task_switch.isra.0+0x13b/0x760 ? __switch_to+0x385/0xda0 ? __kasan_check_write+0x14/0x30 ? mutex_lock+0x8d/0xe0 ? __pfx_mutex_lock+0x10/0x10 ceph_con_workfn+0x248/0x10c0 [libceph] process_one_work+0x629/0xf80 ? __kasan_check_write+0x14/0x30 worker_thread+0x87f/0x1570 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? __pfx_try_to_wake_up+0x10/0x10 ? kasan_print_address_stack_frame+0x1f7/0x280 ? __pfx_worker_thread+0x10/0x10 kthread+0x396/0x830 ? __pfx__raw_spin_lock_irq+0x10/0x10 ? __pfx_kthread+0x10/0x10 ? __kasan_check_write+0x14/0x30 ? recalc_sigpending+0x180/0x210 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x3f7/0x610 ? __pfx_ret_from_fork+0x10/0x10 ? __switch_to+0x385/0xda0 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </TASK> [ idryomov: replace if statements with ceph_decode_need() for payload_len and result_msg_len ]

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities