Debian Patches
Status for docker.io/26.1.5+dfsg1-9+deb13u1
| Patch | Description | Author | Forwarded | Bugs | Origin | Last update |
|---|---|---|---|---|---|---|
| engine-CVE-2026-34040-authz-reject-oversized-body.patch | pkg/authz: Reject requests exceeding body size limit Previously, the authorization system would silently skip body inspection when request bodies exceeded the maximum size limit (1MiB). The authorization plugins would receive an empty body for inspection while the actual large payload would still be processed by the Docker daemon, allowing malicious requests to circumvent plugin-based security controls. (cherry picked from commit 7a767b27fd1238c89a5cc926c39e27d3bcf58e35) |
Paweł Gronowski <pawel.gronowski@docker.com> | no | 2026-02-16 | ||
| engine-CVE-2026-34040-authz-body-limit-4mib.patch | pkg/authz: Increase body limit to 4 MiB Some endpoint could potentially use a body request than 1 MiB without malicious intent. (cherry picked from commit ec76e941838797fc762185c556c152f0a032d387) |
Paweł Gronowski <pawel.gronowski@docker.com> | no | 2026-02-16 | ||
| engine-CVE-2026-33997-plugin-privilege-off-by-one.patch | plugin: Fix off-by-one in privilege validation Fix an off-by-one error in isEqual() where the comparison loop started at index 1 instead of 0, causing the first privilege (after sorting alphabetically by name) to never be validated. This allowed a malicious plugin to request different values for whichever privilege sorts first — most notably "allow-all-devices", which grants unrestricted rwm access to all host devices. The bug also meant that plugins requesting exactly one privilege had zero iterations of the comparison loop, bypassing validation entirely. Also fix an existing test case ("diff-order-but-same-value") that only passed due to the off-by-one bug, and add test cases for single-element and first-sorted-element mismatches. (cherry picked from commit 99a095ecf04e8849318f2811bb3f687905eab09b) |
Paweł Gronowski <pawel.gronowski@docker.com> | no | 2026-03-19 | ||
| engine-CVE-2026-41568-copy-symlink-escape.patch | daemon/copy: Fix symlink escape in mount destination creation Use os.Root to scope all filesystem operations in createIfNotExists to the container root directory. . This prevents a TOCTOU attack where a container process swaps a path component with a symlink between GetResourcePath resolution and directory/file creation, which could allow writing to arbitrary host paths outside the container. Comment: Cherry-picked from the upstream 25.0 LTS branch (742e28ed8d), which is itself a backport of master commit 64a22d80b93ddc1416b501b5145df02947312249. . The only deviation from the upstream commit is patch context: 26.1.5 carries an extra "internal/compatcontext" import in daemon/containerfs_linux.go that is not present on the 25.0 branch, so the import hunk was refreshed to apply at zero fuzz (dpkg-source rejects any fuzz). . NOTE: this patch introduces calls to os.Root.MkdirAll, which requires Go 1.25. Debian trixie only has Go 1.24, so it is followed immediately by engine-go1.24-os-root-mkdirall.patch, which replaces those calls with an equivalent helper built on the Go 1.24 os.Root API. |
Paweł Gronowski <pawel.gronowski@docker.com> | not-needed | backport, https://github.com/moby/moby/commit/742e28ed8d654372f0aa5b549da74c2f6e674194 | 2026-08-13 | |
| engine-go1.24-os-root-mkdirall.patch | build the os.Root security fixes with Go 1.24 The upstream fix for GHSA-vp62-88p7-qqf5 (CVE-2026-41568) rewrites createIfNotExists() on top of the os.Root API and calls os.Root.MkdirAll(). . os.Root itself landed in Go 1.24, but the MkdirAll method was only added in Go 1.25. Debian trixie ships Go 1.24 only (golang-any 2:1.24~2), so the upstream code as written does not compile there. . Replace the two os.Root.MkdirAll() calls with a local mkdirAllInRoot() helper that walks the path one component at a time using os.Root.Mkdir(), which is available in Go 1.24. The security property is unchanged: every component is still created through the *os.Root handle, so the kernel-side scoping that blocks symlink escapes out of the container root still applies. Error semantics match os.MkdirAll (success if the path already exists as a directory, ENOTDIR if it exists as a non-directory). . This patch can be dropped once docker.io is built against Go >= 1.25. |
Aron Xu <aron@debian.org> | not-needed | 2026-08-13 | ||
| engine-CVE-2026-42306-pin-mount-target-fd.patch | Fix bind mount target redirection via symlink swap during docker cp Pin mount targets via /proc/self/fd file descriptors to prevent TOCTOU attacks. Previously, a container process could swap a path component with a symlink between GetResourcePath resolution and directory/file creation or mount, allowing writes to arbitrary host paths outside the container. Open the resolved destination through os.Root to get a pinned fd, then mount onto /proc/self/fd/<fd> instead of re-resolving the container-relative path. This closes the TOCTOU window between createIfNotExists and mount. Because the kernel rejects remount and propagation-change syscalls on /proc/self/fd paths, the initial bind mount uses the fd path for safety, then Readlink resolves the real path for the subsequent read-only remount and rprivate propagation change. (cherry picked from commit 43fa458a9c40873867e75221454de10709b04236) |
Paweł Gronowski <pawel.gronowski@docker.com> | no | 2026-03-26 | ||
| engine-CVE-2026-42306-resolve-in-container-symlinks.patch | daemon: resolve in-container symlinks before os.Root mount ops The security fix in GHSA-vp62-88p7-qqf5 switched openContainerFS to os.Root for mount-destination operations, but stopped walking the destination through in-container symlinks. os.Root refuses to follow absolute symlinks, so any container whose image had an absolute symlink along the mount target's path (e.g. the common /var/run -> /run in ubuntu/alpine/busybox) broke `docker cp`. Walk m.Destination through ctr.GetResourcePath first which follows symlinks to get a path relative to BaseFS, then keep using os.Root for the actual MkdirAll/OpenFile/Open calls. (cherry picked from commit fb3702d033601bb0e767f2ca398e3909a15be29c) |
Paweł Gronowski <pawel.gronowski@docker.com> | no | 2026-05-19 | ||
| buildkit-CVE-2026-33747-validate-container-id.patch | executor: validate container IDs centrally BuildKit's gateway API lets a client (e.g. a custom "#syntax" frontend) supply the container ID that the runc/containerd executor uses. The ID was passed unvalidated into filepath.Join(w.root, id) to build the OCI bundle path, so an ID containing path separators or ".." could direct bundle creation outside the executor root. . Add executor.ValidContainerID(), restricting IDs to ASCII letters and digits, and call it at the top of Run() in both the runc and containerd executors (moving the "generate an ID if empty" step ahead of the check in the runc executor so generated IDs are validated too). . Per the advisory this is only reachable when a custom BuildKit frontend is in use (via "#syntax" or --build-arg BUILDKIT_SYNTAX); the well-known docker/dockerfile frontend is not affected. |
not-needed | upstream, extracted from https://github.com/moby/moby/commit/830ddb26a2e437818ffe60fbd28bcb419617df04 | 2026-08-13 | ||
| engine-add-go.mod-file.patch | Add go.mod file to engine Fix build issue with + github.com/coreos/go-systemd/v22 + gotest.tools/v3 |
Arnaud Rebillout <elboulangero@gmail.com> | no | 2020-11-24 | ||
| engine-avoid-hcsshim.patch | =================================================================== | no | ||||
| engine-ftbfs-mips.patch | Fix FTBFS on mips =================================================================== |
Tianon Gravi <tianon@debian.org> | no | |||
| engine-backport-48368-netlink-update.patch | changes needed for github.com/vishvananda/netlink v1.2.1+ diff --git a/engine/libnetwork/iptables/conntrack.go b/engine/libnetwork/iptables/conntrack.go index c77993e1055a6..37fd91528a4e0 100644 |
no | https://github.com/moby/moby/pull/48368 | |||
| engine-backport-48407-netlink-EINTR.patch | changes needed for github.com/vishvananda/netlink v1.2.1+ (retry on EINTR) diff --git a/engine/daemon/cluster/listen_addr_linux.go b/engine/daemon/cluster/listen_addr_linux.go index 62e4f61a65..e8e2bddadc 100644 |
no | https://github.com/moby/moby/pull/48407 | |||
| engine-CVE-2026-41567-decompress-before-entering-container-fs.patch | daemon: Decompress archives before entering container filesystem Move decompression outside RunInFS to prevent executing attacker-controlled binaries from within the container filesystem. When dockerd handles `PUT /containers/{id}/archive`, it switches root into the container's filesystem before extracting the archive. Previously, archive.Untar was called inside RunInFS, which meant decompression binaries (xz, unpigz) were resolved via PATH inside the container's filesystem. A malicious binary at /usr/bin/xz in the container would be executed as host root. Fix by calling decompressing the archive before entering the container filesystem, then using unpacking the uncompressed tar stream inside RunInFS. This ensures decompression binaries are always resolved from the host filesystem. (cherry picked from commit 2022313ffe5a8c04890b5295bc52670ee6df8070) |
Paweł Gronowski <pawel.gronowski@docker.com> | no | 2026-05-18 | ||
| test--cli-skip-TestSignCommandLocalFlag.patch | Skip TestSignCommandLocalFlag No idea why this test used to pass before and fails now... ~~~~ === RUN TestSignCommandLocalFlag --- FAIL: TestSignCommandLocalFlag (35.01s) sign_test.go:307: assertion failed: expected error to contain "error contacting notary server: dial tcp: lookup reg-name.io", got "Error: error contacting notary server: dial tcp 125.235.4.59:443: i/o timeout" ... FAIL github.com/docker/cli/cli/command/trust 49.235s ~~~~ =================================================================== |
Arnaud Rebillout <arnaud.rebillout@collabora.com> | not-needed | vendor, Debian | 2019-09-28 | |
| test--skip-daemon-oci-linux-pbuilder-tests.patch | Skip failing test TestGetSourceMount: "Can't find mount point of /" =================================================================== |
Arnaud Rebillout <elboulangero@gmail.com> | not-needed | 2020-12-01 | ||
| test--skip-pkg-system-chtimes-mips64.patch | Skip pkg/system chtimes tests on mips64 === RUN TestChtimesLinux chtimes_linux_test.go:87: Expected: 2262-04-11 23:47:16 +0000 UTC, got: 1990-01-27 10:50:44 +0000 UTC --- FAIL: TestChtimesLinux (0.00s) === RUN TestChtimes chtimes_test.go:92: Expected: 2262-04-11 23:47:16 +0000 UTC, got: 1990-01-27 10:50:44 +0000 UTC --- FAIL: TestChtimes (0.00s) =================================================================== |
Arnaud Rebillout <elboulangero@gmail.com> | yes | upstream | 2021-01-04 | |
| test--cli-skip-network-tests.patch | cli/command: Skip network tests Interestingly, the last time I tried, only the test 'TestRunBuildFromGitHubSpecialCase' failed, and it failed only for the armel architecture. Which makes absolutely no sense, given that it's supposed to fail when there's no network, and it should have nothing to do with the architecture. . Anyway. Let's disable this test. . Build error below: . === FAIL: cli/command/image TestRunBuildFromGitHubSpecialCase (0.10s) Error: unable to prepare context: unable to 'git clone' to temporary context directory: error fetching: fatal: unable to access 'https://github.com/docker/for-win/': Couldn't connect to server : exit status 128 build_test.go:136: assertion failed: expected error to contain "docker-build-git", got "unable to prepare context: unable to 'git clone' to temporary context directory: error fetching: fatal: unable to access 'https://github.com/docker/for-win/': Couldn't connect to server\n: exit status 128" =================================================================== |
Dmitry Smirnov <onlyjob@debian.org> | not-needed | 2020-11-27 | ||
| test--skip-TestGetRootUIDGID.patch | disable test failing is sbuild.~~~~ FAIL: TestGetRootUIDGID (0.00s) idtools_unix_test.go:287: Error Trace: idtools_unix_test.go:287 Error: Not equal: expected: 1009 actual : 2952 Test: TestGetRootUIDGID ~~~~ =================================================================== |
Dmitry Smirnov <onlyjob@debian.org> | not-needed | 2018-06-16 | ||
| test--skip-TestStateRunStop.patch | disabled unreliable test.~~~~ state_test.go:102: ExitCode -1, expected 2, err "context deadline exceeded" ~~~~ =================================================================== |
Dmitry Smirnov <onlyjob@debian.org> | not-needed | 2018-08-02 | ||
| cli-fix-generate-man.patch | =================================================================== | no | ||||
| test_invalid_cert_pem.patch | TestNewClientWithOpsFromEnv expects different response === FAIL: client TestNewClientWithOpsFromEnv/invalid_cert_path (0.00s) client_test.go:96: assertion failed: expected error "could not load X509 key pair: open invalid/path/cert.pem: no such file or directory", got "Could not load X509 key pair: open invalid/path/cert.pem: no such file or directory" open invalid/path/cert.pem: no such file or directory Could not load X509 key pair github.com/docker/go-connections/tlsconfig.getCert /<<PKGBUILDDIR>>/_build/src/github.com/docker/go-connections/tlsconfig/config.go:183 github.com/docker/go-connections/tlsconfig.Client /<<PKGBUILDDIR>>/_build/src/github.com/docker/go-connections/tlsconfig/config.go:216 github.com/docker/docker/client.FromEnv.WithTLSClientConfigFromEnv.func1 /<<PKGBUILDDIR>>/_build/src/github.com/docker/docker/client/options.go:174 github.com/docker/docker/client.FromEnv /<<PKGBUILDDIR>>/_build/src/github.com/docker/docker/client/options.go:40 github.com/docker/docker/client.NewClientWithOpts /<<PKGBUILDDIR>>/_build/src/github.com/docker/docker/client/client.go:201 github.com/docker/docker/client.TestNewClientWithOpsFromEnv.func1 /<<PKGBUILDDIR>>/_build/src/github.com/docker/docker/client/client_test.go:94 testing.tRunner /usr/lib/go-1.22/src/testing/testing.go:1689 runtime.goexit /usr/lib/go-1.22/src/runtime/asm_amd64.s:1695 =================================================================== |
Reinhard Tartler <siretart@tauware.de> | no | |||
| test-disable-tests-that-require-root.patch | Disable tests that assume we run as root =================================================================== |
Reinhard Tartler <siretart@tauware.de> | no | |||
| test-docker-pull-error.patch | String mismatch === FAIL: distribution TestPullSchema2Config/unauthorized (0.00s) pull_v2_test.go:302: HTTP GET /v2/ pull_v2_test.go:302: HTTP GET /v2/docker.io/library/testremotename/blobs/sha256:66ad98165d38f53ee73868f82bd4eed60556ddfee824810a4062c4f777b20a5b pull_v2_test.go:332: expected error="download failed after attempts=1: unauthorized: authentication required" to contain "unauthorized: you need to be authenticated" =================================================================== |
Reinhard Tartler <siretart@tauware.de> | no | |||
| test--cli-fix-string-issues.patch | fix minor string issues in cli unit-test =================================================================== |
Badrikesh Prusty <badrikesh.prusty@siemens.com> | no | |||
| test--cli-TestInitializeFromClientHangs.patch | Not suitable for package tests =================================================================== |
Reinhard Tartler <siretart@tauware.de> | no | |||
| test--cli-TestUseHostOverrideEmpty.patch | Not suitable for package tests =================================================================== |
Reinhard Tartler <siretart@tauware.de> | no | |||
| test--cli-TestCloseRunningCommand.patch | Not suitable for package tests =================================================================== |
Reinhard Tartler <siretart@tauware.de> | no | |||
| grpc-middleware-v1.patch | copy grpc-middleware v1 | Shengjing Zhu <zhsj@debian.org> | not-needed | 2024-08-13 | ||
| buildkit-remove-hcsshim.patch | =================================================================== | no | ||||
| buildkit-remove-jaeger.patch | =================================================================== | no | ||||
| debian-bash-completion-no-shebang.patch | Remove shebang from bash completion file Discussed upstream, rejected as most code editors rely on the shebang to correctly indent and highlight the file. =================================================================== |
Arnaud Rebillout <elboulangero@gmail.com> | yes | 2020-11-27 | ||
| debian-systemd-unit-environment-file.patch | Use EnvironmentFile with the systemd unit file. =================================================================== |
Paul R. Tagliamonte <paultag@debian.org> | no | debian | 2014-05-07 | |
| debian-dockerd-binary-location.patch | FHS compliance. =================================================================== |
not-needed | ||||
| debian-nuke-no-prompt.patch | remove prompt and delay =================================================================== |
Dmitry Smirnov <onlyjob@debian.org> | not-needed | debian | 2018-06-09 | |
| cli-add-go.mod-file.patch | Add go.mod file to cli Fix build issue during tests with + gotest.tools/v3 |
Arnaud Rebillout <elboulangero@gmail.com> | no | 2020-11-24 | ||
| buildkit-CVE-2026-33748-git-subdir-symlink-escape.patch | git: normalize and validate subdir paths BuildKit's Git source handler accepts a "#ref:subdir" fragment on a Git build context URL. Before this fix the subdir was only run through path.Clean() and then opened with os.Open(filepath.Join(checkoutDir, subdir)), with no check that each path segment is a real directory inside the checkout. A malicious repository could therefore make the subdir (or an intermediate segment) a symlink and have BuildKit read files from outside the checked-out repository. . This is reachable from "docker build <git-url>#<ref>:<subdir>" via dockerd's embedded BuildKit builder; a standalone buildkitd is not required. |
not-needed | backport, derived from https://github.com/moby/moby/commit/830ddb26a2e437818ffe60fbd28bcb419617df04 | 2026-08-13 |
All known versions for source package 'docker.io'
- 28.5.2+dfsg4-4 (experimental, forky, sid)
- 26.1.5+dfsg1-9+deb13u1 (trixie-security, trixie-proposed-updates)
- 26.1.5+dfsg1-9 (trixie)
- 20.10.24+dfsg1-1+deb12u1 (bookworm)
- 20.10.24+dfsg1-1 (bookworm-backports)
