libceph: fix OOB read in decode_watchers() via missing bounds check
Summary
| CVE | CVE-2026-80557 |
|---|---|
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-08-26 15:17:10 UTC |
| Updated | 2026-08-27 13:18:40 UTC |
| Description | In the Linux kernel, the following vulnerability has been resolved: libceph: fix OOB read in decode_watchers() via missing bounds check ceph_start_decoding() validates that struct_len bytes remain in the buffer after the encoding header, but accepts struct_len=0 as valid: ceph_decode_need(p, end, 0, bad) always passes. When a malicious or compromised OSD sends an obj_list_watch_response_t reply with struct_len=0, ceph_start_decoding() returns success with p == end, leaving zero bytes guaranteed for subsequent reads. The immediately following ceph_decode_32(p) in decode_watchers() has no preceding bounds check. With p == end this is a 4-byte read past the validated buffer boundary. The garbage value is then passed directly to kzalloc_objs() as the watcher count. The sibling function decode_watcher() already uses the safe variants (ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32) after its own ceph_start_decoding() call. decode_watchers() is the only site that uses the bare variant, confirming an oversight. Fix by replacing ceph_decode_32(p) with ceph_decode_32_safe(p, end, *num_watchers, bad), consistent with the established pattern. Attacker model: a malicious or compromised OSD in a multi-tenant Ceph deployment (e.g. cloud) can trigger this against any kernel client that calls CEPH_OSD_OP_LIST_WATCHERS, without any further privileges beyond OSD session establishment. [ idryomov: trim changelog ] |
Risk And Classification
Primary CVSS: v3.1 9.8 CRITICAL from 416baaa9-dc9f-4396-8d5f-8c081fb06d67
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
| Version | Source | Type | Score | Severity | Vector |
|---|---|---|---|---|---|
| 3.1 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | Secondary | 9.8 | CRITICAL | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 3.1 | CNA | DECLARED | 9.8 | CRITICAL | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
CVSS v3.1 Breakdown
Attack Vector
NetworkAttack Complexity
LowPrivileges Required
NoneUser Interaction
NoneScope
UnchangedConfidentiality
HighIntegrity
HighAvailability
HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c 85479b7d65b4ebcb07fbbe57230976793974ab4a git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c 1c824e7c75bb4adf19553dd4ea944a5d83096be8 git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c f161be39201eb5f9b1f58fb8f90b8a9cd3931eb6 git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c eab3eeb68bfc639d74f27256f05546af5c4f787d git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c c59219a6b62d74936963983e5815524c3de8dd79 git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c cb8246e5846dbbe34930903a90c7a90dd8e5910b git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c 7130d94846dadbb97b6b7f4d78a3a7bba6e3daa1 git | Not specified |
| CNA | Linux | Linux | affected a4ed38d7a180f184a6e7aedd09db9ca4b1e6a71c 00ead17c7de137a692edee59f2772e6af687e8eb git | Not specified |
| CNA | Linux | Linux | affected 4.9 | Not specified |
| CNA | Linux | Linux | unaffected 4.9 semver | Not specified |
| CNA | Linux | Linux | unaffected 5.10.267 5.10.* semver | Not specified |
| CNA | Linux | Linux | unaffected 5.15.218 5.15.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.1.185 6.1.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.6.154 6.6.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.12.106 6.12.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.18.47 6.18.* semver | Not specified |
| CNA | Linux | Linux | unaffected 7.1.10 7.1.* semver | Not specified |
| CNA | Linux | Linux | unaffected 7.2 * original_commit_for_fix | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| git.kernel.org/stable/c/c59219a6b62d74936963983e5815524c3de8dd79 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/cb8246e5846dbbe34930903a90c7a90dd8e5910b | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/85479b7d65b4ebcb07fbbe57230976793974ab4a | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/1c824e7c75bb4adf19553dd4ea944a5d83096be8 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/f161be39201eb5f9b1f58fb8f90b8a9cd3931eb6 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/7130d94846dadbb97b6b7f4d78a3a7bba6e3daa1 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/00ead17c7de137a692edee59f2772e6af687e8eb | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/eab3eeb68bfc639d74f27256f05546af5c4f787d | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| CVE Program record | CVE.ORG | www.cve.org | canonical |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
No vendor comments have been submitted for this CVE.
There are currently no legacy QID mappings associated with this CVE.