Loading...
Skip to main content

CVE-2026-50570 — Fission: Incomplete capability denylist in...

HIGH

Fission: Incomplete capability denylist in Environment/Function PodSpec validation allows tenant-added CAP_SYS_TIME and cross-tenant node wall-clock corruption

Published July 28, 2026Updated August 18, 2026Source: osv

Summary

Fission v1.24.0 added PodSpec safety validation for tenant-facing Environment and Function CRDs (`ValidatePodSpecSafety` / `ValidateContainerSafety` admission webhook + `sanitizeContainerSecurityContext` executor merge layer), but the capability check was implemented as a fixed **denylist of six Linux capabilities** (SYS_ADMIN, NET_ADMIN, SYS_PTRACE, SYS_MODULE, DAC_READ_SEARCH, DAC_OVERRIDE). The denylist omitted **CAP_SYS_TIME**, among others. As a result, a tenant who could create a Function or Environment CRD could request `securityContext.capabilities.add: ["SYS_TIME"]`, pass Fission's admission validation and merge-layer sanitization, and run attacker-controlled code with `CAP_SYS_TIME` in the resulting function or runtime container. Demonstrated consequence: cross-tenant node integrity damage via `CAP_SYS_TIME`. The Linux real-time clock is not namespaced — time namespaces virtualize only `MONOTONIC` and `BOOTTIME`, never `REALTIME` — so a tenant container holding `CAP_SYS_TIME` could call `clock_settime(CLOCK_REALTIME)` and rewrite the shared node wall clock. That corrupts TLS / certificate validity windows, Kubernetes lease renewal, token expiry, scheduling, and time-series for every workload on the node. The denylist also omitted `SYS_RAWIO`, `BPF`, `SYS_RESOURCE`, and `MAC_ADMIN`. Those are documented as evidence that the denylist is structurally incomplete (their practical impact is kernel-, LSM-, or device-cgroup-dependent and is not exercised in this report). The deeper structural problem: a denylist on `capabilities.add` cannot constrain capabilities the OCI runtime grants by default — `DAC_OVERRIDE` is in the OCI default cap set and reaches the container regardless of any `add` check, partially mooting the denylist for its own entries. A capability allowlist (with `drop:["ALL"]` to remove the default set) is the only model that addresses both problems. ### Affected - Project: `github.com/fission/fission` - Versions: `<= 1.24.0` - Audited commits: v1.24.0 tag (`ce617120`) and current HEAD at audit time - Component: `pkg/apis/core/v1/podspec_safety.go` (`dangerousCapabilities`) and `pkg/executor/util/merge.go` (`dangerousMergeContainerCapabilities`) - Pre-condition: cluster does not enforce a restrictive Pod Security Admission (PSA) profile on the function-pod namespace. With PSA `restricted` in force the API server's PodSecurity admission rejects the pod at creation and this finding does not apply. Fission added its own PodSpec validation precisely because it cannot assume PSA enforcement. 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 #3465](https://github.com/fission/fission/pull/3465) (commit [`2569b42b`](https://github.com/fission/fission/commit/2569b42b)) — replace the denylist with a PSA-restricted allowlist (`NET_BIND_SERVICE` only) at both enforcement layers: - `pkg/apis/core/v1/podspec_safety.go` — `ValidateContainerSafety` now rejects any `capabilities.add` entry not in `allowedCapabilities`. The container check is invoked from `ValidatePodSpecSafety` for every PodSpec container / init-container and from `Environment.validateForAdmission` for the bare `Runtime.Container` / `Builder.Container`. - `pkg/executor/util/merge.go` — `sanitizeContainerSecurityContext` filters `capabilities.add` through the same allowlist at every merge site (poolmgr / newdeploy / container executor / builder). - The same PR adds 21 bounded CEL `XValidation` rules covering the cheap pod-level invariants (`hostNetwork` / `hostPID` / `hostIPC` / `serviceAccountName` / `serviceAccount` override) on `FunctionSpec`, `Runtime`, and `Builder`, plus the bare-Container `SecurityContext` checks (`privileged != true`, `allowPrivilegeEscalation != true`, `capabilities.add ⊆ {NET_BIND_SERVICE}`) on `Runtime` and `Builder`. The API server now short-circuits those attack vectors per CRD apply before the webhook is invoked. Per-container PodSpec iteration stays in the webhook because it exceeds the API server's CEL cost budget. - The same PR also adds two forward-compat regression guards in `pkg/apis/core/v1/podspec_safety_test.go`: - `TestAllTenantContainerSurfacesAreValidated` walks every CRD root type via reflection and fails if any reachable `*apiv1.PodSpec` or `*apiv1.Container` field is missing from the hand-maintained known-covered set. - `TestTenantContainerSurfaces_RejectSysAdmin` end-to-end exercises each covered surface and asserts `ValidateForAdmission` rejects a `SYS_ADMIN` injection at that exact path. ### Not addressed in v1.25.0 The advisory's structural recommendation to force `capabilities.drop: ["ALL"]` at the merge layer is **not** part of this fix. Fission's own sidecar containers (`fission-fetcher`, builder) were authored against the OCI default capability set and need a per-container cap audit before `drop:["ALL"]` can be applied uniformly. The allowlist on `capabilities.add` closes the demonstrated `CAP_SYS_TIME` impact; the OCI-default-cap concern (which the advisory itself marks as conditional / not demonstrated) is tracked separately.

Advisory Timeline

  • First published July 28, 2026 (76 days ago).
  • Last revised August 18, 2026 — 21 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/fission/fission to 1.25.0 or later
go get github.com/fission/fission@v1.25.0

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/fission/fission
go
All versions1.25.0

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

  • CWE-269
    Improper Privilege ManagementMITRE
  • CWE-732
    Incorrect Permission AssignmentMITRE

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.5 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
None
Integrity
High
Availability
Low

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L

Frequently Asked Questions

What is CVE-2026-50570?
Fission: Incomplete capability denylist in Environment/Function PodSpec validation allows tenant-added CAP_SYS_TIME and cross-tenant node wall-clock corruption This vulnerability has been assigned a severity rating of HIGH (CVSS score: 8.5/10).
How do I check if my project is affected by CVE-2026-50570?
CVE-2026-50570 affects github.com/fission/fission. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-50570 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.5

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-qf5v-m7p4-95rp
GO-2026-6129

Related CVEs

  • CVE-2026-46614
    CRITICAL

    Fission router exposes /fission-function/<ns>/<name> on its public listener, allowing invocation of any function without an HTTPTrigger

  • CVE-2026-50564
    CRITICAL

    Fission Environment CRD podspec passthrough enables hostPID/hostNetwork/privileged pods, node escape

  • CVE-2026-50566
    CRITICAL

    Fission: Environment Runtime.Container and Builder.Container SecurityContext bypass allows privileged pod creation

  • CVE-2026-50563
    CRITICAL

    Fission Container Executor Function PodSpec Injection Leading to Node Escape

  • CVE-2026-50545
    CRITICAL

    Fission Environment CRD PodSpec Injection Leading to Node Escape and Cluster Takeover

  • CVE-2026-107809
    HIGH

    Nginx-UI AuthRequired token cookie fallback enables CSRF against management APIs

  • CVE-2026-46612
    HIGH

    Fission StorageSvc /v1/archive endpoint exposes unauthenticated CRUD over all function archives

  • CVE-2026-49824
    HIGH

    Fission: Cross-namespace Environment reference via unvalidated EnvironmentRef in Function admission webhook

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies