CVE-2026-59335: Case-Sensitive Authorization Check Bypass via Identity Zone ID Case Manipulation Leads to Full UAA Compromise
Improper handling of case sensitivity (CWE-178) in the identity zone authorization check in the Identity Zone Endpoint in Cloud Foundry UAA allows a remote authenticated attacker holding only the zones.write authority to bypass the intended restriction that this authority does not grant access to the privileged uaa (system) identity zone, by referring to the zone identifier in a non-lowercase form (e.g. UAA) in the request path and body. The authorization layer performs a case-sensitive comparison against the system zone identifier, while the underlying MySQL persistence layer resolves identifiers case-insensitively under its default collation, so the request is authorized incorrectly and is then resolved against the real system zone record. This allows the attacker to overwrite the system zone's JWT signing key with attacker-controlled key material, forge JWTs claiming the admin client and administrator scopes, and fully compromise UAA and any Cloud Foundry deployment that trusts it. This issue only affects UAA deployments backed by MySQL using its default collation; PostgreSQL and HSQLDB backends are not affected.
Affected Software
Event History
Frequently Asked Questions
Which deployments are affected?
Only VMware Cloud Foundry UAA deployments backed by MySQL using its default collation are affected. Deployments using PostgreSQL or HSQLDB are not affected.
What access does an attacker need to exploit this issue?
The attacker must be remotely authenticated and hold the zones.write authority. No user interaction is required, and the attack complexity is low.
What is the practical impact if exploitation succeeds?
An attacker can overwrite the system identity zone's JWT signing key with attacker-controlled material, then forge JWTs asserting the admin client and administrator scopes. This can fully compromise UAA and Cloud Foundry deployments that trust it.
How is the authorization restriction bypassed?
The attacker supplies a non-lowercase form of the system zone identifier, such as UAA, in the request path and body. The authorization check treats it differently because its comparison is case-sensitive, while MySQL resolves it to the real system zone under the default case-insensitive collation.