CVE-2026-123047: Keycloak admin user password stored in cleartext in a ConfigMap in Eclipse BaSyx Helm Charts
In Eclipse BaSyx Helm Charts version 2.2.0 of the aas-basyx-v2-full chart, deployments with the bundled Keycloak enabled store the client secret of the basyx-technical-user OAuth2 client in cleartext in a Kubernetes ConfigMap. This client uses the client-credentials grant and its service account holds the realm admin role.
The chart correctly writes keycloak.technicalUser.clientSecret to a Kubernetes Secret, but the template basyx-keycloak-realm.yaml also substitutes the same value into the Keycloak realm-import JSON, which is stored in the ConfigMap <keycloak.fullnameOverride>-realm. A principal that can read ConfigMaps but not Secrets in the release namespace, such as a holder of the built-in Kubernetes view ClusterRole, can read the client secret from the ConfigMap. They can then exchange it at the Keycloak token endpoint for an access token with the admin role. That token grants full create, read, update, delete and execute rights on all BaSyx repositories and registries in the deployment.
The bundled Keycloak is disabled by default. No fixed release of the aas-basyx-v2-full chart exists. Affected users should migrate to the basyx chart, or deploy without the bundled Keycloak and rotate the basyx-technical-user client secret.
Other sources
In Eclipse BaSyx Helm Charts versions 3.0.0-rc.1 to 3.12.1 of the basyx chart, deployments with the bundled Keycloak enabled store the passwords of the Keycloak users that the chart creates in cleartext in a Kubernetes ConfigMap.
The template keycloak-init-config.yaml rendered keycloak.initialization.users, including each user's credentials[].value, as users.json into the persistent ConfigMap <release>-basyx-keycloak-init-config. By default this includes the bootstrap administrator user. That user holds the admin role and has a non-temporary password. A principal that can read ConfigMaps but not Secrets in the release namespace, such as a holder of the built-in Kubernetes view ClusterRole, can read the password from the ConfigMap and log in to Keycloak as this user. The resulting token carries the admin role, which the default BaSyx ABAC rules map to full rights on all BaSyx APIs in the deployment.
The bundled Keycloak is disabled by default. The issue is fixed in version 3.12.2 of the basyx chart, which moves the initialization users to the Keycloak credentials Secret. Affected users should upgrade and change the passwords of users that were created through the chart.
— MITRE
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Eclipse BaSyx Helm Charts basyx chartto a version that resolves this vulnerability.Fixed in 3.12.2 - Configuration
Deploy without the bundled Keycloak.
Bundled Keycloak enabled = false - Operational
Rotate the basyx-technical-user client secret.
- Operational
Change the passwords of users created through the chart, including the bootstrap administrator user.
Event History
Frequently Asked Questions
Is a deployment affected when using the chart's default settings?
No. The bundled Keycloak is disabled by default. The exposure applies to deployments that enabled the bundled Keycloak and use a basyx chart version from 3.0.0-rc.1 through 3.12.1.
Who can retrieve the exposed credentials?
Any principal able to read ConfigMaps in the release namespace can retrieve them, even if it cannot read Kubernetes Secrets. This includes holders of the built-in Kubernetes view ClusterRole.
What access could an attacker gain with a recovered password?
By default, the exposed bootstrap administrator account has the Keycloak admin role and a non-temporary password. Its token receives full rights on all BaSyx APIs in the deployment under the default BaSyx ABAC rules.
How can I check whether credentials were exposed?
Inspect the persistent ConfigMap named <release>-basyx-keycloak-init-config in the release namespace. In affected deployments, its users.json content includes keycloak.initialization.users and credential values in cleartext.
What should be done after upgrading?
Upgrade the basyx chart to version 3.12.2 or later, which stores initialization users in the Keycloak credentials Secret. Change passwords for users created through the affected chart, including the bootstrap administrator account.