CVE-2026-89650 in the critical feed json
ceph: bound num_export_targets array for mds info v2/v3
published 2026-09-11 58 d ago modified 2026-10-30 9 d ago also EUVD-2026-76562
- cvss
- 9.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 44%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
ceph: bound num_export_targets array for mds info v2/v3
ceph_mdsmap_decode() in fs/ceph/mdsmap.c reads num_export_targets from each per-mds info record and advances the decode cursor by num_export_targets * sizeof(u32) without first checking that many bytes remain. The only upper-bound check that catches a runaway cursor (*p > info_end) is gated on info_v >= 4, because info_end is left NULL for info_v 2 and 3. When the monitor sends an MDS map whose per-mds info version is 2 or 3 with an oversized num_export_targets, the cursor moves past the message front buffer and the later export-targets loop calls the unchecked ceph_decode_32() on out-of-bounds memory.
A kernel client processes CEPH_MSG_MDS_MAP from its monitor session (net/ceph/mon_client.c dispatches it; fs/ceph/super.c routes it to ceph_mdsc_handle_mdsmap(), which sets end to the front buffer bound and calls ceph_mdsmap_decode()). A malicious or compromised monitor, or an on-path attacker on an unsigned/unencrypted messenger session, can therefore drive an out-of-bounds read in the client kernel; on x86_64 with KASAN it is reported as a slab-out-of-bounds read in ceph_mdsmap_decode(). The decoded values land in the internal info->export_targets[] array, so the consequence is a kernel out-of-bounds read, not an information leak to the attacker.
Impact: a malicious or compromised Ceph monitor sending an MDS map with a per-mds info version of 2 or 3 and an oversized num_export_targets field triggers an out-of-bounds read in the CephFS client kernel.
Add a ceph_decode_need() for the export-targets array before advancing the cursor, so the bound is enforced for every info_v >= 2, not only info_v >= 4. This mirrors the count-then-need idiom already used for m_data_pg_pools later in the same function.
Compute the export-targets byte count with size_mul() and reuse that checked length when advancing the cursor, so the attacker-controlled num_export_targets multiplication fails closed on overflow rather than relying on the later kcalloc() guard.
Patch / fix
- Linux Linux 5.10.273, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, 7.2.4, 7.3
- linux Debian 12 6.1.190-1
- linux Debian 13 6.12.111-1
- linux Debian 14 7.2.6-1
- linux-6.12 Debian 12 6.12.111-1~deb12u1
debian advisories DEBIAN-CVE-2026-89650
- linux Ubuntu 22.04 LTS 5.15.0-202.212
- linux Ubuntu 26.04 LTS 7.0.0-42.42
- linux-aws Ubuntu 22.04 LTS 5.15.0-1119.126
- linux-aws Ubuntu 26.04 LTS 7.0.0-1016.17
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1120.130
- linux-gcp Ubuntu 26.04 LTS 7.0.0-1016.18
- linux-gke Ubuntu 22.04 LTS 5.15.0-1115.121
- linux-ibm Ubuntu 22.04 LTS 5.15.0-1113.117
ubuntu advisories UBUNTU-CVE-2026-89650
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-source openSUSE Tumbleweed 7.2.7-1.1
opensuse advisories openSUSE-SU-2026:11880-1
- kernel Azure Linux 3.0 6.6.157.1-1
azure linux advisories AZL-100667
Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT
- git.kernel.org/stable/c/a6eaf7bd229d0940ba8f126c684a663a680abef1 commit
- git.kernel.org/stable/c/0c4bcc3ba7291d383b82ce1c2fe324f69a42da2d commit
- git.kernel.org/stable/c/55a06b32438c222765138727d0a8164b103e8f0d commit
- git.kernel.org/stable/c/eb3e1a1cb1634c76d59c5a9cb1a026fc69d40911 commit
- git.kernel.org/stable/c/3bf7dba8dba9a05774b846affec61a3624ddba38 commit
- git.kernel.org/stable/c/58c2d3e954c13694ef6e820a5e9456461bb9e7df commit
- git.kernel.org/stable/c/332c444f4dc6fa1e8b8637c9e82d29e97f768656 commit
- git.kernel.org/stable/c/a3eb169ee297aa99670ba927c659990bd1e453f3 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-89650 updated cvss 7.5
kernel: ceph: bound num_export_targets array for mds info v2/v3
-
Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernel Red Hat OpenShift Container Platform 4 openshift/ose-rhel-coreos-8, openshift/ose-rhel-coreos-9 Red Hat OpenShift Container Platform 5 openshift/ose-rhel-coreos-9affected: workaround, no fix available “Fix deferred”
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 23 d ago
Exploit prediction
0.51% chance of exploitation in the next 30 days, higher than 44% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 9.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H |
Affected products
- Linux Linux
Classification
- Technology feeds
References
- git.kernel.org /stable/c/a6eaf7bd229d0940ba8f126c684a663a680abef1
- git.kernel.org /stable/c/0c4bcc3ba7291d383b82ce1c2fe324f69a42da2d
- git.kernel.org /stable/c/55a06b32438c222765138727d0a8164b103e8f0d
- git.kernel.org /stable/c/eb3e1a1cb1634c76d59c5a9cb1a026fc69d40911
- git.kernel.org /stable/c/3bf7dba8dba9a05774b846affec61a3624ddba38
- git.kernel.org /stable/c/58c2d3e954c13694ef6e820a5e9456461bb9e7df
- git.kernel.org /stable/c/332c444f4dc6fa1e8b8637c9e82d29e97f768656
- git.kernel.org /stable/c/a3eb169ee297aa99670ba927c659990bd1e453f3
Sources
- CVE List CVE-2026-89650
- NVD CVE-2026-89650
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.