CVE-2026-1580
Component: ingress-nginx Controller
Platform: Kubernetes
Vulnerability Type: Configuration Injection
Impact: Cluster-Wide Remote Code Execution (RCE) & Secret Disclosure
Vulnerability Overview
CVE-2026-1580 is a high-impact configuration injection vulnerability affecting the ingress-nginx controller used in Kubernetes clusters. The issue exists in how the controller processes and renders certain Ingress annotations into the final NGINX configuration.
Specifically, user-controlled input provided through the annotation:
nginx.ingress.kubernetes.io/auth-method
is not safely validated or sanitized before being embedded into the active NGINX configuration. As a result, crafted annotation values can be interpreted as raw NGINX directives instead of simple configuration values.
When this happens, unintended configuration blocks may be injected into the controller’s runtime environment.
Because the ingress-nginx controller typically runs with elevated permissions and broad access to Kubernetes Secrets, successful exploitation can lead to remote code execution within the controller pod, followed by cluster-wide compromise.
Severity & Risk Summary
- CVSS v3.1 Score: 8.8 (High)
- Attack Vector: Network
- Privileges Required: Low (Ingress create/update permissions)
- User Interaction: None
- Scope: Unchanged
- Confidentiality / Integrity / Availability Impact: High
This vulnerability is especially dangerous in environments where:
- Developers or CI systems are allowed to create or update Ingress resources
- RBAC permissions around Ingress objects are loosely scoped
- ingress-nginx has cluster-wide access to Secrets
Root Cause
The ingress-nginx controller dynamically generates NGINX configuration files by parsing Kubernetes Ingress resources and their annotations.
Due to insufficient input validation, the auth-method annotation value is:
- Treated as trusted configuration
- Inserted verbatim into the generated NGINX configuration
This allows attackers to inject:
- Arbitrary NGINX directives
- Lua execution blocks
- File inclusion statements
- Malicious rewrite or proxy logic
Once injected, the controller reloads NGINX, executing the attacker-supplied configuration in the controller’s runtime context.
Exploitation Scenario (Educational)
- An attacker gains the ability to create or patch an Ingress resource (often achievable via compromised CI/CD tokens or over-permissive RBAC).
- A malicious value is placed into the
nginx.ingress.kubernetes.io/auth-methodannotation. - The ingress-nginx controller renders this value into its NGINX configuration.
- NGINX reloads and processes the injected directives.
- Arbitrary commands or configuration logic are executed inside the controller pod.
- Kubernetes Secrets accessible to the controller can be read, exfiltrated, or abused.
- Further lateral movement across the cluster becomes possible.
Exploit Availability
- Public weaponized exploit: Not publicly released at the time of writing
- Proof-of-concept: Demonstrations exist privately and within controlled security research contexts
- Likelihood of weaponization: High, due to low complexity and high impact
Given the simplicity of the injection vector and the prevalence of ingress-nginx, exploitation is considered realistic and practical in production environments.
Detection & Monitoring Guidance
1. Kubernetes API Audit Logs
Monitor for creation or modification of Ingress resources containing suspicious annotations.
What to look for:
createorpatchactions oningresses- Presence of
nginx.ingress.kubernetes.io/auth-method - Long, complex, or directive-like values
Example kubectl audit query (manual check):
kubectl get ingress --all-namespaces -o json | \
jq '.items[] |
select(.metadata.annotations["nginx.ingress.kubernetes.io/auth-method"] != null) |
{
namespace: .metadata.namespace,
name: .metadata.name,
auth_method: .metadata.annotations["nginx.ingress.kubernetes.io/auth-method"]
}'
2. Ingress-NGINX Controller Logs
Review controller logs for:
- Unexpected NGINX reloads
- Configuration rendering errors
- Unrecognized or malformed directives
- Sudden spikes in reload frequency
Example log patterns to flag:
nginx reload triggerederror parsing configurationunknown directivelua/include/rewrite_by_lua
3. Secret Access Monitoring
Because successful exploitation often leads to Secret access:
- Monitor Kubernetes API logs for abnormal
getorlistoperations on Secrets - Correlate Secret access events with ingress-nginx ServiceAccount activity
- Alert on Secret reads outside normal deployment or rotation windows
4. Example SIEM Queries
Splunk (Kubernetes Audit Logs):
index=kube_audit
objectRef.resource=ingresses
verb IN ("create","patch","update")
| search "nginx.ingress.kubernetes.io/auth-method"
| table user.username, objectRef.namespace, objectRef.name, requestReceivedTimestamp
Elastic / OpenSearch (Audit Logs):
{
"query": {
"bool": {
"must": [
{ "terms": { "verb": ["create", "patch", "update"] } },
{ "match": { "requestObject.metadata.annotations.nginx.ingress.kubernetes.io/auth-method": "*" } }
]
}
}
}
Indicators of Potential Compromise
- Ingress objects containing unexpected or overly complex
auth-methodvalues - ingress-nginx controller pods restarting unexpectedly
- Controller accessing Secrets unrelated to its namespace
- Outbound network traffic originating from controller pods
- Configuration reloads without corresponding legitimate Ingress changes
MITRE ATT&CK Mapping
- Tactic: Execution
- Technique: Exploit Public-Facing Application
- Weakness Class: Improper Input Validation (CWE-20)
Mitigation & Prevention
Immediate Actions
- Upgrade ingress-nginx immediately to a fixed version
- Restrict RBAC permissions for creating or modifying Ingress resources
- Rotate Secrets if exploitation is suspected
Hardening Recommendations
- Use admission controllers to block or strictly validate risky annotations
- Limit ingress-nginx Secret access to only required namespaces
- Enable Kubernetes audit logging at a sufficient verbosity level
- Apply network egress controls to controller pods
Official Patch / Upgrade Information
The vulnerability is fully addressed by upgrading the ingress-nginx controller to a patched release.
Official patch and upgrade details:
👉 https://github.com/kubernetes/kubernetes/issues/136677
Upgrade to:
- ingress-nginx controller v1.13.7
- ingress-nginx controller v1.14.3
- or any later release that includes the fix
Final Takeaway
This vulnerability demonstrates how seemingly minor annotation handling flaws can result in full cluster compromise when combined with default controller privileges. Even in well-secured clusters, Ingress permissions are often more widely granted than intended.
Patching should be treated as urgent, and detection mechanisms should be put in place to identify both attempted and historical abuse.
