OSSA-2024-003: 将未验证的图像数据传递给 qemu-img¶
- 日期:
2024年9月4日
- CVE:
CVE-2024-44082
影响¶
Ironic: <21.4.3, >=22.0.0 <23.0.2, >=23.1.0 <24.1.2, >=25.0.0 <26.0.1
Ironic-python-agent: <9.4.2, >=9.5.0 <9.7.1, >=9.8.0 <9.11.1, >=9.12.0 <9.13.1
描述¶
红帽的 Dan Smith 和 Julia Kreger 以及 G-Research 的 Jay Faulkner 注意到 Ironic 图像处理中存在一个漏洞,经过精心设计的图像可能被认证用户利用来利用 qemu-img 中的不良行为,包括可能未经授权访问潜在敏感数据。
缓解措施¶
附加补丁包含允许 Ironic 和 Ironic-Python-Agent (IPA) 在将它们传递给 qemu-img 之前预先筛选图像的代码。您应该修补这两个补丁,因为在某些流行的部署配置中,图像可能会绕过 Ironic conductor 以实现更高效的图像下载。
在无法修补 IPA 的情况下,有一个新的配置选项,[conductor]conductor_always_validates_images。当此选项为 True 时,所有图像下载都将被强制通过 Ironic conductor 进行,并在那里进行验证。但是,这可能会导致性能显著下降;因此,我们建议同时修补 Ironic 和 IPA。
对于所有维护分支(即 Dalmatian 开发分支(当前 master)到 Antelope),Ironic 和 IPA 都有可用的补丁。对于这些分支,conductor_always_validates_images 默认值为 False。
对于未维护的分支(Zed 到 Victoria),由于回归风险很大,IPA 没有可用的补丁。对于这些分支,Ironic 补丁将 conductor_always_validates_images 设置为 True,因为这是运行未修补的 IPA 的唯一安全方法。
缓存的图像¶
应清除 Ironic 图像缓存中的图像。要清除缓存,请停止 Ironic conductor 并删除该 conductor 节点上的 [pxe]instance_master_path 目录中的文件。
支持的图像格式¶
一个新的配置选项,[conductor]permitted_image_formats 控制 Ironic 将接受哪些图像格式。默认情况下,允许的格式为 ‘raw’ 和 ‘qcow2’,这是 Ironic 经过测试的唯一格式。在以前的版本中,可以使用其他不受支持格式的图像与 Ironic 一起使用,但现在由于图像转换过程中出现的安全问题,默认情况下已阻止这样做。虽然不建议这样做,但可以扩展允许格式的列表。或者,需要使用不受支持格式的图像的用户可以在将图像上传到 Glance 或以其他方式使图像可供 Ironic 使用之前,将图像离线转换为受支持的格式。有关详细信息,请参阅 Ironic 文档。
警告¶
如文档所述,OpenStack Ironic 项目不支持在非 Ironic 用例中使用 ironic-lib。在其正常的受支持环境中,ironic-lib 假定图像在 ironic-lib 与它们接触之前已经过预先筛选。因此,ironic-lib 的不受支持的使用会使您容易受到此 OSSA 中概述的漏洞攻击。
Ironic 项目打算最终显式删除 ironic-lib 中的漏洞方法,但提醒读者独立使用 ironic-lib 不受支持。
Bugfix 分支¶
维护的 bugfix 分支有可用的补丁。这些补丁将被合并到维护的分支,但不会从这些分支触发新的发布。
补丁¶
https://review.opendev.org/927972 (2023.1/antelope(ironic))
https://review.opendev.org/927979 (2023.1/antelope(ironic-python-agent))
https://review.opendev.org/927970 (2023.2/bobcat(ironic))
https://review.opendev.org/927978 (2023.2/bobcat(ironic-python-agent))
https://review.opendev.org/927968 (2024.1/caracal(ironic))
https://review.opendev.org/927976 (2024.1/caracal(ironic-python-agent))
https://review.opendev.org/927965 (2024.2/dalmatian(ironic))
https://review.opendev.org/927974 (2024.2/dalmatian(ironic-python-agent))
https://review.opendev.org/927969 (Bugfix/24.0 (ironic))
https://review.opendev.org/927967 (Bugfix/25.0 (ironic))
https://review.opendev.org/927966 (Bugfix/26.0 (ironic))
https://review.opendev.org/927983 (Bugfix/9.12 (ironic-python-agent))
https://review.opendev.org/927981 (Bugfix/9.13 (ironic-python-agent))
https://review.opendev.org/927984 (Bugfix/9.9 (ironic-python-agent))
https://review.opendev.org/927982 (Unmaintained/victoria(ironic))
https://review.opendev.org/927980 (Unmaintained/wallaby(ironic))
https://review.opendev.org/927977 (Unmaintained/xena(ironic))
https://review.opendev.org/927975 (Unmaintained/yoga(ironic))
https://review.opendev.org/927973 (Unmaintained/zed(ironic))
鸣谢¶
红帽的 Dan Smith (CVE-2024-44082)
G-Research 的 Jay Faulkner (CVE-2024-44082)
红帽的 Julia Kreger (CVE-2024-44082)
参考¶
说明¶
有关不建议对不受信任的图像调用 ‘qemu-img info’ 的更多信息,请参阅 CVE-2024-04467。
ironic unmaintained/* 分支将不会收到点发布,但会提供补丁作为一种礼貌。
ironic-python-agent unmaintained/* 分支将不会收到点发布,并且也没有可用的补丁。
ironic 和 ironic-python-agent bugfix/* 分支将不会收到点发布,但会提供补丁作为一种礼貌。