Skip to main content

External Secrets Operator CVE-2026-26287

| EUVDEUVD-2026-93468 HIGH
Incorrect Behavior Order (CWE-696)
2026-10-06 https://github.com/external-secrets/external-secrets GHSA-q7hv-xx6h-q2x8
7.1
CVSS 3.1 · Vendor: https://github.com/external-secrets/external-secrets
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain RBAC to create Webhook generators
  2. Exploit
    Create Webhook generator targeting victim secret + malicious URL
  3. Execution
    Initialization bug clears EnforceLabels, label check skipped
  4. Impact
    Controller exfiltrates secret to attacker endpoint

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Incorrect behavior order
Exploitation Conditions

Requires: (1) ESO running an affected version (>= 0.10.0 and < 1.3.2); (2) the webhook generator feature in use (generators.external-secrets.io/v1alpha1 Webhook); and (3) the attacker holding Kubernetes RBAC rights to create Webhook generator resources - this is the primary gating prerequisite and is why the CVSS vector carries PR:L rather than PR:N. Limiting factors that reduce realistic risk: exploitation is impossible without delegated generator-creation permissions, so single-tenant or tightly-RBAC'd clusters are largely unaffected; the attack is also blunted by the vendor-listed mitigations (disabling/denying Webhook generators via admission policy, Kyverno/OPA enforcement of the required label, and NetworkPolicy egress allowlists that prevent the controller from reaching an arbitrary malicious URL). Clusters that do not use webhook generators at all are not exploitable.

Impact

This is a legitimate but conditional access-control flaw in the External Secrets Operator (ESO) webhook generator, rated CVSS 7.1 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N). The vector shows network attack surface (the Kubernetes API) with low complexity and no user interaction, but critically PR:L - meaning an attacker must already hold Kubernetes RBAC permission to create Webhook generators, so this is NOT an unauthenticated remote issue. The underlying defect (CWE-696, incorrect behavior/initialization order) reliably clears the EnforceLabels flag, so once the privilege prerequisite is met exploitation is deterministic rather than probabilistic. No EPSS score, KEV listing, or public POC is present in the provided data; per precision rules the exploitation status is 'no public exploit identified at time of analysis.' The absence of KEV and EPSS data means real-world exploitation signal is UNKNOWN, not zero. Weighing these signals together, this is a real but moderate-priority issue: the high confidentiality impact (secret exfiltration) is gated behind a non-trivial RBAC privilege and the need for webhook generators to be in use, so it is most relevant to multi-tenant clusters where generator-creation rights are delegated to semi-trusted users. Single-admin clusters face limited practical exposure.

Exploit ScenarioDerived

In a multi-tenant Kubernetes cluster, a user who has been granted RBAC permission to create Webhook generators (but not to read a particular victim Secret) creates a Webhook generator that references that unlabeled victim Secret and points at an attacker-controlled URL. Because the initialization-order bug clears the EnforceLabels flag, ESO skips the 'external-secrets.io/type=webhook' label check that should have blocked the operation, and the controller reads the Secret and sends its contents to the malicious endpoint. No public exploit code is identified at the time of analysis, though the deterministic nature of the bug makes reproduction straightforward for anyone with the required generator-creation rights.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 06, 2026

A label-enforcement bypass in the External Secrets Operator (ESO) webhook generator lets any Kubernetes principal that is permitted to create webhook generator resources point a generator at a victim's Secret that was never labelled for webhook use, and then have its contents exfiltrated to an attacker-controlled URL. The flaw affects ESO releases from 0.10.0 up to (but not including) 1.3.2 and stems from an initialization-order bug that cleared the EnforceLabels flag after it had been set, so the provider-side check for the external-secrets.io/type=webhook label was skipped instead of failing. Exploitation is conditional: it requires an affected version, the webhook generator feature in use, and delegated RBAC rights to create generators.external-secrets.io/v1alpha1 Webhook objects, which is why the assessed vector carries PR:L; clusters that never use webhook generators or that tightly constrain generator creation are not exposed. No public exploit code was identified at time of analysis and the issue is not in CISA KEV, and a vendor patch is available in 1.3.2.

RemediationAI

Vendor-released patch: upgrade External Secrets Operator to version 1.3.2 or later, which contains the initialization-order fix from PR #5901 (commit 25aa09275861e3ed6fc5d2a1a60b9ac3df4a93ba) and is published at https://github.com/external-secrets/external-secrets/releases/tag/v1.3.2; full details are in advisory GHSA-q7hv-xx6h-q2x8 (https://github.com/external-secrets/external-secrets/security/advisories/GHSA-q7hv-xx6h-q2x8). If the upgrade cannot be scheduled immediately, the vendor-listed compensating controls are, in rough order of effectiveness: stop using the feature entirely by disabling or denying the generators.external-secrets.io/v1alpha1 Webhook kind through an admission policy (the trade-off is loss of webhook-based secret generation for teams that rely on it); tighten RBAC so that only a small, audited set of service accounts may create Webhook generators, which directly removes the PR:L precondition this attack depends on, though it requires a review of existing ClusterRole/Role bindings and may break automated provisioning pipelines; deploy an OPA Gatekeeper or Kyverno policy that rejects any Webhook generator whose referenced Secret lacks the external-secrets.io/type=webhook label - this compensates for the skipped in-controller check but must be kept in sync with ESO's label conventions and can cause false rejections during label migrations; and restrict controller-pod egress with a Kubernetes NetworkPolicy or service-mesh egress policy allowing only known webhook endpoints, with the caveat that the webhook generator is designed to reach external URLs, so an over-broad allowlist leaves residual exposure while an over-narrow one breaks legitimate generators. Rotate any Secret credentials that were reachable by an over-privileged generator-creating principal before the fix is applied, since disclosure cannot be undone by patching alone.

Affected VersionsENISA

external-secrets 0.10.0, < 1.3.2

Affected Packages

go github.com/external-secrets/external-secrets fix: 1.3.2
euvd external_secrets_0_10_0 fix: 1.3.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

External Secrets Operator is a Kubernetes controller that synchronises secrets from external providers (Vault, AWS Secrets Manager, and so on) into native Secret objects, and it exposes a set of 'generators' - including a v1alpha1 Webhook generator - that allows a generator resource to call out to an arbitrary HTTP endpoint and materialise the response. The Webhook generator validates that any referenced Kubernetes Secret carries the marker label external-secrets.io/type=webhook before reading it, precisely so that a user able to author a generator cannot use it as a read primitive against unrelated Secrets. CVE-2026-26287 is categorised as CWE-696 (Incorrect Behavior Order), and the accompanying fix PR #5901 is a trivial statement reordering inside generators/v1/webhook/webhook.go: the assignment that resets the embedded webhook client was executed after the flag setting, silently zeroing the EnforceLabels state that gates the label check. The observable consequence is a control-flow inversion - the operation that should have aborted with the message "secret does not contain needed label 'external-secrets.io/type: webhook'" succeeds, the referenced Secret data is collected, and the controller then POSTs it to the webhook URL. Because the affected component is a Go module (pkg:go/github.com_external-secrets_external-secrets), the issue propagates to every downstream build and container image that vendors ESO versions in the 0.10.0-1.3.1 range; the confidentiality impact is complete for any Secret the attacker names, which is why the score is high on C, while the independent assessment correctly confines impact to disclosure (C:H/I:N/A:N) rather than any write or denial-of-service capability.

Know when Kubernetes gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/external-secrets/external-secrets) PRIMARY 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
vuln.today AI 6.5 MEDIUM

Exploitation is via the Kubernetes API (AV:N, AC:L) but requires granted RBAC to create Webhook generators (PR:L); impact is pure secret disclosure, so C:H with I:N/A:N, diverging from the vendor's I:L.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/external-secrets/external-secrets).

CVSS VectorVendor: https://github.com/external-secrets/external-secrets

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

DescriptionCVE.org

Summary

A bug in the webhook generator initialization order incorrectly cleared the label-enforcement flag (EnforceLabels) after it was set, resulting in the provider-side check for external-secrets.io/type=webhook being skipped (and the operation to succeed while it should have failed with secret does not contain needed label 'external-secrets.io/type: webhook'. Update secret label to use it with webhook.

Impact

A user with the permission to create webhook generator can set the webhook generator to a victim' secret (which was not previously labelled for webhook's use), and exfiltrate it to a malicious URL.

Mitigations

Until you upgrade, you can reduce risk by:

  • disabling webhook generators if not needed (or denying generators.external-secrets.io/v1alpha1 Webhook via an admission policy);
  • restricting RBAC: limit who can create generators of kind Webhook;
  • enforcing an admission policy (OPA Gatekeeper / Kyverno) requiring referenced secrets to be labeled external-secrets.io/type=webhook;
  • restricting egress from external-secrets controller pods to an allowlist (kubernetes NetworkPolicy / service mesh egress policy).

References

  • PR #5901 (fix: webhook initialization order)

Technical POC Analysis

CWE-696 (Incorrect Behavior Order), in the External Secrets Operator (ESO) webhook generator's Generate method: generators/v1/webhook/webhook.go (Go module github.com/external-secrets/external-secret…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

External Secrets Operator (ESO) versions 0.10.0 through 1.3.1 contain a label-enforcement bypass in the webhook generator that could let an authenticated Kubernetes principal with delegated generator-creation rights exfiltrate unlabeled Secrets to an attacker-controlled URL. This affects organizations running ESO with the webhook generator feature and broad enough RBAC permissions, potentially exposing sensitive credentials stored in Kubernetes. The vendor has released a patch (1.3.2), and no public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
High
CNCF-graduated external-secrets operator, widely deployed across Kubernetes clusters
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2025-1974 CRITICAL POC
9.8 Mar 25

A critical vulnerability in Kubernetes ingress-nginx controller allows unauthenticated attackers with pod network access

CVE-2026-45321 CRITICAL POC
9.6 May 12

Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actio

CVE-2025-1098 HIGH POC
8.8 Mar 25

Kubernetes ingress-nginx contains a configuration injection vulnerability via the mirror-target and mirror-host Ingress

CVE-2025-24514 HIGH POC
8.8 Mar 25

A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-url` Ingres

CVE-2025-1097 HIGH POC
8.8 Mar 25

A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-tls-match-c

CVE-2020-8554 MEDIUM POC
6.3 Jan 21

Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.exter

CVE-2023-3676 HIGH POC
8.8 Oct 31

A security issue was discovered in Kubernetes where a user that can create pods on Windows nodes may be able to escalate

CVE-2025-55190 CRITICAL POC
9.9 Sep 04

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne

CVE-2026-34976 CRITICAL POC
10.0 Apr 02

Unauthenticated remote attackers can trigger complete database overwrites, server-side file reads, and SSRF attacks agai

CVE-2018-18843 CRITICAL POC
10.0 Dec 04

The Kubernetes integration in GitLab Enterprise Edition 11.x before 11.2.8, 11.3.x before 11.3.9, and 11.4.x before 11.4

CVE-2026-54680 CRITICAL POC
9.9 Jul 29

Fluentd configuration injection in the kube-logging Logging operator before 6.6.0 allows a namespace-scoped user who can

CVE-2026-22039 CRITICAL POC
9.9 Jan 27

Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy