← Back to Feed CACHED · 2026-09-09 01:03:19 · CACHE_KEY CVE-2026-78234
CVE-2026-78234 · CWE-295 · Disclosed 2026-09-08

A flaw was found in hawtio-operator.

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

Someone left the master key to the building's intercom system inside a rarely-used janitor's closet

CVE-2026-78234 is a design flaw in hawtio-operator, the Kubernetes operator for the HawtIO diagnostic console used with Red Hat build of Apache Camel on OpenShift. The operator reads the OpenShift Service CA private signing key from the openshift-service-ca namespace and uses it to mint client TLS certificates whose Subject CN is pulled directly from user-authored Hawtio custom resources. Because the operator ships a ClusterRole that aggregates Hawtio CR permissions into the default edit and admin roles, any user with edit access in any namespace can request a Service-CA-signed certificate with an arbitrary subject. That certificate lets the holder impersonate any in-cluster service identity trusted by the Service CA — including Jolokia agents on Java workloads, where MBean invocation yields remote code execution. Affected product: Red Hat build of Apache Camel – HawtIO 4 (all versions prior to a fix; no patched version has been published as of 2026-09-09). Reported to Red Hat on 2026-05-20, publicly disclosed 2026-09-08.

Red Hat assigned CVSS 9.9 CRITICAL with Changed scope, reflecting cross-tenant blast radius. The *technical* severity is accurate: the chain is low-complexity, requires only low-privilege (namespace edit), and the impact is cluster-wide service impersonation plus RCE. However, the real-world severity is lower than 9.9 for most enterprises because hawtio-operator is a niche diagnostic tool for Apache Camel/Fuse workloads — it is *not* a default OpenShift component, does not appear in Red Hat's top-10 deployed operators, and the vast majority of OpenShift clusters do not run it. The vulnerability is also OpenShift-specific (not vanilla Kubernetes). For the subset of clusters that *do* run it, this is genuinely dangerous: it turns every developer with edit into a cluster-wide signing oracle.

"Signing oracle in a niche operator — cluster-wide CA abuse, but only if you run it"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Obtain namespace edit access

The attacker needs the edit ClusterRole (or higher) in any namespace on an OpenShift cluster running hawtio-operator. In most OpenShift deployments, this is the default role granted to developers. An external attacker would need to compromise a developer's credentials or exploit another vulnerability to reach this position.
Conditions required:
  • OpenShift cluster with hawtio-operator installed
  • User account with edit role in at least one namespace
Where this breaks in practice:
  • Hawtio-operator is a niche add-on; most OpenShift clusters do not have it installed
  • Requires authenticated access — not reachable by unauthenticated external attackers
Detection/coverage: Audit logs for Hawtio CR creation events; oc get hawtio --all-namespaces to enumerate existing CRs
STEP 02

Create a Hawtio CR with arbitrary CN

The attacker authors a Hawtio custom resource specifying a malicious spec.routeHostName or other field that feeds into the certificate Subject CN. Because the operator's ClusterRole aggregates into edit, no additional RBAC escalation is needed. The operator's reconciliation loop picks up the CR and proceeds to mint a certificate.
Conditions required:
  • Ability to create/modify Hawtio CRs in the namespace
Where this breaks in practice:
  • If RBAC has been hardened to remove Hawtio CR verbs from the edit role, this step fails
  • Organizations with admission controllers (OPA/Gatekeeper/Kyverno) that validate CR fields could block malicious values
Detection/coverage: Kubernetes audit logs showing CREATE or UPDATE on hawtio.hawt.io resources; policy engine alerts on unexpected CR field values
STEP 03

Operator mints a forged Service-CA certificate

The hawtio-operator reads the Service CA private key from the openshift-service-ca namespace and signs a new client certificate using the attacker-controlled CN. This certificate is valid for any peer that trusts the OpenShift Service CA for client authentication. The operator acts as a *signing oracle* — it has no validation that the requested CN corresponds to a legitimate service identity.
Conditions required:
  • Operator has RBAC to read the Service CA signing secret (default behavior)
Where this breaks in practice:
  • If the operator's ServiceAccount RBAC has been manually restricted to prevent reading the signing secret, this step fails — but this is not a documented hardening step
Detection/coverage: Audit logs for GET on the signing-key secret in openshift-service-ca namespace; certificate transparency logs (if configured for internal CA)
STEP 04

Impersonate target service via forged certificate

The attacker uses the minted certificate to authenticate as the impersonated service identity to any component that trusts the Service CA for mutual TLS. This includes Jolokia agents on Java workloads, which accept Service-CA client certs. The impersonation crosses namespace boundaries because the Service CA is cluster-scoped.
Conditions required:
  • Target services use Service CA for client certificate authentication
  • Network connectivity to the target service (typically within the cluster SDN)
Where this breaks in practice:
  • Services using their own CA chain or not requiring client certs are unaffected
  • Network policies may restrict cross-namespace traffic
Detection/coverage: Service-side TLS handshake logs showing unexpected client certificate CNs; network flow logs for unusual cross-namespace connections
STEP 05

RCE via Jolokia MBean invocation

With a valid client certificate impersonating a trusted service, the attacker connects to Jolokia endpoints on Java workloads. Jolokia exposes JMX MBeans over HTTP/HTTPS; many MBeans (e.g., javax.management.loading.MLet, runtime exec beans) permit arbitrary code execution. The attacker invokes these MBeans to execute commands as the Java process user, typically achieving container-level compromise and potentially pivoting further via service account tokens.
Conditions required:
  • Target Java workload exposes Jolokia agent
  • Jolokia MBeans include code-execution-capable operations
Where this breaks in practice:
  • Not all Java workloads in the cluster run Jolokia
  • Container sandboxing and pod security standards limit post-exploitation lateral movement
Detection/coverage: Jolokia access logs showing unusual MBean invocations; runtime security tools (Falco, Sysdig) detecting unexpected process execution in containers
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo confirmed exploitation. Not listed in CISA KEV. No threat campaigns reported as of 2026-09-09.
Proof of conceptNo public PoC available. No exploit code found on GitHub, ExploitDB, or Nuclei templates. The attack is conceptually straightforward (create a CR, extract the cert) but no weaponized tool has been published.
EPSS scoreNot yet scored (CVE disclosed 2026-09-08, <48 hours old). Expect low initial EPSS given niche product scope.
KEV statusNot listed in CISA KEV as of 2026-09-09.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H — Network-accessible, low complexity, low privilege required, Changed scope (cross-tenant impact). The S:C is the key driver: compromise of one namespace's edit role impacts the entire cluster's trust model.
Affected versionsRed Hat build of Apache Camel – HawtIO 4 (all versions). Upstream hawtio-operator on GitHub likely affected across 1.x and 2.x branches. No specific version range boundaries published by Red Hat.
Fixed versionsNo fix available as of 2026-09-09. Red Hat has not published an RHSA for this CVE. Prior advisory RHSA-2026:25089 (HawtIO 4.4.0, 2026-06-10) addressed other issues but predates this disclosure.
Scanning / exposure dataHawtio-operator is an OpenShift-only operator installed via OperatorHub. Not externally exposed (runs inside cluster). No Shodan/Censys/GreyNoise footprint — this is an internal-cluster attack surface only. Install base estimated to be a small fraction of OpenShift clusters (Apache Camel users only).
Disclosure timelineReported to Red Hat: 2026-05-20. Public disclosure: 2026-09-08. Red Hat Bugzilla: 2524894.
Reporting researcherNot publicly credited. Red Hat is the CNA (CVE assigner).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to HIGH (7.5/10)

Decisive downgrade factor: niche installed base — hawtio-operator is an optional diagnostic add-on for Apache Camel workloads on OpenShift, not a default cluster component, meaning the vast majority of OpenShift clusters (and all vanilla Kubernetes clusters) are entirely unaffected. The HIGH floor holds because the affected component has direct access to the cluster-scoped Service CA signing key, and successful exploitation yields a cluster-wide signing oracle with cross-tenant service impersonation and RCE — a PKI-level blast radius that prevents further downgrade.

HIGH Vulnerability mechanics and blast radius assessment
MEDIUM Installed base estimate (no public adoption metrics for hawtio-operator)
LOW Fixed version availability (none published yet)

Why this verdict

  • Niche product scope: Hawtio-operator is an optional OperatorHub add-on used exclusively by teams running Apache Camel/Fuse on OpenShift. It is not a default component, does not appear in Red Hat's top-10 deployed operators, and has no footprint on vanilla Kubernetes. Most enterprise OpenShift clusters are not affected.
  • Authenticated prerequisite: Exploitation requires edit role in any namespace — a common developer permission, but still an authenticated position. An external unauthenticated attacker cannot reach this without a prior compromise, compounding the chain with at least one prerequisite step.
  • No exploitation or PoC: Zero days since disclosure, no public exploit code, no KEV listing, no observed campaigns. The attack is conceptually simple but not yet weaponized.
  • Role multiplier: The affected component directly handles the OpenShift Service CA signing key, which is a cluster-scoped trust anchor. When hawtio-operator IS installed, exploitation yields a signing oracle → cross-namespace service impersonation → RCE via Jolokia. Blast radius is cluster-wide (not just one namespace). This PKI-adjacent role sets a floor of HIGH and prevents downgrade to MEDIUM despite the niche install base.
  • No fix available: Red Hat has disclosed the CVE but has not yet shipped a patched operator version, leaving defenders reliant on compensating controls. This is a negative factor that supports maintaining HIGH rather than downgrading further.

Why not higher?

A CRITICAL rating would require either active exploitation, a broadly-deployed component, or a canonical high-value-role where ≥10% of installs occupy that role by definition. Hawtio-operator is none of these: it is a niche diagnostic tool with a small install base, no exploitation in the wild, no public PoC, and the attack requires authenticated access (namespace edit). The 9.9 CVSS reflects theoretical maximum impact but not real-world exposure.

Why not lower?

The component directly accesses the OpenShift Service CA private signing key — a cluster-scoped trust anchor. Successful exploitation is a CA-level compromise: the attacker can forge certificates for any service identity in the cluster, impersonate services cross-namespace, and achieve RCE via Jolokia MBeans. This PKI-scale blast radius, combined with no available patch, prevents a MEDIUM rating. The edit role prerequisite is a low bar in most OpenShift environments (standard developer access).

05 · Compensating Control

What to do — in priority order.

  1. Remove hawtio-operator if not actively used — The most effective control. If your team is not actively using HawtIO for Camel diagnostics, uninstall the operator entirely via OperatorHub or oc delete subscription. This eliminates the attack surface completely. Per the noisgate mitigation SLA for HIGH, deploy this control within 30 days — but given no patch exists, do this immediately if feasible.
  2. Strip Hawtio CR verbs from edit/admin ClusterRoles — The operator's ClusterRole aggregates Hawtio CR permissions into the default edit and admin roles. Create a ClusterRole override that removes create, update, and patch verbs on hawtio.hawt.io resources from these aggregated roles. This breaks the attack at step 2 by preventing arbitrary users from creating the malicious CR. Deploy within 30 days per the noisgate mitigation SLA.
  3. Deploy admission policy to validate Hawtio CR fields — Use OPA/Gatekeeper or Kyverno to enforce that spec.routeHostName and other CN-influencing fields in Hawtio CRs match an allowlist of legitimate values. This prevents the signing oracle from issuing certs with arbitrary subjects.
  4. Restrict operator ServiceAccount RBAC — Manually remove the operator's ServiceAccount permission to read secrets in the openshift-service-ca namespace. This breaks the signing oracle entirely but will also break legitimate hawtio-operator TLS functionality. Only appropriate if you can tolerate degraded HawtIO operation.
  5. Enforce NetworkPolicies for cross-namespace isolation — Apply Kubernetes NetworkPolicies that restrict pod-to-pod communication across namespaces. This limits the attacker's ability to reach Jolokia endpoints on Java workloads in other namespaces, even if they obtain a forged certificate.
What doesn't work
  • WAF / ingress-level controls — this is an intra-cluster attack using Kubernetes API and internal mTLS. No ingress traffic is involved, so WAF rules and ingress controllers provide no protection.
  • Pod Security Standards / SecurityContextConstraints — these control container runtime privileges (runAsRoot, capabilities) but do not prevent Hawtio CR creation or certificate minting, which happen at the Kubernetes API level.
  • Rotating the Service CA — while rotating certificates is good hygiene, it does not help because the operator retains access to the *new* signing key and the signing oracle remains functional.
06 · Verification

Crowdsourced verification payload.

Run this script on any host with oc (OpenShift CLI) authenticated to the target cluster. Requires at least cluster-reader privileges. Invoke: bash check_cve_2026_78234.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-78234 — Hawtio Operator Signing Oracle Check
# Checks whether hawtio-operator is installed and whether the
# aggregated ClusterRole grants edit users Hawtio CR access.
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN

set -euo pipefail

echo "[*] CVE-2026-78234 — Hawtio Operator Signing Oracle Check"
echo "============================================================"

# Step 1: Check if hawtio-operator is installed
HAWTIO_SUB=$(oc get subscriptions.operators.coreos.com --all-namespaces -o json 2>/dev/null | \
  grep -i hawtio || true)

HAWTIO_PODS=$(oc get pods --all-namespaces -l name=hawtio-operator -o name 2>/dev/null || true)

if [[ -z "$HAWTIO_SUB" && -z "$HAWTIO_PODS" ]]; then
  echo "[+] hawtio-operator is NOT installed on this cluster."
  echo "PATCHED"
  exit 1
fi

echo "[!] hawtio-operator IS installed on this cluster."
echo "    Subscription/pods found."

# Step 2: Check if Hawtio CRD exists
if ! oc get crd hawtios.hawt.io &>/dev/null; then
  echo "[?] Hawtio CRD not found — operator may be partially installed."
  echo "UNKNOWN"
  exit 2
fi

echo "[!] Hawtio CRD (hawtios.hawt.io) exists."

# Step 3: Check if edit/admin ClusterRoles have Hawtio CR verbs
EDIT_HAWTIO=$(oc get clusterrole -l rbac.authorize.openshift.io/aggregate-to-edit=true -o json 2>/dev/null | \
  grep -c 'hawtios' || echo 0)

ADMIN_HAWTIO=$(oc get clusterrole -l rbac.authorize.openshift.io/aggregate-to-admin=true -o json 2>/dev/null | \
  grep -c 'hawtios' || echo 0)

if [[ "$EDIT_HAWTIO" -gt 0 || "$ADMIN_HAWTIO" -gt 0 ]]; then
  echo "[!] Hawtio CR verbs are aggregated into edit/admin ClusterRoles."
  echo "    Any namespace editor can create Hawtio CRs (signing oracle active)."
else
  echo "[+] Hawtio CR verbs are NOT aggregated into edit/admin roles."
  echo "    Signing oracle may be restricted (manual RBAC hardening detected)."
  echo "PATCHED"
  exit 1
fi

# Step 4: Check for existing Hawtio CRs
HAWTIO_CRS=$(oc get hawtio --all-namespaces -o json 2>/dev/null | \
  python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('items',[])))" 2>/dev/null || echo 0)

echo "[*] Found $HAWTIO_CRS existing Hawtio CR(s) across all namespaces."

echo ""
echo "=== RESULT ==="
echo "VULNERABLE"
echo "hawtio-operator is installed with default aggregated RBAC."
echo "Any namespace editor can exploit CVE-2026-78234 as a signing oracle."
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
If you don't run hawtio-operator, you're not affected — confirm with the verification script and move on. If you do run it: there is no vendor patch yet, so compensating controls are your only option. Per the noisgate mitigation SLA for HIGH, deploy mitigations within 30 days — but given the zero-day status (no fix available) and the low friction for authenticated insiders, we recommend acting within the first week. Priority actions: (1) uninstall the operator if it's not actively needed, (2) if it is needed, strip Hawtio CR verbs from the edit/admin aggregated ClusterRoles immediately, and (3) deploy an admission policy to validate Hawtio CR field values. Monitor Red Hat advisories for a patched operator version and apply it within the noisgate remediation SLA of 180 days from patch availability. Audit existing Hawtio CRs across all namespaces for unexpected routeHostName values and rotate any Service-CA-signed certificates that may have been minted with suspicious subjects.

Sources

  1. Security Online — CVE-2026-78234 Advisory
  2. Red Hat CVE Page — CVE-2026-78234
  3. THREATINT CVE Entry
  4. OffSeq Threat Radar — CVE-2026-78234
  5. RHSA-2026:25089 — HawtIO 4.4.0 Advisory (prior fix)
  6. hawtio-operator GitHub Repository
  7. CWE-295 — Improper Certificate Validation
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.