Severity by source
AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
PR:H for required TenantControlPlane write access; C/I/A:H because pre-fix multiStatements=true enables arbitrary stacked SQL over the root datastore connection.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
Kamaji is the Hosted Control Plane Manager for Kubernetes. Prior to 26.7.4-edge, the PostgreSQL and MySQL datastore drivers build DDL statements by interpolating the user-supplied DataStoreUsername/DataStoreSchema directly into SQL via fmt.Sprintf, without escaping identifiers. These fields have no format validation, so a value containing a quote character breaks out of the quoted identifier - SQL injection executed over Kamaji's root connection to the shared datastore. etcd driver is not affected.This issue is fixed in version 26.7.4-edge.
AnalysisAI
SQL injection via unescaped identifier interpolation in Kamaji's PostgreSQL and MySQL datastore drivers exposes the shared datastore root connection to arbitrary DDL/DML manipulation. Versions prior to 26.7.4-edge interpolate operator-supplied DataStoreUsername and DataStoreSchema fields directly into SQL via fmt.Sprintf without any identifier sanitization, allowing a quote or backtick character to break out of the identifier context. Compounding the risk, the pre-fix MySQL primary connection had multiStatements=true enabled, enabling stacked query execution over a root-privileged database connection that spans all hosted tenant control planes. No active exploitation has been confirmed and no public exploit code has been identified at time of analysis.
Technical ContextAI
Kamaji (cpe:2.3:a:clastix:kamaji:*:*:*:*:*:*:*:*) is a Clastix open-source project that manages Kubernetes hosted control planes using a shared relational datastore (PostgreSQL or MySQL). The vulnerability is CWE-89 (Improper Neutralization of Special Elements used in an SQL Command). Affected code in mysql.go and its PostgreSQL equivalent constructs DDL statements such as CREATE DATABASE IF NOT EXISTS %s and CREATE USER %s@%% IDENTIFIED BY '%s' using Go's fmt.Sprintf, feeding DataStoreUsername and DataStoreSchema from a TenantControlPlane Kubernetes custom resource directly as string arguments. A value containing a backtick or single quote terminates the identifier context, injecting arbitrary SQL into the statement. The commit diff at https://github.com/clastix/kamaji/commit/6a9f3e10ae408e7948e2aca2db694791a299e79c further reveals that before the fix the MySQL primary connection carried the multiStatements=true DSN parameter, which permits semicolon-separated stacked queries in a single ExecContext call - converting simple identifier injection into a full arbitrary SQL execution primitive against the root datastore connection. The fix introduces quoteMySQLIdentifier() and escapeMySQLString() helpers, removes multiStatements from the primary connection, and isolates multi-statement execution to a scoped temporary connection used only during schema migration. The etcd driver constructs no SQL and is explicitly confirmed unaffected.
RemediationAI
Upgrade to Kamaji 26.7.4-edge or later, available at https://github.com/clastix/kamaji/releases/tag/26.7.4-edge. This release introduces quoteMySQLIdentifier() and escapeMySQLString() to sanitize all operator-supplied identifiers before SQL interpolation, and removes the multiStatements parameter from the primary datastore connection, preventing stacked-query escalation as a defense-in-depth measure. For operators unable to upgrade immediately, restrict creation and modification of TenantControlPlane resources via Kubernetes RBAC to only explicitly trusted administrators - this limits the attack surface to users who already hold the high-privilege access the vulnerability requires, though it does not eliminate the underlying flaw. Auditing existing TenantControlPlane resources for unexpected characters (backticks, single quotes, semicolons) in DataStoreUsername and DataStoreSchema fields can help detect any prior exploitation attempts. No workaround fully mitigates the vulnerability without RBAC restrictions on TenantControlPlane write access.
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-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-51312