GHSA-2cvf-wqm6-wr9g: Critical severity go/go.podman.io/podman/v6 vulnerability
Impact Podman v4.4.0 added a feature where container checkpoints (from the podman container checkpoint command) could be distributed via OCI registry, and pulled from that registry and run via the podman run command. This allowed easy transfer of checkpoints between systems. However, checkpoints allow complete control of how the container is created - including full control of the container sandbox. When podman run detects a checkpoint, it will silently ignore all user input regarding how the container should be created - for example, podman run --cap-drop=ALL on an image that is determined to be a checkpoint will ignore --cap-drop=all and use the set of capabilities specified by the checkpoint image instead, which could include all capabilities. Podman identifies checkpoint images by looking for an annotation, io.podman.annotations.checkpoint.runtime.name. If this annotation is set, the image is treated as a checkpoint. Conflating container images and checkpoints in podman run allows inherently insecure behavior as the image can now control how it is executed. The Podman Maintainers have determined that the safest course of action is to remove this functionality.
Patch The commit introducing this functionality was reverted.
3721ff82ffb44a4ceeaecc5abd3808e924a6b669 c74b1d37b3fb834b0de43e176565d9d8c254b627 fa6cef22c2baf3987b581c673bb416ef0585daf7 (main) ea9243e04d1db3886dc3a51ee3300ffb547cfc02 450c64426dbcff1097d3c7911d791101e3d16f4c 2d05a7c61f022d4f24980ea6d307fa53da2b8692 (v6.1) 7728ba0a90094408ad9078e36c3622a651d49616 24706290d5c974f078d8ca284026802515f28e92 29c8c6e50607df7a7d735ace09ff0ea099c0b3e0 (v5.8)
Workarounds Images being pulled should be scanned for the io.podman.annotations.checkpoint.runtime.name annotation, and rejected if it is present. Podman does not presently have the ability to perform this scanning and rejection automatically.
Also not that rootless containers are not affected as they do not support checkpoint/restore at all currently.
Credits This vulnerability was discovered by ADA Logics Ltd using Anthropic's Claude models.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/go.podman.io/podman/v6to a version that resolves this vulnerability.Fixed in 6.1.3 - Upgrade
Upgrade
go/github.com/containers/podmanto a version that resolves this vulnerability.Fixed in 5.8.8 - Compensating control
Scan images being pulled for the io.podman.annotations.checkpoint.runtime.name annotation and reject images when the annotation is present before running them.
Event History
Frequently Asked Questions
Who is exposed to this issue?
Systems are exposed when Podman is used to pull and run OCI registry content that an attacker can control or influence. The risk is especially relevant where users rely on podman run options to restrict container privileges.
What does an attacker need to exploit this behavior?
An attacker needs to provide an image carrying the io.podman.annotations.checkpoint.runtime.name annotation. Podman then treats it as a checkpoint and uses the container sandbox settings embedded in that checkpoint rather than the settings supplied to podman run.
Can command-line hardening options prevent the issue?
No. For an image recognized as a checkpoint, Podman silently ignores user-supplied container-creation settings such as --cap-drop=ALL, and the checkpoint can specify capabilities and other sandbox settings itself.
How can I identify potentially affected images?
Inspect images for the io.podman.annotations.checkpoint.runtime.name annotation. Its presence causes Podman to identify the image as a checkpoint.
What can be done before a remediation is available?
Do not use podman run on untrusted or insufficiently vetted registry content that may be a checkpoint image. Treat images with the checkpoint runtime-name annotation as capable of controlling their own execution sandbox.