Debian Patches

Status for ironic/1:29.0.5-0+deb13u3

Patch Description Author Forwarded Bugs Origin Last update
adds-alembic.ini-in-MANIFEST.in.patch Fixes MANIFEST.in so that alembic.ini is packaged Thomas Goirand <zigo@debian.org> no 2016-03-22
fix-initial_grub_cfg.template.patch Fix initial_grub_cfg.template The default grub.cfg happen /srv/tftp, but tftp-hpa is, in Debian,
already doing a chroot in there.
Thomas Goirand <zigo@debian.org> no 2024-09-16
do-not-print.patch Do not print Without this patch, we're getting:
.
File "/<<PKGBUILDDIR>>/ironic/tests/unit/api/base.py", line 115, in _request_json
print(method.upper(), full_path, "WITH", params, "GOT", str(response))
BlockingIOError: [Errno 11] write could not complete without blocking
.
about 60 times (not always the same number of times...).

===================================================================
Thomas Goirand <zigo@debian.org> not-needed 2023-10-05
CVE-2026-44916_Use_sandbox_rendering_for_jinja2.patch CVE-2026-44916: security: Use sandbox rendering for jinja2 Analysis revealed that a malicious attacker with sufficent
access to request a node to be provisioned could supply a
maliciously crafted kickstart template configuration,
which would then be rendered in an unsafe form ultimately.
.
This is because the underlying render utility was modeled
for rendering only admin-suppied files or the in-code tree
files. Anaconda had to take this further by allowing the
jinja utilized to be user supplied.
.
Anyhow, an attacker with sufficient access, an ironic deployment
with the anaconda deploy interface, a node with the anaconda
deployment interface set by an admin, and a malicious template
could result in conductor internal data being rendered and if
the infrastucture operator is allowing traffic egress for the
provisioning network, could have sensitive internal data
exfiled out of the environment.
.
The render helper has been changed to utilize a sandboxed
environment. Attacks such as this now internally raise
a Jinja2 SecurityError.

diff --git a/ironic/common/utils.py b/ironic/common/utils.py
index b126668..0182173 100644
Julia Kreger <juliaashleykreger@gmail.com> yes upstream upstream, https://review.opendev.org/c/openstack/ironic/+/987776 2026-05-08
CVE-2026-44919_move_file_url_validation_up_into_deploy_utils_main_path.patch CVE-2026-44919: move file url validation up into deploy_utils main path An issue was discovered where we were executing checksums
prior to doing file path guard logic. We've moved the check
into the same area of the code where we do all other url checks
for consistency.
.
This issue is tracked as CVE-2026-44919.
.

diff --git a/ironic/common/image_service.py b/ironic/common/image_service.py
index c68be56..209f636 100644
Julia Kreger <juliaashleykreger@gmail.com> yes debian upstream upstream, https://review.opendev.org/c/openstack/ironic/+/988357 2026-05-16
CVE-2026-44917_disable-driver_info-level-pxe_template-override.patch CVE-2026-44917:: disable driver_info level pxe_template override A vulnerability report was filed pointing out a flaw in the pxe_template
override logic where a direct file path was supplied. The original usage
context of this minimally documented feature was that an operator, i.e.
the owner of the ironic deployment could leverage a direct file path to
a template on disk. This should instead have utilized the file:/// URL
provider, but research suggests this feature has largely not been used.
.
As a result, consensus has been reached amongst security maintainers
for the Ironic project to disable and remove this functionality.
.
Where this issue became a vulnerability for Ironic was the evolution
of the usage and Role Based Access Control model where we began to
separate the overall operator of the system from the administrative
manager of the system.
.
The resulting vector was that an authenticated and authorized user
could potentially request a template a sensitive file to be sourced
as the PXE template. This file would then be written to disk and
utilized IF the ironic-conductor service could access it. The
malicious authenticated and authorized user could then, if the
environment was misconfigured, or operating with "flat" networking,
it could be possible to guess the underlying file path on the
tftpboot/httpboot network bootendpoints, and retrieve the rendered
output before the deployment failed and the rendered output is removed.
.
This is tracked as CVE-2026-44917, and the underlying feature is
expected to be removed during the 2027.2.

diff --git a/ironic/conf/pxe.py b/ironic/conf/pxe.py
index e4c912192..e84438a47 100644
Julia Kreger <juliaashleykreger@gmail.com> yes upstream upstream, pre-OSSA mailing list 2026-06-01
CVE-2026-46447_Sanitize-kernel_append_parms.patch CVE-2026-46447: Ensure kernel_append_params are valid kernel parameters By defining a kernel command line grammar and attemping to parse
kernel_append_params. A successful parse indicates the input contained
in kernel_append_params are valid kernel parameters. Unsuccessful
parsing will raise and be rejected.
.
This parsing can be disabled through a new conductor configuration
option: disable_kernel_parameter_parsing which is False by default.
.
Basic kernel parameter sanitization (ie filtering newlines) is always
applied in kernel_append_params since they are never valid for
inclusion.
.
Future patches should extend kernel parameter parsing to all areas of
Ironic's code base in order to guarantee valid kernel parameters being
passed along.
.
NOTE: This patch is back-ported from stable/2026.{1,2} and slightly
weakens the kernel command line grammar by not including init arguments.
Lark's stand-alone LALR(1) parser can't handle the ambiguity introduced.
.
This commit addresses CVE-2026-46447.

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index fc29f02e6..b5d616b3c 100644
Clif Houck <me@clifhouck.com> yes upstream upstream, pre-OSSA mailing list 2026-06-01
CVE-2026-48681-directory_transversal_ISO9660_support.patch CVE-2026-48681: directory transversal ISO9660 support A vulnerability was identified in Ironic's handling of
ISO images where Ironic contains support to patch ISO9660
virtual media contents to include key data items like
configuration drive data and other required metadata.
.
Anyhow, the issue here was the Ironic service was trusting
that the submitted contents were valid, and a directory
transversal attempt could be embedded within a modified
configuration drive ISO contents submitted to Ironic.
This is a case where an attacker would take a path in an ISO,
and attempt to directly modify it to reach another path on the
filesystem which was within the confines and path structure they
were working with. i.e. while "../foo" is not a valid file or
directory name in ISO9660, it can still be represented, injected,
and read by the pycdlib library.
.
The code on all paths which perform this type of ISO content
interaction have been patched to explicitly check the path for
transversal attempts and internally raises an InvalidContent
exception.
.
Impacted features:
* Virtual Media ISO patching code path for pre-generated
deployment ISOs as opposed to Ironic generated ISOs from
a kernel/ramdisk.
* Anaconda deployment interfacce where a user could
impact the resulting pathing on the node being deployed
at deploy time.
.

diff --git a/ironic/common/exception.py b/ironic/common/exception.py
index 3d00882b3..23b3a23a0 100644
Julia Kreger <juliaashleykreger@gmail.com> yes upstream upstream, pre-OSSA mailing list 2026-06-01
CVE-2026-46447_erata1_Fix_kernel_parameter_parsing_for_quoted_values_and_whitespace.patch Fix kernel parameter parsing for quoted values and whitespace
The kernel parameter validator introduced in commit c6c91d649 has
three bugs in the KernelParameterTransformer class:

1. The quoted_value() method tries to access items[0].value but
items[0] is already a plain string (returned by value_with_spaces
transformer), not a lark Token. This causes all quoted parameter
values (e.g. sshkey="ssh-rsa ... user@host") to fail with
"'str' object has no attribute 'value'".

2. KernelParameter.__str__() uses self.value.value directly, bypassing
ParameterValue.__str__() which wraps space-containing values in
quotes. This breaks roundtrip rendering of quoted values.

3. parse() does not strip surrounding whitespace from the input,
causing failures when config values have trailing spaces or
newlines from template expansion or oslo.config.

(cherry picked from commit a58fe7d548e3b874b7538d6272b2a73f3a0d4b94)
(cherry picked from commit 87807ea7ce1424293ae6443de61fd4847a34619f)
(cherry picked from commit 1908af6cd4ef02f9e33ba4ed6e8ffff8e0afbf79)
Riccardo Pittau <elfosardo@gmail.com> no 2026-06-08
CVE-2026-54421_Fix_sensitive_properties_returned_on_volume_targets.patch [PATCH] Security: Fix sensitive properties returned on volume targets Ensure that volume target properties are properly redacted when the
user lacks the 'baremetal:volume:view_target_properties' policy in
patch() similar to get_one().
.
Additionally, Ironic Core Security determined that the RBAC reliant
control over who can see properties was insufficient, especially in
standalone use cases, and such the field handling is now consistent
with other sensitive field usage.
.

diff --git a/ironic/api/controllers/v1/volume_target.py b/ironic/api/controllers/v1/volume_target.py
index 21ebcad..e7f477c 100644
Saad Zia <saad.zia@est.tech> no debian https://review.opendev.org/c/openstack/ironic/+/992326 2026-06-16
CVE-2026-43003_Add_an_agent_flag_to_disable_installing_boatloaders.patch [PATCH] Add an agent flag to disable installing boatloaders Pipes the new agent flag (enable_bios_bootloader_install) to agents.
This flag disables bootloader install (calls to grub-install) by default
for security reasons.
.
Part of mitigation of CVE-2026-43003.
.
Changes to backported versions: The default flips to avoid breaking
stable users of Ironic. While this is a less secure default, it allows
operators to apply the patch without fear of breaking existing
workloads. Operators who need the increased security posture should
explicitly set [agent]/enable_bios_bootloader_install to False.

diff --git a/ironic/api/controllers/v1/ramdisk.py b/ironic/api/controllers/v1/ramdisk.py
index 8ae9e1f..2dcb263 100644
Clif Houck <me@clifhouck.com> yes debian upstream upstream, https://review.opendev.org/c/openstack/ironic/+/993684 2026-06-18
CVE-2026-44918-Prevent_rehoming_resources_to_nodes_with_different_owner.patch CVE-2026-44918: Prevent rehoming resources to nodes with different owner Ironic has a few similar patterns where only the source node is verified
during a create or update operation:
1. A node can be created with a parent from a different project
2. Node can be updated to have a parent from a different project
3. Ports, port groups, volume targets and volume connectors can be
patched to be owned by a node from a different project.
.
This patch addresses all these cases and introduces a single helper to
cover all of them.
.
Also makes sure that baremetal:node:get is checked even if the parent
node ID is a UUID (it was missing before).

diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py
index 65224abf2..6dee9ca0b 100644
Dmitry Tantsur <dtantsur@protonmail.com> yes debian upstream pre-OSSA mailing list 2026-06-26
CVE-2026-54423-Add_operator_configurable_step_disallow_lists.patch Add operator-configurable step disallow lists Add [api]disallow_deploy_steps, disallow_clean_steps, and
disallow_service_steps config options. Steps are blocked at the
API layer (with error) and filtered at the conductor layer
(silently) to cover all paths: manual, automated, templates,
and runbooks.
.
note(JayF) This backport contained some tests which depended
on the changes to allow network_interfaces to have service steps.
Those tests have been removed.
.
note(JayF) When backporting 2025.2->2025.1, we also had to remove
an additional test which does not apply to this branch.

diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py
index 65224ab..9ea4b7a 100644
Himanshu Roy <hroy@redhat.com> yes debian upstream upstream, https://review.opendev.org/c/openstack/ironic/+/992732 2026-06-26
CVE-2026-54423-block_vendor.send_raw.patch security: block vendor.send_raw (CVE-2026-54423) A recent security report highlighted issues with the ability
to invoke the ipmitool vendor pass-thru interface method
of ``send_raw``.
.
Where in the step model, this becomes "$interface_name"."$method_name",
hence, "vendor.send_raw".
.
This patch disables the method because standalone operators
do not have the Role Based Access Control model to fallback
on in order to prevent misuse of the interface. While the
interface may still be useful, this disables the ability for
standard API users to invoke the method by default.
.
NOTE(JayF): Resolved some conflicts in ironic/conf/api.py
.

diff --git a/ironic/conf/api.py b/ironic/conf/api.py
index 450695a90..3e27c0b4f 100644
Julia Kreger <juliaashleykreger@gmail.com> yes debian upstream pre-OSSA mailing list 2026-06-12
OSSN-0106_Add_api_enable_ramdisk_endpoints_config_option.patch Add [api] enable_ramdisk_endpoints config option Adds a configuration option to disable the unauthenticated ramdisk
agent API endpoints (lookup, heartbeat, continue_inspection) on a
per-API-instance basis. This enables split-horizon deployments
where a public-facing API cluster rejects agent traffic with
HTTP 403 while a backend API cluster on the provisioning network
continues to serve it.
.
The option is mutable and can be reloaded via SIGHUP. It works
regardless of auth_strategy, unlike the existing policy-based
approach which is only effective with Keystone authentication.
.
The security documentation has been updated to recommend this
option as the primary mechanism for disabling ramdisk endpoints,
with the policy approach documented as an alternative for
Keystone deployments along with a warning about its limitations.

===================================================================
Julia Kreger <juliaashleykreger@gmail.com> yes debian upstream upstream, https://review.opendev.org/c/openstack/ironic/+/999897 2026-08-12

All known versions for source package 'ironic'

Links