CVE-2026-28370 Overview
A critical code execution vulnerability exists in the query parser of OpenStack Vitrage before versions 12.0.1, 13.0.0, 14.0.0, and 15.0.0. The vulnerability resides in the _create_query_function within vitrage/graph/query.py, where improper handling of user-supplied input allows authenticated users with API access to execute arbitrary code on the Vitrage service host. This code injection flaw (CWE-95) enables attackers to run commands with the same privileges as the Vitrage service account, potentially leading to full system compromise.
Critical Impact
Authenticated attackers can achieve remote code execution on the Vitrage service host, potentially compromising the entire OpenStack deployment and enabling lateral movement across the infrastructure.
Affected Products
- OpenStack Vitrage versions before 12.0.1
- OpenStack Vitrage version 13.0.0
- OpenStack Vitrage version 14.0.0
- OpenStack Vitrage version 15.0.0
Discovery Timeline
- 2026-02-27 - CVE-2026-28370 published to NVD
- 2026-03-05 - Last updated in NVD database
Technical Details for CVE-2026-28370
Vulnerability Analysis
This vulnerability is classified as a Code Injection flaw (CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code). The issue affects the query parser component of OpenStack Vitrage, specifically within the graph query functionality. When processing user-supplied queries through the Vitrage API, the application fails to properly sanitize input before dynamically evaluating it, creating an opportunity for code injection.
The vulnerability allows any user with access to the Vitrage API to craft malicious queries that result in arbitrary code execution on the server side. Because the code runs in the context of the Vitrage service account, successful exploitation grants attackers the ability to access sensitive data, modify configurations, or pivot to other systems within the OpenStack environment.
All deployments that expose the Vitrage API are vulnerable. Given that Vitrage is a root cause analysis service for OpenStack, it typically has significant access to infrastructure monitoring data, making compromise particularly impactful.
Root Cause
The root cause lies in the _create_query_function function located in vitrage/graph/query.py. This function dynamically constructs and evaluates code based on user-provided query parameters without adequate input validation or sanitization. The lack of proper escaping or parameterization allows attackers to inject arbitrary Python code that gets executed by the interpreter.
The vulnerable code pattern involves directly interpolating user-controlled data into dynamically evaluated expressions, violating secure coding principles that mandate separation between code and data.
Attack Vector
The attack is network-accessible and requires authentication to the Vitrage API. An attacker with valid credentials (even low-privilege access) can exploit this vulnerability by:
- Sending a crafted API request to the Vitrage service with a malicious query parameter
- The query parser processes the input through the _create_query_function function
- Malicious code embedded in the query is dynamically evaluated
- Arbitrary commands execute with the privileges of the Vitrage service account
The vulnerability affects deployments where the Vitrage API is exposed to users who may not be fully trusted, including multi-tenant environments. Technical details about the vulnerable code pattern can be found in the GitHub code reference.
Detection Methods for CVE-2026-28370
Indicators of Compromise
- Unusual process spawning from the Vitrage service process
- Unexpected network connections originating from the Vitrage service host
- Anomalous API requests to Vitrage endpoints containing special characters or Python syntax in query parameters
- Evidence of code execution artifacts in Vitrage service logs
Detection Strategies
- Monitor Vitrage API logs for query parameters containing Python keywords such as exec, eval, import, __builtins__, or shell command syntax
- Implement application-layer firewalls or WAF rules to detect code injection patterns in API requests
- Enable enhanced audit logging on the Vitrage service to capture detailed request information
- Deploy endpoint detection and response (EDR) solutions to identify suspicious process behavior from the Vitrage service account
Monitoring Recommendations
- Configure alerting for any child processes spawned by the Vitrage service that are not part of normal operations
- Establish baseline behavior for Vitrage API usage and alert on statistical anomalies in query patterns
- Monitor for privilege escalation attempts or lateral movement originating from the Vitrage host
- Review authentication logs for the Vitrage API to identify potentially compromised accounts being used for exploitation attempts
How to Mitigate CVE-2026-28370
Immediate Actions Required
- Upgrade OpenStack Vitrage to version 12.0.1 or the latest patched version for your deployment branch
- If immediate patching is not possible, restrict access to the Vitrage API to only trusted administrators
- Implement network segmentation to limit exposure of the Vitrage API endpoint
- Review recent Vitrage API access logs for indicators of exploitation
Patch Information
OpenStack has released security patches addressing this vulnerability. Users should upgrade to Vitrage version 12.0.1 or later, or apply the appropriate patches for versions 13.x, 14.x, and 15.x branches. For detailed patch information and upgrade guidance, consult the OpenStack Storyboard Entry and the Openwall OSS Security Mail.
Workarounds
- Restrict Vitrage API access at the network level using firewall rules or security groups to allow only trusted IP addresses
- Implement additional authentication controls such as multi-factor authentication for Vitrage API access
- Deploy an API gateway or reverse proxy with input validation rules to filter potentially malicious query parameters
- Consider temporarily disabling the Vitrage service if it is not critical to operations until patching can be completed
# Example: Restrict Vitrage API access using iptables
# Allow only management network to access Vitrage API (default port 8999)
iptables -A INPUT -p tcp --dport 8999 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 8999 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


