Nonpublic deploy ramdisk/kernel images are permitted
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| Ironic |
Fix Released
|
High
|
Satoshi Shirosaka | ||
| OpenStack Security Advisory |
Invalid
|
Undecided
|
Unassigned | ||
Bug Description
Currently in Ironic, users are instructed that all images must be publically accessible to be used (visibility=
To reproduce:
- Upload kernel/ramdisk images with visibility=shared (default?)
- Run a cleaning (manage/provide) with a clean step that requests a reboot ( https:/
- The kernel/ramdisk works the first time through (passes service_
- When attempting to reboot, is_image_available appears to reject the image it accepted the first time through.
After both kernel and ramdisk were set to visibility=public, cleaning proceeded properly after the reboot.
I think there's a possibility that the API request to clean a node (baremetal node provide node-0) is somehow passing on a project_id that is acceptable to is_image_available, but then later it fails because we don't have the context with that auth the second time through.
We should have consistent behavior here. It seems wrong if we're checking context.project_id for a ramdisk ever as those are generally not project affiliated (or are they).
I think this bug has potential security ramifications, and so I'm making it a private security bug until more Ironic developers have a chance to ensure I've got the scope of this correct.
| Changed in ironic: | |
| assignee: | nobody → Satoshi Shirosaka (satoshi-sh) |
| description: | updated |

Adding Doug and Satoshi as kinda co-reporters. Satoshi found the issue, Doug helped us narrow it down as he had a similar bug.