github opencontainers/runc v1.6.0-rc.2
runc v1.6.0-rc.2 -- "To celebrate the fact that we've seen the back of another black day."

latest release: v1.5.3
pre-release2 hours ago

This is the second release candidate of the upcoming runc 1.6.0 release.
It includes a fix for a high-severity vulnerability (CVE-2026-119101)
affecting users who checkpoint and restore containers, a couple of new
features, and various fixes and improvements.

This version includes all of the patches backported to runc v1.5.3.

Users are strongly encouraged to test our release candidates so we can
fix issues before the general release.

Security

This release includes a fix for the following high-severity security issue:

  • CVE-2026-119101 allowed a malicious image, using crafted symlinks in
    its rootfs, to confuse the way runc names external mounts for CRIU, and so
    make runc restore bind-mount an arbitrary host directory into the restored
    container, read-write. Only users who both checkpoint and later restore
    containers running untrusted images are affected (checkpoint/restore
    requires root, so rootless runc is not affected). The same issue was found
    in crun (CVE-2026-115520); CRIU itself is fixed in CVE-2026-119614.

    In addition, runc restore no longer makes read-only bind mounts writable,
    even temporarily, while preparing the container mounts.

Breaking

  • A mount destination prefixed with the container rootfs path is no longer
    treated specially (previously, the prefix was stripped). As the runtime spec
    says, the destination is a path inside the container, and it is now used
    as such. (#5556)

Added

  • New --cgroup-manager global option, to select the cgroup manager
    (cgroupfs or systemd). This is compatible with crun. (#5570)
  • docs/spec-conformance.md now documents the known deviations from the
    runtime spec. (#1846, #5528)

Deprecated

  • libcontainer.Stats.Interfaces and types.Stats.NetworkInterfaces (shown
    as network_interfaces in runc events --stats output) are deprecated, as
    they are always empty since the removal of veth network strategy in runc
    1.0.0-rc6. (#5523)
  • The --systemd-cgroup global option is deprecated in favor of
    --cgroup-manager=systemd. It still works, and there are no plans to
    remove it. (#5570)

Changed

  • A container configuration which uses --no-pivot or sets
    linux.rootfsPropagation, but does not have its own mount namespace, is now
    refused. Previously, --no-pivot resulted in host's /proc and /sys being
    unmounted, and rootfsPropagation changed the propagation of host mounts.
    (#5535)
  • Using / as container rootfs is now refused. Previously, it failed with a
    mount namespace, and without one, container mounts (such as /proc) were
    mounted on top of the host ones. (#5535)
  • Mount errors now quote the source, destination and mount data, so that
    control characters in them can not hide or garble the error message.
    (#5320, #5560)
  • The log file (--log) is no longer opened with O_SYNC, which made every
    log write wait for the data to reach the disk. (#5547)
  • runc no longer prints CRIU requests and responses in debug logs (CRIU logs
    what it does in its own log files anyway). Together with not linking in the
    DNS resolver and godbus/dbus TCP transports (the new godbus_no_tcp build
    tag), this makes the runc binary about 200 KB smaller. (#5515, #5516, #5546)
  • The bash completion file no longer has a shebang line, as it is sourced,
    not executed. (#5526)
  • Updated dependencies: checkpoint-restore/go-criu to v8.5.0,
    moby/sys/mountinfo to v0.7.3, moby/sys/user to v0.5.0, golang.org/x/net to
    v0.62.0, and golang.org/x/sys to v0.49.0. (#5553, #5555, #5562, #5578,
    #5603, #5604, #5607)

Fixed

  • runc now errors out when seccomp defaultErrnoRet or errnoRet is set for
    an action which does not support it (i.e. anything other than
    SCMP_ACT_ERRNO and SCMP_ACT_TRACE), as required by the runtime spec.
    Previously, such values were silently ignored. (#5550, #5564)
  • runc no longer hangs if runc init is partially killed (for example, by a
    seccomp SCMP_ACT_KILL rule hitting its main thread). (#5087, #5431)
  • runc run and runc exec run as a background job of a shell no longer
    occasionally busy-loop when reading from the terminal; instead, they are
    stopped by SIGTTIN, as expected, and can be resumed with fg.
    (#1430, #5525)
  • A network device name (linux.netDevices) of 16 bytes is now rejected
    during validation. Previously, runc failed later, after the host interface
    was already set down, leaving it down. (#5606)
  • Some file descriptors opened by runc were not marked close-on-exec, and so
    could leak into the container processes (notably, an inotify fd used for
    OOM notifications leaked into every runc exec process). (#5480)

Static Linking Notices

The runc binaries 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":

Similarly, the runc binaries distributed with this release are also
statically linked with the following MPLv2 licensed libraries,
with runc acting as a "Larger Work":

The versions of these libraries were not modified from their upstream versions,
but in order to comply with their corresponding licenses, we have attached the
complete source code for those libraries which (when combined with the attached
runc source code) may be used to exercise your rights under their respective
licenses.

However, we strongly suggest that you make use of your distribution's packages
or download them from the authoritative upstream sources, especially since
these libraries are related to the security of your containers.


Thanks to the following contributors who made this release possible:

Signed-off-by: Kir Kolyshkin kolyshkin@gmail.com

Don't miss a new runc release

NewReleases is sending notifications on new releases.