GitHub Advisoryadvisory · Go

GHSA-gwxr-7h77-7777 Capsule: Incomplete fix of CVE-2026-30963: singular/plural typo leaves namespaces/finalize unprotected

MEDIUM Published 2026-06-17 Modified 2026-06-17 Official page ↗
Aliases
CVE-2026-55636
Ecosystem
Go
Packages
github.com/projectcapsule/capsule
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:H/A:L
Weaknesses
CWE-863
Reviewed
2026-06-17

Affected packages

• Go github.com/projectcapsule/capsule: >= 0.13.0, < 0.13.6 → fixed in 0.13.6

Description

Summary Capsule v0.13.2 webhook rules contain `namespace/finalize` (singular) instead of `namespaces/finalize` (plural). K8s requires plural. The finalize defense from CVE-2026-30963 fix is absent. Details PUT to `/api/v1/namespaces//finalize` has resource=namespaces (plural). The singular rule never matches. `matchPolicy: Equivalent` does not compensate. PoC Confirmed on kind + Capsule v0.13.2. alice (non-admin with namespaces/finalize RBAC): `kubectl label --as=alice` = DENIED (control). `kubectl replace --raw /finalize --as=alice` = 200 OK (bypass). Tenant label changed. Impact Namespace tenant-label hijack. Same threat model as CVE-2026-30963. One-char fix: `namespace/finalize` -> `namespaces/finalize`. The CVE-2026-30963 fix in Capsule v0.13.2 added subresource entries to the namespace validating webhook, but `charts/capsule/templates/configuration.yaml` line 105 contains a singular/plural typo: `namespace/finalize` instead of `namespaces/finalize`. Kubernetes webhook rules require the plural resource name. The finalize subresource defense is entirely absent. Details In Kubernetes admission webhooks, `rules.resources` matches against the plural resource name. A PUT to `/api/v1/namespaces//finalize` has `resource=namespaces` (plural). The rule `namespace/finalize` (singular) never matches any real API request. The `matchPolicy: Equivalent` setting does NOT compensate (it handles API group/version variations, not resource name typos). PoC Confirmed on kind cluster + Capsule v0.13.2 (Helm chart): ```bash Setup: alice with namespaces/finalize RBAC kubectl apply -f - /tmp/ns.json modify tenant label to "hijacked" kubectl replace --raw "/api/v1/namespaces/oil-prod/finalize" -f /tmp/ns_modified.json --as=alice 200 OK - tenant label changed ``` Impact Namespace tenant-label hijack via the finalize subresource bypass. Same threat model as CVE-2026-30963. One-character fix needed: `namespace/finalize` -> `namespaces/finalize`.

Related

Alias · CVE (1)

  • CVE-2026-55636 Capsule is a multi-tenancy and policy-based framework for Kubernetes. vulnerability

Weakness · CWE (1)

  • CWE-863 Incorrect Authorization weakness

References