HIGH
libceph SparseRead Loop
CVE-2026-23136
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
KernelScan AI7.5HIGH
01Description
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.
02KernelScan AI Analysis
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.
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.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.12 | 6.12.66 | e94075e950a6 |
| 6.18 | 6.18.6 | 10b7c7281036 |
| 6.6 | 6.6.121 | 90a60fe61908 |
| mainline | 6.19 | 11194b416ef9 |