CVE-2026-52956 Overview
CVE-2026-52956 is an out-of-bounds read vulnerability in the Linux kernel's libceph subsystem. The flaw resides in the __ceph_x_decrypt() function, which interprets a portion of a buffer as a ceph_x_encrypt_header struct without validating that the buffer is large enough to contain it. A specially crafted FRAME_TAG_AUTH_REPLY_MORE message with a ciphertext_len of 8 bytes or less can trigger out-of-bounds memory access when the kernel reads the hdr->magic field. The Linux kernel maintainers have resolved the issue by adding a size check before the header is dereferenced.
Critical Impact
An attacker capable of delivering crafted Ceph authentication frames can trigger kernel out-of-bounds memory reads, potentially leading to information disclosure or kernel instability.
Affected Products
- Linux kernel versions containing the vulnerable libceph__ceph_x_decrypt() implementation
- Systems mounting CephFS or using RBD (RADOS Block Device) clients
- Distributions shipping affected upstream kernels prior to the fix commits
Discovery Timeline
- 2026-06-24 - CVE-2026-52956 published to NVD
- 2026-06-24 - Last updated in NVD database
Technical Details for CVE-2026-52956
Vulnerability Analysis
The vulnerability resides in the Ceph authentication decryption path inside the kernel's libceph module. When __ceph_x_decrypt() processes an incoming buffer, it casts a region of memory p to a pointer of type struct ceph_x_encrypt_header and reads the magic field for validation. This cast happens without first verifying that the buffer contains enough bytes to represent the full header structure.
The function parameter ciphertext_len describes the length of the ciphertext to be decrypted. While ciphertext_len is bounded by the remaining size of the allocated buffer, it is not bounded by sizeof(struct ceph_x_encrypt_header). When the supplied ciphertext is 8 bytes or smaller, the decrypted plaintext is shorter than the header struct, and dereferencing hdr->magic reads beyond the valid data.
Root Cause
The root cause is a missing length validation before a structure dereference [CWE-125]. The decryption routine trusted the protocol-supplied length field instead of independently verifying that the decoded plaintext could hold the expected header layout.
Attack Vector
An attacker who can deliver malicious Ceph protocol frames to a vulnerable client can craft a FRAME_TAG_AUTH_REPLY_MORE message sized exactly to place a short ciphertext at its end. When the kernel client decrypts and parses the reply, the out-of-bounds read occurs in kernel context. The vulnerability requires the victim to communicate with the attacker-controlled or compromised Ceph endpoint. The fix, applied in kernel commits 821365487aa5 and c7e9b53aebe4, introduces a check ensuring the decrypted plaintext is at least as large as sizeof(struct ceph_x_encrypt_header) before any field is accessed.
Detection Methods for CVE-2026-52956
Indicators of Compromise
- Unexpected kernel oops or KASAN reports referencing __ceph_x_decrypt or ceph_x_encrypt_header in dmesg output
- Repeated Ceph authentication failures or disconnects from a specific monitor or OSD peer
- Anomalous Ceph protocol frames carrying FRAME_TAG_AUTH_REPLY_MORE with truncated ciphertext payloads
Detection Strategies
- Enable KASAN (Kernel Address Sanitizer) on test kernels to surface the out-of-bounds read deterministically
- Audit installed kernel package versions against distribution advisories that reference the upstream fix commits
- Monitor kernel ring buffer logs for libceph warnings and authentication errors correlated with Ceph cluster activity
Monitoring Recommendations
- Aggregate syslog and dmesg from Ceph clients into a centralized log platform for anomaly review
- Track Ceph monitor and OSD peer identities to detect connections from unexpected endpoints
- Alert on repeated __ceph_x_decrypt related stack traces, which indicate either exploitation attempts or unstable peers
How to Mitigate CVE-2026-52956
Immediate Actions Required
- Update the Linux kernel to a version that contains the upstream fix from commits 821365487aa5 and c7e9b53aebe4
- Restrict Ceph cluster network access to trusted hosts using firewall rules and network segmentation
- Verify that CephX authentication is enforced on all cluster endpoints to limit unauthenticated frame delivery
Patch Information
The vulnerability is fixed in the Linux kernel via two stable tree commits: Kernel Git Commit 821365487aa5 and Kernel Git Commit c7e9b53aebe4. Both add a length check to __ceph_x_decrypt() that rejects ciphertext shorter than sizeof(struct ceph_x_encrypt_header) before dereferencing the header. Apply distribution-provided kernel updates that incorporate these commits and reboot affected hosts.
Workarounds
- Where patching is delayed, isolate Ceph clients to dedicated VLANs that exclude untrusted peers
- Unload the ceph and rbd kernel modules on systems that do not actively require Ceph connectivity
- Disable mounting of CephFS shares from untrusted sources until kernels are updated
# Verify running kernel version and check whether libceph module is loaded
uname -r
lsmod | grep -E 'ceph|rbd'
# Temporarily unload Ceph modules on hosts that do not require them
sudo umount -a -t ceph
sudo modprobe -r rbd ceph libceph
# After applying the patched kernel package, reboot to load the fixed module
sudo reboot
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

