chore(deps): update module github.com/tektoncd/pipeline to v1 [security] (release-v0.24)#813
Conversation
|
|
[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 |
|
[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 |
e687b24 to
a4c95c7
Compare
Signed-off-by: null <redhat-internal-renovate@redhat.com>
a4c95c7 to
f589d15
Compare
|
@redhat-renovate-bot: The following tests 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:
v0.65.2→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")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:
v1.5.0: Tekton Pipeline release v1.5.0 "Bombay Robbie"Compare Source
🎉 Use
managedByto delegatepipelineRunandtaskRunlifecycle control 🎉-Docs @ v1.5.0
-Examples @ v1.5.0
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a657cc892687dc9dbf41be24c29f51d2f5fc1092446b0739ec5280bb6b0bc1b82Obtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
Features
Added a "managedBy" field to delegate responsibility of controlling the lifecycle of PipelineRuns/TaskRuns.
The semantics of the field:
Whenever the value is set, and it does not point to the built-in controller, then we skip the reconciliation.
Fixes
Misc
Docs
Thanks
Thanks to these contributors who contributed to v1.5.0!
Extra shout-out for awesome release notes:
v1.4.0: Tekton Pipeline release v1.4.0 "Kurilian K-2SO"Compare Source
🎉 Improved remote resolution and timeout configuration 🎉
-Docs @ v1.4.0
-Examples @ v1.4.0
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a040c237838848039376864340e5217f6c7c23f294d61437c3d196cb1112b91f1Obtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
Features
The resolution of
StepActionswithin aTaskRunis now performed concurrently, which can significantly reduce the time it takes for aTaskRunto start, especially when using multiple remoteStepActions.PipelineRun do not fail anymore if the pvc creation is due to an exceeded quota ; it will be requeued instead (until quota is available or it times out)
feature: PipelineRun can now override individual task timeouts with spec.taskRunSpecs[].timeout
Fixes
Updated the sidecar implementation to check the completion status of initContainers before marking the taskRun complete.
Fixed tekton_pipelines_controller_running_pipelineruns metric to exclude pending PipelineRuns, it now counts only running PipelineRuns
Updating tini-git base image to be multi-platform, also fixing the resolvers image.
Bug fix: Before this change, there was a regression in which the git resolver was not authenticating with the provided
gitTokenandgitTokenKey, breaking the git resolver's http token-based auth. After this change, all git operations performed by the git resolver use the providedgitTokenfor remote authentication.Misc
f963b3fto2036da1(#8975)0559708tof963b3f(#8964)Docs
Update examples and documentation to use ArtifactHub instead of the deprecated Tekton Hub for resource discovery and management.
Thanks
Thanks to these contributors who contributed to v1.4.0!
Extra shout-out for awesome release notes:
v1.3.3: Tekton Pipeline release v1.3.3 "Maine Coon Melfina"Compare Source
-Docs @ v1.3.3
-Examples @ v1.3.3
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a876fa60f37e6445548fabd0dc463c51c7f8b06b07c242eb0921ee277008b088cObtain 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 (#9323)Fixes
gitTokenandgitTokenKey, breaking the git resolver's http token-based auth. After this change, all git operations performed by the git resolver use the providedgitTokenfor remote authentication.Misc
Thanks
Thanks to these contributors who contributed to v1.3.3!
v1.3.2: Tekton Pipeline release v1.3.2 "Maine Coon Melfina"Compare Source
-Docs @ v1.3.2
-Examples @ v1.3.2
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a00888046c319538ae57e1af2654be73472fb885d0554f5181b0736e1edb7c6edObtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
Features
Fixes
Updated the sidecar implementation to check the completion status of initContainers before marking the taskRun complete.
🐛 [release-v1.3.x] Disable the Gitea e2e tests temporarily to unblock (#9014)
🐛 [release-v1.3.x] Do not fail PipelineRun if pvc creation error is because of exceeded quotas (#9000)
🐛 [release-v1.3.x] fix: exclude pending PipelineRuns from
tekton_pipelines_controller_running_pipelinerunsmetric (#8980)Fixed
tekton_pipelines_controller_running_pipelinerunsmetric to exclude pending PipelineRuns, it now counts only running PipelineRunsThanks
Thanks to these contributors who contributed to v1.3.2!
Extra shout-out for awesome release notes:
v1.3.1: Tekton Pipeline release v1.3.1 LTS "Maine Coon Melfina"Compare Source
-Docs @ v1.3.1
-Examples @ v1.3.1
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a77b37b5b643558bf2653e7f5a4673c506372b8892e9c8634dc7cae29721d15deObtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
Features
Fixes
pdating tini-git base image to be multi-platform, also fixing the resolvers image.
Misc
Docs
Thanks
Thanks to these contributors who contributed to v1.3.1!
Extra shout-out for awesome release notes:
v1.3.0: Tekton Pipeline release v1.3.0 LTS "Maine Coon Melfina"Compare Source
-Docs @ v1.3.0
-Examples @ v1.3.0
Installation one-liner
Attestation
The Rekor UUID for this release is
108e9186e8c5677a690a6f48618080e44983b879f4ffb9b371b7107159bb3d4ab3052aa68e47dc74Obtain the attestation:
Verify that all container images in the attestation are in the release file:
Changes
Features
Introduced exponential backoff retry mechanism for
createPodfunction to improve robustness against transient webhook issues in a heavy cluster during resource creation.createTaskRunandcreateCustomRunfunctions.enable-wait-exponential-backoff: "true"in thefeature-flagsConfigMap.wait-exponential-backoffConfigMap.Default
threads-per-controllervalue can be override byTHREADS_PER_CONTROLLERenv varAs part of improving high availability (HA) for the Tekton Pipelines controller, this update adds a preferredDuringSchedulingIgnoredDuringExecution pod anti-affinity rule. This ensures that multiple replicas of the controller are preferably scheduled on different nodes, red
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.