{"id":"CVE-2025-44021","aliases":["DEBIAN-CVE-2025-44021","EUVD-2025-14023","GHSA-q3m2-crgq-5p3q","PYSEC-2025-38","UBUNTU-CVE-2025-44021"],"status":"published","title":"OpenStack Ironic fails to restrict paths used for file:// image URLs","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","severity":{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.0019,"percentile":0.08751,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-22"],"published":"2025-05-08T00:00:00Z","modified":"2026-10-17T12:56:51Z","fixes":[{"ecosystem":"PyPI","package":"ironic","fixed_in":["24.1.3","26.1.1","29.0.1"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"ironic","fixed_in":["1:21.1.0-3+deb12u1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"ironic","fixed_in":["1:29.0.0-6"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"ironic","fixed_in":["1:29.0.0-6"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"24.1.3"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"25.0.0"},{"fixed":"26.1.1"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"27.0.0"},{"fixed":"29.0.1"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:21.1.0-3+deb12u1"}]}],"versions":["1:21.1.0-3"]},{"source":"osv","ecosystem":"Debian:13","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:29.0.0-6"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:29.0.0-6"}]}]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"24.1.3"}]}],"versions":["0.0","10.1.10","10.1.7","10.1.8","10.1.9","11.1.1","11.1.2","11.1.3","11.1.4","12.0.0","12.1.0","12.1.1","12.1.2","12.1.3","12.1.4","12.1.5","12.1.6","12.2.0","13.0.0","13.0.1","13.0.2","13.0.3","13.0.4","13.0.5","13.0.6","13.0.7","14.0.0","15.0.0","15.0.1","15.0.2","15.1.0","15.2.0","16.0.0","16.0.1","16.0.2","16.0.3","16.0.4","16.0.5","16.1.0","16.2.0","17.0.0","17.0.1","17.0.2","17.0.3","17.0.4","17.1.0","18.0.0","18.1.0","18.2.0","18.2.1","18.2.2","18.3.0","19.0.0","20.0.0","20.1.0","20.1.1","20.1.2","20.1.3","20.2.0","21.0.0","21.1.0","21.1.1","21.1.2","21.2.0","21.3.0","21.4.0","21.4.1","21.4.2","21.4.3","21.4.4","22.0.0","22.1.0","23.0.0","23.0.1","23.0.2","23.0.3","23.0.4","23.0.5","23.1.0","24.0.0","24.1.0","24.1.1","24.1.2","9.1.6","9.1.7"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"25.0.0"},{"fixed":"26.1.1"}]}],"versions":["25.0.0","26.0.0","26.1.0"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"27.0.0"},{"fixed":"29.0.1"}]}],"versions":["27.0.0","28.0.0","29.0.0"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"24.1.3"},{"introduced":"25.0.0"},{"fixed":"26.1.1"},{"introduced":"27.0.0"},{"fixed":"29.0.1"}]}],"versions":["0.0","10.1.10","10.1.7","10.1.8","10.1.9","11.1.1","11.1.2","11.1.3","11.1.4","12.0.0","12.1.0","12.1.1","12.1.2","12.1.3","12.1.4","12.1.5","12.1.6","12.2.0","13.0.0","13.0.1","13.0.2","13.0.3","13.0.4","13.0.5","13.0.6","13.0.7","14.0.0","15.0.0","15.0.1","15.0.2","15.1.0","15.2.0","16.0.0","16.0.1","16.0.2","16.0.3","16.0.4","16.0.5","16.1.0","16.2.0","17.0.0","17.0.1","17.0.2","17.0.3","17.0.4","17.1.0","18.0.0","18.1.0","18.2.0","18.2.1","18.2.2","18.3.0","19.0.0","20.0.0","20.1.0","20.1.1","20.1.2","20.1.3","20.2.0","21.0.0","21.1.0","21.1.1","21.1.2","21.2.0","21.3.0","21.4.0","21.4.1","21.4.2","21.4.3","21.4.4","22.0.0","22.1.0","23.0.0","23.0.1","23.0.2","23.0.3","23.0.4","23.0.5","23.1.0","24.0.0","24.1.0","24.1.1","24.1.2","25.0.0","26.0.0","26.1.0","27.0.0","28.0.0","29.0.0","9.1.6","9.1.7"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:4.2.0-0ubuntu1","1:4.3.0-0ubuntu1","1:5.1.0-0ubuntu1","1:5.1.2-0ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:9.1.0-0ubuntu2","1:9.2.0-0ubuntu1","1:10.0.0-0ubuntu1","1:10.1.0-0ubuntu1","1:10.1.1-0ubuntu1","1:10.1.1-0ubuntu2"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:13.0.1-0ubuntu1","1:14.0.0~b1~git2019121713.76597ca93-0ubuntu1","1:14.0.0~b1~git2019121713.76597ca93-0ubuntu2","1:14.0.0-0ubuntu1","1:14.0.1~git2020032415.de2d907fc-0ubuntu1","1:14.0.1~git2020041013.af9e6ba90-0ubuntu2","1:15.0.0-0ubuntu0.20.04.1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:18.2.0-0ubuntu1","1:18.2.0+git2021120910.cdc3b9538-0ubuntu1","1:19.0.0+git2022011216.7beadee46-0ubuntu1","1:20.0.0+git2022030313.4e6a3d52e-0ubuntu1","1:20.1.0-0ubuntu1","1:20.1.0-0ubuntu1.1","1:20.1.0-0ubuntu1.2","1:20.1.0-0ubuntu1.3"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:23.0.0-0ubuntu3","1:23.1.0+git2024011916.a374a0c1-0ubuntu1","1:24.1.0-0ubuntu1","1:24.1.1-0ubuntu1","1:24.1.1-0ubuntu1.2","1:24.1.1-0ubuntu1.3"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:29.0.0-0ubuntu1","1:30.0.0+git2025070713.577833d78-0ubuntu1","1:30.0.0+git2025070713.577833d78-0ubuntu2","1:32.0.0-0ubuntu1","1:32.0.0-0ubuntu1.1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:35.0.0-0ubuntu2","1:35.0.0-0ubuntu3","1:38.0.0+git20260818.101.f8e78b0-0ubuntu1","1:38.0.0+git2026091517.26c022f13-0ubuntu1","1:39.0.0-0ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1:32.0.0-0ubuntu1","1:34.0.0-0ubuntu1","1:35.0.0-0ubuntu1","1:35.0.0-0ubuntu2","1:35.0.0-0ubuntu2.1"]}],"products":[{"vendor":"openstack","product":"ironic"}],"references":[{"url":"https://bugs.launchpad.net/ironic/+bug/2107847","tags":["web","report"]},{"url":"https://security.openstack.org/ossa/OSSA-2025-001.html","tags":["web","report"]},{"url":"http://www.openwall.com/lists/oss-security/2025/05/08/1","tags":["web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-44021","tags":["advisory"]},{"url":"https://github.com/openstack/ironic/commit/10590b36f541130f6a5d7a49da0f095ff8390cce","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/ironic/PYSEC-2025-38.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-q3m2-crgq-5p3q","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2025-44021","tags":["advisory"]},{"url":"https://github.com/openstack/ironic","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2025-44021","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-44021","tags":["report"]},{"url":"https://www.openwall.com/lists/oss-security/2025/05/08/1","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2025-44021","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T00:00:00Z","modified":"2025-05-08T21:02:53.418Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low","assessor":"cna"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:32:34.434755Z"}],"euvd":[{"id":"EUVD-2025-14023","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T00:00:00Z","modified":"2025-05-08T21:02:53Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low"}],"updated_at":"2026-11-02T20:32:51.238738Z"}],"ghsa":[{"id":"GHSA-q3m2-crgq-5p3q","title":"OpenStack Ironic fails to restrict paths used for file:// image URLs","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T18:30:42Z","modified":"2025-05-08T22:07:16Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:38:43.172412Z"}],"nvd":[{"id":"CVE-2025-44021","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T17:16:01.753Z","modified":"2026-06-17T09:24:55.933Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low","assessor":"secondary"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:11:06.085152Z"}],"osv":[{"id":"DEBIAN-CVE-2025-44021","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T17:16:01.753Z","modified":"2026-09-01T20:05:52.607558834Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low"}],"updated_at":"2026-11-02T15:45:47.378563Z"},{"id":"GHSA-q3m2-crgq-5p3q","title":"OpenStack Ironic fails to restrict paths used for file:// image URLs","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T18:30:42Z","modified":"2026-06-09T13:05:48Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:46:54.055966Z"},{"id":"UBUNTU-CVE-2025-44021","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T17:16:00Z","modified":"2026-10-17T12:56:51.658545291Z","cvss":[{"version":"3.1","score":2.8,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:N","level":"low"}],"updated_at":"2026-11-02T16:55:50.31802Z"},{"id":"CVE-2025-44021","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T17:16:01Z","modified":"2026-04-10T05:26:47.563803Z","updated_at":"2026-11-02T15:44:49.707645Z"},{"id":"PYSEC-2025-38","description":"OpenStack Ironic before 29.0.1 can write unintended files to a target node disk during image handling (if a deployment was performed via the API). A malicious project assigned as a node owner can provide a path to any local file (readable by ironic-conductor), which may then be written to the target node disk. This is difficult to exploit in practice, because a node deployed in this manner should never reach the ACTIVE state, but it still represents a danger in environments running with non-default, insecure configurations such as with automated cleaning disabled. The fixed versions are 24.1.3, 26.1.1, and 29.0.1.","status":"published","published":"2025-05-08T17:16:01Z","modified":"2026-06-10T17:01:52.6239306Z","updated_at":"2026-11-02T15:52:54.242332Z"}]}}
