{"id":"GHSA-rx35-6rhx-7858","summary":"Tekton Pipelines: VolumeMount path restriction bypass via missing filepath.Clean in /tekton/ check","details":"### Summary\n\nA validation bypass in the VolumeMount path restriction allows mounting\nvolumes under restricted `/tekton/` internal paths by using `..` path\ntraversal components. The restriction check uses `strings.HasPrefix`\nwithout `filepath.Clean`, so a path like `/tekton/home/../results`\npasses validation but resolves to `/tekton/results` at runtime.\n\n### Details\n\nTekton Pipelines restricts VolumeMount paths under `/tekton/` (except\n`/tekton/home`) to prevent users from interfering with internal\nexecution state. The validation at\n`pkg/apis/pipeline/v1/container_validation.go` checks mount paths using\n`strings.HasPrefix` without normalizing the path first:\n\n```go\nif strings.HasPrefix(vm.MountPath, \"/tekton/\") &&\n    !strings.HasPrefix(vm.MountPath, \"/tekton/home\") {\n    // reject\n}\n```\n\nBecause `/tekton/home` is an allowed prefix, a path like\n`/tekton/home/../results` passes both checks. At runtime, the container\nruntime resolves `..` and the actual mount point becomes\n`/tekton/results`.\n\nThe same pattern exists in `pkg/apis/pipeline/v1beta1/task_validation.go`.\n\n### Impact\n\nAn authenticated user with Task or TaskRun creation permissions can\nmount volumes over internal Tekton paths, potentially:\n\n- Writing fake task results that downstream pipelines trust\n- Reading or modifying step scripts before execution\n- Interfering with entrypoint coordination state\n\n### Patches\n\n_(to be filled: fixed in versions X.Y.Z)_\n\n### Workarounds\n\n- Use admission controllers (OPA/Gatekeeper, Kyverno) to validate that\n  VolumeMount paths do not contain `..` components.\n- In multi-tenant setups, restrict who can create Task and TaskRun\n  resources via RBAC.\n\n### Affected Versions\n\nAll versions through **v1.10.0** (both `v1` and `v1beta1` APIs).\n\n### Acknowledgments\n\nThis vulnerability was reported by @kodareef5.","aliases":["CVE-2026-40923","GO-2026-5643"],"modified":"2026-07-17T21:16:46.172516783Z","published":"2026-04-21T20:26:41Z","database_specific":{"github_reviewed_at":"2026-04-21T20:26:41Z","nvd_published_at":"2026-04-21T21:16:45Z","cwe_ids":["CWE-22"],"severity":"MODERATE","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/tektoncd/pipeline/security/advisories/GHSA-rx35-6rhx-7858"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40923"},{"type":"PACKAGE","url":"https://github.com/tektoncd/pipeline"},{"type":"WEB","url":"https://github.com/tektoncd/pipeline/releases/tag/v1.11.1"}],"affected":[{"package":{"name":"github.com/tektoncd/pipeline","ecosystem":"Go","purl":"pkg:golang/github.com/tektoncd/pipeline"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.10.0"},{"fixed":"1.11.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-rx35-6rhx-7858/GHSA-rx35-6rhx-7858.json"}},{"package":{"name":"github.com/tektoncd/pipeline","ecosystem":"Go","purl":"pkg:golang/github.com/tektoncd/pipeline"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.7.0"},{"fixed":"1.9.3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-rx35-6rhx-7858/GHSA-rx35-6rhx-7858.json"}},{"package":{"name":"github.com/tektoncd/pipeline","ecosystem":"Go","purl":"pkg:golang/github.com/tektoncd/pipeline"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.4.0"},{"fixed":"1.6.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-rx35-6rhx-7858/GHSA-rx35-6rhx-7858.json"}},{"package":{"name":"github.com/tektoncd/pipeline","ecosystem":"Go","purl":"pkg:golang/github.com/tektoncd/pipeline"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.2.0"},{"fixed":"1.3.4"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-rx35-6rhx-7858/GHSA-rx35-6rhx-7858.json"}},{"package":{"name":"github.com/tektoncd/pipeline","ecosystem":"Go","purl":"pkg:golang/github.com/tektoncd/pipeline"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.0.0"},{"fixed":"1.0.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-rx35-6rhx-7858/GHSA-rx35-6rhx-7858.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N"}]}