Tekton Pipelines: HTTP Resolver Unbounded Response Body Read Enables Denial of Service via Memory Exhaustion
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 1.0.2, 1.3.4, 1.6.2, 1.9.3, 1.11.1
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: poc
- Automatable: no
- Technical impact: partial
Summary
Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style pipelines. Starting in version 1.0.0 and prior to versions 1.0.2, 1.3.4, 1.6.2, 1.9.3, and 1.11.1, the HTTP resolver's FetchHttpResource function calls io.ReadAll(resp.Body) with no response body size limit. Any tenant with permission to create TaskRuns or PipelineRuns that reference the HTTP resolver can point it at an attacker-controlled HTTP server that returns a very large response body within the 1-minute timeout window, causing the tekton-pipelines-resolvers pod to be OOM-killed by Kubernetes. Because all resolver types (Git, Hub, Bundle, Cluster, HTTP) run in the same pod, crashing this pod denies resolution service to the entire cluster. Repeated exploitation causes a sustained crash loop. The same vulnerable code path is reached by both the deprecated pkg/resolution/resolver/http and the current pkg/remoteresolution/resolver/http implementations. Versions 1.0.2, 1.3.4, 1.6.2, 1.9.3, and 1.11.1 fix the issue.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: poc · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- tektoncd pipeline
From 1.0.0 · fixed in 1.0.2; From 1.2.0 · fixed in 1.3.4; From 1.4.0 · fixed in 1.6.2; From 1.7.0 · fixed in 1.9.3; From 1.10.0 · fixed in 1.11.1
- github.com/tektoncd/pipelineGo
From 1.10.0 · fixed in 1.11.1
- github.com/tektoncd/pipelineGo
From 1.0.0 · fixed in 1.0.2
- github.com/tektoncd/pipelineGo
From 1.2.0 · fixed in 1.3.4
- github.com/tektoncd/pipelineGo
From 1.4.0 · fixed in 1.6.2
- github.com/tektoncd/pipelineGo
From 1.7.0 · fixed in 1.9.3
- github.com/tektoncd/pipelineGo
From 1.0.0 · fixed in 1.0.2; From 1.1.0 · fixed in 1.3.4; From 1.4.0 · fixed in 1.6.2; From 1.7.0 · fixed in 1.9.3; From 1.10.0 · fixed in 1.11.1