CVE-2026-23136
High · 7.5CVSS
7.5
EPSS
0.2%
Published
Feb 14, 2026
CISA due date
—
Cloudanix analysis
A bug in Linux storage software can cause systems to get stuck repeating errors after a network hiccup, disrupting access to shared storage until fixed.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Failure to reset sparse-read state machine on connection fault in libceph causes the OSD client to misinterpret new replies as continuations of prior partial reads, entering unrecoverable error loops that trigger repeated socket errors and prevent recovery.
Why it matters to the business
Ceph-based storage clusters may experience prolonged unavailability or degraded performance after transient network faults, requiring manual intervention or restarts to restore service; widespread impact on Linux distributions using Ceph for distributed storage.
How an attack unfolds
An attacker with network access to Ceph OSD endpoints triggers a mid-payload connection fault or sparse-read error; the unreset state machine then loops on subsequent legitimate replies, sustaining denial of service without needing further interaction.
How to fix it
Update the Linux kernel to a version containing commit 90a60fe61908afa0eaf7f8fcf1421b9b50e5f7ff which resets sparse-read state inside osd_fault(); apply the fix via distribution kernel packages or rebuild from the stable git tree.
How to confirm the fix worked
Confirm the presence of commit 90a60fe61908afa0eaf7f8fcf1421b9b50e5f7ff in the running kernel source; test by inducing OSD connection faults during sparse reads and verifying absence of repeated libceph error messages.
Typical attack path
- Establish or intercept connection to Ceph OSD
- Induce fault during sparse-read reply payload transfer
- Observe or force sparse-read state machine error
- Trigger retry of operations on reestablished connection
- Exploit unreset state to enter persistent error loop
How to detect it
Search Ceph and kernel logs for repeated instances of 'got 0 extents', 'data len .* != extent len 0', and 'socket error on read' originating from libceph; correlate with OSD connection resets.
What your security team should do
- Prioritize kernel updates containing the referenced commit on all Ceph client nodes
- Monitor Ceph OSD logs for the specific sparse-read error patterns until patched
- Implement connection retry limits and health checks as temporary mitigation
The record
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.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Linux | Kernel | 6.6.0 | 6.6.121 |
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.27.1.160000.2.8 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.27.1 |
Related vulnerabilities
- CVE-2026-23226 In the Linux kernel, the following vulnerability has been resolved: ksmbd: add chann_lock… Also affects Kernel
- CVE-2026-23225 In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Don't… Also affects Kernel
- CVE-2026-23230 In the Linux kernel, the following vulnerability has been resolved: smb: client: split… Also affects Kernel
- CVE-2026-23224 In the Linux kernel, the following vulnerability has been resolved: erofs: fix UAF issue… Also affects Kernel
- CVE-2026-23227 In the Linux kernel, the following vulnerability has been resolved: drm/exynos: vidi: use… Also affects Kernel
- CVE-2026-23223 In the Linux kernel, the following vulnerability has been resolved: xfs: fix UAF in… Also affects Kernel
- CVE-2026-23228 In the Linux kernel, the following vulnerability has been resolved: smb: server: fix leak… Also affects Kernel
- CVE-2026-23229 In the Linux kernel, the following vulnerability has been resolved: crypto: virtio - Add… Also affects Kernel