KernelScan.io

HIGH

libceph SparseRead Loop

CVE-2026-23136

CVSS 7.5 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

KernelScan AI7.5HIGH

01

In the Linux kernel, the following vulnerability has been resolved: libceph: reset sparse-read state in osd_fault() When a fault occurs, the connection is abandoned, reestablished, and any pending operations are retried. The OSD client tracks the progress of a sparse-read reply using a separate state machine, largely independent of the messenger's state. If a connection is lost mid-payload or the sparse-read state machine returns an error, the sparse-read state is not reset. The OSD client will then interpret the beginning of a new reply as the continuation of the old one. If this makes the sparse-read machinery enter a failure state, it may never recover, producing loops like: libceph: [0] got 0 extents libceph: data len 142248331 != extent len 0 libceph: osd0 (1)...:6801 socket error on read libceph: data len 142248331 != extent len 0 libceph: osd0 (1)...:6801 socket error on read Therefore, reset the sparse-read state in osd_fault(), ensuring retries start from a clean state.

02

Engine v0.2.0

Risk summary

Ceph storage clients can enter infinite error loops when network faults occur during sparse-read operations. The sparse-read state machine becomes corrupted and never recovers, causing continuous socket errors and complete denial of service for affected operations.

Affectednet/ceph/osd_client.c (libceph)

Vulnerability analysis

The libceph OSD client maintains a sparse-read state machine independent of connection state. When network faults occur mid-operation, connections are reset but the sparse-read state persists, causing new replies to be misinterpreted as continuations of failed operations. This leads to state corruption and infinite error loops. The fix resets sparse-read state in osd_fault() by clearing the operation index and reinitializing the state machine, ensuring retries start clean.

03

BranchFixed inPatch commit
6.126.12.66e94075e950a6
6.186.18.610b7c7281036
6.66.6.12190a60fe61908
mainline6.1911194b416ef9