← Back to Feed CACHED · 2026-08-20 05:41:22 · CACHE_KEY CVE-2026-66792
CVE-2026-66792 · CWE-863 · Disclosed 2026-08-17

A flaw was found in the multicloud-operators-subscription component.

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Like a movie-theater usher who upgrades you to VIP just because you wrote 'VIP' on your own ticket stub

CVE-2026-66792 is an incorrect-authorization flaw in the multicloud-operators-subscription component of Red Hat Advanced Cluster Management for Kubernetes (RHACM). The IsClusterAdmin() function trusts two user-settable annotations — apps.open-cluster-management.io/hosting-subscription (any non-empty value) and apps.open-cluster-management.io/cluster-admin: true — without verifying the caller actually holds the subscription-admin ClusterRole. Any user on a managed (spoke) cluster who can create a Subscription CR can add these annotations and gain multi-namespace deployment capability through the controller's privileged ServiceAccount. This affects all currently supported RHACM versions; no patch or vendor-approved mitigation exists as of 2026-08-20.

The vendor's CRITICAL / 9.9 rating is justified and, if anything, slightly generous on the AC dimension but directionally correct. The Scope: Changed designation accurately reflects that a spoke-cluster user crosses the trust boundary into hub-level cluster-admin authority. The PR:L rating is fair — Kubernetes RBAC commonly grants developers permission to create CRs in their namespaces. The only friction is that the target must be running RHACM with the Application Subscription addon enabled, which is the default. Because RHACM's entire purpose is fleet orchestration, landing cluster-admin on the hub means control over every managed cluster in the fleet — a blast radius that warrants the top severity bucket.

"Annotation-based authz bypass in RHACM subscription controller hands spoke-cluster users full fleet admin."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Obtain spoke-cluster credentials

The attacker authenticates to a managed (spoke) Kubernetes cluster joined to the RHACM hub. In most enterprise deployments, developers and SREs hold namespace-scoped edit or admin roles that include the ability to create arbitrary Custom Resources. No exploitation or social engineering is needed — this is a normal operational credential.
Conditions required:
  • Valid kubeconfig or OIDC token for a namespace on a spoke cluster
  • Ability to create Subscription CRs (granted by default to edit/admin roles)
Where this breaks in practice:
  • Only RHACM-managed clusters are in scope — vanilla OpenShift or upstream K8s is unaffected
Detection/coverage: Audit logs will show Subscription CR creation; no scanner currently flags the annotation pattern specifically.
STEP 02

Craft a malicious Subscription with admin annotations

The attacker creates a Subscription CR in their namespace and adds two annotations: apps.open-cluster-management.io/hosting-subscription: <any-non-empty-value> and apps.open-cluster-management.io/cluster-admin: "true". These are standard Kubernetes annotations that any user with CR-create permission can set. No special tooling is required — kubectl apply or oc apply suffices.
Conditions required:
  • Knowledge of the two annotation keys (publicly documented in the codebase and now in CVE details)
Where this breaks in practice:
  • None — the annotations are plain-text strings; no cryptographic material or token is involved
Detection/coverage: OPA/Gatekeeper or Kyverno policies checking annotation values could catch this, but no default policy exists in RHACM.
STEP 03

Controller grants cluster-admin authority

The multicloud-operators-subscription controller evaluates IsClusterAdmin(), sees both annotations present, and treats the Subscription as submitted by a cluster-admin without any RBAC back-check. It then processes the Subscription's payload using its own highly-privileged ServiceAccount (which holds wildcard */* permissions by default per CVE-2026-72508).
Conditions required:
  • Application Subscription addon is enabled on the hub (default in RHACM)
  • Controller ServiceAccount retains default wildcard RBAC
Where this breaks in practice:
  • Organizations that have already applied the least-privilege role.yaml from the CVE-2026-72508 mitigation reduce the blast radius, but this is not standard
STEP 04

Deploy cluster-scoped resources for full takeover

With the controller acting on their behalf at cluster-admin level, the attacker can deploy a ClusterRoleBinding granting their user (or a new ServiceAccount) the cluster-admin ClusterRole. From this point, the attacker has full administrative control over the hub cluster, including the ability to read Secrets, modify workloads, and push configurations to all managed spoke clusters.
Conditions required:
  • Steps 1-3 completed
Where this breaks in practice:
  • None — the chain is fully self-contained once the annotations are accepted
Detection/coverage: Kubernetes audit logs will show ClusterRoleBinding creation by the subscription controller's ServiceAccount. SIEM rules matching ClusterRoleBinding creation by non-human accounts can alert.
STEP 05

Pivot to managed cluster fleet

As hub cluster-admin, the attacker can use RHACM's ManagedCluster and Policy APIs to push arbitrary workloads, secrets exfiltration jobs, or backdoor DaemonSets to every spoke cluster in the fleet. This is the intended function of RHACM — it is designed to propagate configuration changes fleet-wide, making lateral movement trivial and fast.
Conditions required:
  • Hub cluster-admin access (achieved in step 4)
  • At least one managed cluster registered
Where this breaks in practice:
  • Network segmentation between hub and spoke clusters may slow propagation, but RHACM requires connectivity by design
Detection/coverage: RHACM audit logs and spoke-cluster audit logs will show policy/workload pushes. Anomaly detection on ManagedClusterAction CRs can catch unexpected deployments.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo known exploitation as of 2026-08-20. Not listed on CISA KEV. Discovered by Project Glasswing AI-SAST audit, not incident response.
Proof of conceptNo public PoC repository yet, but the exploit is trivial — two kubectl annotate commands. Expect weaponization within days of disclosure given the simplicity.
EPSS0.00303 (~70th percentile). Low model score reflects the niche product footprint, not exploit difficulty. EPSS historically underweights Kubernetes-specific vulns.
KEV statusNot listed. No evidence of active exploitation. KEV addition would be warranted if any in-the-wild activity is confirmed.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H (9.9) — Scope: Changed is the key: the attacker crosses from spoke-cluster user to hub cluster-admin. PR:L accurately reflects the Kubernetes RBAC requirement.
Affected versionsAll currently supported RHACM versions with the Application Subscription addon enabled (default). Upstream open-cluster-management-io/multicloud-operators-subscription is also affected.
Fixed versionsNo patch available as of 2026-08-20. Red Hat Bugzilla #2507537 is open with no errata issued. Red Hat states no mitigation meets their product-security criteria.
Scanning / exposureRHACM is an enterprise product; instances are not directly Shodan/Censys-visible. Exposure is internal. Estimate: thousands of hub clusters globally across Fortune 500 and government.
Disclosure timelineReported 2026-07-27 → disclosed 2026-08-17 → last updated 2026-08-19. 21-day disclosure-to-public window with no patch.
Related CVEsPart of a cluster: CVE-2026-10090 (Helm chart confused deputy, 9.9), CVE-2026-72508 (wildcard RBAC SA, 9.9), CVE-2026-66878 (cross-namespace secret exfil, 7.7). All share the same root cause: the subscription controller acts as a confused deputy.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.5/10)

The single most decisive factor is role multiplier — RHACM is a fleet-orchestration platform where hub cluster-admin equals control of every managed cluster, making the blast radius fleet-scale by design. The exploit chain is trivially simple (two user-settable annotations, no tooling required) and requires only routine developer-level Kubernetes credentials that are standard in enterprise spoke clusters.

HIGH Vulnerability description and attack mechanism (confirmed via Red Hat Bugzilla and advisory)
HIGH Severity assessment (RHACM fleet-orchestration role is well-documented)
MEDIUM Affected version range (Red Hat has not published granular version matrix yet)
LOW Patch timeline (no errata issued, no ETA published)

Why this verdict

  • Trivial exploitation: The entire attack is two annotation key-value pairs on a Subscription CR. No memory corruption, no race condition, no special tooling — kubectl apply is the weapon. This is as close to zero-friction as privilege escalation gets.
  • Role multiplier — fleet orchestration platform: RHACM's hub cluster is the control plane for all managed clusters. Cluster-admin on the hub is not single-host impact; it is fleet compromise by design. RHACM exists to propagate configuration to spoke clusters, so lateral movement is a built-in feature the attacker inherits. ≥90% of RHACM hub clusters occupy the high-value orchestration role — this is the canonical deployment.
  • No patch, no vendor-approved mitigation: Red Hat explicitly states no mitigation meets their product-security criteria. Defenders are operating in a zero-day window with a trivially exploitable bug in a fleet-admin component.
  • Scope: Changed is accurate: The attacker starts as a spoke-cluster namespace user and ends as hub cluster-admin — a clear trust-boundary crossing that the CVSS S:C designation correctly captures.
  • Default configuration is vulnerable: The Application Subscription addon is enabled by default, and the controller's ServiceAccount ships with wildcard RBAC permissions. No hardening is required for exploitation; hardening is required to *prevent* it.

Why not higher?

The CVSS ceiling is 10.0, which requires AV:N/AC:L/PR:N (no authentication). This vulnerability requires PR:L — valid Kubernetes credentials on a managed cluster — which is a meaningful gate. The 9.5 reassessed score reflects a minor haircut from 9.9 to account for the authentication requirement, which eliminates unauthenticated internet-facing attack scenarios.

Why not lower?

Downgrading past CRITICAL would require evidence that the blast radius is contained to a single host or tenant. It is not — RHACM is definitionally a multi-cluster orchestration plane, and hub cluster-admin grants control over every spoke cluster. The authentication requirement (PR:L) is not a meaningful friction point: in RHACM environments, hundreds of developers and operators hold spoke-cluster credentials as part of normal operations. Additionally, there is no patch and no approved mitigation, meaning every RHACM deployment is currently exposed.

05 · Compensating Control

What to do — in priority order.

  1. Deploy OPA Gatekeeper or Kyverno policy to block the admin annotations — Create a validating admission webhook that rejects any Subscription CR containing apps.open-cluster-management.io/cluster-admin: "true" or apps.open-cluster-management.io/hosting-subscription annotations unless the submitter is in an explicitly allowed group. This is the most direct control and should be deployed within 3 days per noisgate mitigation SLA for CRITICAL.
  2. Restrict Subscription CR creation via RBAC — Remove create and update verbs on subscriptions.apps.open-cluster-management.io from all ClusterRoles except a dedicated subscription-admin role. Audit existing RoleBindings and ClusterRoleBindings. Deploy within 3 days.
  3. Apply least-privilege ServiceAccount RBAC from CVE-2026-72508 mitigation — Apply the addon/manifests/permission/role.yaml to strip wildcard permissions from the application-manager ServiceAccount. This limits the blast radius even if the annotation bypass is exploited. Note: this must be re-applied after any ACM operator upgrade or pod restart. Deploy within 3 days.
  4. Enable and alert on Kubernetes audit logs for ClusterRoleBinding creation — Configure your SIEM to alert on any ClusterRoleBinding create/update events where the actor is the subscription controller's ServiceAccount. This provides detection-in-depth while waiting for a patch.
  5. Network-segment hub from untrusted spoke clusters — If feasible, restrict which spoke clusters can reach the hub API server. This limits the population of potential attackers to trusted cluster operators only.
What doesn't work
  • NetworkPolicy on the hub cluster — NetworkPolicy controls pod-to-pod traffic, not Kubernetes API access. The attack goes through the API server, which NetworkPolicy cannot restrict.
  • PodSecurityAdmission / PodSecurityPolicy — These control pod specs, not annotation-based privilege escalation on Subscription CRs. The attack never creates a pod directly.
  • Disabling the Application Subscription addon entirely — While this would eliminate the attack surface, it also disables a core RHACM feature (application lifecycle management). Only viable if you have fully migrated to GitOps/ArgoCD.
06 · Verification

Crowdsourced verification payload.

Run this script on the RHACM hub cluster as a user with cluster-reader or equivalent permissions. It checks whether the IsClusterAdmin() annotation bypass is exploitable by verifying the subscription controller deployment exists and whether any admission policy blocks the dangerous annotations. Example: bash check_cve_2026_66792.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_66792.sh
# Checks for CVE-2026-66792: IsClusterAdmin() annotation bypass in multicloud-operators-subscription
# Run on the RHACM hub cluster with cluster-reader permissions.
# Exit codes: 0 = VULNERABLE, 1 = PATCHED, 2 = UNKNOWN

set -euo pipefail

VULNERABLE=0
PATCHED=0
UNKNOWN=0

echo "[*] Checking for multicloud-operators-subscription controller..."
if ! kubectl get deployment -A -l component=multicloud-operators-subscription -o name 2>/dev/null | grep -q deployment; then
  # Try alternate label selectors
  if ! kubectl get deployment -A 2>/dev/null | grep -q 'multicloud-operators-subscription\|application-manager'; then
    echo "[*] multicloud-operators-subscription controller not found."
    echo "UNKNOWN - RHACM Application Subscription addon may not be installed."
    exit 2
  fi
fi
echo "[!] multicloud-operators-subscription controller IS deployed."

# Check for admission webhook policies blocking the annotations
echo "[*] Checking for validating admission webhooks that block admin annotations..."
BLOCKED=false
for webhook in $(kubectl get validatingwebhookconfigurations -o name 2>/dev/null); do
  rules=$(kubectl get "$webhook" -o json 2>/dev/null)
  if echo "$rules" | grep -qi 'cluster-admin\|hosting-subscription' 2>/dev/null; then
    echo "[+] Found admission policy that may block dangerous annotations: $webhook"
    BLOCKED=true
  fi
done

# Check for Gatekeeper constraints
if kubectl api-resources 2>/dev/null | grep -q constraints.gatekeeper.sh; then
  echo "[*] OPA Gatekeeper detected, checking constraints..."
  for constraint in $(kubectl get constraints -A -o name 2>/dev/null); do
    spec=$(kubectl get "$constraint" -o json 2>/dev/null)
    if echo "$spec" | grep -qi 'cluster-admin\|hosting-subscription' 2>/dev/null; then
      echo "[+] Found Gatekeeper constraint blocking admin annotations: $constraint"
      BLOCKED=true
    fi
  done
fi

# Check for Kyverno policies
if kubectl api-resources 2>/dev/null | grep -q kyverno.io; then
  echo "[*] Kyverno detected, checking policies..."
  for policy in $(kubectl get clusterpolicy -o name 2>/dev/null); do
    spec=$(kubectl get "$policy" -o json 2>/dev/null)
    if echo "$spec" | grep -qi 'cluster-admin\|hosting-subscription' 2>/dev/null; then
      echo "[+] Found Kyverno policy blocking admin annotations: $policy"
      BLOCKED=true
    fi
  done
fi

# Check if the ServiceAccount has wildcard RBAC (CVE-2026-72508 mitigation)
echo "[*] Checking application-manager ServiceAccount RBAC..."
SA_ROLES=$(kubectl get clusterrolebinding -o json 2>/dev/null | \
  python3 -c "
import json,sys
data=json.load(sys.stdin)
for item in data.get('items',[]):
  subjects = item.get('subjects',[])
  for s in subjects:
    if 'application-manager' in s.get('name',''):
      print(item['roleRef']['name'])
" 2>/dev/null || true)

WILDCARD=false
for role in $SA_ROLES; do
  rules=$(kubectl get clusterrole "$role" -o json 2>/dev/null || true)
  if echo "$rules" | grep -q '"\*"' 2>/dev/null; then
    echo "[!] ServiceAccount bound to ClusterRole '$role' with wildcard permissions."
    WILDCARD=true
  fi
done

echo ""
echo "========================================"
if [ "$BLOCKED" = true ]; then
  echo "PATCHED - Admission policy detected that blocks admin annotation bypass."
  exit 1
elif [ "$WILDCARD" = true ]; then
  echo "VULNERABLE - Controller is deployed with wildcard RBAC and no admission policy blocks the annotation bypass."
  exit 0
else
  echo "VULNERABLE - Controller is deployed and no admission policy blocks the annotation bypass. ServiceAccount RBAC could not be fully verified."
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a no-patch, trivially-exploitable privilege-escalation bug in a fleet-management platform — treat it as an active emergency. Per the noisgate mitigation SLA for CRITICAL, deploy compensating controls within 3 days (by 2026-08-23): at minimum, push an OPA Gatekeeper or Kyverno policy to every hub cluster that blocks the two dangerous annotations on Subscription CRs, and strip wildcard RBAC from the application-manager ServiceAccount using the role.yaml from the CVE-2026-72508 advisory. These mitigations must be re-applied after any ACM operator upgrade. Monitor Red Hat Bugzilla #2507537 daily for errata — once a patch drops, apply it within the noisgate remediation SLA of 90 days. If your organization has completed migration to GitOps/ArgoCD, evaluate disabling the Application Subscription addon entirely to eliminate the attack surface. Brief your Kubernetes platform team Monday morning; this is not a routine patch cycle item.

Sources

  1. Red Hat CVE Advisory — CVE-2026-66792
  2. Red Hat Bugzilla #2507537
  3. THREATINT CVE-2026-66792 Record
  4. Red Hat CVE Advisory — CVE-2026-72508 (wildcard RBAC)
  5. Red Hat CVE Advisory — CVE-2026-10090 (Helm confused deputy)
  6. CyberSecurityNews — RHACM Privilege Escalation
  7. GBHackers — Red Hat Kubernetes Privilege Escalation
  8. Upstream multicloud-operators-subscription Repository
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.