CVE-2026-68082
Received Received - Intake

Heap-based Buffer Overflow in Linux Kernel Ceph Client

Vulnerability report for CVE-2026-68082, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-08-08

Last updated on: 2026-08-08

Assigner: kernel.org

Description

In the Linux kernel, the following vulnerability has been resolved: libceph: fix two unsafe bare decodes in decode_lockers() decode_lockers() in cls_lock_client.c contains two bare decode operations that allow a malicious or compromised OSD to trigger slab-out-of-bounds reads: 1. ceph_decode_32(p) at the num_lockers field has no preceding bounds check. ceph_start_decoding() accepts struct_len=0 as valid -- the internal ceph_decode_need(p, end, 0, bad) always passes -- so when an OSD sends struct_len=0, ceph_start_decoding() returns success with p == end. The immediately following bare ceph_decode_32(p) then reads 4 bytes past the validated buffer boundary. The garbage value is passed directly to kzalloc_objs() as the locker count. The sibling function decode_watchers() in osd_client.c already uses ceph_decode_32_safe() after its own ceph_start_decoding() call. decode_lockers() was the only site using the bare variant. 2. ceph_decode_8(p) after the decode_locker() loop has no preceding bounds check. If an OSD crafts num_lockers such that the loop advances p exactly to end, the subsequent bare ceph_decode_8(p) reads one byte past the validated buffer boundary. The result is passed directly into *type, which is used as a lock type discriminator by callers, giving an OSD-controlled one-byte OOB read with direct influence over the lock type field. Fix both by replacing bare operations with their safe variants: ceph_decode_32(p) -> ceph_decode_32_safe(p, end, *num_lockers, err_inval) ceph_decode_8(p) -> ceph_decode_8_safe(p, end, *type, err_free_lockers) The goto targets differ intentionally: err_inval: is a new label returning -EINVAL directly. It is used for the pre-allocation failure path where *lockers is not yet allocated and must not be passed to ceph_free_lockers(). err_free_lockers: is the existing label. It is used for the post-allocation failure path where *lockers is allocated and must be freed. ret is set to -EINVAL before ceph_decode_8_safe() so that err_free_lockers returns the correct error code on bounds violation. Without this, err_free_lockers would return a stale ret value (0 from the successful decode_locker() loop), silently swallowing the error. -EINVAL is correct for both failure paths. The data received from the OSD is structurally malformed. -ENOMEM would misrepresent the failure class to callers and to stable@ backporters triaging error paths. Attacker model: a malicious or compromised OSD in a multi-tenant Ceph deployment can trigger this against any kernel client that issues the lock.get_info class method (e.g. during RBD exclusive lock acquisition). [ idryomov: trim changelog, formatting ]

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-08-08
Last Modified
2026-08-08
Generated
2026-08-08
AI Q&A
2026-08-08
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
ceph libceph *

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability in the Linux kernel involves unsafe decoding operations in the libceph component. Specifically, the decode_lockers() function in cls_lock_client.c contains two bare decode operations that allow a malicious or compromised OSD (Object Storage Daemon) to trigger slab-out-of-bounds reads. These operations read beyond the validated buffer boundary, potentially leading to memory corruption or arbitrary code execution.

Detection Guidance

This vulnerability is specific to the Linux kernel's Ceph client implementation and requires inspection of kernel logs or code for signs of slab-out-of-bounds reads triggered by malformed OSD messages. No direct network or system commands detect this flaw. Review kernel logs for errors related to libceph or ceph_decode operations.

Impact Analysis

If you are using a Linux kernel with Ceph storage, a malicious or compromised OSD in your deployment could exploit this flaw. This could lead to memory corruption, crashes, or unauthorized access to sensitive data. Systems using RBD (RADOS Block Device) with exclusive lock acquisition are particularly at risk.

Compliance Impact

This vulnerability allows a malicious or compromised OSD to trigger out-of-bounds memory reads in the Linux kernel's Ceph client. While not directly impacting GDPR or HIPAA compliance, such memory corruption vulnerabilities could potentially lead to unauthorized data access or system instability if exploited. Compliance frameworks often require robust security controls to prevent memory corruption issues that could compromise data integrity or confidentiality.

Mitigation Strategies

Apply the Linux kernel patch that replaces unsafe ceph_decode_32 and ceph_decode_8 operations with their safe variants (ceph_decode_32_safe and ceph_decode_8_safe) in the decode_lockers function. Update to a kernel version containing this fix or backport the patch manually.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-68082. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart