CVE-2026-50569Medium· 4.3▾ SunlitFission: HTTPTrigger admission omits RelativeURL / Prefix validation; kubectl apply bypasses CLI checks
▾ Sunlit zone — Low / medium · no exploitation signal
impact 23.7 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 28.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via GHSA
0.2%
0.2% → 0.2%
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:
/,/ (claiming the entire router root),.. traversal segments (e.g. /api/../admin),/router-healthz, /readyz, /_version, /auth/login,/fission-function/<ns>/<name>.github.com/fission/fission647c141pkg/apis/core/v1/validation.go:HTTPTriggerSpec.Validate (and the missing CEL on HTTPTriggerSpec)Fix section (paste into the Fix / Patches field)
Fixed in v1.25.0 by:
0deed6bf) — enforce the path-safety invariants at both admission layers so the API
server's CEL evaluation and the Go-side HTTPTriggerSpec.Validate() agree:
+kubebuilder:validation:XValidation rules on HTTPTriggerSpec (the API server's CEL admission gate, regenerated into crds/v1/fission.io_httptriggers.yaml):
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.
github.com/fission/fission <= 1.24.0Upgrade to a patched release:
github.com/fission/fission 1.25.0Connected by shared product, vendor, weakness, or advisory.
CVE-2026-50570High· 8.5Fission: Incomplete capability denylist in Environment/Function PodSpec validation allows tenant-added CAP_SYS_TIME and cross-tenant node wall-clock corruption
CVE-2026-50567High· 7.7Fission: Zip Slip in pkg/utils/zip.go:Unarchive allows fetcher to write outside the destination directory
CVE-2026-50568Low· 3.6Fission: SanitizeFilePath lexical HasPrefix bypass permits sibling-directory escape
CVE-2026-46612High· 8.8Fission StorageSvc /v1/archive endpoint exposes unauthenticated CRUD over all function archives
CVE-2026-46617HighFission runtime pods automount the fission-fetcher service-account token into the user function container, granting function code names…
GHSA-7m8x-qg2j-4m3vHigh· 8.1Fission: MessageQueueTrigger scaler manager materializes Secret values into Deployment envvars and accepts arbitrary user PodSpec