Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-72533

CVE-2026-72533: Portainer CE Auth Bypass Vulnerability

CVE-2026-72533 is an authentication bypass flaw in Portainer CE through 2.44.0 that allows low-privileged users to gain root-level Docker host access via URL normalization. This article covers technical details, impact, and mitigations.

Published:

CVE-2026-72533 Overview

CVE-2026-72533 is an authentication bypass vulnerability in Portainer Community Edition (CE) through version 2.44.0. The flaw allows authenticated low-privileged users to bypass Docker proxy authorization checks through non-canonical URL normalization. The proxy endpoint fails to normalize request paths before applying access controls. This mismatch lets crafted requests reach the Docker socket while evading the authorization middleware. Successful exploitation grants root-level access to the underlying Docker host, effectively defeating the container isolation model that Portainer enforces.

Critical Impact

A low-privileged Portainer user can escape authorization checks and issue arbitrary Docker API commands, resulting in full compromise of the Docker host and all managed containers.

Affected Products

  • Portainer CE versions up to and including 2.44.0
  • Deployments exposing the Docker proxy endpoint to authenticated users
  • Environments using Portainer role-based access control for Docker environments

Discovery Timeline

  • 2026-08-11 - CVE-2026-72533 published to the National Vulnerability Database (NVD)
  • 2026-08-11 - Last updated in NVD database

Technical Details for CVE-2026-72533

Vulnerability Analysis

The vulnerability is classified under [CWE-287: Improper Authentication]. Portainer CE proxies Docker API requests through an internal endpoint protected by authorization middleware. That middleware inspects the request path to determine whether the caller has rights to invoke the targeted Docker operation. Because the proxy does not canonicalize paths before evaluation, an attacker can encode traversal sequences, redundant slashes, or percent-encoded characters that the authorization layer parses differently than the downstream Docker proxy. The two components reach conflicting conclusions about which endpoint is being called, and the request is forwarded with the privileges of the underlying Docker socket connection.

Root Cause

The root cause is a parser differential between the authorization middleware and the reverse proxy that forwards requests to the Docker daemon. Access control decisions rely on the raw, un-normalized path, while the proxy performs its own normalization before dispatch. Any request whose textual representation evades the deny rules but resolves to a privileged Docker endpoint after normalization slips through.

Attack Vector

Exploitation requires an authenticated account with any level of access to a Portainer-managed Docker environment. The attacker crafts an HTTP request to the Docker proxy endpoint using a non-canonical path. The authorization middleware evaluates the raw path and permits the request. The proxy layer then normalizes the path and forwards the call to the Docker daemon, which executes it with root privileges. From that position, the attacker can create privileged containers, mount the host filesystem, or execute arbitrary commands on the host. Detailed technical background is available in the GitHub Portainer Repository.

Detection Methods for CVE-2026-72533

Indicators of Compromise

  • Docker API requests through the Portainer proxy containing encoded traversal sequences such as %2f, .., or duplicated forward slashes
  • Unexpected container creation events using --privileged, --pid=host, or bind mounts of / from low-privileged Portainer accounts
  • Portainer audit logs showing successful Docker operations by users lacking the corresponding environment role
  • Outbound network activity from newly created containers not aligned with normal workload patterns

Detection Strategies

  • Inspect Portainer HTTP access logs for requests to /api/endpoints/*/docker/* that include non-canonical path segments before forwarding
  • Correlate Portainer user role assignments against actual Docker API operations invoked on their behalf
  • Alert on Docker daemon events (container create, exec, volume mount) that originate from the Portainer proxy but do not map to an authorized user action

Monitoring Recommendations

  • Enable Docker daemon audit logging and forward events to a centralized log platform for correlation with Portainer authentication events
  • Baseline expected Portainer API paths and flag deviations that include URL-encoded control characters or path traversal artifacts
  • Monitor container runtime activity for creation of privileged containers or host filesystem mounts triggered outside normal deployment pipelines

How to Mitigate CVE-2026-72533

Immediate Actions Required

  • Upgrade Portainer CE to a fixed release above 2.44.0 as soon as the vendor publishes a patched build
  • Restrict Portainer administrative and Docker environment access to trusted users only, and revoke unused low-privileged accounts
  • Place the Portainer web interface behind a reverse proxy or VPN and block direct internet exposure of the management endpoint
  • Review Docker host and container state for signs of unauthorized privileged container creation or host filesystem access

Patch Information

Refer to the GitHub Portainer Repository for the latest release notes and security fixes addressing the URL normalization defect. Apply the vendor-provided patched release as soon as it becomes available. Until a patch is deployed, treat all Portainer-managed Docker environments as potentially reachable by any authenticated Portainer user.

Workarounds

  • Deploy a reverse proxy in front of Portainer that canonicalizes URL paths and rejects requests containing encoded traversal sequences before they reach Portainer
  • Remove non-administrative user access to Docker environments until a patched version is installed
  • Isolate Portainer-managed Docker hosts on segmented networks to limit blast radius if the proxy is abused
  • Rotate credentials and API tokens tied to Portainer once the fixed version is in production
bash
# Example nginx snippet to reject non-canonical paths reaching Portainer
location /api/ {
    if ($request_uri ~* "(\.\./|//|%2e%2e|%2f%2f)") {
        return 400;
    }
    proxy_pass http://portainer_upstream;
}

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.