ceph: bound MDSCapAuth path and fs_name decode in handle_session()
Summary
| CVE | CVE-2026-89651 |
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-09-11 20:19:51 UTC |
| Updated | 2026-09-11 20:19:51 UTC |
| Description | In the Linux kernel, the following vulnerability has been resolved:
ceph: bound MDSCapAuth path and fs_name decode in handle_session()
handle_session() decodes the MDSCapAuth records carried by a
CEPH_SESSION_OPEN message (msg_version >= 6). For each record the
match.path and match.fs_name byte strings are read by first decoding a
32-bit length and then copying that many bytes with the bare
ceph_decode_copy(). Unlike the surrounding fields, which all use the
_safe decode variants, these two copies are not preceded by a
ceph_decode_need() bounds check, and the enclosing MDSCapAuth and
MDSCapMatch struct_len fields are skipped rather than enforced as an
upper bound. A length larger than the bytes remaining in the message
front makes ceph_decode_copy() read past the end of the front buffer.
The message front is a dedicated allocation (ceph_msg_new2() ->
kvmalloc), so the over-read runs off that object. A malicious or
compromised MDS can trigger this with the first post-connect message on
mount, with no client-side user interaction; under KASAN it is reported
as a slab-out-of-bounds read in handle_session().
Impact: a malicious MDS can force the kernel client to read up to 4 GiB
past the message front allocation during session setup, crashing the
client (out-of-bounds read).
Switch both copies to ceph_decode_copy_safe(), which performs the
ceph_decode_need() bounds check before the copy and branches to the
existing bad label, matching the rest of the decoder and the error path
that frees the partially decoded cap_auths array. |
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|
| CNA |
Linux |
Linux |
affected 1d17de9534cb5a4c4c380d174cc2f9281b34f89e dc5c7dffda92ef372fa587c444a1c537373df824 git |
Not specified |
| CNA |
Linux |
Linux |
affected 1d17de9534cb5a4c4c380d174cc2f9281b34f89e c37db86d2b5e9b57001ccae7e7a727e95a4f9c02 git |
Not specified |
| CNA |
Linux |
Linux |
affected 1d17de9534cb5a4c4c380d174cc2f9281b34f89e 5f892c767b30e4fb0c744c59f9235c717383d2cd git |
Not specified |
| CNA |
Linux |
Linux |
affected 1d17de9534cb5a4c4c380d174cc2f9281b34f89e 77933e22adfe813be2bd10be08d6e950103c3967 git |
Not specified |
| CNA |
Linux |
Linux |
affected 6.10 |
Not specified |
| CNA |
Linux |
Linux |
unaffected 6.10 semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 6.12.109 6.12.* semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 6.18.50 6.18.* semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 7.2.4 7.2.* semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 7.3-rc1 * original_commit_for_fix |
Not specified |
References
| Reference | Source | Link | Tags |
|---|
| git.kernel.org/stable/c/77933e22adfe813be2bd10be08d6e950103c3967 |
416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
git.kernel.org |
|
| git.kernel.org/stable/c/c37db86d2b5e9b57001ccae7e7a727e95a4f9c02 |
416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
git.kernel.org |
|
| git.kernel.org/stable/c/5f892c767b30e4fb0c744c59f9235c717383d2cd |
416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
git.kernel.org |
|
| git.kernel.org/stable/c/dc5c7dffda92ef372fa587c444a1c537373df824 |
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.