This vulnerability is a server-side request forgery (SSRF) that exposes the Docker Engine API to containers running on Docker Desktop. Here's what actually happens, not the bullshit explanations floating around.
The Attack Surface
The vulnerability exists in how Docker Desktop sets up its internal networking. On both Windows and macOS:
- Docker Engine API becomes accessible at 192.168.65.7:2375 by default
- This endpoint is reachable from any container running on the system
- The API is exposed regardless of Enhanced Container Isolation (ECI) settings
- Works even when "Expose daemon on tcp://localhost:2375 without TLS" is disabled
What Attackers Actually Get
When a malicious container exploits this:
- Full Docker Engine control - create, stop, delete any containers
- Image management - pull malicious images, delete existing ones
- Volume mounting - access host filesystem with user privileges
- Network manipulation - modify Docker networking configurations
On Windows with WSL2 backend, this gets worse:
- Mount the entire host drive:
/mnt/c/
becomes accessible - Access Windows user files with same privileges as Docker Desktop user
- Potential for persistence through scheduled tasks or startup folders
Real-World Impact
This isn't theoretical. A simple HTTP POST to the vulnerable endpoint with a malicious payload gives attackers:
Example exploit (DO NOT RUN):
## Malicious API call that works pre-patch:
curl -X POST http://[DOCKER_API]:2375/v1.43/containers/create \
-H "Content-Type: application/json" \
-d '{"Image":"alpine","HostConfig":{"Binds":["/:/hostfs:rw"]}}'
That mounts your entire host filesystem into a new container. Game over.
The Fix in 4.44.3
Docker's fix removes the ability for containers to reach the Engine API through the Docker subnet. They didn't just restrict access - they eliminated the network path entirely. The security advisory details how this addresses the CWE-668 exposure of resources to wrong sphere.
Verification after patching:
## This should fail after patching:
docker run --rm alpine nc -v 192.168.65.7 2375
## Connection should be refused or timeout
If that connection succeeds, you're still vulnerable. Check Docker's troubleshooting guide for update issues.