CVE-2024-41110

9.9 CRITICAL

📋 TL;DR

This vulnerability allows attackers to bypass Docker authorization plugins by sending specially-crafted API requests where the request/response body isn't forwarded to the plugin. This affects Docker Engine users who rely on AuthZ plugins that inspect request/response bodies for access control decisions.

💻 Affected Systems

Products:
  • Docker Engine (Moby)
  • docker-ce
Versions: Versions after v18.09.1 up to before v27.1.1, excluding Docker EE v19.03.x and Mirantis Container Runtime
Operating Systems: Linux, Windows, macOS
Default Config Vulnerable: ✅ No
Notes: Only vulnerable if using authorization plugins that inspect request/response bodies. Docker EE v19.03.x and Mirantis Container Runtime are not affected.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Unauthorized actions including privilege escalation, container escape, or resource manipulation if AuthZ plugins are bypassed.

🟠

Likely Case

Limited unauthorized API calls within Docker's capabilities, depending on what the AuthZ plugin was protecting.

🟢

If Mitigated

No impact if AuthZ plugins aren't used or Docker API access is properly restricted.

🌐 Internet-Facing: HIGH - If Docker API is exposed to untrusted networks, attackers could exploit this remotely.
🏢 Internal Only: MEDIUM - Internal attackers or compromised systems could exploit this to bypass authorization controls.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Requires API access and knowledge of crafting requests that bypass body forwarding. Base likelihood of exploitation is low according to description.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: docker-ce v27.1.1

Vendor Advisory: https://github.com/moby/moby/security/advisories

Restart Required: Yes

Instructions:

1. Stop Docker service: 'sudo systemctl stop docker' 2. Update Docker: 'sudo apt-get update && sudo apt-get install docker-ce=27.1.1' (adjust for your package manager) 3. Start Docker: 'sudo systemctl start docker'

🔧 Temporary Workarounds

Disable AuthZ plugins

all

Remove or disable authorization plugins that inspect request/response bodies

Edit /etc/docker/daemon.json and remove authorization plugin configuration
Restart Docker: sudo systemctl restart docker

Restrict Docker API access

all

Limit Docker daemon API access to trusted networks and users

Configure Docker daemon to bind to specific IP: 'dockerd -H tcp://192.168.1.100:2375'
Use TLS authentication for Docker API

🧯 If You Can't Patch

  • Disable all authorization plugins that inspect request/response bodies
  • Restrict Docker daemon API access to only trusted, authenticated users and networks

🔍 How to Verify

Check if Vulnerable:

Check if using Docker version between 18.09.2 and 27.1.0 AND using AuthZ plugins that inspect request/response bodies

Check Version:

docker version --format '{{.Server.Version}}'

Verify Fix Applied:

Verify Docker version is 27.1.1 or later, or check that AuthZ plugins are disabled

📡 Detection & Monitoring

Log Indicators:

  • Unusual API requests to Docker daemon
  • AuthZ plugin denials followed by successful similar requests
  • Requests with missing or malformed bodies

Network Indicators:

  • Unusual Docker API traffic patterns
  • Requests to Docker API from unauthorized sources

SIEM Query:

source="docker" AND ("authorization" OR "authz") AND ("bypass" OR "missing body" OR "malformed request")

🔗 References

📤 Share & Export