### Summary A stronger framing of the same root cause as GHSA-gx55-f84r-v3r7: the `Environment.spec.runtime.podSpec` / `spec.builder.podSpec` passthrough lacked validation, and `MergePodSpec` propagated dangerous fields into the generated pods. ### Details Three independent flaws compounded: 1. **Validate gap.** `pkg/apis/core/v1/validation.go::Environment.Validate` checked only container naming conventions, never `hostPID`/`hostIPC`/`hostNetwork`/`hostPath`/`privileged`. 2. **UPDATE bypass.** The `pkg/webhook/environment.go` kubebuilder marker registered `verbs=create` only. A tenant could `kubectl apply` a clean Environment and then `kubectl patch` in the dangerous fields — the webhook was never called. 3. **Merge propagation.** `pkg/executor/util/merge.go::MergePodSpec` unconditionally forwarded `HostPID`, `HostIPC`, `HostNetwork`, `Volumes` (including hostPath), `SecurityContext`, and `ServiceAccountName` into the Deployments generated by poolmgr / newdeploy / buildermgr. A `kubectl apply` plus a follow-up `kubectl patch` caused poolmgr to schedule a privileged pod with a host-root mount within roughly 20 seconds. From that pod the cluster CA private key was readable, allowing the attacker to sign arbitrary kubelet certificates and achieve full cluster takeover. ### Impact `environments.fission.io` create/update RBAC is escalated to node escape and, via the readable cluster CA key, full cluster takeover. ### Fix Fixed in [#3391](https://github.com/fission/fission/pull/3391) (with the companion buildermgr SA-token fix in [#3390](https://github.com/fission/fission/pull/3390)) and released in [v1.24.0](https://github.com/fission/fission/releases/tag/v1.24.0). Each enumerated flaw is addressed: 1. **Validate** — `ValidatePodSpecSafety` is called from `Environment.Validate` for both `Runtime.PodSpec` and `Builder.PodSpec`. 2. **UPDATE bypass** — the webhook marker is extended to `verbs=create;update`; chart and envtest manifests are aligned. 3. **Merge propagation** — host namespaces, `ServiceAccountName`, and hostPath volumes are stripped at the merge layer; per-container `privileged`/`allowPrivilegeEscalation` and dangerous capabilities are sanitized. See GHSA-gx55-f84r-v3r7 for the detailed fix — both advisories close to the same commit. ### Duplicate handling This advisory and GHSA-gx55-f84r-v3r7 were reported separately but close to the same code fix. Both are published to acknowledge each reporter's contribution and to keep the public CVE record clear about the multi-layer nature of the issue.
### Summary A stronger framing of the same root cause as GHSA-gx55-f84r-v3r7: the `Environment.spec.runtime.podSpec` / `spec.builder.podSpec` passthrough lacked validation, and `MergePodSpec` propagated dangerous fields into the generated pods. ### Details Three independent flaws compounded: 1. **Validate gap.** `pkg/apis/core/v1/validation.go::Environment.Validate` checked only container naming conventions, never `hostPID`/`hostIPC`/`hostNetwork`/`hostPath`/`privileged`. 2. **UPDATE bypass.** The `pkg/webhook/environment.go` kubebuilder marker registered `verbs=create` only. A tenant could `kubectl apply` a clean Environment and then `kubectl patch` in the dangerous fields — the webhook was never called. 3. **Merge propagation.** `pkg/executor/util/merge.go::MergePodSpec` unconditionally forwarded `HostPID`, `HostIPC`, `HostNetwork`, `Volumes` (including hostPath), `SecurityContext`, and `ServiceAccountName` into the Deployments generated by poolmgr / newdeploy / buildermgr. A `kubectl apply` plus a follow-up `kubectl patch` caused poolmgr to schedule a privileged pod with a host-root mount within roughly 20 seconds. From that pod the cluster CA private key was readable, allowing the attacker to sign arbitrary kubelet certificates and achieve full cluster takeover. ### Impact `environments.fission.io` create/update RBAC is escalated to node escape and, via the readable cluster CA key, full cluster takeover. ### Fix Fixed in [#3391](https://github.com/fission/fission/pull/3391) (with the companion buildermgr SA-token fix in [#3390](https://github.com/fission/fission/pull/3390)) and released in [v1.24.0](https://github.com/fission/fission/releases/tag/v1.24.0). Each enumerated flaw is addressed: 1. **Validate** — `ValidatePodSpecSafety` is called from `Environment.Validate` for both `Runtime.PodSpec` and `Builder.PodSpec`. 2. **UPDATE bypass** — the webhook marker is extended to `verbs=create;update`; chart and envtest manifests are aligned. 3. **Merge propagation** — host namespaces, `ServiceAccountName`, and hostPath volumes are stripped at the merge layer; per-container `privileged`/`allowPrivilegeEscalation` and dangerous capabilities are sanitized. See GHSA-gx55-f84r-v3r7 for the detailed fix — both advisories close to the same commit. ### Duplicate handling This advisory and GHSA-gx55-f84r-v3r7 were reported separately but close to the same code fix. Both are published to acknowledge each reporter's contribution and to keep the public CVE record clear about the multi-layer nature of the issue.
Update github.com/fission/fission to 1.24.0 if you use the affected versions. Test the change in a non-production environment first.
Local check
hol-guard supply-chain scanFission Environment CRD PodSpec Injection Leading to Node Escape and Cluster Takeover affects github.com/fission/fission (go). Severity is critical. ### Summary A stronger framing of the same root cause as GHSA-gx55-f84r-v3r7: the `Environment.spec.runtime.podSpec` / `spec.builder.podSpec` passthrough lacked validation, and `MergePodSpec` propagated dangerous fields into the generated pods. ### Details Three independent flaws compounded: 1. **Validate gap.** `pkg/apis/core/v1/validation.go::Environment.Validate` checked only container naming conventions, never `hostPID`/`hostIPC`/`hostNetwork`/`hostPath`/`privileged`. 2. **UPDATE bypass.** The `pkg/webhook/environment.go` kubebuilder marker registered `verbs=create` only. A tenant could `kubectl apply` a clean Environment and then `kubectl patch` in the dangerous fields — the webhook was never called. 3. **Merge propagation.** `pkg/executor/util/merge.go::MergePodSpec` unconditionally forwarded `HostPID`, `HostIPC`, `HostNetwork`, `Volumes` (including hostPath), `SecurityContext`, and `ServiceAccountName` into the Deployments generated by poolmgr / newdeploy / buildermgr. A `kubectl apply` plus a follow-up `kubectl patch` caused poolmgr to schedule a privileged pod with a host-root mount within roughly 20 seconds. From that pod the cluster CA private key was readable, allowing the attacker to sign arbitrary kubelet certificates and achieve full cluster takeover. ### Impact `environments.fission.io` create/update RBAC is escalated to node escape and, via the readable cluster CA key, full cluster takeover. ### Fix Fixed in [#3391](https://github.com/fission/fission/pull/3391) (with the companion buildermgr SA-token fix in [#3390](https://github.com/fission/fission/pull/3390)) and released in [v1.24.0](https://github.com/fission/fission/releases/tag/v1.24.0). Each enumerated flaw is addressed: 1. **Validate** — `ValidatePodSpecSafety` is called from `Environment.Validate` for both `Runtime.PodSpec` and `Builder.PodSpec`. 2. **UPDATE bypass** — the webhook marker is extended to `verbs=create;update`; chart and envtest manifests are aligned. 3. **Merge propagation** — host namespaces, `ServiceAccountName`, and hostPath volumes are stripped at the merge layer; per-container `privileged`/`allowPrivilegeEscalation` and dangerous capabilities are sanitized. See GHSA-gx55-f84r-v3r7 for the detailed fix — both advisories close to the same commit. ### Duplicate handling This advisory and GHSA-gx55-f84r-v3r7 were reported separately but close to the same code fix. Both are published to acknowledge each reporter's contribution and to keep the public CVE record clear about the multi-layer nature of the issue.
AI coding agents often install or upgrade packages automatically in go. A critical vulnerability in a dependency can be pulled into a project through a normal install or update without a human reviewing the change, expanding the blast radius from a single package to every agent workspace that depends on it.
| Package | Affected range | Fixed version |
|---|---|---|
| github.com/fission/fissiongo | <=1.23.0 | 1.24.0 |
Fixed versions are reported by the source feed; confirm compatibility before updating.
Reported by GitHub Security Advisories (ghsa).
HOL Guard can help your team review package activity against supported protection paths.
Explore HOL GuardUpdate github.com/fission/fission to 1.24.0 if you use the affected versions. Test the change in a non-production environment first.
Local check
hol-guard supply-chain scanFission Environment CRD PodSpec Injection Leading to Node Escape and Cluster Takeover affects github.com/fission/fission (go). Severity is critical. ### Summary A stronger framing of the same root cause as GHSA-gx55-f84r-v3r7: the `Environment.spec.runtime.podSpec` / `spec.builder.podSpec` passthrough lacked validation, and `MergePodSpec` propagated dangerous fields into the generated pods. ### Details Three independent flaws compounded: 1. **Validate gap.** `pkg/apis/core/v1/validation.go::Environment.Validate` checked only container naming conventions, never `hostPID`/`hostIPC`/`hostNetwork`/`hostPath`/`privileged`. 2. **UPDATE bypass.** The `pkg/webhook/environment.go` kubebuilder marker registered `verbs=create` only. A tenant could `kubectl apply` a clean Environment and then `kubectl patch` in the dangerous fields — the webhook was never called. 3. **Merge propagation.** `pkg/executor/util/merge.go::MergePodSpec` unconditionally forwarded `HostPID`, `HostIPC`, `HostNetwork`, `Volumes` (including hostPath), `SecurityContext`, and `ServiceAccountName` into the Deployments generated by poolmgr / newdeploy / buildermgr. A `kubectl apply` plus a follow-up `kubectl patch` caused poolmgr to schedule a privileged pod with a host-root mount within roughly 20 seconds. From that pod the cluster CA private key was readable, allowing the attacker to sign arbitrary kubelet certificates and achieve full cluster takeover. ### Impact `environments.fission.io` create/update RBAC is escalated to node escape and, via the readable cluster CA key, full cluster takeover. ### Fix Fixed in [#3391](https://github.com/fission/fission/pull/3391) (with the companion buildermgr SA-token fix in [#3390](https://github.com/fission/fission/pull/3390)) and released in [v1.24.0](https://github.com/fission/fission/releases/tag/v1.24.0). Each enumerated flaw is addressed: 1. **Validate** — `ValidatePodSpecSafety` is called from `Environment.Validate` for both `Runtime.PodSpec` and `Builder.PodSpec`. 2. **UPDATE bypass** — the webhook marker is extended to `verbs=create;update`; chart and envtest manifests are aligned. 3. **Merge propagation** — host namespaces, `ServiceAccountName`, and hostPath volumes are stripped at the merge layer; per-container `privileged`/`allowPrivilegeEscalation` and dangerous capabilities are sanitized. See GHSA-gx55-f84r-v3r7 for the detailed fix — both advisories close to the same commit. ### Duplicate handling This advisory and GHSA-gx55-f84r-v3r7 were reported separately but close to the same code fix. Both are published to acknowledge each reporter's contribution and to keep the public CVE record clear about the multi-layer nature of the issue.
AI coding agents often install or upgrade packages automatically in go. A critical vulnerability in a dependency can be pulled into a project through a normal install or update without a human reviewing the change, expanding the blast radius from a single package to every agent workspace that depends on it.
| Package | Affected range | Fixed version |
|---|---|---|
| github.com/fission/fissiongo | <=1.23.0 | 1.24.0 |
Fixed versions are reported by the source feed; confirm compatibility before updating.
Reported by GitHub Security Advisories (ghsa).
HOL Guard can help your team review package activity against supported protection paths.
Explore HOL Guard