CVE-2026-59818
etcd vulnerability analysis and mitigation

Overview

CVE-2026-59818 is a Certificate Revocation List (CRL) enforcement bypass vulnerability in etcd, a distributed key-value store widely used in Kubernetes and other distributed systems. When etcd is configured with --listen-client-http-urls to split HTTP and gRPC client endpoints onto separate listeners, the --client-crl-file CRL is not enforced on the gRPC listener, allowing a client with a revoked certificate to authenticate successfully over gRPC. The vulnerability affects all etcd versions prior to 3.5.32 and versions 3.6.0 through 3.6.12. It was published on July 8, 2026, with patches released on July 1, 2026. The CVSS v3.1 base score is 8.1 (High) per NVD/Feedly, while the GitHub Security Advisory assigns a score of 6.5 (Moderate) (GitHub Advisory, Red Hat CVE).

Technical details

The root cause is improper certificate validation (CWE-295): when etcd operates in a split-listener configuration (--listen-client-http-urls separates HTTP and gRPC onto distinct ports), the gRPC server owns the TLS handshake directly (onlyGRPC=true in serve.go) rather than delegating to the wrapping TLS listener that enforces CRL checks. As a result, the --client-crl-file revocation check is applied to the HTTP endpoint but is never injected into the gRPC TLS configuration, allowing a client presenting a revoked certificate to complete the gRPC TLS handshake successfully. The fix, implemented in client/pkg/transport/listener_tls.go, adds a ConfigureCRLVerification function that appends a VerifyPeerCertificate hook to the TLS config before the gRPC server is created, ensuring CRL checks are enforced in both listener modes (GitHub Commit, GitHub Advisory). The vulnerability was discovered and reported by Luis Toro (@lobuhi on GitHub).

Impact

Successful exploitation allows an attacker holding a revoked client certificate to authenticate to the etcd gRPC endpoint as if the certificate were still valid, gaining the same access and permissions originally granted to that certificate. This can result in high confidentiality and integrity impact — the attacker can read and modify all key-value data stored in etcd, which in Kubernetes environments may include secrets, configuration data, and cluster state. Availability is not directly impacted by this vulnerability, but unauthorized write access could enable destructive changes or lateral movement within the cluster (GitHub Advisory, Red Hat CVE).

Exploitability

No public proof-of-concept exploit code is known to exist, and there is no evidence of in-the-wild exploitation at this time (Red Hat CVE). The EPSS score is approximately 0.364%, indicating a low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires the attacker to already possess a previously valid (now revoked) client certificate and network access to the etcd gRPC listener, and the vulnerable configuration (--listen-client-http-urls) must be explicitly enabled — limiting the attack surface to deployments using split HTTP/gRPC listeners (GitHub Advisory).

Exploitation steps

  1. Identify target configuration: Confirm the target etcd instance is configured with --listen-client-http-urls to split HTTP and gRPC onto separate listeners, and that --client-crl-file and --client-cert-auth are enabled — this is the only configuration affected by the bypass.
  2. Obtain a revoked certificate: Acquire a client TLS certificate that was previously authorized for the etcd cluster but has since been revoked and added to the CRL file configured via --client-crl-file.
  3. Attempt HTTP connection (expected rejection): Connect to the etcd HTTP endpoint using the revoked certificate to confirm it is correctly rejected, validating that CRL enforcement is active on the HTTP listener.
  4. Connect via gRPC endpoint: Using an etcd client (e.g., etcdctl or a custom gRPC client), connect directly to the gRPC listener port (the port specified in --listen-client-urls, not --listen-client-http-urls) using the revoked certificate. The gRPC TLS handshake will succeed because CRL checking is not enforced on this listener.
  5. Access etcd data: Issue read or write operations (e.g., etcdctl get / or etcdctl put key value) using the revoked certificate session to access or modify distributed system data with the permissions originally granted to the revoked certificate (GitHub Advisory, GitHub Commit).

Indicators of compromise

  • Network: Successful TLS connections to the etcd gRPC listener port from clients using certificates whose serial numbers appear in the configured CRL file; connections originating from unexpected or decommissioned service accounts.
  • Logs: etcd audit logs showing successful authenticated gRPC requests from a client certificate that should have been revoked; absence of TLS handshake rejection errors for known-revoked certificate serial numbers on the gRPC port.
  • Configuration: etcd process running with both --listen-client-http-urls and --client-crl-file flags set simultaneously on versions prior to 3.5.32 or 3.6.13 — this combination indicates the vulnerable configuration is active.
  • Access Patterns: Unexpected read or write operations on sensitive etcd keys (e.g., Kubernetes secrets under /registry/secrets/) from client identities associated with revoked certificates.

Mitigation and workarounds

Upgrade etcd to version 3.5.32 (for the 3.5.x branch) or 3.6.13 (for the 3.6.x branch), which enforce CRL checking on the gRPC listener via the new ConfigureCRLVerification hook (GitHub Advisory, GitHub PR 3.5, GitHub PR 3.6). If immediate upgrade is not possible, two workarounds can reduce risk: (1) avoid using the --listen-client-http-urls configuration option so that HTTP and gRPC share a single listener where CRL enforcement is applied correctly; or (2) implement firewall rules or Kubernetes network policies to restrict access to etcd client ports to only trusted, known-good components, limiting the pool of clients that could exploit a revoked certificate (GitHub Advisory).

Community reactions

The vulnerability was reported by security researcher Luis Toro (@lobuhi) and addressed promptly by the etcd maintainer Benjamin Wang (ahrtr), who merged the fix on July 1, 2026, and immediately cherry-picked it to the 3.5 and 3.6 release branches to unblock patch releases (GitHub PR). Red Hat tracked the issue via Bugzilla (bug #2498305) and published a CVE advisory, and Microsoft also acknowledged the vulnerability in their MSRC update guide (Red Hat CVE). The NixOS security tracker opened a tracking issue for the vulnerability in the nixpkgs repository, indicating broad ecosystem awareness.

Additional resources


SourceThis report was generated using AI

Related etcd vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-39821CRITICAL9.6
  • cAdvisor logocAdvisor
  • yggdrasil.src
NoYesMay 22, 2026
CVE-2026-59818HIGH8.1
  • etcd logoetcd
  • etcd
NoYesJul 08, 2026
CVE-2026-56852HIGH7.5
  • cAdvisor logocAdvisor
  • crossplane-provider-aws-codestarnotifications-fips
NoYesJul 21, 2026
CVE-2026-33814HIGH7.5
  • Go logoGo
  • external-secrets-operator-fips-2.4
NoYesMay 07, 2026
CVE-2026-44283MEDIUM4.3
  • etcd logoetcd
  • etcd-3.6
NoYesMay 14, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management