Release 1.5.2 - #5466
Draft
kolyshkin wants to merge 28 commits into
Draft
Release 1.5.2#5466kolyshkin wants to merge 28 commits into
kolyshkin wants to merge 28 commits into
Conversation
This tests checks that "runc exec --env VAR=VAR ..." actually appends VAR=VAL to the exec's environment. Add additional checks that: - process.env from config.json is also inherited; - HOME is set. Those checks do not reveal any new issues. (cherry picked from commit 6210ceb) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
All existing tests check runc run, and there is no single runc exec environment test except for one in exec.bats. Add it (no new issues found). (cherry picked from commit d530786) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
The check that a sub-cgroup path (as set by runc exec --cgroup, or libcontainer's Process.SubCgroupPaths) does not escape the container's cgroup was too lax: a plain prefix check also accepts a sibling cgroup whose name starts with the container cgroup name (say, "../foo-suffix" for a container cgroup named "foo"). For addIntoCgroupV1 (used for per-controller sub-cgroup paths, which AddPid does not support) the resulting path is passed to WriteCgroupProc as is, so the pid did end up in the sibling cgroup. For prepareCgroupFD the subsequent cgroups.OpenFile call cleans the path, so nothing escaped in practice, but the check was wrong nevertheless. Use the same check as opencontainers/cgroups v0.0.9 does in AddPid, and add test cases for both code paths. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit 7820c58) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Bumps [github.com/seccomp/libseccomp-golang](https://github.com/seccomp/libseccomp-golang) from 0.11.1 to 0.12.0. - [Release notes](https://github.com/seccomp/libseccomp-golang/releases) - [Changelog](https://github.com/seccomp/libseccomp-golang/blob/main/CHANGELOG) - [Commits](seccomp/libseccomp-golang@v0.11.1...v0.12.0) --- updated-dependencies: - dependency-name: github.com/seccomp/libseccomp-golang dependency-version: 0.12.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> (cherry picked from commit 0e5aa12) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Commit 4d84a34 (PR opencontainers#5347) added a workaround to ignore EINVAL from filter.GetWaitKill(), which happens when the run-time libseccomp is older than the compile-time one and thus does not support the wait-kill flag. libseccomp-golang v0.12.0 handles compile-time vs. run-time version mismatches itself, so the workaround is no longer needed. (cherry picked from commit 177f385) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This was released July 1 2026, see https://github.com/seccomp/libseccomp/releases/tag/v2.6.1 (cherry picked from commit ea0c849) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This is mostly shellcheck complaining about missing quotes (SC2046 and SC2086). Issues found by actionlint (which runs shellcheck for all run: statements in GHA workflows. (cherry picked from commit a752f49) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Debugging GHA yaml is not fun -- usually when there is an issue with a workflow file, it just doesn't run. Let's add a separate actionlint job to catch workflow issues. (cherry picked from commit 614303b) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Bumps [devops-actions/actionlint](https://github.com/devops-actions/actionlint) from 0.1.12 to 0.1.13. - [Release notes](https://github.com/devops-actions/actionlint/releases) - [Commits](devops-actions/actionlint@9fb9c19...ec02b36) --- updated-dependencies: - dependency-name: devops-actions/actionlint dependency-version: 0.1.13 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> (cherry picked from commit cda8b69) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Use the actively maintained fork of rhysd/actionlint, which contains a lot of fixes and knows about the newer GitHub-hosted runner images. It ships its own action, so devops-actions/actionlint is no longer needed. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> (cherry picked from commit 2b8c56a) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
A version tag (even a "full" one like v7.0.1) is mutable: whoever controls the action's repository can move it to point to any other commit. Pinning to a full commit hash is the only way to get the exact same action code on every run. Found by zizmor's unpinned-uses audit. Dependabot is already enabled for the github-actions ecosystem and knows how to update hash pins together with their version comments, so this should not add maintenance burden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit 16f9604) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Set persist-credentials: false for actions/checkout, as applied by "zizmor --fix". By default checkout leaves the credentials it used in .git/config, where any later step (or anything that archives the workspace) can pick them up. Nothing here pushes back to the repository, so they are not needed. The remaining findings are all cache-poisoning, and are ignored via .github/zizmor.yml, which explains why they do not apply to us. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit b3ae9b4) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Cancel CI runs that are already superseded, rather than letting them run to completion and waste runner time. This is most of what our CI queue is spent on when a pull request is force-pushed a few times in a row. For the three workflows that run on pull requests, the concurrency group is keyed by PR number, so only runs of the same pull request cancel each other. For anything else -- in particular pushes to main, to release-*, and to a v* tag, the latter also producing the release binaries -- there is no PR number, so the group falls back to the unique run_id and no run is ever cancelled. Keying by github.head_ref instead would be wrong, as two pull requests from different forks can use the same branch name. scheduled.yml only triggers other workflows, so a single group for the whole workflow is enough there. It does not cancel in progress runs, though: a workflow_dispatch arriving while a scheduled run is halfway through its matrix would leave some of the branches untriggered. Found by zizmor's concurrency-limits audit (--persona=pedantic). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit 5f980ea) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
(cherry picked from commit 213b152) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
When rootfsPropagation is set to rslave, prepareRoot() was forcing the rootfs parent mount to MS_PRIVATE before bind-mounting and pivoting into the rootfs. That breaks the slave relationship needed for HostToContainer propagation, so later unmount/remount events on host mountpoints under the rootfs are not reflected inside the running container. Fix this by keeping the rootfs parent mount as MS_SLAVE for slave-like rootfs propagation settings, while leaving the final root propagation remount in place. Signed-off-by: sean <xujihui1985@gmail.com> (cherry picked from commit ec170d8) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
add bat integration test for rootfs propagation test, expect to see the mount propagation is slave, the test will create a isolate mntns to run the test as the test will mutate the rootfs propagation Signed-off-by: sean <xujihui1985@gmail.com> (cherry picked from commit 38245cc) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Before commit 7dc2486, when process.env was nil, prepareEnv returned a flag telling HOME is not set, and it was added. Commit 7dc2486 moved the functionality of adding HOME into prepareEnv but did not properly handle nil case. As a result, runc exec -p with process.json having no env set resulted in an exec with no HOME set. Fix this, and add unit and integration tests. Fixes: 7dc2486 ("libct: switch to numeric UID/GID/groups") (cherry picked from commit 321073e) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
…lave propagation for rslave containers) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
…ss.env not setting HOME) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
…/libseccomp-golang from 0.11.1 to 0.12.0) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
--- updated-dependencies: - dependency-name: cyphar.com/go-pathrs dependency-version: 0.2.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> (cherry picked from commit 46d34c3) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
…rs from 0.2.5 to 0.2.6) Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
kolyshkin
force-pushed
the
rel-1.5.2
branch
from
September 14, 2026 05:26
ebc08b2 to
26a9705
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release runc v1.5.2.
This is a draft: it includes all the commits from the following
not-yet-merged backport PRs, which need to be merged first:
runc exec -pwith absent process.env not setting HOME #5459Once those are merged, this PR will be rebased so that it only has the two
commits on top: "VERSION: release v1.5.2" and "VERSION: back to development".
If you want to review now, only review these last two commits.
Also TODO before merging:
The release commit also adds CHANGELOG entries for the already merged
PRs which were missing them (#5442 + #5449, #5381), and mentions #5451
and GO-2026-6238.
Copy-paste from the relevant CHANGELOG portion below:
[1.5.2] - 2026-09-13
Fixed
runc exec -pwith a process.json lackingenvnow setsHOMEagain(a regression in runc 1.3.0). (#5265, #5266, #5459)
which caused the kernel to write past the end of the structure
provided by userspace (runc). This resulted in memory corruption inside runc
(manifesting as random crashes) when configuring device rules on cgroup v2
systems. (#5403, #5428)
runc exec --cgroup(and the equivalent libcontainerProcess.SubCgroupPathsAPI) no longer accepts a sub-cgroup path that escapes the container's cgroup
into a sibling cgroup sharing the same name prefix. Note that using
--cgrouprequires the same privileges as runningrunc execitself, sothis is a correctness rather than a security fix. (#5403, #5457)
O_CLOEXECwhen opening the cgroup v2 directory to set updevice rules. (#5403, #5428)
rootfsPropagationis set torslave, the rootfs parent mount is nolonger made private before pivoting into the rootfs, so unmount/remount
events on host mountpoints under the rootfs are now propagated to the
running container. (#5192, #5200, #5458)
when that namespace has a full identity ID mapping (
0 0 4294967295), asused by systemd >= 260 units with
PrivateUsers=full. Previously this maderunc skip its user namespace code paths, so starting a container in such a
unit failed with
bpf_prog_query(BPF_CGROUP_DEVICE) failed: operation not permitted. (#5396, #5411, #5451, moby/sys#239)runc initpanic (SIGABRT) on the error path, caused by SELinuxlabels being reset after the cached libpathrs procfs handle was already
closed. This is fixed both by not resetting the labels on the init error
path, and by updating to libpathrs v0.2.6, which now handles a closed
procfs handle gracefully. (#5438, #5439, #5442, #5448, #5449, #5467, #5469)
from the one it was compiled against (e.g. built with libseccomp >= 2.6.0 and
run with an older one), by updating to libseccomp-golang v0.12.0. This also
supersedes the
SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECVworkaround added inrunc 1.5.1. (#5436, #5461)
Changed
high-level cilium/ebpf API to manage cgroup v2 device rules. As a result,
the runc binary shrunk by about 1 MiB (7.5%) on amd64. This also means runc
no longer calls the cilium/ebpf code affected by GO-2026-6238. (#5403, #5428)