OSSA-2026-015: Multiple credential delegation and authorization bypass vulnerabilities in Keystone
| Property | Value |
|---|---|
| Date | 2026-05-28 |
| CVE | CVE-2026-42998, CVE-2026-42999, CVE-2026-43000, CVE-2026-43001, CVE-2026-44394 |
| Severity | High |
| Affected Project | Keystone |
| Reporter | Boris Bobrov (SAP SE), Tim Shepherd (roiai.ca), Erichen (Institute of Computing Technology, CAS), Artem Goncharov (SysEleven GmbH) |
Summary
A set of five related vulnerabilities was discovered in OpenStack Keystone affecting credential delegation and authorization enforcement. An authenticated attacker can inject RBAC policy targets via the JSON request body to bypass authorization on policy-protected endpoints, read credential secrets, create credentials for arbitrary users, and escalate to cloud admin (CVE-2026-42999). Application credential authentication does not verify that the caller owns the credential, enabling user impersonation within a shared project (CVE-2026-42998), which can be chained with trusts to escalate from member to admin (CVE-2026-43000). Application credentials scoped to one project can create EC2 credentials for a different project, enabling cross-project lateral movement (CVE-2026-43001). Federated users can maintain access indefinitely by repeatedly rescoping tokens before expiry (CVE-2026-44394).
All Keystone deployments are affected. CVE-2026-44394 only affects deployments using SAML2 or OIDC federation.
Affected Versions
| Keystone Version | Status |
|---|---|
| >= 14.0.0, < 28.0.0 (Caracal, Dalmatian) | Vulnerable — EOL, no official fix |
| >= 28.0.0, < 28.0.2 (Epoxy) | Vulnerable |
| >= 28.0.2 (Epoxy) | Fixed (upstream) |
| >= 29.0.0, < 29.0.2 (Flamingo) | Vulnerable |
| >= 29.0.2 (Flamingo) | Fixed (upstream) |
Caracal (2024.1) and Dalmatian (2024.2) have reached end of life upstream. No official fixed release exists for either; the only fixes available are community-curated backports.
OSISM ships container images with the fixes backported as downstream patches for the OpenStack releases 2024.1 (Caracal), 2024.2 (Dalmatian), 2025.1 (Epoxy), and 2025.2 (Flamingo). Because both Caracal and Dalmatian are end of life and receive no official upstream patches, the OSISM images for these two releases carry community-curated backports rather than upstream-released fixes.
Impact on OSISM
Unlike most credential-related advisories, this issue is not limited to specific configurations: every OSISM deployment running an unpatched Keystone version is affected. There is no configuration that makes a deployment immune to CVE-2026-42998, CVE-2026-42999, CVE-2026-43000, and CVE-2026-43001.
CVE-2026-44394 additionally affects you only if you use federated authentication (SAML2 or OIDC).
How to Check if You Are Affected
Check the Running Keystone Version
docker exec keystone keystone-manage --version 2>/dev/null || \
docker exec keystone pip show keystone 2>/dev/null | grep -i version
If the version is below the fixed version for your release (see the table above) and you have not deployed an OSISM container image that includes the fix, your deployment is affected.
Check for Federation (CVE-2026-44394 only)
Check whether SAML2 or OIDC federation is configured:
docker exec keystone grep -rE "saml2|openid|mod_auth_openidc|mellon" \
/etc/keystone/keystone.conf /etc/apache2/ /etc/httpd/ 2>/dev/null
If no results are returned, your deployment is not affected by CVE-2026-44394 (but remains affected by the other four CVEs).
Vulnerability Details
CVE-2026-42999 — RBAC policy bypass via JSON body and query filters
The RBAC enforcer unconditionally merged the raw JSON request body into the policy enforcement
dictionary after trusted target data had been set from the database. An attacker could include a
target key in the JSON body to overwrite database-sourced RBAC target attributes, causing all
%(target.*)s policy substitutions to evaluate against attacker-controlled values. This affected
88 endpoint/method combinations across all Keystone API resources and allows reading credential
secrets, creating credentials for arbitrary users, and escalation to cloud admin. Query-string
filter values had the same structural issue (e.g. an attacker-controlled ?user_id= could
override an ownership check). The fix namespaces user-controlled body and filter data under
request_body and filter_attr keys so they can no longer collide with internal keys.
CVE-2026-42998 — User impersonation through application credentials
When authenticating by application credential ID, the caller could supply a user field in the
payload. The credential owner was only used when no user field was present; if present, the
resulting token was attributed to the caller-supplied user instead of the credential owner,
enabling impersonation of an arbitrary user within a shared project. The fix always binds the
token to the credential's stored user_id, ignoring any caller-supplied value.
CVE-2026-43000 — Trust operations through application credentials
Previously only restricted application credentials were blocked, and only for trust creation and deletion. All application credentials (restricted and unrestricted alike) are now blocked from all trust operations. Combined with the impersonation flaw, the prior behavior allowed escalation from member to admin, with the resulting trust persisting independently of the application credential.
CVE-2026-43001 — Cross-project EC2 credential creation
POST /v3/credentials did not validate that the caller-supplied project_id for an EC2-type
credential matched the project of the authenticating application credential. An attacker holding
an unrestricted application credential for project A could create an EC2 credential targeting
project B; a subsequent /v3/ec2tokens exchange would then issue a Keystone token scoped to
project B while still carrying the original app_cred_id, enabling cross-project lateral movement
within the credential owner's role footprint. (CVSS 3.1 base score 7.9, High.)
CVE-2026-44394 — Federated token rescoping extends session indefinitely
When a federated token was rescoped via POST /v3/auth/tokens, Keystone issued a fresh full-TTL
token instead of inheriting the remaining lifetime of the original token. A user with a federated
token could extend their session indefinitely by rescoping repeatedly before expiry, bypassing
operator-configured TTL policies and IdP-level account revocation. The fix propagates the original
token's expires_at so the rescoped token inherits the original expiry. This issue only affects
SAML2/OIDC deployments.
Remediation
For OSISM Releases
The fixes are provided for the Keystone container image via the following change:
A fix will be included in upcoming OSISM releases that ship the patched Keystone container image. Consult the OSISM Release Notes for version information and availability.
Alternatively, you can use rolling tags to override the Keystone container image with a version
that includes the fix. Configure the following in environments/kolla/images.yml:
keystone_tag: "2025.1" # or "2024.1", "2024.2", "2025.2", depending on your OpenStack release
The fix for CVE-2026-42999 modifies the trust policy structure. Deployments with customized trust policies may experience issues with image upload and Heat service functionality until the custom policy is updated. Review any trust policy overrides before and after applying the patched image.
Mitigation
Because all deployments are affected and the vulnerabilities require only authenticated access, applying the patched container image is the only effective remediation. Until the fix is deployed, consider the following measures:
- Restricting network access to OpenStack API endpoints to trusted networks
- Monitoring for suspicious credential, trust, and EC2 credential creation activity
- Auditing existing application credentials, trusts, and EC2 credentials for unexpected entries
- For federated deployments, monitoring for unusually long-lived sessions and repeated token rescoping
References
- OSSA-2026-015 Advisory
- OSISM Fix (container-images-kolla commit 134fb90)
- OSISM Fix (container-images-kolla PR #731)
- Launchpad Bug #2148398
- Launchpad Bug #2148477
- Launchpad Bug #2149775
- Launchpad Bug #2149789
- Launchpad Bug #2150089
- Launchpad Bug #2150379
- CVE-2026-42998
- CVE-2026-42999
- CVE-2026-43000
- CVE-2026-43001
- CVE-2026-44394