Fission: HTTPTrigger admission omits RelativeURL / Prefix validation; kubectl apply bypasses CLI checks (CVE-2026-50569)
`HTTPTriggerSpec.Validate()` validated `Methods`, `FunctionReference`, `Host`, `IngressConfig`, and `CorsConfig`, but silently skipped `RelativeURL` and `Prefix`. Those two fields were validated at the CLI level only (`pkg/fission-cli/cmd/httptrigger/create.go:83`). The post-CRD-modernization webhook for HTTPTrigger was retired in favor of API-server CEL — and CEL had no rules on those fields either — so an HTTPTrigger created via `kubectl apply` or a direct Kubernetes REST API call bypassed every URL-level check. A tenant with HTTPTrigger create permission could therefore create triggers whose `RelativeURL` or `Prefix`: - was empty (with both fields unset, the trigger has no URL), - did not start with `/`, - was exactly `/` (claiming the entire router root), - contained `..` traversal segments (e.g. `/api/../admin`), - collided with router-owned routes: `/router-healthz`, `/readyz`, `/_version`, `/auth/login`, - collided with the router-internal function prefix `/fission-function/<ns>/<name>`. ### Affected - Project: `github.com/fission/fission` - Versions: all versions through v1.24.0 - Audited commit: `647c141` - Component: `pkg/apis/core/v1/validation.go:HTTPTriggerSpec.Validate` (and the missing CEL on `HTTPTriggerSpec`) - Configuration: default Fix section (paste into the Fix / Patches field) Fixed in [v1.25.0](https://github.com/fission/fission/releases/tag/v1.25.0) by: - [PR #3464](https://github.com/fission/fission/pull/3464) (commit [`0deed6bf`](https://github.com/fission/fission/commit/0deed6bf2af2a0c0c6094b25e1a0afad36773e3b)) — enforce the path-safety invariants at both admission layers so the API server's CEL evaluation and the Go-side `HTTPTriggerSpec.Validate()` agree: - Three `+kubebuilder:validation:XValidation` rules on `HTTPTriggerSpec` (the API server's CEL admission gate, regenerated into `crds/v1/fission.io_httptriggers.yaml`): - at least one of `relativeurl` or `prefix` must be non-empty; - `relativeurl`, when set, must start with `/`, must not be `/`, must contain no `..` segment, must not be in the reserved exact-path set, and must not start with `/fission-function/`; - `prefix`, when set, the same rules guarded by `has(self.prefix)`. - `validateTriggerPath` helper in `pkg/apis/core/v1/validation.go`, invoked from `HTTPTriggerSpec.Validate()`, mirrors the CEL rules so the CLI's early rejection and the router reconciler's status-Condition path match what the API server admits. Regression coverage: a new `TestHTTPTriggerSpecValidate_Path` table in `pkg/apis/core/v1/validation_validators_test.go` exercises every PoC case from the advisory plus literal `..`-prefixed-segment positives that must remain allowed.
Fission: HTTPTrigger admission omits RelativeURL / Prefix validation; kubectl apply bypasses CLI checks (CVE-2026-50569)
Description
`HTTPTriggerSpec.Validate()` validated `Methods`, `FunctionReference`, `Host`, `IngressConfig`, and `CorsConfig`, but silently skipped `RelativeURL` and `Prefix`. Those two fields were validated at the CLI level only (`pkg/fission-cli/cmd/httptrigger/create.go:83`). The post-CRD-modernization webhook for HTTPTrigger was retired in favor of API-server CEL — and CEL had no rules on those fields either — so an HTTPTrigger created via `kubectl apply` or a direct Kubernetes REST API call bypassed every URL-level check. A tenant with HTTPTrigger create permission could therefore create triggers whose `RelativeURL` or `Prefix`: - was empty (with both fields unset, the trigger has no URL), - did not start with `/`, - was exactly `/` (claiming the entire router root), - contained `..` traversal segments (e.g. `/api/../admin`), - collided with router-owned routes: `/router-healthz`, `/readyz`, `/_version`, `/auth/login`, - collided with the router-internal function prefix `/fission-function/<ns>/<name>`. ### Affected - Project: `github.com/fission/fission` - Versions: all versions through v1.24.0 - Audited commit: `647c141` - Component: `pkg/apis/core/v1/validation.go:HTTPTriggerSpec.Validate` (and the missing CEL on `HTTPTriggerSpec`) - Configuration: default Fix section (paste into the Fix / Patches field) Fixed in [v1.25.0](https://github.com/fission/fission/releases/tag/v1.25.0) by: - [PR #3464](https://github.com/fission/fission/pull/3464) (commit [`0deed6bf`](https://github.com/fission/fission/commit/0deed6bf2af2a0c0c6094b25e1a0afad36773e3b)) — enforce the path-safety invariants at both admission layers so the API server's CEL evaluation and the Go-side `HTTPTriggerSpec.Validate()` agree: - Three `+kubebuilder:validation:XValidation` rules on `HTTPTriggerSpec` (the API server's CEL admission gate, regenerated into `crds/v1/fission.io_httptriggers.yaml`): - at least one of `relativeurl` or `prefix` must be non-empty; - `relativeurl`, when set, must start with `/`, must not be `/`, must contain no `..` segment, must not be in the reserved exact-path set, and must not start with `/fission-function/`; - `prefix`, when set, the same rules guarded by `has(self.prefix)`. - `validateTriggerPath` helper in `pkg/apis/core/v1/validation.go`, invoked from `HTTPTriggerSpec.Validate()`, mirrors the CEL rules so the CLI's early rejection and the router reconciler's status-Condition path match what the API server admits. Regression coverage: a new `TestHTTPTriggerSpecValidate_Path` table in `pkg/apis/core/v1/validation_validators_test.go` exercises every PoC case from the advisory plus literal `..`-prefixed-segment positives that must remain allowed.
CVSS v3.1
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-vchh-r53j-8mpw
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-50569"]
- Ecosystems
- ["Go"]
- Database Specific Severity
- MODERATE
- Cvss Version
- 3.1
Threat ID: 6a6940a49c2644c7f868625f
Added to database: 07/28/2026, 23:52:04 UTC
Last updated: 07/29/2026, 00:51:33 UTC
Views: 3
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.