Understanding CVE-2025-9074: When Docker's \"Security\" Becomes a Joke
The Vulnerability That Made Security Engineers Cry
Docker Desktop fucked this up so bad it's almost impressive. They exposed their internal Docker Engine HTTP API on 192.168.65.7:2375
with zero authentication. None. Not even a fucking "please" or basic auth header. Any container running on Docker Desktop could just walk right up to this API and create new privileged containers with the host filesystem mounted.
Timeline of This Disaster:
- Discovery: Felix Boulet found this by accident while doing basic network scanning (because that's how obvious it was)
- Patch Release: Docker Desktop 4.44.3 released August 20, 2025
- CVSS Score: 9.3/10 - Because apparently "any container can own your host" deserves a high score
- Additional Research: Philippe Dugre confirmed similar vulnerability on macOS
How This Nightmare Actually Works
The attack is embarrassingly simple. From inside any container:
- Container makes HTTP POST to
http://192.168.65.7:2375/containers/create
with JSON payload that:- Uses any image (alpine works fine)
- Mounts host filesystem (
/mnt/host/c:/host_root
on Windows) - Sets up privileged execution
- Container makes HTTP POST to
/containers/{id}/start
to launch the malicious container - Game over - The new container can read/write anywhere on the host
You don't even need code execution. A simple SSRF from a web app running in Docker is enough to completely compromise the host. This is the kind of vulnerability that makes incident response teams drink.
Platform-Specific Disaster Scenarios
Windows: Extra Fucked
Docker Desktop runs with admin privileges on Windows (because of course it does). This means:
- Malicious containers get admin access to the entire Windows host
- Can modify system files, registry, install malware
- Access to all drives, not just C:
- Can disable Windows Defender, install backdoors, steal credentials
macOS: Also Fucked, Just Differently
macOS implementation has similar issues but with Unix filesystem access:
- Root filesystem access through bind mounts
- Can modify system configuration files
- Access to all user data, SSH keys, certificates
- Potential for persistence through LaunchDaemons
Real-World Attack Vectors
Scenario 1: The Malicious Docker Image
You docker pull
some sketchy image from Docker Hub (we've all done it). That image contains a simple script that:
## This runs inside the malicious container
curl -X POST [DOCKER_API_ENDPOINT]/containers/create \
-H \"Content-Type: application/json\" \
-d '{\"Image\":\"alpine\",\"Cmd\":[\"sh\",\"-c\",\"cat /host_root/Users/*/Documents/* > /tmp/stolen_data\"],\"HostConfig\":{\"Binds\":[\"/mnt/host/c:/host_root\"]}}'
Scenario 2: The Web App SSRF
Your Node.js app has an SSRF vulnerability. Attacker sends:
POST /api/fetch-url
{\"url\": \"[DOCKER_API_ENDPOINT]/containers/create\", \"payload\": \"...\"}
Game over.
Scenario 3: The Supply Chain Attack
Popular npm package gets compromised, adds a few lines that phone home to the Docker API. Thousands of developers running docker-compose up
suddenly have compromised hosts. We've seen this shit before with JavaScript supply chains.
What Makes This Extra Terrifying
No Docker Socket Required - Traditional container escape techniques needed you to mount
-v /var/run/docker.sock:/var/run/docker.sock
. This needs nothing.Works Through SSRF - Don't need shell access, just any way to make HTTP requests from the container.
Silent Exploitation - No obvious signs in Docker logs. The malicious container appears legitimate.
Affects Everyone - Every Docker Desktop installation before 4.44.3 is vulnerable. That's basically everyone who hasn't updated in the last week.
Detection: Good Luck With That
This vulnerability is nearly impossible to detect through normal means:
- Docker logs won't show the API abuse
- Host monitoring tools might miss the privileged container creation
- Network monitoring needs to watch for connections to the internal API endpoint
- Process monitoring needs to catch the rapid container creation/deletion
The only reliable detection is monitoring Docker API calls for unexpected container creation, but most people don't monitor that internal endpoint because "it's supposed to be secure."
The Investigation Hellscape
When you discover this has been exploited:
- Log analysis is useless - Normal Docker logs won't show the API abuse
- Timeline reconstruction is nightmare - Containers can be created and destroyed in seconds
- Forensics are complicated - Need to analyze both container filesystems and host impact
- Scope assessment is brutal - Any container could have triggered this, need to audit everything
This is the kind of vulnerability that turns a 15-minute security incident into a week-long forensic investigation, because you can't trust any container that ran during the vulnerable period.