Loading...
Skip to main content

CVE-2026-33211 — Path traversal in github.com/tektoncd/pipeline —...

CRITICAL

Path traversal in Tekton Pipelines git resolver allows reading arbitrary files from the resolver pod

Published March 18, 2026Updated September 10, 2026Source: osv

Summary

### Summary The Tekton Pipelines git resolver is vulnerable to path traversal via the `pathInRepo` parameter. A tenant with permission to create `ResolutionRequests` (e.g. by creating `TaskRuns` or `PipelineRuns` that use the git resolver) can read arbitrary files from the resolver pod's filesystem, including ServiceAccount tokens. The file contents are returned base64-encoded in `resolutionrequest.status.data`. ### Details The git resolver's `getFileContent()` function in `pkg/resolution/resolver/git/repository.go` constructs a file path by joining the repository clone directory with the user-supplied `pathInRepo` parameter: ```go fileContents, err := os.ReadFile(filepath.Join(repo.directory, path)) ``` The `pathInRepo` parameter is not validated for path traversal sequences. An attacker can supply values like `../../../../etc/passwd` to escape the cloned repository directory and read arbitrary files from the resolver pod's filesystem. The vulnerability was introduced in commit `318006c4e3a5` which switched the git resolver from the go-git library (using an in-memory filesystem that cannot be escaped) to shelling out to the `git` binary and reading files with `os.ReadFile()` from the real filesystem. ### Impact **Arbitrary file read** — A namespace-scoped tenant who can create `TaskRuns` or `PipelineRuns` with git resolver parameters can read any file readable by the resolver pod process. **Credential exfiltration and privilege escalation** — The resolver pod's ServiceAccount token is readable at a well-known path (`/var/run/secrets/kubernetes.io/serviceaccount/token`). In the default RBAC configuration, the `tekton-pipelines-resolvers` ServiceAccount has `get`, `list`, and `watch` permissions on `secrets` cluster-wide. An attacker who exfiltrates this token gains the ability to read all Secrets across all namespaces, escalating from namespace-scoped access to cluster-wide secret access. ### Patches Fixed in 1.0.x, 1.3.x, 1.6.x, 1.9.x, 1.10.x. The fix validates `pathInRepo` to reject paths containing `..` components at parameter validation time, and adds a containment check using `filepath.EvalSymlinks()` to prevent symlink-based escapes from attacker-controlled repositories. ### Workarounds There is no workaround other than restricting which users can create `TaskRuns`, `PipelineRuns`, or `ResolutionRequests` that use the git resolver. Administrators can also reduce the impact by scoping the resolver pod's ServiceAccount RBAC permissions using a custom `ClusterRole` with more restrictive rules. ### Affected Versions All releases from **v1.0.0** through **v1.10.0**, including all patch releases: - v1.0.0, v1.1.0, v1.2.0 - v1.3.0, v1.3.1, v1.3.2 - v1.4.0, v1.5.0, v1.6.0, v1.7.0 - v1.9.0, v1.9.1, v1.10.0 Releases prior to v1.0.0 (e.g. v0.70.0 and earlier) are **not affected** because they used the go-git library's in-memory filesystem where path traversal cannot escape the git worktree. ### Acknowledgments This vulnerability was reported by Oleh Konko (@1seal), who provided a thorough vulnerability analysis, proof-of-concept, and review of the fix. Thank you! ### References - Fix: _(link to merged PR/commit)_ - Introduced in: `318006c4e3a5` ("fix: resolve Git Anonymous Resolver excessive memory usage")

Advisory Timeline

  • First published March 18, 2026 (208 days ago).
  • Last revised September 10, 2026 — 175 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/tektoncd/pipeline to 1.0.1 or later
go get github.com/tektoncd/pipeline@v1.0.1
Go
Update github.com/tektoncd/pipeline to 1.10.2 or later
go get github.com/tektoncd/pipeline@v1.10.2
Go
Update github.com/tektoncd/pipeline to 1.6.1 or later
go get github.com/tektoncd/pipeline@v1.6.1
Go
Update github.com/tektoncd/pipeline to 1.9.2 or later
go get github.com/tektoncd/pipeline@v1.9.2
Go
Update github.com/tektoncd/pipeline to 1.3.3 or later
go get github.com/tektoncd/pipeline@v1.3.3

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (5)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/tektoncd/pipeline
go
All versions1.0.1
github.com/tektoncd/pipeline
go
All versions1.10.2
github.com/tektoncd/pipeline
go
All versions1.6.1
github.com/tektoncd/pipeline
go
All versions1.9.2
github.com/tektoncd/pipeline
go
All versions1.3.3

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.6 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N

Frequently Asked Questions

What is CVE-2026-33211?
Path traversal in Tekton Pipelines git resolver allows reading arbitrary files from the resolver pod This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 9.6/10).
How do I check if my project is affected by CVE-2026-33211?
CVE-2026-33211 affects github.com/tektoncd/pipeline. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-33211 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.6

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-j5q5-j9gm-2w5c
GO-2026-4761

Related CVEs

  • CVE-2026-107806
    CRITICAL

    Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite

  • CVE-2026-68582
    CRITICAL

    Vikunja: Link-share token reads any tenant's kanban buckets and enumerates usernames/IDs instance-wide (BOLA)

  • CVE-2026-40938
    HIGH

    Tekton Pipeline: Git Resolver Unsanitized Revision Parameter Enables git Argument Injection Leading to RCE

  • CVE-2026-40161
    HIGH

    Tekton Pipelines: Git resolver API mode leaks system-configured API token to user-controlled serverURL

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies