Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain role:reader token on any project
-
DeliverySend GET /v3/role_assignments with domain ID as scope.project.id and include_subtree=true
-
ExploitNull domain_id policy check passes for any authenticated caller
-
ExecutionReceive full role assignment list with user, group, and project names via include_names
-
PersistExtract additional domain IDs from response
-
ImpactRepeat query iteratively across all domains to map entire cloud identity topology
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Type safety enforcement
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must hold a valid Keystone authentication token with role:reader on any project in the target OpenStack deployment - the minimum non-guest privilege level, commonly granted to ordinary tenants in multi-tenant clouds. No administrative rights, domain-scoped roles, or elevated permissions beyond role:reader are required. Crucially, the attack against the 'default' domain requires no prior knowledge of domain IDs - the literal string 'default' is a universal constant present in every deployment initialized with keystone-manage bootstrap, which covers virtually all standard OpenStack installations. Non-default domains require a domain ID, but these can be iteratively harvested from the initial default-domain response, removing this as a meaningful barrier after the first query. The flaw is limited to read-only enumeration - exploitation grants no write access, no privilege escalation, and no availability impact. The only meaningful limiting factor is the requirement for PR:L authentication; fully unauthenticated attackers cannot exploit this flaw. |
| Impact | The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N, score 7.1) accurately reflects the threat profile. The network attack vector and low attack complexity are confirmed: any HTTP client with a valid token can reach the endpoint. PR:L is correct - role:reader is the minimum non-guest privilege in Keystone, making the authentication bar extremely low in any multi-tenant environment. VC:H is warranted because a single successful request against the default domain can return the complete role assignment graph for all principals in that domain, with iterative queries revealing the entire cloud identity topology. SC:L captures that downstream systems consuming Keystone identity data (Nova, Neutron, Swift, etc.) may be indirectly exposed through the disclosed privilege map. Key risk amplifiers: the 'default' domain ID is a known constant (not a secret), so an attacker with any low-privilege token needs no prior reconnaissance to launch the attack. The iterative harvest mechanic - where each response yields new domain IDs to query - means a single entry point can enumerate the entire cloud. Risk mitigators: exploitation requires a valid authenticated token (PR:L); no KEV listing and no identified POC reduce immediate threat urgency. EPSS data was not available in the provided intelligence. The 'Memory Corruption' tag should not factor into risk scoring - the actual impact is information disclosure only. |
| Exploit ScenarioDerived | An attacker who has obtained a minimal OpenStack user account - such as a shared-tenant account in a public cloud or a compromised service account - authenticates to Keystone and obtains a project-scoped token with role:reader. The attacker sends GET /v3/role_assignments?scope.project.id=default&include_subtree=true&include_names=true using the well-known 'default' domain ID constant, receiving a full role assignment listing for the default domain including user names, group names, and home-domain IDs. The attacker iterates over the returned domain IDs to repeat the query, progressively constructing a complete map of role assignments across all domains in the cloud - without ever requiring administrative credentials. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
OpenStack Keystone before 29.0.3 allows any authenticated user holding role:reader on any project to enumerate all role assignments across any domain in the cloud by exploiting a type-confusion bug in the GET /v3/role_assignments endpoint. The attack supplies a domain ID as scope.project.id with include_subtree, triggering a null domain_id policy check that passes unconditionally for all callers because domains are internally modeled as projects with domain_id=null. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role across the targeted domain - and the well-known 'default' domain constant works against every deployment bootstrapped with keystone-manage bootstrap, requiring no prior reconnaissance. No public exploit code has been identified at time of analysis, and the flaw is not listed in CISA KEV.
RemediationAI
The primary fix is to upgrade OpenStack Keystone to version 29.0.3 or later, which corrects the null domain_id handling in list_role_assignments_for_tree. The upstream tracking reference is https://launchpad.net/bugs/2154645; operators using distribution packages should await vendor-specific security errata that backport the fix to supported branches. If immediate patching is not possible, a targeted compensating control is to restrict the GET /v3/role_assignments endpoint in Keystone's policy.yaml by requiring a domain-scoped admin role for any request that includes the include_subtree parameter - this prevents role:reader project-scoped tokens from accessing the vulnerable code path, though it may break legitimate administrative tooling that relies on subtree listing. A secondary control is to audit and minimize role:reader grants to only known, trusted users, reducing the population of potential attackers. Blocking include_subtree entirely via policy would eliminate the attack surface without full endpoint shutdown but requires testing against tenant automation that uses this parameter.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenStack Keystone (CPE: cpe:2.3:a:openstack:keystone:*:*:*:*:*:*:*:*) is the identity and access management service underpinning OpenStack clouds, implementing domain- and project-scoped role assignment via its v3 API. Internally, Keystone stores domains as special project rows in its database with domain_id=null - a design that conflates the domain concept with the project hierarchy. CWE-843 (Access of Resource Using Incompatible Type, commonly called 'type confusion') precisely describes the root cause: in list_role_assignments_for_tree, the policy enforcement logic compares the caller's domain scope against the target project's domain_id field. Because a domain's project record holds domain_id=None (Python None / SQL NULL), the equality check passes for any authenticated caller regardless of their actual domain context - Python's None does not enforce a domain boundary, it collapses it. The include_subtree parameter instructs the endpoint to recurse through all child projects, and include_names triggers the API to embed full identity metadata (user names, group names, project identifiers, home-domain IDs) in the response body. Note: the 'Memory Corruption' tag in the provided intelligence appears to be a mistag - CWE-843 here manifests as an authorization bypass and information disclosure, not memory safety.
Know when Openstack gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N
Network-accessible API endpoint requiring only role:reader (PR:L); null domain_id bypass fully discloses role assignment data across domains (C:H); no integrity or availability impact applies.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
2DescriptionCVE.org
In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal "default" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of "None" in
list_role_assignments_for_tree.
Executive ViewAI
OpenStack Keystone versions before 29.0.3 contain a privilege escalation flaw enabling authenticated users to extract sensitive identity data-including all users, groups, projects, and roles-across any domain in the cloud environment. This vulnerability exposes the complete identity structure to users with minimal role:reader privileges and could enable lateral movement or privilege escalation attacks. Immediate mitigation is required while awaiting vendor patches.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict network access to Keystone APIs to trusted management networks only; (2) Implement multi-factor authentication for all administrative access; (3) Monitor audit logs for suspicious role_assignments queries combining include_subtree and include_names parameters; (4) Audit and minimize role:reader role assignments; (5) If technically feasible, restrict or block the include_names parameter at API gateway or WAF level.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Oracle MySQL through 5.5.52, 5.6.x through 5.6.33, and 5.7.x through 5.7.15; MariaDB before 5.5.51, 10.0.x before 10.0.2
Eval injection vulnerability in the create method in the Bookmarks controller in Foreman before 1.2.0-RC2 allows remote
The create method in app/controllers/users_controller.rb in Foreman before 1.2.0-RC2 allows remote authenticated users w
Systems with microprocessors utilizing speculative execution and speculative execution of memory reads before the addres
The Floppy Disk Controller (FDC) in QEMU, as used in Xen 4.5.x and earlier and KVM, allows local guest users to cause a
Memory Corruption was discovered in the cmsgpack library in the Lua subsystem in Redis before 3.2.12, 4.x before 4.0.10,
The IPTables firewall in OpenStack Neutron before 7.0.4 and 8.0.0 through 8.1.0 allows remote attackers to bypass an int
An issue in OpenStack magnum yoga-eom version allows a remote attacker to execute arbitrary code via the cert_manager.py
An Integer Overflow issue was discovered in the struct library in the Lua subsystem in Redis before 3.2.12, 4.x before 4
glibc contains a vulnerability that allows specially crafted LD_LIBRARY_PATH values to manipulate the heap/stack, causin
Buffer overflow in the pcnet_receive function in hw/net/pcnet.c in QEMU, when a guest NIC has a larger MTU, allows remot
Code injection in OpenStack Vitrage query parser allows authenticated users to execute arbitrary Python code through cra
EUVD-2026-66818
GHSA-xmh6-7768-658c
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB