Executive brief
The vault-secrets-webhook, a tool used to automatically inject sensitive credentials into Kubernetes applications, contains a security flaw that allows an attacker to redirect secret requests to a malicious server. By providing a specially crafted configuration in a standard Kubernetes object like a ConfigMap, an attacker can trick the system into sending highly sensitive authentication tokens (ServiceAccount JWTs) to a server they control. This could lead to the theft of corporate secrets, unauthorized access to cloud metadata services, and a broader compromise of the Kubernetes environment.
Technical details
A Server-Side Request Forgery (SSRF) vulnerability exists in vault-secrets-webhook due to insufficient validation of the 'vault.security.banzaicloud.io/vault-addr' annotation in the parseVaultConfig() function. When a ConfigMap or Secret containing a 'vault:' prefix is processed, the webhook's admission handler initiates a synchronous HTTP connection to the user-supplied address. If the 'vault-serviceaccount' annotation is also present, the webhook uses its cluster-wide 'serviceaccounts/token:create' permissions to generate a JWT and POSTs it to the attacker-controlled URL. This allows an attacker with low-privileged namespace access to exfiltrate tokens or target internal resources like the Cloud Instance Metadata Service (IMDS). The issue is fixed in version 1.23.1 by implementing a mandatory address allowlist.
Affected products
- bank-vaults vault-secrets-webhook < 1.23.1
Timeline
- 2026-06-09: patched: Version 1.23.1 released with SSRF hardening
- 2026-07-31: disclosed: Public advisory and CVE published