chore(deps): update module github.com/tektoncd/pipeline to v1.6.1 [security] (main)#812
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: redhat-renovate-bot The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
38bc28c to
aec68f9
Compare
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
aec68f9 to
86926f1
Compare
…curity] Signed-off-by: null <redhat-internal-renovate@redhat.com>
86926f1 to
a63f4e7
Compare
|
@redhat-renovate-bot: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
This PR contains the following updates:
v1.5.0→v1.6.1GitHub Vulnerability Alerts
CVE-2026-33211
Summary
The Tekton Pipelines git resolver is vulnerable to path traversal via the
pathInRepoparameter. A tenant with permission to createResolutionRequests(e.g. by creatingTaskRunsorPipelineRunsthat use the git resolver) can read arbitrary files from the resolver pod's filesystem, including ServiceAccount tokens. The file contents are returned base64-encoded inresolutionrequest.status.data.Details
The git resolver's
getFileContent()function inpkg/resolution/resolver/git/repository.goconstructs a file path by joining the repository clone directory with the user-suppliedpathInRepoparameter:The
pathInRepoparameter is not validated for path traversal sequences. An attacker can supply values like../../../../etc/passwdto escape the cloned repository directory and read arbitrary files from the resolver pod's filesystem.The vulnerability was introduced in commit
318006c4e3a5which switched the git resolver from the go-git library (using an in-memory filesystem that cannot be escaped) to shelling out to thegitbinary and reading files withos.ReadFile()from the real filesystem.Impact
Arbitrary file read — A namespace-scoped tenant who can create
TaskRunsorPipelineRunswith 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, thetekton-pipelines-resolversServiceAccount hasget,list, andwatchpermissions onsecretscluster-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
pathInRepoto reject paths containing..components at parameter validation time, and adds a containment check usingfilepath.EvalSymlinks()to prevent symlink-based escapes from attacker-controlled repositories.Workarounds
There is no workaround other than restricting which users can create
TaskRuns,PipelineRuns, orResolutionRequeststhat use the git resolver. Administrators can also reduce the impact by scoping the resolver pod's ServiceAccount RBAC permissions using a customClusterRolewith more restrictive rules.Affected Versions
All releases from v1.0.0 through v1.10.0, including all patch releases:
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
318006c4e3a5("fix: resolve Git Anonymous Resolver excessive memory usage")Path traversal in Tekton Pipelines git resolver allows reading arbitrary files from the resolver pod
CVE-2026-33211 / GHSA-j5q5-j9gm-2w5c / GO-2026-4761
More information
Details
Summary
The Tekton Pipelines git resolver is vulnerable to path traversal via the
pathInRepoparameter. A tenant with permission to createResolutionRequests(e.g. by creatingTaskRunsorPipelineRunsthat use the git resolver) can read arbitrary files from the resolver pod's filesystem, including ServiceAccount tokens. The file contents are returned base64-encoded inresolutionrequest.status.data.Details
The git resolver's
getFileContent()function inpkg/resolution/resolver/git/repository.goconstructs a file path by joining the repository clone directory with the user-suppliedpathInRepoparameter:The
pathInRepoparameter is not validated for path traversal sequences. An attacker can supply values like../../../../etc/passwdto escape the cloned repository directory and read arbitrary files from the resolver pod's filesystem.The vulnerability was introduced in commit
318006c4e3a5which switched the git resolver from the go-git library (using an in-memory filesystem that cannot be escaped) to shelling out to thegitbinary and reading files withos.ReadFile()from the real filesystem.Impact
Arbitrary file read — A namespace-scoped tenant who can create
TaskRunsorPipelineRunswith 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, thetekton-pipelines-resolversServiceAccount hasget,list, andwatchpermissions onsecretscluster-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
pathInRepoto reject paths containing..components at parameter validation time, and adds a containment check usingfilepath.EvalSymlinks()to prevent symlink-based escapes from attacker-controlled repositories.Workarounds
There is no workaround other than restricting which users can create
TaskRuns,PipelineRuns, orResolutionRequeststhat use the git resolver. Administrators can also reduce the impact by scoping the resolver pod's ServiceAccount RBAC permissions using a customClusterRolewith more restrictive rules.Affected Versions
All releases from v1.0.0 through v1.10.0, including all patch releases:
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
318006c4e3a5("fix: resolve Git Anonymous Resolver excessive memory usage")Severity
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Path traversal in Tekton Pipelines git resolver allows reading arbitrary files from the resolver pod in github.com/tektoncd/pipeline
CVE-2026-33211 / GHSA-j5q5-j9gm-2w5c / GO-2026-4761
More information
Details
Path traversal in Tekton Pipelines git resolver allows reading arbitrary files from the resolver pod in github.com/tektoncd/pipeline
Severity
Unknown
References
This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).
Tekton Pipelines controller panic via long resolver name in TaskRun/PipelineRun
CVE-2026-33022 / GHSA-cv4x-93xx-wgfj / GO-2026-4730
More information
Details
Summary
A user with permission to create or update a TaskRun or PipelineRun can crash the Tekton Pipelines controller by setting
.spec.taskRef.resolver(or.spec.pipelineRef.resolver) to a string of 31 characters or more, causing a denial of service for all reconciliation.Details
The controller panics in
GenerateDeterministicNameFromSpecwhen building a deterministicResolutionRequestname. The generated name has the format{resolver}-{hash}and, when the resolver name is long enough, the result exceeds the DNS-1123 label limit of 63 characters.The truncation logic attempts to find a word boundary using
strings.LastIndex(name, " "). Since the generated name never contains spaces (it is composed of the resolver name, a dash, and a hex-encoded hash),LastIndexreturns-1, which is then used as a slice bound:The panic crashes the controller. Because the offending TaskRun or PipelineRun is re-reconciled on restart, the controller enters a
CrashLoopBackOff, blocking all TaskRun and PipelineRun reconciliation cluster-wide until the offending resource is manually deleted.Built-in resolvers use short names (
git,cluster,bundles,hub) and are not affected under normal usage. The vulnerability is exploitable by any user who can create TaskRuns or PipelineRuns with a custom resolver name.Impact
Denial of service — A single malicious TaskRun or PipelineRun with a long resolver name is sufficient to crash the Tekton Pipelines controller into a restart loop, blocking all CI/CD reconciliation cluster-wide until the resource is removed.
Patches
Fixed in versions 1.0.1, 1.3.3, 1.6.1, 1.9.2, 1.10.2.
The fix computes the hash first, then truncates only the prefix (resolver name) to fit within the DNS-1123 label limit, preserving the full hash to maintain determinism and uniqueness of
ResolutionRequestnames.Workarounds
Restrict who can create TaskRun and PipelineRun resources via Kubernetes RBAC. There is no validation-side workaround without patching.
Affected Versions
All releases from v0.60.0 through v1.10.0.
The vulnerable truncation logic was introduced in commit
ea1fa7ad1fdc("Remote Resolution Refactor"), first released in v0.60.0 (2024-05-22).Currently supported affected releases:
Releases prior to v0.60.0 are not affected — the truncation code did not exist.
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
ea1fa7ad1fdc("Remote Resolution Refactor")Severity
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Release Notes
tektoncd/pipeline (github.com/tektoncd/pipeline)
v1.6.1: Tekton Pipeline release v1.6.1 "Sphynx Sentinels"Compare Source
-Docs @ v1.6.1
-Examples @ v1.6.1
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a4ba876bd39916b4123385435497b76a0e5cfee59ac292230166e5ded5b9d4596Obtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
GHSA-j5q5-j9gm-2w5c (Critical): Path traversal in git resolver allows reading arbitrary files from the resolver pod. Fixed by validating the
pathInRepoparameter to prevent directory traversal.GHSA-cv4x-93xx-wgfj / CVE-2026-33022 (Medium): Controller panic via long resolver name in TaskRun/PipelineRun. A user with permission to create TaskRuns or PipelineRuns could crash the controller into a restart loop by setting a resolver name of 31+ characters, causing denial of service cluster-wide. Thanks to @1seal for reporting this vulnerability.
Features
hostUsersfield in PodTemplate to control user namespace isolation (#9324)Fixes
Misc
Thanks
Thanks to these contributors who contributed to v1.6.1!
v1.6.0: Tekton Pipeline release v1.6.0 LTS "Sphynx Sentinels"Compare Source
🎉 Resolvers caching, Pipeline in Pipeline, and better ARM64 support & tested releases 🎉
-Docs @ v1.6.0
-Examples @ v1.6.0
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a288ca8343f66259e4a615801fa37703480d82893d1c6a45a2935a6632beb4164Obtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
Features
Support caching for bundle, git, and cluster resolvers, reducing redundant fetches and improving pipeline performance.
Key Features:
always(cache everything),never(disable caching),auto(cache only immutable references - default)cacheparameterThis helps reduce external API calls, improves pipeline exec speed, and provides better resilience during remote resource resolution.
Array values can now be resolved in the
Inputattribute ofWhenexpressionsadd displayName field to Step.
A Pipeline can now execute embedded Pipelines (Pipelines-in-Pipelines) using the
PipelineSpecfield undertasks. Refer to the TEP-0056 for more details.Fixes
With this change, unknown DryRunValidation errors during TaskRef and PipelineRef resolution no longer cause PipelineRuns and TaskRuns to fail. Explicit Validation errors will still cause the Run to fail.
Added signal handling to SidecarLog to support Kubernetes-native sidecar functionality, preventing repeated restarts of the init container.
If Feature flag "keep-pod-on-cancel" is set to true then pods corresponding to TaskRun will be not be deleted when TaskRun Times Out. Earlier pod was retained only if it taskrun was canceled.
Binary file (standard input) matches
Misc
d03a93ctodbf178c(#9101)2036da1tod03a93c(#9058)Docs
Thanks
Thanks to these contributors who contributed to v1.6.0!
Extra shout-out for awesome release notes:
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.