{"schema_version":"1.7.5","id":"GHSA-rg2x-37c3-w2rh","published":"2026-05-18T17:53:08Z","modified":"2026-06-25T23:11:19.822032119Z","aliases":["CVE-2026-42306","GO-2026-5617"],"related":["CGA-cjw6-g67q-rwx9"],"summary":"Docker: Race condition in docker cp allows bind mount redirection to host path","details":"## Summary\n\nA race condition during `docker cp` mount setup allows a malicious container to redirect a bind mount target to an arbitrary host path, potentially overwriting host files or causing denial of service.\n\n## Details\n\nWhen copying files into a container, the daemon sets up a temporary filesystem view by bind-mounting volumes into a private mount namespace. During this setup, the mount destination is created inside the container root and then a bind mount is attached using the container-relative path resolved to an absolute host path.\n\nBetween mountpoint creation and the `mount()` syscall, a process running inside the container can replace the destination (or a parent path component) with a symlink pointing to an arbitrary location on the host. The `mount()` syscall follows the symlink, causing the volume to be bind-mounted onto an arbitrary host path instead of the intended container path.\n\n## Impact\n\nA malicious container can redirect a volume bind mount to an arbitrary host path. The impact depends on the volume content and mount options:\n\n- If the volume is writable, arbitrary host files at the redirected path could be overwritten with the volume's contents.\n- If the volume is read-only, the host path is masked by the mount for the duration of the operation, causing denial of service.\n- In all cases the mount is temporary (torn down after the `docker cp` completes), but the effects of any writes persist.\n\n### Conditions for exploitation\n\n- A container must have at least one volume mount.\n- A process inside the container must be able to rapidly create and swap symlinks at the volume mount destination path.\n- An operator must initiate a `docker cp` into that container, or call the `PUT /containers/{id}/archive` or `HEAD /containers/{id}/archive` API endpoints.\n\n### Not affected\n\n- Containers that do not have volume mounts are not affected, as the race occurs during volume bind-mount setup.\n\n## Workarounds\n\n- Only run containers from trusted images.\n- Avoid using `docker cp` with untrusted running containers.\n- Use authorization plugins to restrict access to the archive API endpoints (`PUT /containers/{id}/archive`, `HEAD /containers/{id}/archive`).","affected":[{"package":{"name":"github.com/docker/docker","ecosystem":"Go","purl":"pkg:golang/github.com/docker/docker"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"28.5.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-rg2x-37c3-w2rh/GHSA-rg2x-37c3-w2rh.json"}},{"package":{"name":"github.com/moby/moby/v2","ecosystem":"Go","purl":"pkg:golang/github.com/moby/moby/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.0.0-beta.14"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-rg2x-37c3-w2rh/GHSA-rg2x-37c3-w2rh.json"}},{"package":{"name":"github.com/moby/moby","ecosystem":"Go","purl":"pkg:golang/github.com/moby/moby"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"28.5.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-rg2x-37c3-w2rh/GHSA-rg2x-37c3-w2rh.json"}}],"references":[{"type":"WEB","url":"https://github.com/moby/moby/security/advisories/GHSA-rg2x-37c3-w2rh"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-42306"},{"type":"PACKAGE","url":"https://github.com/moby/moby"}],"database_specific":{"cwe_ids":["CWE-367","CWE-61"],"github_reviewed":true,"github_reviewed_at":"2026-05-18T17:53:08Z","nvd_published_at":"2026-06-12T19:16:27Z","severity":"HIGH"},"severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:C/C:N/I:H/A:H"}]}