Executive brief
OpenStack Keystone, the identity service for OpenStack cloud environments, contains a critical security flaw that allows any authenticated user to bypass access controls. By including specific data in a request, an attacker can trick the system into granting them permissions they should not have. This could allow a low-privileged user to steal administrative credentials, access private data belonging to other users, or take full control of the entire cloud infrastructure.
Technical details
An authorization bypass exists in OpenStack Keystone's RBAC policy enforcer (`enforce_call` in `keystone/common/rbac_enforcer/enforcer.py`). The vulnerability occurs because the enforcer unconditionally merges the raw JSON request body into the policy enforcement dictionary using `policy_dict.update(json_input.copy())`. This action overwrites trusted target data previously retrieved from the database. Because `flask.request.get_json` is called with `force=True`, this injection is possible regardless of the HTTP method (e.g., GET, POST) or Content-Type. An authenticated attacker can inject arbitrary `target` attributes (like `user_id` or `project_id`) to satisfy `oslo.policy` rules, effectively bypassing RBAC checks while the API handler executes the operation against the resource ID specified in the URL path. This can lead to full cloud compromise, including the harvesting of EC2 credentials and unauthorized role assignments. Fixes are available in versions 27.0.2, 28.0.2, and 29.0.2.
Affected products
- OpenStack Keystone >= 14.0.0, < 27.0.2
- OpenStack Keystone >= 28.0.0, < 28.0.2
- OpenStack, Keystone >= 29.0.0, < 29.0.2
- Red Hat Red Hat OpenStack Platform 13, 16.2, 17.1, 18.0
Timeline
- 2026-04-15: disclosed: Bug reported to OpenStack Launchpad
- 2026-05-28: advisory: GitHub Advisory and NVD record published
- 2026-07-02: patched: Advisory updated with reviewed status and patch details