CVE-2024-41110
Critical · 9.9CVSS
9.9
EPSS
16.5%
Published
Jul 24, 2024
CISA due date
—
Cloudanix analysis
A flaw in Docker's authorization checks can let attackers slip through security rules that are supposed to control what containers are allowed to do, potentially giving them more access than intended.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Privilege Gain
- Component
- Container Runtime
- Class
- Authorization Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability permits an Engine API client to issue specially crafted requests that cause the daemon to forward traffic to AuthZ plugins without including the request or response body, allowing bypass of plugins that base authorization decisions on body content.
Why it matters to the business
Organizations relying on authorization plugins for access control in container environments face risk of unauthorized container actions including privilege escalation; the issue is a regression of a prior fix and affects many Docker deployments until upgraded.
How an attack unfolds
An attacker with access to the Docker Engine API crafts a request that omits the body payload; the daemon forwards the incomplete request to the AuthZ plugin, which then grants access it would have denied if the full body had been inspected, enabling unauthorized operations.
How to fix it
Upgrade immediately to docker-ce v27.1.1 or the patched releases in the 19.03, 20.0, 23.0, 24.0, 25.0, 26.0, or 26.1 branches; if immediate upgrade is not possible, disable AuthZ plugins or restrict Docker API access to trusted clients only under least privilege.
How to confirm the fix worked
Verify the installed Docker Engine version matches a patched release; test AuthZ plugin behavior by sending both complete and body-omitted requests to confirm the plugin now receives full payloads before making decisions.
Typical attack path
- Obtain network or local access to the Docker Engine API endpoint
- Identify that an AuthZ plugin relying on request/response bodies is in use
- Craft and send an API request deliberately omitting the body content
- Receive authorization approval for an action that should have been denied
- Perform the unauthorized container operation such as image pull or container start
How to detect it
Review Docker daemon logs and API access logs for requests that appear truncated or lack expected body content; correlate with AuthZ plugin decision logs to identify cases where authorization was granted without full request inspection.
What your security team should do
- Prioritize upgrade of all Docker Engine instances to the fixed versions listed in remediation guidance
- Audit environments for active use of AuthZ plugins that inspect request bodies
- Temporarily restrict Docker API exposure while upgrades are applied
- Monitor EPSS and exploit maturity indicators for any increase in observed attempts
The record
Moby is an open-source project created by Docker for software containerization. A security vulnerability has been detected in certain versions of Docker Engine, which could allow an attacker to bypass authorization plugins (AuthZ) under specific circumstances. The base likelihood of this being exploited is low. Using a specially-crafted API request, an Engine API client could make the daemon forward the request or response to an authorization plugin without the body. In certain circumstances, the authorization plugin may allow a request which it would have otherwise denied if the body had been forwarded to it. A security issue was discovered In 2018, where an attacker could bypass AuthZ plugins using a specially crafted API request. This could lead to unauthorized actions, including privilege escalation. Although this issue was fixed in Docker Engine v18.09.1 in January 2019, the fix was not carried forward to later major versions, resulting in a regression. Anyone who depends on authorization plugins that introspect the request and/or response body to make access control decisions is potentially impacted. Docker EE v19.03.x and all versions of Mirantis Container Runtime are not vulnerable. docker-ce v27.1.1 containes patches to fix the vulnerability. Patches have also been merged into the master, 19.03, 20.0, 23.0, 24.0, 25.0, 26.0, and 26.1 release branches. If one is unable to upgrade immediately, avoid using AuthZ plugins and/or restrict access to the Docker API to trusted parties, following the principle of least privilege.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/docker/docker | 19.03.0 | 23.0.15 |
| Go | github.com/docker/docker | 20.10.0+incompatible | 25.0.6+incompatible |
| Go | github.com/docker/docker | 24.0.0 | 25.0.6 |
| Go | github.com/docker/docker | 26.0.0 | 26.1.5 |
| Go | github.com/docker/docker | 27.0.0 | 27.1.1 |
| Go | github.com/moby/moby | 20.10.0+incompatible | 25.0.6+incompatible |
| Chainguard | aactl | 0 | 0.4.12-r16 |
| Chainguard | apko | 0 | 0.17.0-r1 |
| Chainguard | argo-workflow-cli | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-cli-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller-compat-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor-compat-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-known-hosts-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-ui | 0 | 3.6.5-r2 |
| Chainguard | bom | 0 | 0.6.0-r8 |
| Chainguard | buf | 0 | 1.35.1-r1 |
| Chainguard | buildah | 0 | 1.37.0-r0 |
| Chainguard | buildctl | 0 | 0.20.1-r3 |
| Chainguard | buildkitd | 0 | 0.20.1-r3 |
| Chainguard | cadvisor | 0 | 0.50.0-r0 |
| Chainguard | cadvisor-compat | 0 | 0.50.0-r0 |
| Chainguard | cadvisor-fips | 0 | 0.50.0-r0 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-1.14 | 0 | 1.14.7-r3 |
| Chainguard | cert-manager-1.14-acmesolver | 0 | 1.14.7-r3 |
| Chainguard | cert-manager-1.14-cainjector | 0 | 1.14.7-r3 |
| Chainguard | cert-manager-1.14-controller | 0 | 1.14.7-r3 |
| Chainguard | cert-manager-1.14-startupapicheck | 0 | 1.14.7-r3 |
| Chainguard | cert-manager-1.14-webhook | 0 | 1.14.7-r3 |
| Chainguard | cert-manager-acmesolver-1.12 | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-acmesolver-1.12-bitnami-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-acmesolver-1.12-iamguarded-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-acmesolver-fips-1.12 | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-cainjector-1.12 | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-cainjector-1.12-bitnami-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-cainjector-1.12-iamguarded-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-cainjector-fips-1.12 | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-cmctl | 0 | 2.1.0-r3 |
| Chainguard | cert-manager-cmctl-fips | 0 | 2.1.0-r4 |
| Chainguard | cert-manager-controller-1.12 | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-controller-1.12-bitnami-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-controller-1.12-iamguarded-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-controller-fips-1.12 | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.12 | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.12-acmesolver | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.12-cainjector | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.12-cmctl | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.12-controller | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.12-webhook | 0 | 1.12.12-r5 |
| Chainguard | cert-manager-fips-1.14 | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-fips-1.14-acmesolver | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-fips-1.14-cainjector | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-fips-1.14-cmctl | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-fips-1.14-controller | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-fips-1.14-startupapicheck | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-fips-1.14-webhook | 0 | 1.14.7-r5 |
| Chainguard | cert-manager-webhook-1.12 | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-webhook-1.12-bitnami-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-webhook-1.12-iamguarded-compat | 0 | 1.12.12-r3 |
| Chainguard | cert-manager-webhook-fips-1.12 | 0 | 1.12.12-r5 |
| Chainguard | chainctl | 0 | 0.2.59-r0 |
| Chainguard | chartmuseum | 0 | 0.16.2-r4 |
| Chainguard | chartmuseum-fips | 0 | 0.16.2-r2 |
| Chainguard | cilium-cli | 0 | 0.16.15-r1 |
| Chainguard | cmctl-1.12 | 0 | 1.12.12-r3 |
| Chainguard | cmctl-1.12-fips | 0 | 1.12.12-r5 |
| Chainguard | cmctl-1.14 | 0 | 1.14.7-r3 |
| Chainguard | cmctl-1.14-fips | 0 | 1.14.7-r5 |
| Chainguard | cmctl-fips-1.12 | 0 | 1.12.12-r5 |
| Chainguard | cosign | 0 | 2.3.0-r1 |
| Chainguard | cosign-fips | 0 | 2.3.0-r1 |
| Chainguard | crane | 0 | 0 |
| Chainguard | crane-cov | 0 | 0 |
| Chainguard | cri-tools | 0 | 1.30.1-r2 |
| Chainguard | crictl | 0 | 1.30.1-r2 |
| Chainguard | critest | 0 | 1.30.1-r2 |
| Chainguard | crossplane | 0 | 1.16.0-r3 |
| Chainguard | crossplane-crank | 0 | 1.16.0-r3 |
| Chainguard | crossplane-xfn | 0 | 1.16.0-r3 |
| Chainguard | ctop | 0 | 0.7.7-r17 |
| Chainguard | dagdotdev | 0 | 0.0.4-r1 |
| Chainguard | dagger | 0 | 0.12.3-r0 |
| Chainguard | datadog-agent | 0 | 7.55.2-r1 |
| Chainguard | datadog-agent-core-integrations | 0 | 7.55.2-r1 |
| Chainguard | datadog-agent-core-integrations-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-agent-fakeintake | 0 | 7.55.2-r1 |
| Chainguard | datadog-agent-fakeintake-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-agent-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-agent-jmx | 0 | 7.55.2-r1 |
| Chainguard | datadog-agent-jmx-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-agent-oci-compat | 0 | 7.55.2-r1 |
| Chainguard | datadog-agent-oci-compat-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-agent-s6-overlay | 0 | 7.55.2-r1 |
| Chainguard | datadog-agent-s6-overlay-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-cluster-agent | 0 | 7.55.2-r1 |
| Chainguard | datadog-cluster-agent | 0 | 7.64.1-r0 |
| Chainguard | datadog-cluster-agent-fips | 0 | 7.64.1-r0 |
| Chainguard | datadog-cluster-agent-oci-compat | 0 | 7.55.2-r1 |
| Chainguard | datadog-cluster-agent-oci-compat | 0 | 7.64.1-r0 |
| Chainguard | datadog-cluster-agent-oci-compat-fips | 0 | 7.64.1-r0 |
| Chainguard | dive | 0 | 0.12.0-r10 |
| Chainguard | docker | 0 | 27.1.1-r0 |
| Chainguard | docker-compose | 0 | 2.29.1-r0 |
| Chainguard | docker-config-mirror-gcr | 0 | 27.1.1-r0 |
| Chainguard | docker-credential-cgr | 0 | 0.2.59-r0 |
| Chainguard | docker-credential-gcr | 0 | 2.1.23-r1 |
| Chainguard | docker-dind | 0 | 27.1.1-r0 |
| Chainguard | docker-dind-compat | 0 | 27.1.1-r0 |
| Chainguard | docker-init | 0 | 27.1.1-r0 |
| Chainguard | docker-modprobe-compat | 0 | 27.1.1-r0 |
| Chainguard | docker-oci-entrypoint | 0 | 27.1.1-r0 |
| Chainguard | docker-rootless | 0 | 27.1.1-r0 |
| Chainguard | dockerd | 0 | 27.1.1-r0 |
| Chainguard | dockerd-oci-entrypoint | 0 | 27.1.1-r0 |
| Chainguard | dockerd-service | 0 | 27.1.1-r0 |
| Chainguard | dogstatsd | 0 | 7.55.2-r1 |
| Chainguard | eksctl | 0 | 0.188.0-r0 |
| Chainguard | falcoctl | 0 | 0.8.0-r5 |
| Chainguard | falcoctl-fips | 0 | 0.8.0-r5 |
| Chainguard | falcoctl-fips-0.4 | 0 | 0.4.0-r12 |
| Chainguard | filebeat | 0 | 8.15.0-r0 |
| Chainguard | filebeat-fips | 0 | 8.15.0-r0 |
| Chainguard | flux | 0 | 2.3.0-r5 |
| Chainguard | flux-compat | 0 | 2.3.0-r5 |
| Chainguard | flux-helm-controller | 0 | 1.0.1-r5 |
| Chainguard | flux-helm-controller-bitnami-compat | 0 | 1.0.1-r5 |
| Chainguard | flux-helm-controller-iamguarded-compat | 0 | 1.0.1-r5 |
| Chainguard | flux-image-reflector-controller | 0 | 0.32.0-r6 |
| Chainguard | flux-image-reflector-controller-iamguarded-compat | 0 | 0.32.0-r6 |
| Chainguard | flux-source-controller | 0 | 1.3.0-r6 |
| Chainguard | flux-source-controller-bitnami-compat | 0 | 1.3.0-r6 |
| Chainguard | flux-source-controller-iamguarded-compat | 0 | 1.3.0-r6 |
| Chainguard | fluxcd-source-controller-bitnami-compat | 0 | 1.3.0-r6 |
| Chainguard | gatekeeper-3.15 | 0 | 3.15.1-r7 |
| Chainguard | gatekeeper-3.15-compat | 0 | 3.15.1-r7 |
| Chainguard | gatekeeper-3.15-crds | 0 | 3.15.1-r7 |
| Chainguard | gatekeeper-3.15-crds-compat | 0 | 3.15.1-r7 |
| Chainguard | gatekeeper-3.15-gator | 0 | 3.15.1-r7 |
| Chainguard | gatekeeper-3.16 | 0 | 3.16.3-r3 |
| Chainguard | gatekeeper-3.16-compat | 0 | 3.16.3-r3 |
| Chainguard | gatekeeper-3.16-crds | 0 | 3.16.3-r3 |
| Chainguard | gatekeeper-3.16-crds-compat | 0 | 3.16.3-r3 |
| Chainguard | gatekeeper-3.16-gator | 0 | 3.16.3-r3 |
| Chainguard | gh | 0 | 2.53.0-r1 |
| Chainguard | gh-doc | 0 | 2.53.0-r1 |
| Chainguard | gitlab-docker-machine-17.3 | 0 | 17.3.3-r1 |
| Chainguard | gitlab-rails-ee-17.0 | 0 | 17.0.6-r1 |
| Chainguard | gitlab-rails-ee-17.3 | 0 | 17.3.1-r1 |
| Chainguard | gitlab-rails-ee-assets-17.3 | 0 | 17.3.1-r1 |
| Chainguard | gitlab-rails-ee-assets-fips-17.3 | 0 | 17.3.1-r1 |
| Chainguard | gitlab-rails-ee-doc-17.3 | 0 | 17.3.1-r1 |
| Chainguard | gitlab-rails-ee-doc-fips-17.3 | 0 | 17.3.1-r1 |
| Chainguard | gitlab-rails-ee-fips-17.0 | 0 | 17.0.6-r1 |
| Chainguard | gitlab-rails-ee-fips-17.3 | 0 | 17.3.1-r1 |
| Chainguard | gitlab-runner-17.3 | 0 | 17.3.3-r1 |
| Chainguard | gitlab-runner-helper-17.3 | 0 | 17.3.3-r1 |
| Chainguard | gitlab-runner-helper-compat-17.3 | 0 | 17.3.3-r1 |
| Chainguard | gitlab-runner-helper-oci-entrypoint-17.3 | 0 | 17.3.3-r1 |
| Chainguard | gitlab-runner-oci-entrypoint-17.3 | 0 | 17.3.3-r1 |
| Chainguard | gitsign | 0 | 0.10.2-r5 |
| Chainguard | gitsign-config | 0 | 0.10.2-r5 |
| Chainguard | gitsign-credential-cache | 0 | 0.10.2-r5 |
| Chainguard | goreleaser | 0 | 2.1.0-r1 |
| Chainguard | grafana-alloy | 0 | 1.3.0-r0 |
| Chainguard | grafana-alloy-compat | 0 | 1.3.0-r0 |
| Chainguard | grafana-alloy-fips | 0 | 1.3.0-r0 |
| Chainguard | grype | 0 | 0.79.3-r1 |
| Chainguard | guac | 0 | 0.8.0-r1 |
| Chainguard | guaccsub | 0 | 0.8.0-r1 |
| Chainguard | guacgql | 0 | 0.8.0-r1 |
| Chainguard | guacingest | 0 | 0.8.0-r1 |
| Chainguard | guacone | 0 | 0.8.0-r1 |
| Chainguard | harbor-2.11 | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-exporter | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-jobservice | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-photon-registry | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-portal | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-portal-nginx-config | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-redis-compat | 0 | 2.11.0-r2 |
| Chainguard | harbor-2.11-registryctl | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11 | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11-db | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11-exporter | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11-jobservice | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11-photon-registry | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11-portal | 0 | 2.11.0-r2 |
| Chainguard | harbor-fips-2.11-redis-compat | 0 | 2.11.0-r2 |
Related vulnerabilities
- CVE-2024-29018 Moby is an open source container framework that is a key component of Docker Engine… Also affects github.com/docker/docker
- CVE-2024-36623 Moby Race Condition vulnerability Also affects github.com/moby/moby
- CVE-2024-36621 Moby Race Condition vulnerability Also affects github.com/moby/moby
- CVE-2026-33186 gRPC-Go is the Go language implementation of gRPC. Also affects aactl
- CVE-2025-15558 Docker CLI for Windows searches for plugin binaries in C:\ProgramData\Docker\cli-plugins… Also affects aactl
- CVE-2026-1229 The CombinedMult function in the CIRCL ecc/p384 package (secp384r1 curve) produces an… Also affects aactl
- CVE-2026-26958 filippo.io/edwards25519 is a Go library implementing the edwards25519 elliptic curve with… Also affects aactl
- CVE-2025-68121 During session resumption in crypto/tls, if the underlying Config has its ClientCAs or… Also affects aactl