Safeguard
Vulnerability Analysis•

CVE-2026-44881: Critical File Read in Portainer CE Git Stacks

CVE-2026-44881 lets a user with Git stack rights read arbitrary files through symlinks in Portainer CE. Upgrade to 2.33.8, 2.39.2 or 2.41.0.

Safeguard Security Team
3 min read

CVE-2026-44881 is a critical arbitrary file read (CVSS 9.9 in the record) in Portainer Community Edition. A Git stack that contains a symlink can make Portainer return files from its own host. Upgrade to 2.33.8, 2.39.2 or 2.41.0, depending on which release line you run, and limit who can create Git stacks.

What's affected

From the project advisory:

  • 2.33.x LTS: affected from 2.33.0, fixed in 2.33.8.
  • 2.39.x LTS: affected from 2.39.0, fixed in 2.39.2.
  • 2.40.x STS: all versions affected, fixed in 2.41.0.

The advisory states that Portainer releases before 2.33.0 are end of life and will not get a fix. Users on those versions should move to a supported LTS branch.

The attacker needs a login with the right to create or update a Git backed stack. The advisory says that is a default permission in Portainer CE.

How to check if you're exposed

Check the version shown in the Portainer web interface, or read it from the running image:

docker ps --filter ancestor=portainer/portainer-ce --format '{{.Image}} {{.Names}}'

For Kubernetes installs, look at the image tag on the Portainer Deployment:

kubectl get deploy -A -o jsonpath='{range .items[*]}{.metadata.name}{" "}{.spec.template.spec.containers[*].image}{"\n"}{end}' | grep -i portainer

Then review which users and teams can deploy stacks from Git, and which repositories existing stacks point to.

What to do now

  1. Upgrade to 2.33.8, 2.39.2 or 2.41.0, whichever matches your branch.
  2. Until then, restrict who can create Git backed stacks. The advisory suggests turning off the setting that lets non administrators manage their own stacks, which leaves administrators as the only users who can submit a repository.
  3. Avoid deploying from repositories you do not control, and review stacks that use Git auto update, since a later commit can change what the repository contains.
  4. Treat anything the Portainer process could read as potentially exposed on affected systems, such as mounted service account tokens, and rotate what you cannot rule out.
  5. Move off any Portainer version older than 2.33.0.

Why it matters

The record lists CWE-59 (link following) and CWE-200 (exposure of sensitive information). Portainer clones the repository with go-git, which turns Git entries marked as symlinks into real symlinks on the host. Only the .gitmodules entry was blocked. The stack file endpoint then reads the compose file with a call that follows symlinks, so a compose file that points at another path returns that path's contents.

Auto update makes this worse. A repository can look fine when a stack is first reviewed and be changed later, with the read triggered on the next scheduled update and no further action from the attacker.

The scope change in the CVSS vector reflects that the data read can include credentials that open up other systems. The record does not mark this CVE as KEV.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is an administrator login required?

No. The advisory says any authenticated user with rights to create or update a Git backed stack, which is the default in Portainer CE.

Does restricting stack creation fully fix it?

No. It limits who can trigger it. The fix is the upgrade.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.