CVE-2026-44881

Portainer Community Edition is a lightweight service delivery platform for containerized applications that can be used to manage Docker, Swarm, Kubernetes and ACI environments. From 2.33.0 to before 2.33.8, 2.39.2, and 2.41.0, Portainer supports deploying stacks from Git repositories. When a Git-backed stack is created or updated, Portainer clones the repository using go-git v5, which translates Git blob entries with mode 0o120000 (symlink) into real OS symlinks on the host filesystem via os.Symlink. The only entry blocked from becoming a symlink is .gitmodules; every other path is created as a symlink without validation. Portainer's GET /api/stacks/{id}/file endpoint then reads the stack entry point with os.ReadFile, which follows OS symlinks transparently. A repository containing docker-compose.yml as a symlink to an arbitrary filesystem path causes the symlink target's contents to be returned verbatim in the HTTP response. Any authenticated user with rights to create or update a Git-backed stack — the default configuration in Portainer CE — can read arbitrary files accessible to the Portainer process. This vulnerability is fixed in 2.33.8, 2.39.2, and 2.41.0.
References
Configurations

Configuration 1 (hide)

OR cpe:2.3:a:portainer:portainer:*:*:*:*:community:*:*:*
cpe:2.3:a:portainer:portainer:*:*:*:*:community:*:*:*
cpe:2.3:a:portainer:portainer:2.40.0:*:*:*:community:*:*:*

History

21 Jul 2026, 10:10

Type Values Removed Values Added
Summary
  • (es) Portainer Community Edition es una plataforma ligera de entrega de servicios para aplicaciones en contenedores que puede utilizarse para gestionar entornos Docker, Swarm, Kubernetes y ACI. Desde la 2.33.0 hasta antes de la 2.33.8, 2.39.2 y 2.41.0, Portainer soporta el despliegue de stacks desde repositorios Git. Cuando se crea o actualiza un stack respaldado por Git, Portainer clona el repositorio usando go-git v5, que traduce las entradas blob de Git con modo 0o120000 (symlink) en symlinks reales del sistema operativo en el sistema de archivos del host a través de os.Symlink. La única entrada bloqueada para convertirse en un symlink es .gitmodules; cualquier otra ruta se crea como un symlink sin validación. El endpoint GET /API/stacks/{id}/file de Portainer luego lee el punto de entrada del stack con os.ReadFile, que sigue los symlinks del sistema operativo de forma transparente. Un repositorio que contiene docker-compose.yml como un symlink a una ruta de sistema de archivos arbitraria hace que el contenido del destino del symlink se devuelva textualmente en la respuesta HTTP. Cualquier usuario autenticado con derechos para crear o actualizar un stack respaldado por Git — la configuración predeterminada en Portainer CE — puede leer archivos arbitrarios accesibles al proceso de Portainer. Esta vulnerabilidad está corregida en 2.33.8, 2.39.2 y 2.41.0.

01 Jun 2026, 18:02

Type Values Removed Values Added
CPE cpe:2.3:a:portainer:portainer:2.40.0:*:*:*:community:*:*:*
cpe:2.3:a:portainer:portainer:*:*:*:*:community:*:*:*
First Time Portainer
Portainer portainer
References () https://github.com/portainer/portainer/security/advisories/GHSA-rpgq-m5fp-32wr - () https://github.com/portainer/portainer/security/advisories/GHSA-rpgq-m5fp-32wr - Exploit, Third Party Advisory
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 9.9

28 May 2026, 22:16

Type Values Removed Values Added
New CVE

Information

Published : 2026-05-28 22:16

Updated : 2026-07-21 10:10


NVD link : CVE-2026-44881

Mitre link : CVE-2026-44881

CVE.ORG link : CVE-2026-44881


JSON object : View

Products Affected

portainer

  • portainer
CWE
CWE-59

Improper Link Resolution Before File Access ('Link Following')

CWE-200

Exposure of Sensitive Information to an Unauthorized Actor