Severity by source
AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
Attacker needs tenant-creation rights (PR:L) plus a usable normalized name collision and shared datastore (AC:H); the isolation break crosses tenants (S:C) with full C/I/A loss of the victim cluster.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
Kamaji is the Hosted Control Plane Manager for Kubernetes. Prior to 26.7.4-edge, Kamaji derives a TenantControlPlane datastore schema, database user, and etcd key prefix from a lossy namespace-and-name normalization in GetDefaultDatastoreSchema() and GetDefaultDatastoreUsername(), allowing distinct tenants with colliding normalized identifiers to share control-plane state and read, modify, or destroy another tenant's Kubernetes data. This issue is fixed in version 26.7.4-edge.
Articles & Coverage 1
AnalysisAI
Cross-tenant data compromise in Clastix Kamaji (Hosted Control Plane Manager for Kubernetes) before 26.7.4-edge lets one tenant read, modify, or destroy another tenant's control-plane state. Kamaji's defaulting webhook derived each TenantControlPlane's datastore schema, database user, and etcd key prefix from a lossy namespace-and-name normalization that replaced dashes with underscores, so two tenants whose names normalize to the same string (e.g. 'a-b' vs 'a_b') were assigned identical datastore identifiers and silently shared backing storage. No public exploit identified at time of analysis and it is not in CISA KEV, but the root cause is confirmed by the vendor advisory (GHSA-4f3f-65vx-r34f) and the fixing commit, which now uses the immutable resource UID.
Technical ContextAI
Kamaji runs Kubernetes control planes as pods and stores each tenant cluster's etcd/kine state in a shared datastore (MySQL, PostgreSQL, or etcd), partitioned per tenant by a schema/database, a database user, and an etcd key prefix. Those identifiers were generated by GetDefaultDatastoreSchema() and GetDefaultDatastoreUsername() via normalizeNamespaceName(), which built '<namespace>_<name>' and then ran strings.ReplaceAll(..., "-", "_") to satisfy PostgreSQL identifier rules (per Kamaji issue #328). This transformation is non-injective (lossy): distinct (namespace, name) pairs collapse to the same normalized string whenever they differ only in dash-vs-underscore, producing an identifier collision. The flaw maps to CWE-284 (Improper Access Control) - the tenant-isolation boundary is keyed on a value that is not guaranteed unique. The fix replaces the derivation with string(in.UID), the Kubernetes-assigned globally unique object UID, and additionally quotes generated identifiers in MySQL/PostgreSQL DDL (backticks and double-quotes). Affected CPE: cpe:2.3:a:clastix:kamaji:*.
RemediationAI
Vendor-released patch: 26.7.4-edge - upgrade Kamaji to 26.7.4-edge or later, which derives datastore schema and username from the immutable TenantControlPlane UID instead of the lossy namespace/name normalization (see GHSA-4f3f-65vx-r34f). Because the upgrade changes the identifier scheme, validate the vendor's migration guidance for existing tenants whose schemas/users were provisioned under the old naming before cutover. If immediate patching is not possible, enforce a tenant naming policy (e.g. via admission control) that removes dash/underscore ambiguity - disallow underscores in TenantControlPlane names/namespaces or require a unique suffix so no two normalized identifiers can collide; the trade-off is operational friction and that it does not retroactively fix already-collided tenants. Additionally restrict who can create TenantControlPlane resources and audit existing tenants for shared schemas/usernames both before and after upgrading. Advisory: https://github.com/clastix/kamaji/security/advisories/GHSA-4f3f-65vx-r34f.
More in Kubernetes
View allA critical vulnerability in Kubernetes ingress-nginx controller allows unauthenticated attackers with pod network access
Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actio
Kubernetes ingress-nginx contains a configuration injection vulnerability via the mirror-target and mirror-host Ingress
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-url` Ingres
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-tls-match-c
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.exter
A security issue was discovered in Kubernetes where a user that can create pods on Windows nodes may be able to escalate
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne
Unauthenticated remote attackers can trigger complete database overwrites, server-side file reads, and SSRF attacks agai
The Kubernetes integration in GitLab Enterprise Edition 11.x before 11.2.8, 11.3.x before 11.3.9, and 11.4.x before 11.4
Fluentd configuration injection in the kube-logging Logging operator before 6.6.0 allows a namespace-scoped user who can
Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass
Same weakness CWE-284 – Improper Access Control
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-51311