Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/vulndb: potential Go vuln in github.com/tektoncd/pipeline: CVE-2023-37264 #1901

Closed
GoVulnBot opened this issue Jul 7, 2023 · 3 comments
Assignees
Labels
excluded: EFFECTIVELY_PRIVATE This vulnerability exists in a package can be imported, but isn't meant to be outside that module.

Comments

@GoVulnBot
Copy link

CVE-2023-37264 references github.com/tektoncd/pipeline, which may be a Go module.

Description:
Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style pipelines. Starting in version 0.35.0, pipelines do not validate child UIDs, which means that a user that has access to create TaskRuns can create their own Tasks that the Pipelines controller will accept as the child Task. While the software stores and validates the PipelineRun's (api version, kind, name, uid) in the child Run's OwnerReference, it only store (api version, kind, name) in the ChildStatusReference. This means that if a client had access to create TaskRuns on a cluster, they could create a child TaskRun for a pipeline with the same name + owner reference, and the Pipeline controller picks it up as if it was the original TaskRun. This is problematic since it can let users modify the config of Pipelines at runtime, which violates SLSA L2 Service Generated / Non-falsifiable requirements. This issue can be used to trick the Pipeline controller into associating unrelated Runs to the Pipeline, feeding its data through the rest of the Pipeline. This requires access to create TaskRuns, so impact may vary depending on one Tekton setup. If users already have unrestricted access to create any Task/PipelineRun, this does not grant any additional capabilities. As of time of publication, there are no known patches for this issue.

References:

Cross references:
No existing reports found with this module or alias.

See doc/triage.md for instructions on how to triage this report.

modules:
    - module: github.com/tektoncd/pipeline
      vulnerable_at: 0.49.0
      packages:
        - package: pipeline
description: |-
    Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style
    pipelines. Starting in version 0.35.0, pipelines do not validate child UIDs,
    which means that a user that has access to create TaskRuns can create their own
    Tasks that the Pipelines controller will accept as the child Task. While the
    software stores and validates the PipelineRun's (api version, kind, name, uid)
    in the child Run's OwnerReference, it only store (api version, kind, name) in
    the ChildStatusReference. This means that if a client had access to create
    TaskRuns on a cluster, they could create a child TaskRun for a pipeline with the
    same name + owner reference, and the Pipeline controller picks it up as if it
    was the original TaskRun. This is problematic since it can let users modify the
    config of Pipelines at runtime, which violates SLSA L2 Service Generated /
    Non-falsifiable requirements. This issue can be used to trick the Pipeline
    controller into associating unrelated Runs to the Pipeline, feeding its data
    through the rest of the Pipeline. This requires access to create TaskRuns, so
    impact may vary depending on one Tekton setup. If users already have
    unrestricted access to create any Task/PipelineRun, this does not grant any
    additional capabilities. As of time of publication, there are no known patches
    for this issue.
cves:
    - CVE-2023-37264
references:
    - advisory: https://github.com/tektoncd/pipeline/security/advisories/GHSA-w2h3-vvvq-3m53
    - web: https://github.com/tektoncd/pipeline/blob/2d38f5fa840291395178422d34b36b1bc739e2a2/pkg/reconciler/pipelinerun/pipelinerun.go#L1358-L1372
    - web: https://pkg.go.dev/github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1#ChildStatusReference

@maceonthompson maceonthompson self-assigned this Jul 12, 2023
@maceonthompson maceonthompson added the excluded: EFFECTIVELY_PRIVATE This vulnerability exists in a package can be imported, but isn't meant to be outside that module. label Jul 12, 2023
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/509516 mentions this issue: data/excluded: batch add 6 excluded reports

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/592761 mentions this issue: data/reports: unexclude 75 reports

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/606787 mentions this issue: data/reports: unexclude 20 reports (7)

gopherbot pushed a commit that referenced this issue Aug 20, 2024
  - data/reports/GO-2023-1862.yaml
  - data/reports/GO-2023-1863.yaml
  - data/reports/GO-2023-1864.yaml
  - data/reports/GO-2023-1865.yaml
  - data/reports/GO-2023-1866.yaml
  - data/reports/GO-2023-1871.yaml
  - data/reports/GO-2023-1879.yaml
  - data/reports/GO-2023-1887.yaml
  - data/reports/GO-2023-1888.yaml
  - data/reports/GO-2023-1891.yaml
  - data/reports/GO-2023-1892.yaml
  - data/reports/GO-2023-1894.yaml
  - data/reports/GO-2023-1895.yaml
  - data/reports/GO-2023-1896.yaml
  - data/reports/GO-2023-1897.yaml
  - data/reports/GO-2023-1898.yaml
  - data/reports/GO-2023-1899.yaml
  - data/reports/GO-2023-1900.yaml
  - data/reports/GO-2023-1901.yaml
  - data/reports/GO-2023-1911.yaml

Updates #1862
Updates #1863
Updates #1864
Updates #1865
Updates #1866
Updates #1871
Updates #1879
Updates #1887
Updates #1888
Updates #1891
Updates #1892
Updates #1894
Updates #1895
Updates #1896
Updates #1897
Updates #1898
Updates #1899
Updates #1900
Updates #1901
Updates #1911

Change-Id: Iffcbe8e6325ef654a17298cd4c7072192626ad21
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/606787
Auto-Submit: Tatiana Bradley <tatianabradley@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
excluded: EFFECTIVELY_PRIVATE This vulnerability exists in a package can be imported, but isn't meant to be outside that module.
Projects
None yet
Development

No branches or pull requests

3 participants