Critical bug in Docker Engine allowed attackers to bypass authorization plugins
July 25, 2024
A critical flaw in some versions of Docker Engine can be exploited to bypass authorization plugins (AuthZ) under specific circumstances.
A vulnerability, tracked as CVE-2024-41110 (CVSS score of 10.0), in certain versions of Docker Engine can allow an attacker to bypass authorization plugins (AuthZ) under specific circumstances.
“An attacker could exploit a bypass using an API request with Content-Length set to 0, causing the Docker daemon to forward the request without the body to the AuthZ plugin, which might approve the request incorrectly.” reads the advisory published by the Moby Project maintainers. “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 flaw that was discovered in 2018 allowed attackers to bypass authorization (AuthZ) plugins in Docker Engine using crafted API requests, potentially leading to unauthorized actions, including privilege escalation. The vulnerability was addressed with the release of Docker Engine v18.09.1, but it was not included in subsequent major versions, causing a regression. This issue does not affect Docker EE v19.03.x or any version of Mirantis Container Runtime.
The vulnerability was discovered in April 2024 and has been addressed with the release of versions 23.0.14 and 27.1.0 in July 23, 2024. Below is the list of versions of Docker Engine that are impacted if the AuthZ plugin is used:
- <= v19.03.15
- <= v20.10.27
- <= v23.0.14
- <= v24.0.9
- <= v25.0.5
- <= v26.0.2
- <= v26.1.4
- <= v27.0.3, and
- <= v27.1.0
Docker Engine v19.03.x and later versions are not affected if authorization plugins are not used for access control decisions. Similarly, all versions of Mirantis Container Runtime remain unaffected by the issue.
“Users of Docker commercial products and internal infrastructure who do not rely on AuthZ plugins are unaffected.” continues the advisory.
Docker Desktop up to version 4.32.0 includes vulnerable versions of Docker Engine. However, the risk is mitigated because exploitation requires access to the Docker API, which usually needs local access to the host machine. By default, Docker Desktop does not include AuthZ plugins, limiting privilege escalation to the Docker Desktop VM rather than the underlying host. A fixed version of Docker Engine is expected in Docker Desktop v4.33, addressing these security concerns.
Below are the remediation steps proposed by Docker maintainers:
- Update Docker Engine:
- If you are running an affected version, update to the most recent patched version.
- Mitigation if unable to update immediately:
- Avoid using AuthZ plugins.
- Restrict access to the Docker API to trusted parties, following the principle of least privilege.
- Update Docker Desktop:
- If using an affected version, update to Docker Desktop 4.33 after it is released.
- Ensure AuthZ plugins are not used and do not expose the Docker API over TCP without protection.
- Docker Business subscribers can use Settings Management to enforce secure settings.
Follow me on Twitter: @securityaffairs and Facebook and Mastodon
Pierluigi Paganini
(SecurityAffairs – hacking, CVE-2024-21412)