CVE-2025-52881: Github.com/opencontainers/runc Denial of Service Vulnerability

HIGH
Advisory Identifier: GHSA-cgrx-mc8f-2prm
CWE-363 CWE-61
Published
Advisory Summary

CVE-2025-52881 is a HIGH denial of service vulnerability (CWE-363: Race Condition Enabling Link Following) affecting Github.com/opencontainers/runc libraries in the Go ecosystem. The issue involves runc container escape and denial of service due to arbitrary write gadgets and procfs write redirects. Remediation is available by upgrading affected packages to version 1.2.8, 1.13.0, 1.3.3, 1.4.0-rc.3.

CVE-2025-52881 at a Glance

CVE Identifier CVE-2025-52881
GHSA Identifier GHSA-cgrx-mc8f-2prm
Severity HIGH
CVSS v3.1 Base Score N/A
CWE Classification CWE-363: Race Condition Enabling Link Following
Affected Product Github.com/opencontainers/runc
Package Ecosystem Go
Published Date
Last Updated

How to Fix CVE-2025-52881

To remediate this vulnerability, upgrade all affected Github.com/opencontainers/runc dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

github.com/opencontainers/runc fixed: 1.2.8
Upgrade github.com/opencontainers/runc to 1.2.8
github.com/opencontainers/selinux fixed: 1.13.0
Upgrade github.com/opencontainers/selinux to 1.13.0
github.com/opencontainers/runc fixed: 1.3.3
Upgrade github.com/opencontainers/runc to 1.3.3
github.com/opencontainers/runc fixed: 1.4.0-rc.3
Upgrade github.com/opencontainers/runc to 1.4.0-rc.3
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for github.com/opencontainers/runc

How to Check if You Are Affected

To determine whether your application is affected by CVE-2025-52881, inspect your project dependencies for Github.com/opencontainers/runc:

inspect dependencies for github.com/opencontainers/runc

Analyze the terminal output to locate any version of Github.com/opencontainers/runc in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.2.8), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-363: Race Condition Enabling Link Following, where the product checks the status of a file or directory before accessing it, which produces a race condition in which the file can be replaced with a link before the access is performed, causing the product to access the wrong file. In Github.com/opencontainers/runc, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Impact ### This attack is primarily a more sophisticated version of CVE-2019-19921, which was a flaw which allowed an attacker to trick runc into writing the LSM process labels for a container process into a dummy `tmpfs` file and thus not apply the correct LSM labels to the container process. The mitigation runc applied for CVE-2019-19921 was fairly limited and effectively only caused runc to verify that when runc writes LSM labels that those labels are actual procfs files. Rather than using a fake `tmpfs` file for `/proc/self/attr/<label>`, an attacker could instead (through various means) make `/proc/self/attr/<label>` reference a real `procfs` file, but one that would still be a no-op (such as `/proc/self/sched`). This would have the same effect but would clear the "is a procfs file" check. Runc is aware that this kind of attack would be possible (even going so far as to discuss this publicly as "future work" at conferences), and runc is working on a far more comprehensive mitigation of this attack, but this security issue was disclosed before runc could complete this work. In all known versions of runc, an attacker can trick runc into misdirecting writes to `/proc` to other procfs files through the use of a racing container with shared mounts (runc has also verified this attack is possible to exploit using a standard Dockerfile with `docker buildx build` as that also permits triggering parallel execution of containers with custom shared mounts configured). This redirect could be through symbolic links in a `tmpfs` or theoretically other methods such as regular bind-mounts. Note that while `/proc/self/attr/<label>` was the example used above (which is LSM-specific), this issue affect all writes to `/proc` in runc and thus also affects sysctls (written to `/proc/sys/...`) and some other APIs. #### Additional Impacts #### While investigating this issue, runc discovered that another risk with these redirected writes is that they could be redirected to dangerous files such as `/proc/sysrq-trigger` rather than just no-op files like `/proc/self/sched`. For instance, the default AppArmor profile name in Docker is `docker-default`, which when written to `/proc/sysrq-trigger` would cause the host system to crash. When this was discovered, runc conducted an audit of other write operations within runc and found several possible areas where runc could be used as a semi-arbitrary write gadget when combined with the above race attacks. The most concerning attack scenario was the configuration of sysctls. Because the contents of the sysctl are free-form text, an attacker could use a misdirected write to write to `/proc/sys/kernel/core_pattern` and break out of the container (as described in CVE-2025-31133, kernel upcalls are not namespaced and so coredump helpers will run with complete root privileges on the host). Even if the attacker cannot configure custom sysctls, a valid sysctl string (when redirected to `/proc/sysrq-trigger`) can easily cause the machine to hang. Note that the fact that this attack allows you to disable LSM labels makes it a very useful attack to combine with CVE-2025-31133 (as one of the only mitigations available to most users for that issue is AppArmor, and this attack would let you bypass that). However, the misdirected write issue above means that you could also achieve most of the same goals without needing to chain together attacks. ### Patches ### This advisory is being published as part of a set of three advisories: * CVE-2025-31133 * CVE-2025-52881 * CVE-2025-52565 The patches fixing this issue have accordingly been combined into a single patchset. The following patches from that patchset resolve the issues in this advisory: * db19bbed5348 ("internal/sys: add VerifyInode helper") * 6fc191449109 ("internal: move utils.MkdirAllInRoot to internal/pathrs") * ff94f9991bd3 ("*: switch to safer securejoin.Reopen") * 44a0fcf685db ("go.mod: update to github.com/cyphar/filepath-securejoin@v0.5.0") * 77889b56db93 ("internal: add wrappers for securejoin.Proc*") * fdcc9d3cad2f ("apparmor: use safe procfs API for labels") * ff6fe1324663 ("utils: use safe procfs for /proc/self/fd loop code") * b3dd1bc562ed ("utils: remove unneeded EnsureProcHandle") * 77d217c7c377 ("init: write sysctls using safe procfs API") * 435cc81be6b7 ("init: use securejoin for /proc/self/setgroups") * d61fd29d854b ("libct/system: use securejoin for /proc/$pid/stat") * 4b37cd93f86e ("libct: align param type for mountCgroupV1/V2 functions") * d40b3439a961 ("rootfs: switch to fd-based handling of mountpoint targets") * ed6b1693b8b3 ("selinux: use safe procfs API for labels") - Please note that this patch includes a private patch for `github.com/opencontainers/selinux` that could not be made public through a public pull request (as it would necessarily disclose this embargoed security issue). The patch includes a complete copy of the forked code and a `replace` directive (as well as `go mod vendor` applied), which should still work with downstream build systems. If you cannot apply this patch, you can safely drop it -- some of the other patches in this series should block these kinds of racing mount attacks entirely. See https://github.com/opencontainers/selinux/pull/237 for the upstream patch. * 3f925525b44d ("rootfs: re-allow dangling symlinks in mount targets") * a41366e74080 ("openat2: improve resilience on busy systems") runc 1.2.8, 1.3.3, and 1.4.0-rc.3 have been released and all contain fixes for these issues. As per [runc's new release model][RELEASES.md], runc 1.1.x and earlier are no longer supported and thus have not been patched. [CVE-2025-31133]: https://github.com/opencontainers/runc/security/advisories/GHSA-9493-h29p-rfm2 [CVE-2025-52565]: https://github.com/opencontainers/runc/security/advisories/GHSA-qw9x-cqr3-wc7r [CVE-2025-52881]: https://github.com/opencontainers/runc/security/advisories/GHSA-cgrx-mc8f-2prm [RELEASES.md]: https://github.com/opencontainers/runc/blob/v1.4.0-rc.2/RELEASES.md ### Mitigations ### * Do not run untrusted container images from unknown or unverified sources. * For the basic no-op attack, this attack allows a container process to run with the same LSM labels as `runc`. For most AppArmor deployments this means it will be `unconfined`, and for SELinux it will likely be `container_runtime_t`. Runc has not conducted in-depth testing of the impact on SELinux -- it is possible that it provides some reasonable protection but it seems likely that an attacker could cause harm to systems even with such an SELinux setup. * For the more involved redirect and write gadget attacks, unfortunately most LSM profiles (including the standard container-selinux profiles) provide the container runtime access to sysctl files (including `/proc/sysrq-trigger`) and so LSMs likely do not provide much protection against these attacks. * Using rootless containers provides some protection against these kinds of bugs (privileged writes in runc being redirected) -- by having runc itself be an unprivileged process, in general you would expect the impact scope of a runc bug to be less severe as it would only have the privileges afforded to the host user which spawned runc. For this particular bug, the privilege escalation caused by the inadvertent write issue is entirely mitigated with rootless containers because the unprivileged user that the `runc` process is executing as cannot write to the aforementioned procfs files (even intentionally). ### Other Runtimes ### As this vulnerability boils down to a fairly easy-to-make logic bug, runc has provided information to other OCI (crun, youki) and non-OCI (LXC) container runtimes about this vulnerability. Based on discussions with other runtimes, it seems that crun and youki may have similar security issues and will release a co-ordinated security release along with runc. LXC appears to use the host's `/proc` for all procfs operations, and so is likely not vulnerable to this issue (this is a trade-off -- runc uses the container's procfs to avoid CVE-2016-9962-style attacks). [CVE-2016-9962]: https://seclists.org/fulldisclosure/2017/Jan/21 ### Credits ### Thanks to Li Fubang (@lifubang from acmcoder.com, CIIC) and Tõnis Tiigi (@tonistiigi from Docker) for both independently discovering this vulnerability, as well as Aleksa Sarai (@cyphar from SUSE) for the original research into this class of security issues and solutions. Additional thanks go to Tõnis Tiigi for finding some very useful exploit templates for these kinds of race attacks using `docker buildx build`.

CVE-2025-52881 Affected Github.com/opencontainers/runc Versions

4 component(s)
Fixed Versions:
1.2.81.13.01.3.31.4.0-rc.3
Product / Package Ecosystem Affected Versions Fixed Version
github.com/opencontainers/runc
Go
< 1.2.8
1.2.8
github.com/opencontainers/selinux
Go
< 1.13.0
1.13.0
github.com/opencontainers/runc
Go
≥ 1.3.0-rc.1
< 1.3.3
1.3.3
github.com/opencontainers/runc
Go
≥ 1.4.0-rc.1
< 1.4.0-rc.3
1.4.0-rc.3

References

youtu.be/y1pabzxwrwq WEB
https://youtu.be/y1PaBzxwRWQ
NVD — CVE-2025-52881 NVD
https://nvd.nist.gov/vuln/detail/CVE-2025-52881
Github.com/opencontainers/runc Source Repository REPOSITORY
https://github.com/opencontainers/selinux/pull/237
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/ff94f9991bd32076c871ef0ad8bc1b763458e480
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/ff6fe1324663538167eca8b3d3eec61e1bd4fa51
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/fdcc9d3cad2f85954a241ccb910a61aaa1ef47f3
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/ed6b1693b8b3ae7eb0250a7e76fc888cdacf98c1
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/db19bbed5348847da433faa9d69e9f90192bfa64
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/d61fd29d854b416feaaf128bf650325cd2182165
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/d40b3439a9614a86e87b81a94c6811ec6fa2d7d2
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/b3dd1bc562ed9996d1a0f249e056c16624046d28
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/a41366e74080fa9f26a2cd3544e2801449697322
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/77d217c7c3775d8ca5af89e477e81568ef4572db
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/77889b56db939c323d29d1130f28f9aea2edb544
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/6fc191449109ea14bb7d61238f24a33fe08c651f
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/4b37cd93f86e72feac866442988b549b5b7bf3e6
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/44a0fcf685db051c80b8c269812bb177f5802c58
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/435cc81be6b79cdec73b4002c0dae549b2f6ae6d
Security Fix Commit FIX COMMIT
https://github.com/opencontainers/runc/commit/3f925525b44d247e390e529e772a0dc0c0bc3557
youtu.be/tgsejw_ubb8 WEB
https://youtu.be/tGseJW_uBB8
pkg.go.dev/github.com/cyphar/f... WEB
https://pkg.go.dev/github.com/cyphar/filepath-securejoin/pathrs-lite/procfs
Github.com/opencontainers/runc Release RELEASE
https://github.com/opencontainers/selinux/releases/tag/v1.13.0
Github.com/opencontainers/runc Source Repository REPOSITORY
https://github.com/opencontainers/runc/blob/v1.4.0-rc.2/RELEASES.md
Github.com/opencontainers/runc Source Repository REPOSITORY
https://github.com/opencontainers/runc
Security Fix Commit FIX COMMIT
http://github.com/opencontainers/runc/commit/a41366e74080fa9f26a2cd3544e2801449697322
Security Fix Commit FIX COMMIT
http://github.com/opencontainers/runc/commit/fdcc9d3cad2f85954a241ccb910a61aaa1ef47f3
GitHub Advisory / Wiki ADVISORY
https://github.com/opencontainers/runc/security/advisories/GHSA-qw9x-cqr3-wc7r
GitHub Advisory / Wiki ADVISORY
https://github.com/opencontainers/runc/security/advisories/GHSA-fh74-hm69-rqjw
GitHub Advisory / Wiki ADVISORY
https://github.com/opencontainers/runc/security/advisories/GHSA-cgrx-mc8f-2prm
GitHub Advisory / Wiki ADVISORY
https://github.com/opencontainers/runc/security/advisories/GHSA-9493-h29p-rfm2

Frequently Asked Questions

What is CVE-2025-52881?
CVE-2025-52881 is a security vulnerability in Github.com/opencontainers/runc involving runc container escape and denial of service due to arbitrary write gadgets and procfs write redirects under CWE-363: Race Condition Enabling Link Following.
Which Github.com/opencontainers/runc versions are affected?
Affected versions include releases prior to 1.2.8, 1.13.0, 1.3.3, 1.4.0-rc.3 across affected packages: github.com/opencontainers/runc, github.com/opencontainers/selinux.
What version fixes CVE-2025-52881?
Upgrading to 1.2.8, 1.13.0, 1.3.3, 1.4.0-rc.3 (or the latest patched release for your respective branch) resolves the vulnerability.
Is github.com/opencontainers/runc affected?
Yes, github.com/opencontainers/runc is affected in releases prior to 1.2.8, 1.3.3, 1.4.0-rc.3. Upgrade your dependency to 1.2.8, 1.3.3, 1.4.0-rc.3 or later.
Is github.com/opencontainers/selinux affected?
Yes, github.com/opencontainers/selinux is affected in releases prior to 1.13.0. Upgrade your dependency to 1.13.0 or later.
What CWE is associated with CVE-2025-52881?
CVE-2025-52881 is classified under CWE-363: Race Condition Enabling Link Following (The product checks the status of a file or directory before accessing it, which produces a race condition in which the file can be replaced with a link before the access is performed, causing the product to access the wrong file.).
How can I check Go dependencies for CVE-2025-52881?
Run the dependency tree command: 'inspect dependencies for github.com/opencontainers/runc'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-cgrx-mc8f-2prm",
  "modified" : "2025-11-18T18:38:01Z",
  "published" : "2025-11-05T18:40:40Z",
  "aliases" : [ "CVE-2025-52881" ],
  "summary" : "runc container escape and denial of service due to arbitrary write gadgets and procfs write redirects",
  "details" : "### Impact ###\n\nThis attack is primarily a more sophisticated version of CVE-2019-19921, which was a flaw which allowed an attacker to trick runc into writing the LSM process labels for a container process into a dummy `tmpfs` file and thus not apply the correct LSM labels to the container process. The mitigation runc applied for CVE-2019-19921 was fairly limited and effectively only caused runc to verify that when runc writes LSM labels that those labels are actual procfs files.\n\nRather than using a fake `tmpfs` file for `/proc/self/attr/<label>`, an attacker could instead (through various means) make `/proc/self/attr/<label>` reference a real `procfs` file, but one that would still be a no-op (such as `/proc/self/sched`). This would have the same effect but would clear the \"is a procfs file\" check. Runc is aware that this kind of attack would be possible (even going so far as to discuss this publicly as \"future work\" at conferences), and runc is working on a far more comprehensive mitigation of this attack, but this security issue was disclosed before runc could complete this work.\n\nIn all known versions of runc, an attacker can trick runc into misdirecting writes to `/proc` to other procfs files through the use of a racing container with shared mounts (runc has also verified this attack is possible to exploit using a standard Dockerfile with `docker buildx build` as that also permits triggering parallel execution of containers with custom shared mounts configured). This redirect could be through symbolic links in a `tmpfs` or theoretically other methods such as regular bind-mounts.\n\nNote that while `/proc/self/attr/<label>` was the example used above (which is LSM-specific), this issue affect all writes to `/proc` in runc and thus also affects sysctls (written to `/proc/sys/...`) and some other APIs.\n\n#### Additional Impacts ####\n\nWhile investigating this issue, runc discovered that another risk with these redirected writes is that they could be redirected to dangerous files such as `/proc/sysrq-trigger` rather than just no-op files like `/proc/self/sched`. For instance, the default AppArmor profile name in Docker is `docker-default`, which when written to `/proc/sysrq-trigger` would cause the host system to crash.\n\nWhen this was discovered, runc conducted an audit of other write operations within runc and found several possible areas where runc could be used as a semi-arbitrary write gadget when combined with the above race attacks. The most concerning attack scenario was the configuration of sysctls. Because the contents of the sysctl are free-form text, an attacker could use a misdirected write to write to `/proc/sys/kernel/core_pattern` and break out of the container (as described in CVE-2025-31133, kernel upcalls are not namespaced and so coredump helpers will run with complete root privileges on the host). Even if the attacker cannot configure custom sysctls, a valid sysctl string (when redirected to `/proc/sysrq-trigger`) can easily cause the machine to hang.\n\nNote that the fact that this attack allows you to disable LSM labels makes it a very useful attack to combine with CVE-2025-31133 (as one of the only mitigations available to most users for that issue is AppArmor, and this attack would let you bypass that). However, the misdirected write issue above means that you could also achieve most of the same goals without needing to chain together attacks.\n\n### Patches ###\n\nThis advisory is being published as part of a set of three advisories:\n\n  * CVE-2025-31133\n  * CVE-2025-52881\n  * CVE-2025-52565\n\nThe patches fixing this issue have accordingly been combined into a single patchset. The following patches from that patchset resolve the issues in this advisory:\n\n * db19bbed5348 (\"internal/sys: add VerifyInode helper\")\n * 6fc191449109 (\"internal: move utils.MkdirAllInRoot to internal/pathrs\")\n * ff94f9991bd3 (\"*: switch to safer securejoin.Reopen\")\n * 44a0fcf685db (\"go.mod: update to github.com/cyphar/filepath-securejoin@v0.5.0\")\n * 77889b56db93 (\"internal: add wrappers for securejoin.Proc*\")\n * fdcc9d3cad2f (\"apparmor: use safe procfs API for labels\")\n * ff6fe1324663 (\"utils: use safe procfs for /proc/self/fd loop code\")\n * b3dd1bc562ed (\"utils: remove unneeded EnsureProcHandle\")\n * 77d217c7c377 (\"init: write sysctls using safe procfs API\")\n * 435cc81be6b7 (\"init: use securejoin for /proc/self/setgroups\")\n * d61fd29d854b (\"libct/system: use securejoin for /proc/$pid/stat\")\n * 4b37cd93f86e (\"libct: align param type for mountCgroupV1/V2 functions\")\n * d40b3439a961 (\"rootfs: switch to fd-based handling of mountpoint targets\")\n * ed6b1693b8b3 (\"selinux: use safe procfs API for labels\")\n   - Please note that this patch includes a private patch for `github.com/opencontainers/selinux` that could not be made public through a public pull request (as it would necessarily disclose this embargoed security issue).\n\n     The patch includes a complete copy of the forked code and a `replace` directive (as well as `go mod vendor` applied), which should still work with downstream build systems. If you cannot apply this patch, you can safely drop it -- some of the other patches in this series should block these kinds of racing mount attacks entirely.\n\n     See https://github.com/opencontainers/selinux/pull/237 for the upstream patch.\n * 3f925525b44d (\"rootfs: re-allow dangling symlinks in mount targets\")\n * a41366e74080 (\"openat2: improve resilience on busy systems\")\n\nrunc 1.2.8, 1.3.3, and 1.4.0-rc.3 have been released and all contain fixes for these issues. As per [runc's new release model][RELEASES.md], runc 1.1.x and earlier are no longer supported and thus have not been patched.\n\n[CVE-2025-31133]: https://github.com/opencontainers/runc/security/advisories/GHSA-9493-h29p-rfm2\n[CVE-2025-52565]: https://github.com/opencontainers/runc/security/advisories/GHSA-qw9x-cqr3-wc7r\n[CVE-2025-52881]: https://github.com/opencontainers/runc/security/advisories/GHSA-cgrx-mc8f-2prm\n[RELEASES.md]: https://github.com/opencontainers/runc/blob/v1.4.0-rc.2/RELEASES.md\n\n### Mitigations ###\n\n * Do not run untrusted container images from unknown or unverified sources.\n\n * For the basic no-op attack, this attack allows a container process to run with the same LSM labels as `runc`. For most AppArmor deployments this means it will be `unconfined`, and for SELinux it will likely be `container_runtime_t`. Runc has not conducted in-depth testing of the impact on SELinux -- it is possible that it provides some reasonable protection but it seems likely that an attacker could cause harm to systems even with such an SELinux setup.\n\n * For the more involved redirect and write gadget attacks, unfortunately most LSM profiles (including the standard container-selinux profiles) provide the container runtime access to sysctl files (including `/proc/sysrq-trigger`) and so LSMs likely do not provide much protection against these attacks.\n\n * Using rootless containers provides some protection against these kinds of bugs (privileged writes in runc being redirected) -- by having runc itself be an unprivileged process, in general you would expect the impact scope of a runc bug to be less severe as it would only have the privileges afforded to the host user which spawned runc. For this particular bug, the privilege escalation caused by the inadvertent write issue is entirely mitigated with rootless containers because the unprivileged user that the `runc` process is executing as cannot write to the aforementioned procfs files (even intentionally).\n\n### Other Runtimes ###\n\nAs this vulnerability boils down to a fairly easy-to-make logic bug, runc has provided information to other OCI (crun, youki) and non-OCI (LXC) container runtimes about this vulnerability.\n\nBased on discussions with other runtimes, it seems that crun and youki may have similar security issues and will release a co-ordinated security release along with runc. LXC appears to use the host's `/proc` for all procfs operations, and so is likely not vulnerable to this issue (this is a trade-off -- runc uses the container's procfs to avoid CVE-2016-9962-style attacks).\n\n[CVE-2016-9962]: https://seclists.org/fulldisclosure/2017/Jan/21\n\n### Credits ###\n\nThanks to Li Fubang (@lifubang from acmcoder.com, CIIC) and Tõnis Tiigi (@tonistiigi from Docker) for both independently discovering this vulnerability, as well as Aleksa Sarai (@cyphar from SUSE) for the original research into this class of security issues and solutions.\n\nAdditional thanks go to Tõnis Tiigi for finding some very useful exploit templates for these kinds of race attacks using `docker buildx build`.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/opencontainers/runc"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "1.2.8"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 1.2.7"
    }
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/opencontainers/selinux"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "1.13.0"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 1.12.0"
    }
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/opencontainers/runc"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.3.0-rc.1"
      }, {
        "fixed" : "1.3.3"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 1.3.2"
    }
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/opencontainers/runc"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.4.0-rc.1"
      }, {
        "fixed" : "1.4.0-rc.3"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 1.4.0-rc.2"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/security/advisories/GHSA-qw9x-cqr3-wc7r"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/security/advisories/GHSA-fh74-hm69-rqjw"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/security/advisories/GHSA-cgrx-mc8f-2prm"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/security/advisories/GHSA-9493-h29p-rfm2"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-52881"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/selinux/pull/237"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/ff94f9991bd32076c871ef0ad8bc1b763458e480"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/ff6fe1324663538167eca8b3d3eec61e1bd4fa51"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/fdcc9d3cad2f85954a241ccb910a61aaa1ef47f3"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/ed6b1693b8b3ae7eb0250a7e76fc888cdacf98c1"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/db19bbed5348847da433faa9d69e9f90192bfa64"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/d61fd29d854b416feaaf128bf650325cd2182165"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/d40b3439a9614a86e87b81a94c6811ec6fa2d7d2"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/b3dd1bc562ed9996d1a0f249e056c16624046d28"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/a41366e74080fa9f26a2cd3544e2801449697322"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/77d217c7c3775d8ca5af89e477e81568ef4572db"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/77889b56db939c323d29d1130f28f9aea2edb544"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/6fc191449109ea14bb7d61238f24a33fe08c651f"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/4b37cd93f86e72feac866442988b549b5b7bf3e6"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/44a0fcf685db051c80b8c269812bb177f5802c58"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/435cc81be6b79cdec73b4002c0dae549b2f6ae6d"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/commit/3f925525b44d247e390e529e772a0dc0c0bc3557"
  }, {
    "type" : "WEB",
    "url" : "https://youtu.be/tGseJW_uBB8"
  }, {
    "type" : "WEB",
    "url" : "https://pkg.go.dev/github.com/cyphar/filepath-securejoin/pathrs-lite/procfs"
  }, {
    "type" : "WEB",
    "url" : "https://youtu.be/y1PaBzxwRWQ"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/selinux/releases/tag/v1.13.0"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/opencontainers/runc/blob/v1.4.0-rc.2/RELEASES.md"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/opencontainers/runc"
  }, {
    "type" : "WEB",
    "url" : "http://github.com/opencontainers/runc/commit/a41366e74080fa9f26a2cd3544e2801449697322"
  }, {
    "type" : "WEB",
    "url" : "http://github.com/opencontainers/runc/commit/fdcc9d3cad2f85954a241ccb910a61aaa1ef47f3"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-363", "CWE-61" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2025-11-05T18:40:40Z",
    "nvd_published_at" : "2025-11-06T21:15:42Z"
  }
}