Skip to content

Unauthenticated local access to Ironic API

Moderate
tuminoid published GHSA-g2cm-9v5f-qg7r Apr 17, 2024

Package

ironic-image (Docker image)

Affected versions

< 24.1.0

Patched versions

24.1.1

Description

Ironic-image is an OpenStack Ironic deployment packaged and configured by Metal3.

When the reverse proxy mode is enabled by the IRONIC_REVERSE_PROXY_SETUP variable set to true:

  1. HTTP basic credentials are validated on the HTTPD side in a separate container, not in the Ironic service itself.
  2. Ironic listens in host network on a private port 6388 on localhost by default.

As a result, when the reverse proxy mode is used, any Pod or local Unix user on the control plane Node can access the Ironic API on the private port without authentication.

A similar problem affects Ironic Inspector (INSPECTOR_REVERSE_PROXY_SETUP set to true), although the attack potential is smaller there.

Impact

This issue affects operators deploying ironic-image in the reverse proxy mode, which is the recommended mode when TLS is used (also recommended), with the IRONIC_PRIVATE_PORT variable unset or set to a numeric value. In this case, an attacker with enough privileges to launch a pod on the control plane with host networking can access Ironic API and use it to modify bare-metal machine, e.g. provision them with a new image or change their BIOS settings.

Patches

Workarounds

Two different workarounds are possible:

  1. Switch to using unix sockets for traffic between HTTPD and Ironic/Inspector (recommended). Set the variables IRONIC_PRIVATE_PORT and IRONIC_INSPECTOR_PRIVATE_PORT to the value unix.
  2. Temporarily stop using the reverse proxy mode (set IRONIC_REVERSE_PROXY_SETUP and INSPECTOR_REVERSE_PROXY_SETUP to false).

Using the workaround may require Baremetal Operator reconfiguration, depending on the deployed Metal3 configuration. See referenced pull requests.

References

Severity

Moderate
4.7
/ 10

CVSS base metrics

Attack vector
Local
Attack complexity
High
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N

CVE ID

No known CVE

Weaknesses