CVE-2020-24264

9.8 CRITICAL

📋 TL;DR

CVE-2020-24264 is an access control vulnerability in Portainer that allows authenticated users to bypass bind mount restrictions and execute arbitrary code on the Docker host. This affects Portainer 1.24.1 and earlier versions. Attackers can leverage this to escape container isolation and gain full control of the underlying host system.

💻 Affected Systems

Products:
  • Portainer
Versions: 1.24.1 and earlier
Operating Systems: All platforms running Docker with Portainer
Default Config Vulnerable: ⚠️ Yes
Notes: Requires authenticated access to Portainer interface. The vulnerability exists because bind mount restrictions are only enforced client-side, not server-side.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of the Docker host machine, allowing attackers to execute arbitrary code, access all containers and data, and potentially pivot to other systems in the network.

🟠

Likely Case

Privilege escalation from container user to host root, leading to data theft, service disruption, and lateral movement within the environment.

🟢

If Mitigated

Limited impact if proper network segmentation, least privilege access, and monitoring are in place, though the vulnerability still provides significant attack surface.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: CONFIRMED
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access to Portainer. The vulnerability is well-documented in public repositories and has been actively exploited.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Portainer 1.24.2 and later

Vendor Advisory: https://github.com/portainer/portainer/issues/4106

Restart Required: Yes

Instructions:

1. Backup your Portainer configuration. 2. Stop the Portainer container. 3. Pull the latest Portainer image: docker pull portainer/portainer:latest. 4. Remove the old container: docker rm portainer. 5. Recreate the container with updated image using your previous configuration. 6. Verify the version is 1.24.2 or higher.

🔧 Temporary Workarounds

Disable Bind Mount Creation

linux

Restrict users from creating containers with bind mounts through Portainer policies or Docker daemon configuration

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer --no-auth --admin-password='$2y$05$...' --bind=:9000 --templates https://raw.githubusercontent.com/portainer/templates/master/templates.json --no-analytics --no-telemetry

🧯 If You Can't Patch

  • Restrict Portainer access to trusted users only using network segmentation and strong authentication
  • Implement strict monitoring for container creation events and bind mount usage in Docker logs

🔍 How to Verify

Check if Vulnerable:

Check Portainer version in the web interface or via docker inspect on the Portainer container

Check Version:

docker exec portainer portainer --version

Verify Fix Applied:

Verify Portainer version is 1.24.2 or higher and test that bind mount restrictions are properly enforced server-side

📡 Detection & Monitoring

Log Indicators:

  • Unusual container creation events with bind mounts
  • Portainer authentication logs showing suspicious user activity
  • Docker daemon logs showing unexpected privileged container creation

Network Indicators:

  • Unexpected outbound connections from Portainer host
  • Suspicious API calls to Docker socket from Portainer

SIEM Query:

source="docker" AND "bind" AND "mount" AND container_name="portainer"

🔗 References

📤 Share & Export