CRI-O
v1.37.0Kubernetes CoreA substantial feature and compatibility release for operators, with changed defaults and interfaces alongside correctness and performance improvements. It also includes identified security fixes and refreshes a broad set of dependencies.
Action needed (2)
securityhighThe CVE-2026-15809
/etc/passwdinjection fixCRI-O fixes CVE-2026-15809, which allowed a bypass of the CVE-2022-4318 fix and
/etc/passwdinjection through newline characters in theHOMEenvironment variable.securityhighThe Go toolchain, updated to 1.26.4
The Go toolchain is updated to 1.26.4 to fix CVE-2026-27145, CVE-2026-42504, and CVE-2026-42507.
Check if affected (4)
breakingThe
insecure_registriesoption and--insecure-registryflag, removedApplies if you configure
insecure_registriesor use--insecure-registry.The deprecated
insecure_registriesconfiguration option and--insecure-registryCLI flag are removed. Use theinsecureoption inregistries.instead.conf breakingThe
container_level_enableddefault, changed tocheckpoint_onlyApplies if you do not configure
container_level_enabled.The default for the
checkpoint_restoreconfiguration fieldcontainer_level_enabledis nowcheckpoint_only, which disables restore by default.breakingThe gRPC message size defaults, reduced to 16 MiB
Applies if
grpc_max_send_msg_sizeorgrpc_max_recv_msg_sizeis not configured.CRI-O now defaults
grpc_max_send_msg_sizeandgrpc_max_recv_msg_sizeto 16 MiB, down from 80 MiB.breakingThe
namelabel on CRI metrics, removedApplies if you use CRI metrics.
CRI-O removes the
namelabel from CRI metrics.
All 32 other recorded changesfixes 14 · value changes 7 · additions 6 · constraints 3 · defaults 1 · renames 1
fixes (14)
- CRI-O now keeps logging blocked syscalls detected by the seccomp notifier instead of only reporting the first event when the notifier action is not "stop".
- Deduplicate concurrent image volume MountImage calls to avoid containers/storage lock serialization when many pods mount the same image volume simultaneously.
- Fix CRI-O crash (nil pointer dereference) in ListPodSandboxStats when a container's cgroup is cleaned up during teardown.
- Fix SELinux labeling so systemd/init containers receive container_init_t again instead of remaining container_t and failing to create cgroups.
- Fix a bug in high performance hooks where an init container would continue to hold a cpuset that could be used by a regular container in the same pod.
- Fix a latent crash in
pinnscaused by a missing zero terminator on thegetopt_longlong options array. - Fix artifact names from externally created OCI layouts (e.g. via skopeo) being incorrectly normalized to wrong docker references.
- Fix network metrics collection to use the pod's network namespace.
- Fixed a bug where ImageRef in container status changed from a repo@digest to a raw image ID hash after CRI-O restart.
- Fixed privileged sandboxes inheriting generate.New()'s default-deny seccomp filter when privileged_seccomp_profile is unset, so they now run unconfined as intended.
- NRI container lifecycle events now correctly include the container name and pod sandbox ID.
- Reduced the verbosity of debug logs for List* RPC calls to improve performance
- Restores pre-1.34 behavior handling envvar values containing non-utf8 data
- Fix user namespace mappings persistence across CRI-O restarts
value changes (7)
- Add conmon-rs v1.0.1 support, drop backward compatibility with previous versions.
- Added
namespace,pod, andcontainerlabels to CRI metrics - Optimized environment variable merging during container creation by eliminating redundant string operations, improving container startup performance.
- Remove experimental markers from additional_artifact_stores configuration option.
- Bumped go.podman.io/common to v0.68.0.
- Because of this change, the Configuration File lookup behavior has changed.
- Update gomaxprocs hook to ignore workload partitioning when considering whether to inject, as well as update the calculation to ensure containers get at least double the requested number of CPUs, to reduce potential go scheduler throttling.
additions (6)
- Add
enable_cni_status_monitoringconfig option (default false) andcni_status_grace_period(default 60s) to gate continuous CNI STATUS monitoring and tolerate brief plugin disruptions during upgrades. - Add a new config field to allow node admins to only allow checkpointing, and disallowing restore.
- Added container memory metrics
container_memory_active_anon_bytesandcontainer_memory_inactive_anon_bytes(cgroup v1 and v2), andcontainer_memory_anon_thp_bytes,container_memory_shmem_thp_bytesandcontainer_memory_file_thp_bytes(cgroup v2 only). - CRI-O now reports
runtimeFeatures.as enabled on Linux and uses a recursively read-onlyUserNamespacesHostNetwork /sysbind mount for containers running with both host network and user namespaces. - Support for encrypted container images in Confidential Containers use case: cri-o will now ignore the container image layers, allowing the underlying Confidential Container runtime to manage the image pull management.
- Support gVisor containerd-shim-runsc-v1
constraints (3)
- Add btrfs storage driver support to static builds
- These are gated behind a new
memoryExtravalue forincluded_pod_metrics, separate frommemory. - Added support for per-container targeting of cpu-load-balancing.crio.io, irq-load-balancing.crio.io, and cpu-quota.crio.io annotations.
defaults (1)
- The default pause image is now registry.k8s.io/pause:3.10.2.
renames (1)
- Renamed --checkpoint-restore-container-level-enabled flag to --checkpoint-restore-level
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.