Understanding CVE-2025-9074: The Real Technical Details

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:

What Attackers Actually Get

When a malicious container exploits this:

  1. Full Docker Engine control - create, stop, delete any containers
  2. Image management - pull malicious images, delete existing ones
  3. Volume mounting - access host filesystem with user privileges
  4. 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.

Emergency Patching: What To Do Right Now

Stop whatever you're doing and patch. This is a CVSS 9.3 critical with public exploits. Here's your emergency response checklist.

Immediate Actions (Next 10 Minutes)

1. Check Your Version

## On Windows/macOS:
docker --version
## Look for \"Docker Desktop\" in output

## Check Docker Desktop version in GUI:
## Docker Desktop → Settings → About

Vulnerable versions: Anything before 4.44.3

2. Update Docker Desktop NOW

Windows:

macOS:

Corporate environments: Push this through your software deployment pipeline immediately. This isn't a normal patch cycle update. Consider Docker Desktop Business for centralized management.

3. Verify the Patch

After updating, verify you're protected:

## Check version first
docker --version
## Should show 4.44.3 or higher

## Test the vulnerability is fixed
docker run --rm alpine sh -c \"timeout 5 nc -v 192.168.65.7 2375\"
## Should show connection refused/timeout, NOT connection succeeded

If nc connects successfully, you're still vulnerable - the patch didn't take.

For Production Environments

Container Registry Scanning

Scan your registries for potential malicious images uploaded through this exploit using Docker Scout or Trivy:

## Look for suspicious recent pushes
docker images --format \"table {{.Repository}}	{{.Tag}}	{{.CreatedAt}}\"

Log Analysis

Check Docker daemon logs for suspicious API calls:

Windows: %USERPROFILE%\.docker\machine\machines\default\docker.log
macOS: ~/Library/Containers/com.docker.docker/Data/log/

Look for:

Use Docker audit logging for better incident response.

Network Monitoring

Monitor for containers attempting to connect to 192.168.65.7:2375:

## Basic network monitoring
ss -tuln | grep 2375
netstat -an | grep 2375

If You Can't Patch Immediately

DO NOT run untrusted containers until you patch. Seriously.

If you absolutely must run containers before patching:

  1. Only run images you built yourself
  2. Scan all images with `docker scout` or Trivy first
  3. Monitor network connections from containers using system monitoring tools
  4. Use Docker rootless mode if available (reduces impact)

This is a band-aid, not a solution. PATCH.

When Shit Hits The Fan

If you suspect exploitation:

  1. Stop all containers immediately: docker stop $(docker ps -q)
  2. Disconnect from network if possible
  3. Check for new containers: docker ps -a | head -20
  4. Review mounted volumes: docker inspect $(docker ps -aq) | grep -i bind
  5. Scan filesystem for unauthorized changes

Don't try to clean up the mess before patching. Fix the vulnerability first, investigate second.

CVE-2025-9074 Emergency Response FAQ

Q

Does this affect Docker Engine on Linux servers?

A

No. This only affects Docker Desktop on Windows and macOS. Regular Docker Engine installations on Linux are not vulnerable to CVE-2025-9074.

Q

I enabled Enhanced Container Isolation - am I protected?

A

No. The vulnerability works regardless of ECI settings. Docker's marketing around ECI being a security boundary was proven wrong by this bug. Update to 4.44.3.

Q

Does disabling "Expose daemon on tcp://localhost:2375" help?

A

No. The vulnerability exists even when this setting is disabled. The API exposure happens through the internal Docker subnet (192.168.65.7), not localhost.

Q

How do I know if I've been compromised?

A

Check for:

  • Unexpected containers: docker ps -a
  • Suspicious volume mounts: docker inspect $(docker ps -aq) | grep -A5 -B5 "Binds"
  • New images from unknown sources: docker images | grep -v "official\|local"
  • Recent Docker API activity in logs
Q

Can I use Docker Rootless to mitigate this?

A

Partially. Rootless mode limits the impact since containers can't escalate beyond user privileges. But you're still exposed to data theft and lateral movement. Just patch.

Q

My corporate policy requires testing updates - what do I do?

A

Override the policy. This is a critical security update with public exploits. The risk of waiting exceeds the risk of applying an emergency patch. Document the exception afterward.

Q

I'm using Docker in CI/CD - is that vulnerable?

A

Only if using Docker Desktop. Most CI/CD systems use Docker Engine on Linux, which is not affected. But if your CI runners are Windows/mac

OS with Docker Desktop, yes

  • update immediately.
Q

What about air-gapped environments?

A

You're more vulnerable because internal containers can't be easily monitored. Download Docker Desktop 4.44.3 installer on a connected machine, transfer to air-gapped environment, and update.

Q

I see connections to 192.168.65.7:2375 - am I under attack?

A

Possibly. That's the vulnerable endpoint. Check what containers are making those connections:

docker ps --format "table {{.Names}}	{{.Image}}	{{.Status}}"

Stop any suspicious containers and investigate their images.

Q

Does this work through Docker Compose?

A

Yes. Any container launched through Docker Compose can exploit this vulnerability. The attack vector is independent of how containers are started.

Q

I updated but the vulnerability test still shows connection success - what's wrong?

A

Either:

  1. Docker Desktop didn't restart properly - reboot your machine
  2. You updated Docker CLI but not Docker Desktop - check Docker Desktop version in GUI
  3. Corporate proxy/firewall is interfering with the connection test
Q

Are there any indicators of compromise I should watch for?

A

Yes:

  • Containers with --privileged flags you didn't set
  • Volume mounts to /, /mnt/c/, or /Users/
  • Network connections to external IPs from containers
  • Unexpected Docker API calls in daemon logs
  • New SSH keys in ~/.ssh/authorized_keys
  • Scheduled tasks or cron jobs you didn't create

Post-Patch Recovery and Prevention

You've patched. Good. Now let's make sure you're actually secure and this doesn't happen again.

Verification That You're Actually Fixed

Don't just assume the patch worked. Docker Desktop updates sometimes fail silently or only partially apply.

Complete Verification Process

  1. Version Check:
docker --version
## Must show 4.44.3 or higher

## Also check GUI version (more reliable):
## Docker Desktop → Settings → About
  1. Network Connectivity Test:
## This should FAIL after patching:
docker run --rm alpine timeout 5 nc -v 192.168.65.7 2375 || echo \"GOOD: Connection blocked\"

## If it connects, you're STILL VULNERABLE
  1. API Access Test:
    Test that the Docker Engine API is no longer accessible from containers:
## This vulnerability test should fail after patching:
docker run --rm curlimages/curl curl -f --max-time 5 http://[DOCKER_API]:2375/version
## Expected result: \"curl: (7) Couldn't connect\" or timeout
  1. Process Verification:
    Docker Desktop should show version 4.44.3 in the system tray/menu bar tooltip.

If You Were Compromised

Evidence Collection

Before cleaning up, document what happened using incident response best practices:

## Capture current container state
docker ps -a --format \"table {{.Names}}	{{.Image}}	{{.CreatedAt}}	{{.Status}}\" > containers_$(date +%Y%m%d).txt

## Document suspicious mounts
docker inspect $(docker ps -aq) | jq '.[].HostConfig.Binds' > mounts_$(date +%Y%m%d).json

## List all images
docker images --format \"table {{.Repository}}	{{.Tag}}	{{.CreatedAt}}\" > images_$(date +%Y%m%d).txt

Cleanup Process

  1. Stop all containers:
docker stop $(docker ps -q)
  1. Remove suspicious containers:
## Check each container's creation details
docker inspect <container_id> | jq '.[].Config.Image'
docker rm $(docker ps -aq --filter \"status=exited\")
  1. Remove untrusted images:
## Be careful - this removes all unused images
docker image prune -a
  1. Reset Docker state if heavily compromised:
## Nuclear option - removes everything
docker system prune -a --volumes

Hardening for the Future

Container Image Security

Only run images you trust using Docker security best practices:

## Enable Docker Content Trust
export DOCKER_CONTENT_TRUST=1

## Scan images before running with Docker Scout
docker scout quickview <image_name>

Network Monitoring

Set up monitoring for suspicious Docker API access using audit logging:

## Monitor Docker daemon for API calls (macOS)
tail -f ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log | grep -E \"(POST|PUT|DELETE)\"

Registry Security

Organizational Changes

Update your incident response plan:

  1. Who decides to apply emergency security patches?
  2. How quickly can you deploy patches across all developer machines?
  3. What's your container registry compromise response?

Regular security practices:

Why This Happened

This vulnerability existed because Docker Desktop's security model had a fundamental flaw: containers could reach the management API through the internal network.

The fix wasn't just access control - Docker had to redesign how the API is exposed to eliminate the network path entirely. This suggests similar vulnerabilities might exist in other container management tools.

Lesson learned: Container isolation isn't just about filesystem and process boundaries. Network isolation is equally critical, and "internal" networks aren't automatically secure.

Monitoring Going Forward

Set up alerts for:

  • Docker Desktop version drift across your team
  • Unusual container creation patterns
  • Network connections from containers to management interfaces
  • Image pulls from unknown registries

This won't be the last critical Docker vulnerability. Make sure you can respond faster next time.

Official Resources and Security Tools

Related Tools & Recommendations

integration
Similar content

Jenkins Docker Kubernetes CI/CD: Deploy Without Breaking Production

The Real Guide to CI/CD That Actually Works

Jenkins
/integration/jenkins-docker-kubernetes/enterprise-ci-cd-pipeline
100%
tool
Similar content

Docker Desktop: GUI for Containers, Pricing, & Setup Guide

Docker's desktop app that packages Docker with a GUI (and a $9/month price tag)

Docker Desktop
/tool/docker-desktop/overview
90%
tool
Recommended

Google Kubernetes Engine (GKE) - Google's Managed Kubernetes (That Actually Works Most of the Time)

Google runs your Kubernetes clusters so you don't wake up to etcd corruption at 3am. Costs way more than DIY but beats losing your weekend to cluster disasters.

Google Kubernetes Engine (GKE)
/tool/google-kubernetes-engine/overview
70%
troubleshoot
Recommended

Docker Desktop is Fucked - CVE-2025-9074 Container Escape

Any container can take over your entire machine with one HTTP request

Docker Desktop
/troubleshoot/cve-2025-9074-docker-desktop-fix/container-escape-mitigation
51%
troubleshoot
Recommended

Docker Desktop Security Configuration Broken? Fix It Fast

The security configs that actually work instead of the broken garbage Docker ships

Docker Desktop
/troubleshoot/docker-desktop-security-hardening/security-configuration-issues
51%
news
Similar content

Docker Desktop CVE-2025-9074: Critical Container Escape Vulnerability

A critical vulnerability (CVE-2025-9074) in Docker Desktop versions before 4.44.3 allows container escapes via an exposed Docker Engine API. Learn how to protec

Technology News Aggregation
/news/2025-08-26/docker-cve-security
50%
troubleshoot
Recommended

Fix Kubernetes Service Not Accessible - Stop the 503 Hell

Your pods show "Running" but users get connection refused? Welcome to Kubernetes networking hell.

Kubernetes
/troubleshoot/kubernetes-service-not-accessible/service-connectivity-troubleshooting
49%
tool
Similar content

Podman: Rootless Containers, Docker Alternative & Key Differences

Runs containers without a daemon, perfect for security-conscious teams and CI/CD pipelines

Podman
/tool/podman/overview
49%
troubleshoot
Similar content

Docker Container Escape: Emergency Response to CVE-2025-9074

The Container Breakout That Broke Everything - Emergency Response for the SSRF From Hell

Docker Desktop
/troubleshoot/docker-cve-2025-9074-container-escape/emergency-response
48%
news
Similar content

Docker Desktop Hit by Critical Container Escape Vulnerability

CVE-2025-9074 exposes host systems to complete compromise through API misconfiguration

Technology News Aggregation
/news/2025-08-25/docker-cve-2025-9074
48%
troubleshoot
Similar content

Trivy Scanning Failures - Common Problems and Solutions

Fix timeout errors, memory crashes, and database download failures that break your security scans

Trivy
/troubleshoot/trivy-scanning-failures-fix/common-scanning-failures
47%
troubleshoot
Similar content

Docker CVE-2025-9074 Forensics: Container Escape Investigation Guide

Docker Container Escape Forensics - What I Learned After Getting Paged at 3 AM

Docker Desktop
/troubleshoot/docker-cve-2025-9074/forensic-investigation-techniques
41%
tool
Recommended

VS Code Team Collaboration & Workspace Hell

How to wrangle multi-project chaos, remote development disasters, and team configuration nightmares without losing your sanity

Visual Studio Code
/tool/visual-studio-code/workspace-team-collaboration
36%
tool
Recommended

VS Code Performance Troubleshooting Guide

Fix memory leaks, crashes, and slowdowns when your editor stops working

Visual Studio Code
/tool/visual-studio-code/performance-troubleshooting-guide
36%
tool
Recommended

VS Code Extension Development - The Developer's Reality Check

Building extensions that don't suck: what they don't tell you in the tutorials

Visual Studio Code
/tool/visual-studio-code/extension-development-reality-check
36%
troubleshoot
Similar content

Fix Docker Permission Denied on Mac M1: Troubleshooting Guide

Because your shiny new Apple Silicon Mac hates containers

Docker Desktop
/troubleshoot/docker-permission-denied-mac-m1/permission-denied-troubleshooting
34%
tool
Similar content

Docker: Package Code, Run Anywhere - Fix 'Works on My Machine'

No more "works on my machine" excuses. Docker packages your app with everything it needs so it runs the same on your laptop, staging, and prod.

Docker Engine
/tool/docker/overview
33%
tool
Recommended

GitHub Actions Security Hardening - Prevent Supply Chain Attacks

integrates with GitHub Actions

GitHub Actions
/tool/github-actions/security-hardening
33%
alternatives
Recommended

Tired of GitHub Actions Eating Your Budget? Here's Where Teams Are Actually Going

integrates with GitHub Actions

GitHub Actions
/alternatives/github-actions/migration-ready-alternatives
33%
tool
Recommended

GitHub Actions - CI/CD That Actually Lives Inside GitHub

integrates with GitHub Actions

GitHub Actions
/tool/github-actions/overview
33%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization