{"id":"CVE-2026-46447","aliases":["DEBIAN-CVE-2026-46447","EUVD-2026-34181","GHSA-jrh2-f5jc-xpgr","PYSEC-2026-3471","UBUNTU-CVE-2026-46447","USN-8421-1"],"status":"published","title":"OpenStack Ironic allows Boot Script Injection","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","severity":{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00262,"percentile":0.18132,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-669"],"published":"2026-06-03T00:00:00Z","modified":"2026-10-28T02:30:28Z","fixes":[{"ecosystem":"PyPI","package":"ironic","fixed_in":["26.1.7","29.0.6","32.0.2","35.0.2"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"ironic","fixed_in":["1:21.4.4-0+deb12u1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"ironic","fixed_in":["1:29.0.5-0+deb13u2"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"ironic","fixed_in":["1:35.0.1-5"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"ironic","fixed_in":["1:20.1.0-0ubuntu1.3"],"sources":["osv"]},{"ecosystem":"Ubuntu:24.04:LTS","package":"ironic","fixed_in":["1:24.1.1-0ubuntu1.3"],"sources":["osv"]},{"ecosystem":"Ubuntu:25.10","package":"ironic","fixed_in":["1:32.0.0-0ubuntu1.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:26.04:LTS","package":"ironic","fixed_in":["1:35.0.0-0ubuntu2.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"17.0.0"},{"fixed":"26.1.7"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"27.0.0"},{"fixed":"29.0.6"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"30.0.0"},{"fixed":"32.0.2"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"33.0.0"},{"fixed":"35.0.2"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:21.4.4-0+deb12u1"}]}],"versions":["1:21.1.0-3","1:21.1.0-3+deb12u1","1:21.3.0-1","1:21.4.0-1","1:21.4.0-2","1:21.4.0-3","1:21.4.0-4"]},{"source":"osv","ecosystem":"Debian:13","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:29.0.5-0+deb13u2"}]}],"versions":["1:29.0.0-7","1:29.0.5-0+deb13u1"]},{"source":"osv","ecosystem":"Debian:14","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:35.0.1-5"}]}],"versions":["1:29.0.0-7","1:32.0.0-1","1:32.0.0-2","1:32.0.0-4","1:32.0.0-5","1:32.0.0-6","1:32.0.0-7","1:34.0.0-1","1:35.0.0-1","1:35.0.0-2","1:35.0.1-1","1:35.0.1-2","1:35.0.1-3"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"17.0.0"},{"fixed":"26.1.7"}]}],"versions":["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","24.1.3","24.1.4","24.1.5","25.0.0","26.0.0","26.1.0","26.1.1","26.1.2","26.1.3","26.1.4","26.1.5","26.1.6"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"27.0.0"},{"fixed":"29.0.6"}]}],"versions":["27.0.0","28.0.0","29.0.0","29.0.1","29.0.2","29.0.3","29.0.4","29.0.5"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"30.0.0"},{"fixed":"32.0.2"}]}],"versions":["30.0.0","31.0.0","32.0.0","32.0.1"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"33.0.0"},{"fixed":"35.0.2"}]}],"versions":["33.0.0","34.0.0","35.0.0","35.0.1"]},{"source":"osv","ecosystem":"PyPI","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"17.0.0"},{"fixed":"26.1.7"},{"introduced":"27.0.0"},{"fixed":"29.0.6"},{"introduced":"30.0.0"},{"fixed":"32.0.2"},{"introduced":"33.0.0"},{"fixed":"35.0.2"}]}],"versions":["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","24.1.3","24.1.4","24.1.5","25.0.0","26.0.0","26.1.0","26.1.1","26.1.2","26.1.3","26.1.4","26.1.5","26.1.6","27.0.0","28.0.0","29.0.0","29.0.1","29.0.2","29.0.3","29.0.4","29.0.5","30.0.0","31.0.0","32.0.0","32.0.1","33.0.0","34.0.0","35.0.0","35.0.1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:20.1.0-0ubuntu1.3"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:24.1.1-0ubuntu1.3"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:32.0.0-0ubuntu1.1"}]}],"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"]},{"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"},{"fixed":"1:35.0.0-0ubuntu2.1"}]}],"versions":["1:32.0.0-0ubuntu1","1:34.0.0-0ubuntu1","1:35.0.0-0ubuntu1","1:35.0.0-0ubuntu2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:20.1.0-0ubuntu1.3"}]}],"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"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:24.1.1-0ubuntu1.3"}]}],"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"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:32.0.0-0ubuntu1.1"}]}],"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"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"ironic","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1:35.0.0-0ubuntu2.1"}]}],"versions":["1:32.0.0-0ubuntu1","1:34.0.0-0ubuntu1","1:35.0.0-0ubuntu1","1:35.0.0-0ubuntu2"],"bundled":3}],"products":[{"vendor":"openstack","product":"ironic"}],"references":[{"url":"https://bugs.launchpad.net/ironic/+bug/2150624","tags":["Issue Tracking","web","report"]},{"url":"https://security.openstack.org/ossa/OSSA-2026-017.html","tags":["Patch","Vendor Advisory","web"]},{"url":"http://www.openwall.com/lists/oss-security/2026/06/03/11","tags":["Mailing List","Third Party Advisory","web"]},{"url":"http://www.openwall.com/lists/oss-security/2026/06/15/9","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-46447","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-jrh2-f5jc-xpgr","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/46xxx/CVE-2026-46447.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-46447","tags":["advisory"]},{"url":"https://github.com/openstack/ironic","tags":["package"]},{"url":"https://pypi.org/project/ironic","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-46447","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-46447","tags":["report"]},{"url":"https://www.openwall.com/lists/oss-security/2026/06/03/11","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8421-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-44917","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-48681","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-46447","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","status":"published","published":"2026-06-03T00:00:00Z","modified":"2026-06-15T22:40:19.59Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-669"],"updated_at":"2026-11-02T13:47:06.353366Z"}],"euvd":[{"id":"EUVD-2026-34181","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","status":"published","published":"2026-06-03T00:00:00Z","modified":"2026-06-15T22:40:19Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T18:20:40.975704Z"}],"ghsa":[{"id":"GHSA-jrh2-f5jc-xpgr","title":"OpenStack Ironic allows Boot Script Injection","description":"OpenStack Ironic through 35.0.x allows Boot Script Injection.","status":"published","published":"2026-06-04T00:30:25Z","modified":"2026-07-14T19:35:22Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-669"],"updated_at":"2026-11-02T14:40:43.958448Z"}],"nvd":[{"id":"CVE-2026-46447","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","status":"published","published":"2026-06-03T22:16:34.793Z","modified":"2026-07-22T20:10:00.127Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"high","assessor":"primary"}],"cwes":["CWE-669"],"updated_at":"2026-11-02T14:12:22.022466Z"}],"osv":[{"id":"CVE-2026-46447","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","status":"published","published":"2026-06-03T00:00:00Z","modified":"2026-10-28T02:30:28.624694998Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-669"],"updated_at":"2026-11-02T15:45:05.870292Z"},{"id":"DEBIAN-CVE-2026-46447","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","status":"published","published":"2026-06-03T22:16:34.793Z","modified":"2026-10-01T03:03:15.607751235Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:56.025495Z"},{"id":"GHSA-jrh2-f5jc-xpgr","title":"OpenStack Ironic allows Boot Script Injection","description":"OpenStack Ironic through 35.0.x allows Boot Script Injection.","status":"published","published":"2026-06-04T00:30:25Z","modified":"2026-07-23T15:11:17.2721788Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-669"],"updated_at":"2026-11-02T15:46:50.687609Z"},{"id":"PYSEC-2026-3471","title":"OpenStack Ironic allows Boot Script Injection","description":"OpenStack Ironic through 35.0.x allows Boot Script Injection.","status":"published","published":"2026-07-23T11:41:37.984855Z","modified":"2026-07-23T15:00:14.215156335Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:52:56.847083Z"},{"id":"UBUNTU-CVE-2026-46447","description":"OpenStack Ironic before 35.0.2 allows Boot Script Injection of an iPXE script if the attacker can set node.driver_info or node.instance_info.","status":"published","published":"2026-06-03T22:16:00Z","modified":"2026-10-17T12:58:24.04051981Z","cvss":[{"version":"3.1","score":5.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:N/I:H/A:N","level":"medium"},{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T16:56:30.797112Z"},{"id":"USN-8421-1","title":"ironic vulnerabilities","description":"Dmitry Tantsur and Tuomo Tanskanen discovered that Ironic did not\nproperly validate file paths when handling ISO images. A privileged\nauthenticated remote user could use this issue to perform path\ntraversal via a crafted ISO image and overwrite arbitrary files on\nthe Ironic conductor. (CVE-2026-48681)\n\nDmitry Tantsur and Tuomo Tanskanen discovered that Ironic did not\nproperly validate kernel command line parameters. A privileged\nauthenticated remote user could use this issue to inject\nscripts during node boot and possibly execute arbitrary code.\n(CVE-2026-46447)\n\nDmitry Tantsur and Tuomo Tanskanen discovered that Ironic\nincorrectly restricted access to custom PXE templates. A privileged\nauthenticated remote user could use this issue to read arbitrary\nsensitive files on the Ironic conductor. (CVE-2026-44917)","status":"published","published":"2026-06-11T12:22:01Z","modified":"2026-06-12T09:18:53.155920899Z","updated_at":"2026-11-02T16:58:25.103481Z"}]}}
