CVE-2026-44848: Portainer missing authorization on Docker plugin endpoints, which allows host RCE
Portainer enforces Role-Based Access Control (RBAC) on top of the Docker API. The proxy layer routes incoming Docker API requests to per-resource handlers (containers, images, services, volumes, etc.) that apply authorization checks.
The Docker plugin management endpoints (/plugins/*) were not registered with a handler, so standard users with endpoint access could call privileged plugin operations — including installing and enabling plugins — directly against the underlying Docker daemon.
The vulnerability is exposed when a non-admin Portainer user (Standard User role, or any role granted endpoint-level access) has been given access to a Docker endpoint via Portainer RBAC. Administrators and users without Docker endpoint access are not affected.
A regular user with access to a Docker endpoint can:
- Pull an arbitrary plugin from any registry via
POST /plugins/pull. - Grant it the privileges it requests, including
CAP_SYS_ADMINand host-path mounts. - Enable the plugin via
POST /plugins/{name}/enable, at which point Docker runs the plugin with root privileges on the host.
Docker plugins execute as root on the host and can request arbitrary host capabilities and mounts. Enabling a crafted plugin gives the user access to the host filesystem and equivalent to root on the Docker host.
References
- github.com/advisories/GHSA-rrmm-9v76-h3p4
- github.com/portainer/portainer/releases/tag/2.33.8
- github.com/portainer/portainer/releases/tag/2.39.2
- github.com/portainer/portainer/releases/tag/2.41.0
- github.com/portainer/portainer/security/advisories/GHSA-rrmm-9v76-h3p4
- nvd.nist.gov/vuln/detail/CVE-2026-44848
Code Behaviors & Features
Detect and mitigate CVE-2026-44848 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →