VORVEX

CVE-2026-50152: a read-only CephX key can reach cluster secrets

A common CephX read permission was enough to extract the Monitor secret store, including keys capable of expanding access to every host in the cluster.

By Equipe Vorvex4 min read

A storage identity with read permission should not reach encryption keys or administrative host credentials. In CVE-2026-50152, that separation failed inside the Ceph Monitor: any CephX entity with the mon allow r capability could send a crafted subscription and receive the cluster's entire config-key store.

Red Hat assigns the flaw a preliminary CVSS 3.1 score of 8.2, with vector CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L. The attacker must reach the cluster network and hold a valid low-privilege CephX key, but no interaction from another person is required. Ceph's documentation states that one crafted MMonSubscribe message deterministically returns the secrets.

Technical attack path from a low-privilege CephX identity through a crafted monitor subscription to the config-key secret store and managed cluster hosts
Read access to the Monitor crosses an unexpected boundary and reaches secrets that can unlock administrative access to the cluster.

Who is exposed and which versions are fixed

The Ceph advisory declares all prior versions vulnerable. Fixes are available in the still-supported branches, Tentacle 20.2.4 or later and Squid 19.2.6 or later, both released on August 19, 2026. Older unsupported versions have no listed fixed release, so remaining on them is not a mitigation strategy.

  • Access condition: cluster connectivity and a valid CephX identity
  • Sufficient capability on a vulnerable system: mon allow r
  • User interaction: none
  • Fixed versions: Tentacle 20.2.4+ and Squid 19.2.6+
  • Earlier versions: treated as vulnerable by the Ceph project
  • CWE: 862, missing authorization

How a subscription becomes vault access

The Monitor processes subscriptions for different internal maps and channels. Before the fix, the generic Monitor read check also accepted subscriptions whose names started with kv:, the prefix used by the config-key store. Holding mon allow r was therefore enough to cross an authorization boundary that should have been specific to the secret repository.

cpp
} else if (p->first.starts_with("kv:")) {
  if (!s->is_capable("config-key", MON_CAP_R)) {
    dout(5) << __func__ << " " << op->get_req()->get_source_inst()
            << " not enough caps for " << p->first << " -- dropping"
            << dendl;
    continue;
  }
}
Excerpt from the official fix: kv: subscriptions now require a specific config-key read capability instead of generic Monitor permission.

The patch moves the decision ahead of subscription registration and drops the request when the config-key capability is missing. That detail matters in code review: checking authorization only when data is delivered can leave other subscription paths or side effects reachable. The project confirmed the MMonSubscribe vector but did not publish the message bytes. We therefore do not fabricate a payload that only appears functional without being verifiable.

The contents of config-key change the impact

The config-key store does not contain only harmless configuration. Ceph lists OSD LUKS passphrases, dashboard secrets, and gateway credentials. In clusters managed by cephadm, it may also contain the private SSH key used to authenticate to every managed host. An unauthorized read becomes more than a disclosure when that key enables root access to cluster machines.

Security analyst mapping secrets exposed from a Ceph config-key store to encrypted OSDs, dashboard services, gateways, and cephadm-managed hosts
Actual impact depends on what the cluster stored in config-key and how far each secret reaches beyond the Monitor.

CVSS describes the base condition, but configuration determines the blast radius. A cluster without cephadm has a different chain from an environment where one SSH key administers every node. Secret inventory, credential reuse, network reach, and usage records must be part of the impact analysis.

How to validate exposure without reading secrets

Initial triage does not need to reproduce the extraction. Confirm the versions actually running across the daemons and list only the Monitor capabilities assigned to entities. The command below drops the key field in the filter and displays only the name and mon cap. The output should still be treated as administrative information and collected in a controlled session.

bash
ceph versions --format json-pretty

ceph auth ls --format json |
  jq -r '.auth_dump[]
    | select(.caps.mon? != null)
    | [.entity, .caps.mon]
    | @tsv'
Defensive triage for versions and Monitor capabilities. The filter does not print the key field present in Ceph's administrative response.

Look for mon allow r, combinations such as allow rw or allow rwx, allow *, and profiles that resolve to read access. Do not treat the absence of an obvious identity as proof of safety: service accounts, CephFS clients, backup integrations, and old credentials may hold this capability. Dynamic confirmation belongs only in an isolated lab or an authorized pentest with explicit permission to manipulate the Monitor protocol.

Updating closes the read but does not invalidate leaked material

Installing Tentacle 20.2.4 or Squid 19.2.6 blocks new subscriptions without the specific capability, but it does not revoke a secret that was already obtained. The project specifically recommends immediately rotating the cephadm SSH key on clusters managed by it. For other secrets, operators should assess exposure and follow the relevant product or integration procedure, preserving evidence before changing the environment when abuse is suspected.

  • Update every daemon and confirm that no Monitor remains on a vulnerable version
  • Inventory identities with any Monitor read capability and remove unnecessary access
  • Rotate the cephadm SSH key and distribute the new key through the official procedure
  • Map OSD passphrases, dashboard secrets, and gateway credentials stored in config-key
  • Review authentication logs, Monitor connections, and SSH access inconsistent with expected operations
  • Preserve evidence and expand the investigation to every host reachable with exposed credentials
  • Move unsupported clusters to a branch that receives security fixes

What this flaw adds to infrastructure pentesting

Read permission is not synonymous with low impact. In distributed systems, an apparently restricted principal may query metadata, subscribe to internal channels, or reach vaults used by the control plane. A Ceph pentest should test every identity's effective capabilities, Monitor protocol boundaries, and the destinations of administrative secrets. The useful question is not only what the account can read. It is which new identities it can assume after that read.

← Back to blog

Want that same depth applied to your environment?

Tell us what you need to validate and the team scopes a penetration test to match.

Talk on WhatsApp

Ready to assess your company's risk?