Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Network-triggered via TaskRun creation (AV:N/AC:L), requires low-privilege RBAC (PR:L), no confidentiality or integrity impact, high availability loss from OOM-kill of shared resolver pod.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
6DescriptionGitHub Advisory
Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style pipelines. Prior to 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. This vulnerability is fixed in 1.11.1.
AnalysisAI
Unbounded memory allocation in Tekton Pipelines' HTTP resolver allows any authenticated tenant to crash the shared resolver pod for an entire Kubernetes cluster. The FetchHttpResource function reads HTTP response bodies without a byte-level size cap, so a low-privileged user who can create TaskRuns or PipelineRuns can direct the resolver at an attacker-controlled server delivering multi-gigabyte responses, exhausting the pod's 4 GiB memory limit and triggering an OOM-kill. Because all resolver types - Git, Hub, Bundle, Cluster, and HTTP - share the same tekton-pipelines-resolvers pod, repeated exploitation causes a sustained crash loop that denies CI/CD pipeline resolution to every tenant on the cluster. A PoC is included in the GHSA advisory and SSVC confirms exploit code exists; however, no CISA KEV listing indicates no confirmed widespread exploitation at time of analysis.
Technical ContextAI
The root cause is CWE-400 (Uncontrolled Resource Consumption) in Go's io.ReadAll(resp.Body) call inside FetchHttpResource, present in both the deprecated pkg/resolution/resolver/http/resolver.go (line 279-307) and the current pkg/remoteresolution/resolver/http/resolver.go (line 90), which delegates directly to the same function. The HTTP client enforces a 1-minute duration timeout (configurable via fetch-timeout in the http-resolver-config ConfigMap), which bounds how long the request runs but imposes no cap on the number of bytes allocated in memory. The resolver deployment (config/core/deployments/resolvers-deployment.yaml) sets a 4 GiB memory limit on the controller container; at 100 MB/s delivery, an attacker server can push 6 GB before the timeout fires, comfortably exceeding the limit. CPE cpe:2.3:a:tektoncd:pipeline:*:*:*:*:*:*:*:* covers all affected builds. Kubernetes OOM-kills the pod when the limit is breached, and because all resolver types run in that single pod, the entire resolution subsystem collapses simultaneously.
RemediationAI
Upgrade Tekton Pipelines to v1.11.1 (latest fix) or the appropriate backport for your release branch: v1.0.2, v1.3.4, or v1.6.2. The v1.11.1 release can be applied with kubectl apply -f https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.11.1/release.yaml; see the release page at https://github.com/tektoncd/pipeline/releases/tag/v1.11.1 for attestation and verification steps. As an interim compensating control, restrict Kubernetes RBAC to prevent untrusted tenants from creating TaskRuns or PipelineRuns that reference the HTTP resolver - this is the most effective short-term mitigation but requires auditing existing role bindings. Disabling the HTTP resolver entirely in the http-resolver-config ConfigMap eliminates the attack surface at the cost of breaking any pipelines using HTTP-based resource resolution. Reducing the fetch-timeout value shrinks the exploitation window but does not cap byte allocation and is not a sufficient standalone control - a fast server can still deliver gigabytes in seconds.
More in Kubernetes
View allA critical vulnerability in Kubernetes ingress-nginx controller allows unauthenticated attackers with pod network access
Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actio
Kubernetes ingress-nginx contains a configuration injection vulnerability via the mirror-target and mirror-host Ingress
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-url` Ingres
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-tls-match-c
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.exter
A security issue was discovered in Kubernetes where a user that can create pods on Windows nodes may be able to escalate
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne
Unauthenticated remote attackers can trigger complete database overwrites, server-side file reads, and SSRF attacks agai
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
Fluentd configuration injection in the kube-logging Logging operator before 6.6.0 allows a namespace-scoped user who can
Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass
Same weakness CWE-400 – Uncontrolled Resource Consumption
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: MediumShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-24483
GHSA-m2cx-gpqf-qf74