{"id":"CVE-2026-40923","aliases":["GHSA-rx35-6rhx-7858","GO-2026-5643"],"url":"https://o3.security/vulnerability/CVE-2026-40923","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.","published":"2026-04-21T20:50:53.742Z","modified":"2026-10-28T02:31:11.244913442Z","cvss":{"score":5.4,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N"},"epss":{"score":0.0022,"percentile":0.12669,"asOf":"2026-08-12"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Go","name":"github.com/tektoncd/pipeline","fixedVersion":"1.11.1"},{"ecosystem":"Go","name":"github.com/tektoncd/pipeline","fixedVersion":"1.9.3"},{"ecosystem":"Go","name":"github.com/tektoncd/pipeline","fixedVersion":"1.6.2"},{"ecosystem":"Go","name":"github.com/tektoncd/pipeline","fixedVersion":"1.3.4"},{"ecosystem":"Go","name":"github.com/tektoncd/pipeline","fixedVersion":"1.0.2"}],"fix":null,"references":[{"type":"WEB","url":"https://github.com/tektoncd/pipeline/releases/tag/v1.11.1"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40923.json"},{"type":"ADVISORY","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"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-28T02:31:11.244913442Z"}}