{"id":"CVE-2024-31463","state":"PUBLISHED","title":"Ironic-image allows unauthenticated local access to Ironic API","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 and 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. 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. This vulnerability is fixed in 24.1.1. ","publishedAt":"2024-04-17T15:21:49.384Z","updatedAt":"2024-08-02T01:52:57.081Z","severity":{"score":4.7,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["metal3-io ironic-image"],"affected":[{"vendor":"metal3-io","product":"ironic-image","versions":[{"version":"< 24.1.1","status":"affected"}]}],"references":["https://github.com/metal3-io/ironic-image/security/advisories/GHSA-g2cm-9v5f-qg7r","https://github.com/metal3-io/ironic-image/pull/494","https://github.com/metal3-io/ironic-image/commit/48e40bd30d49aefabac6fc80204a8650b13d10b4"],"weaknesses":["CWE-288"],"ingestedAt":"2026-10-29T20:07:21.467Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/31xxx/CVE-2024-31463.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.1","cveMetadata":{"cveId":"CVE-2024-31463","state":"PUBLISHED","datePublished":"2024-04-17T15:21:49.384Z","dateUpdated":"2024-08-02T01:52:57.081Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2024-04-03T17:55:32.647Z"},"containers":{"cna":{"title":"Ironic-image allows unauthenticated local access to Ironic API","descriptions":[{"lang":"en","value":"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 and 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. 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. This vulnerability is fixed in 24.1.1. "}],"affected":[{"vendor":"metal3-io","product":"ironic-image","versions":[{"version":"< 24.1.1","status":"affected"}]}],"references":[{"url":"https://github.com/metal3-io/ironic-image/security/advisories/GHSA-g2cm-9v5f-qg7r","name":"https://github.com/metal3-io/ironic-image/security/advisories/GHSA-g2cm-9v5f-qg7r","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/metal3-io/ironic-image/pull/494","name":"https://github.com/metal3-io/ironic-image/pull/494","tags":["x_refsource_MISC"]},{"url":"https://github.com/metal3-io/ironic-image/commit/48e40bd30d49aefabac6fc80204a8650b13d10b4","name":"https://github.com/metal3-io/ironic-image/commit/48e40bd30d49aefabac6fc80204a8650b13d10b4","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":4.7,"baseSeverity":"MEDIUM","confidentialityImpact":"NONE","integrityImpact":"HIGH","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-288","lang":"en","description":"CWE-288: Authentication Bypass Using an Alternate Path or Channel","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2024-04-17T15:21:49.384Z"},"source":{"advisory":"GHSA-g2cm-9v5f-qg7r","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-31463","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-07-03T15:16:37.818205Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-07-05T17:22:59.080Z"}},{"title":"CVE Program Container","references":[{"url":"https://github.com/metal3-io/ironic-image/security/advisories/GHSA-g2cm-9v5f-qg7r","name":"https://github.com/metal3-io/ironic-image/security/advisories/GHSA-g2cm-9v5f-qg7r","tags":["x_refsource_CONFIRM","x_transferred"]},{"url":"https://github.com/metal3-io/ironic-image/pull/494","name":"https://github.com/metal3-io/ironic-image/pull/494","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/metal3-io/ironic-image/commit/48e40bd30d49aefabac6fc80204a8650b13d10b4","name":"https://github.com/metal3-io/ironic-image/commit/48e40bd30d49aefabac6fc80204a8650b13d10b4","tags":["x_refsource_MISC","x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-02T01:52:57.081Z"}}]}}}