CVE-2023-2088
Medium · 6.5CVSS
6.5
EPSS
1.2%
Published
May 12, 2023
CISA due date
—
Cloudanix analysis
A mismatch in how two parts of an OpenStack cloud track attached storage can let users see data they are not supposed to access.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Application
- Class
- Information Disclosure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Inconsistency between Cinder and Nova volume handling permits a remote authenticated user to detach volumes in a manner that exposes attached data, resulting in unauthorized confidentiality disclosure without requiring additional privileges or user interaction.
Why it matters to the business
Organizations running affected OpenStack deployments face elevated risk of data exposure from storage volumes, potentially leading to compliance violations, loss of customer trust, and operational disruption while the inconsistency remains unaddressed.
How an attack unfolds
An attacker with valid credentials issues a volume detach operation through Cinder that exploits the state inconsistency with Nova, allowing the volume to be accessed or observed outside its intended attachment context and thereby disclosing confidential data.
How to fix it
Apply vendor-supplied updates that reconcile volume state between Cinder and Nova; until patches are available, enforce strict RBAC on volume operations and monitor for anomalous detach requests.
How to confirm the fix worked
Review OpenStack component versions and configuration for consistent volume lifecycle handling, replay controlled detach operations in a test environment, and inspect service logs for state mismatches after detach events.
Typical attack path
- Obtain valid authenticated access to the OpenStack environment
- Identify a target volume attached via Nova
- Issue a detach operation through the Cinder API
- Leverage the resulting inconsistency to access volume data
How to detect it
Examine Cinder and Nova audit logs for volume detach operations performed by non-owner tenants, correlate with subsequent data access attempts, and search service logs for state inconsistency warnings or errors around volume lifecycle events.
What your security team should do
- Prioritize patching Cinder and Nova once fixed versions are released
- Audit and tighten volume detachment permissions for all tenants
- Enable detailed auditing of Cinder and Nova API calls
- Review existing volumes for unintended exposure after any detach operations
The record
A flaw was found in OpenStack due to an inconsistency between Cinder and Nova. This issue can be triggered intentionally or by accident. A remote, authenticated attacker could exploit this vulnerability by detaching one of their volumes from Cinder. The highest impact is to confidentiality.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | cinder | 0 | 2:17.4.0-1~deb11u2 |
| Debian:11 | nova | 0 | No fix |
| Debian:11 | python-glance-store | 0 | No fix |
| Debian:11 | python-os-brick | 0 | No fix |
| Debian:12 | cinder | 0 | 2:21.1.0-3 |
| Debian:12 | nova | 0 | 2:26.1.0-4 |
| Debian:12 | python-glance-store | 0 | 4.1.0-4 |
| Debian:12 | python-os-brick | 0 | 4.1.0-3 |
| Debian:13 | cinder | 0 | 2:21.1.0-3 |
| Debian:13 | nova | 0 | 2:26.1.0-4 |
| Debian:13 | python-glance-store | 0 | 4.1.0-4 |
| Debian:13 | python-os-brick | 0 | 4.1.0-3 |
| Red Hat:openstack:13::el7 | openstack-nova | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-api | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-cells | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-common | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-compute | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-conductor | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-console | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-migration | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-network | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-novncproxy | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-placement-api | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-scheduler | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-serialproxy | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | openstack-nova-spicehtml5proxy | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | python-glance-store | 0 | 0:0.23.1-0.20190916165255.cc7ecc1.el7ost |
| Red Hat:openstack:13::el7 | python-nova | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | python-nova-tests | 0 | 1:17.0.13-41.el7ost |
| Red Hat:openstack:13::el7 | python-os-brick | 0 | 0:2.3.9-12.el7ost |
| Red Hat:openstack:13::el7 | python2-glance-store | 0 | 0:0.23.1-0.20190916165255.cc7ecc1.el7ost |
| Red Hat:openstack:13::el7 | python2-os-brick | 0 | 0:2.3.9-12.el7ost |
| Red Hat:openstack:16.1::el8 | openstack-cinder | 0 | 1:15.4.0-1.20230510003501.58f0e73.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-api | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-common | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-compute | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-conductor | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-console | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-migration | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-novncproxy | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-scheduler | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-serialproxy | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | openstack-nova-spicehtml5proxy | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | python-glance-store | 0 | 0:1.0.2-1.20220219073735.el8ost |
| Red Hat:openstack:16.1::el8 | python-os-brick | 0 | 0:2.10.5-1.20220112193420.634fb4a.el8ost |
| Red Hat:openstack:16.1::el8 | python3-cinder | 0 | 1:15.4.0-1.20230510003501.58f0e73.el8ost |
| Red Hat:openstack:16.1::el8 | python3-glance-store | 0 | 0:1.0.2-1.20220219073735.el8ost |
| Red Hat:openstack:16.1::el8 | python3-nova | 0 | 1:20.4.1-1.20221005193232.el8ost |
| Red Hat:openstack:16.1::el8 | python3-os-brick | 0 | 0:2.10.5-1.20220112193420.634fb4a.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-cinder | 0 | 1:15.6.1-2.20230310075425.a19c1c9.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-api | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-common | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-compute | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-conductor | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-console | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-migration | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-novncproxy | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-scheduler | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-serialproxy | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | openstack-nova-spicehtml5proxy | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | python-glance-store | 0 | 0:1.0.2-2.20230309124927.79e043a.el8ost |
| Red Hat:openstack:16.2::el8 | python-os-brick | 0 | 0:2.10.8-2.20220112064936.458bfad.el8ost |
| Red Hat:openstack:16.2::el8 | python3-cinder | 0 | 1:15.6.1-2.20230310075425.a19c1c9.el8ost |
| Red Hat:openstack:16.2::el8 | python3-glance-store | 0 | 0:1.0.2-2.20230309124927.79e043a.el8ost |
| Red Hat:openstack:16.2::el8 | python3-nova | 0 | 1:20.6.2-2.20230308185149.el8ost |
| Red Hat:openstack:16.2::el8 | python3-os-brick | 0 | 0:2.10.8-2.20220112064936.458bfad.el8ost |
| Red Hat:openstack:16.2::el8 | tripleo-ansible | 0 | 0:0.8.1-2.20230309004941.el8ost |
| Red Hat:openstack:17.0::el9 | openstack-cinder | 0 | 1:18.2.1-0.20230509200451.1776695.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-api | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-common | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-compute | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-conductor | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-migration | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-novncproxy | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-scheduler | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-serialproxy | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | openstack-nova-spicehtml5proxy | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | python-glance-store | 0 | 0:2.5.1-0.20230509140449.5f1cee6.el9ost |
| Red Hat:openstack:17.0::el9 | python-os-brick | 0 | 0:4.3.3-0.20220715140803.d09dc9e.el9ost |
| Red Hat:openstack:17.0::el9 | python3-cinder | 0 | 1:18.2.1-0.20230509200451.1776695.el9ost |
| Red Hat:openstack:17.0::el9 | python3-cinder-common | 0 | 1:18.2.1-0.20230509200451.1776695.el9ost |
| Red Hat:openstack:17.0::el9 | python3-glance-store | 0 | 0:2.5.1-0.20230509140449.5f1cee6.el9ost |
| Red Hat:openstack:17.0::el9 | python3-nova | 0 | 1:23.2.2-0.20221209190754.7074ac0.el9ost |
| Red Hat:openstack:17.0::el9 | python3-os-brick | 0 | 0:4.3.3-0.20220715140803.d09dc9e.el9ost |
| Red Hat:openstack:17.0::el9 | tripleo-ansible | 0 | 0:3.3.1-0.20221208161844.fa5422f.el9ost |
| Ubuntu:16.04:LTS | cinder | 0 | No fix |
| Ubuntu:16.04:LTS | ironic | 0 | No fix |
| Ubuntu:16.04:LTS | python-glance-store | 0 | No fix |
| Ubuntu:16.04:LTS | python-os-brick | 0 | No fix |
| Ubuntu:18.04:LTS | ironic | 0 | No fix |
| Ubuntu:18.04:LTS | python-glance-store | 0 | No fix |
| Ubuntu:18.04:LTS | python-os-brick | 0 | No fix |
| Ubuntu:20.04:LTS | cinder | 0 | No fix |
| Ubuntu:20.04:LTS | cinder | 0 | 2:16.4.2-0ubuntu2.3 |
| Ubuntu:20.04:LTS | ironic | 0 | No fix |
| Ubuntu:20.04:LTS | nova | 0 | No fix |
| Ubuntu:20.04:LTS | nova | 0 | 2:21.2.4-0ubuntu2.3 |
| Ubuntu:20.04:LTS | python-glance-store | 0 | No fix |
| Ubuntu:20.04:LTS | python-glance-store | 0 | 2.0.0-0ubuntu4.1 |
| Ubuntu:20.04:LTS | python-os-brick | 0 | No fix |
| Ubuntu:20.04:LTS | python-os-brick | 0 | 3.0.8-0ubuntu1.1 |
| Ubuntu:22.04:LTS | cinder | 0 | 2:20.2.0-0ubuntu1.1 |
| Ubuntu:22.04:LTS | cinder | 0 | 2:20.1.0-0ubuntu2.1 |
| Ubuntu:22.04:LTS | ironic | 0 | 1:20.1.0-0ubuntu1.1 |
| Ubuntu:22.04:LTS | nova | 0 | 3:25.1.1-0ubuntu1.1 |
| Ubuntu:22.04:LTS | nova | 0 | 3:25.1.0-0ubuntu2.1 |
| Ubuntu:22.04:LTS | python-glance-store | 0 | 3.0.0-0ubuntu1.3 |
| Ubuntu:22.04:LTS | python-glance-store | 0 | 3.0.0-0ubuntu1.1 |
| Ubuntu:22.04:LTS | python-os-brick | 0 | 5.2.2-0ubuntu1.2 |
| Ubuntu:22.04:LTS | python-os-brick | 0 | 5.2.2-0ubuntu1 |
| Ubuntu:Pro:16.04:LTS | cinder | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | ironic | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | nova | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | python-glance-store | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | python-os-brick | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | cinder | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | ironic | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | nova | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | python-glance-store | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | python-os-brick | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | cinder | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | ironic | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | nova | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | python-glance-store | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | python-os-brick | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | ironic | 0 | No fix |
Related vulnerabilities
- CVE-2024-32498 An issue was discovered in OpenStack Cinder through 24.0.0, Glance before 28.0.2, and… Also affects cinder
- CVE-2014-3641 The (1) GlusterFS and (2) Linux Smbfs drivers in OpenStack Cinder before 2014.1.3 allows… Also affects cinder
- CVE-2013-1068 The OpenStack Nova (python-nova) package 1:2013.2.3-0 before 1:2013.2.3-0ubuntu1.2 and… Also affects cinder
- CVE-2024-40767 In OpenStack Nova before 27.4.1, 28 before 28.2.1, and 29 before 29.1.1, by supplying a… Also affects nova
- CVE-2015-9543 An issue was discovered in OpenStack Nova before 18.2.4, 19.x before 19.1.0, and 20.x… Also affects nova
- CVE-2015-3241 OpenStack Compute (nova) 2015.1 through 2015.1.1, 2014.2.3, and earlier does not stop the… Also affects nova
- CVE-2014-3608 The VMWare driver in OpenStack Compute (Nova) before 2014.1.3 allows remote authenticated… Also affects nova
- CVE-2014-3517 api/metadata/handler.py in OpenStack Compute (Nova) before 2013.2.4, 2014.x before… Also affects nova