{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/vendors/project-capsule/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":["Individual Tenant"],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["Capsule (\u003c= 0.13.5)"],"_cs_severities":["medium"],"_cs_tags":["kubernetes","misconfiguration","privilege-escalation","validation-bypass"],"_cs_type":"threat","_cs_vendors":["Project Capsule"],"content_html":"\u003cp\u003eCapsule, a multi-tenancy operator for Kubernetes, provides isolation controls through \u003ccode\u003eforbiddenLabels\u003c/code\u003e and \u003ccode\u003eforbiddenAnnotations\u003c/code\u003e configurations. These controls prevent tenant owners from applying specific metadata to namespaces, services, or nodes that could disrupt cluster-wide policies, such as Pod Security Admission or network routing. The enforcement mechanism relies on the \u003ccode\u003eExactMatch\u003c/code\u003e function in \u003ccode\u003epkg/api/forbidden_list.go\u003c/code\u003e to determine if a submitted key is prohibited.\u003c/p\u003e\n\u003cp\u003eThe vulnerability stems from a logical flaw in how \u003ccode\u003eExactMatch\u003c/code\u003e processes the forbidden list. The code sorts the list case-insensitively and then performs a binary search using byte-order comparison. Because binary searches require the slice to be sorted in the same order as the comparison method, this mismatch causes the search to fail for certain keys. When the administrator's forbidden list contains mixed-case entries (e.g., camelCase alongside lowercase), the binary search can incorrectly report that a prohibited key is absent. This failure is silent and allows the tenant owner to successfully apply forbidden metadata, effectively bypassing critical isolation controls.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker (tenant owner) identifies that they possess standard tenant-level access to create or patch namespaces or services within their assigned Capsule tenant.\u003c/li\u003e\n\u003cli\u003eAttacker inspects the environment to confirm the presence of a non-empty, mixed-case forbidden label or annotation policy (e.g., both \u003ccode\u003ekubernetes.io/metadata.name\u003c/code\u003e and camelCase vendor labels exist in the denied list).\u003c/li\u003e\n\u003cli\u003eAttacker crafts a Kubernetes resource request (e.g., \u003ccode\u003ekubectl label\u003c/code\u003e) targeting their own namespace or service, including a key that is explicitly present in the admin's forbidden list but affected by the binary search sorting mismatch.\u003c/li\u003e\n\u003cli\u003eThe Capsule validating webhook intercepts the API request and triggers the \u003ccode\u003eValidateForbidden\u003c/code\u003e function.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eExactMatch\u003c/code\u003e primitive performs an incorrect binary search on the forbidden list due to the case-insensitive/byte-order sort conflict.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eExactMatch\u003c/code\u003e function returns a false \u0026quot;not forbidden\u0026quot; result, causing \u003ccode\u003eValidateForbidden\u003c/code\u003e to allow the submission.\u003c/li\u003e\n\u003cli\u003eThe Kubernetes API server persists the resource with the forbidden metadata, bypassing intended isolation boundaries.\u003c/li\u003e\n\u003cli\u003eAttacker leverages the newly applied metadata to influence cluster behavior, such as altering security contexts, network policy enforcement, or scheduling decisions.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eThe vulnerability enables tenant owners to bypass isolation and security controls intended to be enforced by the cluster administrator. The successful application of forbidden metadata can result in security configuration overrides, such as disabling Pod Security Admission enforcement, circumventing namespace isolation, or manipulating service network exposure via LoadBalancer annotations. While the impact is gated by the presence of specific configuration patterns, the bypass provides a mechanism for privilege escalation within the multi-tenant environment.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAudit current Capsule configurations to identify if mixed-case forbidden lists (labels or annotations) are in use, as these represent the primary vector for this bypass.\u003c/li\u003e\n\u003cli\u003eImplement an immediate review of Capsule-managed tenant resources for unauthorized metadata keys, specifically looking for keys intended to be forbidden by admin policy.\u003c/li\u003e\n\u003cli\u003eUpdate Capsule to the patched version that reconciles the sorting order and binary search logic (awaiting vendor patch/version announcement).\u003c/li\u003e\n\u003cli\u003eUntil a patch is applied, ensure forbidden lists contain only lowercase keys if possible, as uniformly lowercase lists are not impacted by this sorting defect.\u003c/li\u003e\n\u003c/ol\u003e\n","date_modified":"2026-09-18T19:51:33Z","date_published":"2026-09-18T19:51:33Z","id":"https://feed.craftedsignal.io/briefs/2026-09-capsule-bypass/","summary":"A vulnerability in Capsule's metadata validation logic allows tenant owners to bypass configured forbidden labels and annotations, enabling unauthorized configuration changes to Kubernetes resources.","title":"Capsule Namespace and Service Metadata Enforcement Bypass","url":"https://feed.craftedsignal.io/briefs/2026-09-capsule-bypass/"}],"language":"en","title":"CraftedSignal Threat Feed - Project Capsule","version":"https://jsonfeed.org/version/1.1"}