This is the long-awaited release of runc 1.2.0! The primary changes from rc3
are general improvements and fixes for minor regressions related to the
new /proc/self/exe cloning logic in runc 1.2, follow-on patches related
to CVE-2024-45310, as well as some other minor changes.
In order to alleviate the remaining concerns around the memory usage and
(arguably somewhat unimportant, but measurable) performance overhead of
memfds for cloning /proc/self/exe, we have added a new protection using
overlayfs that is used if you have enough privileges and the running
kernel supports it. It has effectively no performance nor memory overhead
(compared to no cloning at all). (#4448)
The original fix for CVE-2024-45310 was intentionally very
limited in scope to make it easier to review, however it also did not handle
all possible os.MkdirAll cases and thus could lead to regressions. We have
switched to the more complete implementation in the newer versions of
github.com/cyphar/filepath-securejoin. (#4393, #4400, #4421, #4430)
In certain situations (a system with lots of mounts or racing mounts) we
could accidentally end up leaking mounts from the container into the host.
This has been fixed. (#4417)
The fallback logic for O_TMPFILE clones of /proc/self/exe had a minor
bug that would cause us to miss non-noexec directories and thus fail to
start containers on some systems. (#4444)
Sometimes the cloned /proc/self/exe file descriptor could be placed in a
way that it would get clobbered by the Go runtime. We had a fix for this
already but it turns out it could still break in rare circumstances, but it
has now been fixed. (#4294, #4452)
It is not possible for runc kill to work properly in some specific
configurations (such as rootless containers with no cgroups and a shared pid
namespace). We now output a warning for such configurations. (#4398)
memfd-bind: update the documentation and make path handling with the systemd
unit more idiomatic. (#4428)
We now use v0.16 of Cilium's eBPF library, including fixes that quite a few
downstreams asked for. (#4397, #4396)
Some internal runc init synchronisation that was no longer necessary (due
to the /proc/self/exe cloning move to Go) was removed. (#4441)
Static Linking Notices
The runc binary distributed with this release are statically linked with
the following GNU LGPL-2.1 licensed libraries, with runc acting
as a "work that uses the Library":
Fixed the failure of runc delete on a rootless container with no
dedicated cgroup on a system with read-only /sys/fs/cgroup mount.
This is a regression in runc 1.2.0, causing a failure when using
rootless buildkit. (#4518, #4531)
Using runc on a system where /run/runc and /usr/bin are on different
filesystems no longer results in harmless but annoying messages
("overlayfs: "xino" feature enabled using 3 upper inode bits")
appearing in the kernel log. (#4508, #4530)
Became root after joining an existing user namespace. Otherwise, runc
won't have permissions to configure some mounts when running under
SELinux and runc is not creating the user namespace. (#4466, #4477)
Removed
Remove dependency on golang.org/x/sys/execabs from go.mod. (#4480)
Remove runc-dmz, that had many limitations, and is mostly made obsolete by
the new protection mechanism added in v1.2.0. Note that runc-dmz was only
available only in the 1.2.0 release and required to set an environment variable
to opt-in. (#4488)
Added
The script/check-config.sh script now checks for overlayfs support. (#4494)
When using cgroups v2, allow to set or update memory limit to "unlimited"
and swap limit to a specific value. (#4501)
[1.2.0] - 2024-10-22
できるときにできることをやるんだ。それが今だ。
Added
In order to alleviate the remaining concerns around the memory usage and
(arguably somewhat unimportant, but measurable) performance overhead of
memfds for cloning /proc/self/exe, we have added a new protection using
overlayfs that is used if you have enough privileges and the running
kernel supports it. It has effectively no performance nor memory overhead
(compared to no cloning at all). (#4448)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/opencontainers/runc from 1.1.15 to 1.2.2.
Release notes
Sourced from github.com/opencontainers/runc's releases.
... (truncated)
Changelog
Sourced from github.com/opencontainers/runc's changelog.
... (truncated)
Commits
7cb3632
VERSION: release v1.2.224591c0
Merge pull request #4530 from lifubang/backport-4509-4525eb676de
memfd-bind: elaborate kernel requirements for overlayfs protection82f3af8
readme: drop unused memfd-bind reference2421b59
memfd-bind: mention that overlayfs obviates the need for itb1f733b
dmz: overlay: set xino=off to disable dmesg spam1b42ebc
Merge pull request #4531 from lifubang/backport-4523832faf0
libct/cg: add test for remove a non-existent dir in a ro mount point8bfc3b5
Merge pull request #4528 from lifubang/backport-4505e41cc27
libct/cg: RemovePath: improve commentsDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show