On this page
Atomicorp WAF Research Note: CVE-2026-44881
Portainer: Arbitrary File Read via Git Symlink Injection in Stack Auto-Update
CVE Details
- Already protected by existing Atomicorp WAF rules
- Protection status: Understanding Atomicorp WAF Protection Status
- CVE: CVE-2026-44881
- Name: Portainer: Arbitrary File Read via Git Symlink Injection in Stack Auto-Update
- Severity: High
- CVSS: 8.5 (v4.0) (High)
- CVSS version: 4.0
- CVSS source: GitHub_M CNA
- CVSS vector:
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X- Attack vector: Network
- Attack complexity: Low
- Attack requirements: None
- Privileges required: Low
- User interaction: None
- Vulnerable-system confidentiality: High
- Vulnerable-system integrity: None
- Vulnerable-system availability: None
- Subsequent-system confidentiality: High
- Subsequent-system integrity: High
- Subsequent-system availability: High
- Scope: X
- CWE: CWE-59 — Improper Link Resolution Before File Access (‘Link Following’), CWE-200 — Exposure of Sensitive Information to an Unauthorized Actor
- Related CAPEC attack patterns (via MITRE CWE relationships): CAPEC-116 (opens in a new tab) , CAPEC-13 (opens in a new tab) , CAPEC-132 (opens in a new tab) , CAPEC-169 (opens in a new tab) , CAPEC-17 (opens in a new tab) , CAPEC-22 (opens in a new tab) , CAPEC-224 (opens in a new tab) , CAPEC-285 (opens in a new tab) , CAPEC-287 (opens in a new tab) , CAPEC-290 (opens in a new tab) , CAPEC-291 (opens in a new tab) , CAPEC-292 (opens in a new tab) , CAPEC-293 (opens in a new tab) , CAPEC-294 (opens in a new tab) , CAPEC-295 (opens in a new tab) , CAPEC-296 (opens in a new tab) , CAPEC-297 (opens in a new tab) , CAPEC-298 (opens in a new tab) , CAPEC-299 (opens in a new tab) , CAPEC-300 (opens in a new tab) , CAPEC-301 (opens in a new tab) , CAPEC-302 (opens in a new tab) , CAPEC-303 (opens in a new tab) , CAPEC-304 (opens in a new tab) , CAPEC-305 (opens in a new tab) , CAPEC-306 (opens in a new tab) , CAPEC-307 (opens in a new tab) , CAPEC-308 (opens in a new tab) , CAPEC-309 (opens in a new tab) , CAPEC-310 (opens in a new tab) , CAPEC-312 (opens in a new tab) , CAPEC-313 (opens in a new tab) , CAPEC-317 (opens in a new tab) , CAPEC-318 (opens in a new tab) , CAPEC-319 (opens in a new tab) , CAPEC-320 (opens in a new tab) , CAPEC-321 (opens in a new tab) , CAPEC-322 (opens in a new tab) , CAPEC-323 (opens in a new tab) , CAPEC-324 (opens in a new tab) , CAPEC-325 (opens in a new tab) , CAPEC-326 (opens in a new tab) , CAPEC-327 (opens in a new tab) , CAPEC-328 (opens in a new tab) , CAPEC-329 (opens in a new tab) , CAPEC-330 (opens in a new tab) , CAPEC-35 (opens in a new tab) , CAPEC-472 (opens in a new tab) , CAPEC-497 (opens in a new tab) , CAPEC-508 (opens in a new tab) , CAPEC-573 (opens in a new tab) , CAPEC-574 (opens in a new tab) , CAPEC-575 (opens in a new tab) , CAPEC-576 (opens in a new tab) , CAPEC-577 (opens in a new tab) , CAPEC-59 (opens in a new tab) , CAPEC-60 (opens in a new tab) , CAPEC-616 (opens in a new tab) , CAPEC-643 (opens in a new tab) , CAPEC-646 (opens in a new tab) , CAPEC-651 (opens in a new tab) , CAPEC-76 (opens in a new tab) , CAPEC-79 (opens in a new tab)
- Vendor: portainer
- Vulnerable product: portainer
- CVE published: 2026-05-28
- CVE last modified: 2026-07-21
- Affected versions (NVD configurations):
- portainer: >= 2.33.0, < 2.33.8
- portainer: >= 2.34.0, < 2.39.2
- portainer: 2.40.0
- EPSS: 0.0042; 35.1th percentile (FIRST (opens in a new tab) )
- Latest Update: 2026-09-06
- Selected Rule IDs observed: 340007 , 344360 , 347009 , 390709
- Matching rules: 4; rules with blocking actions: 4
- Would-block Rule IDs: 340007 , 344360 , 347009 , 390709
- Request surfaces inspected: JSON request data, Request URI, Request argument names, Request arguments, Request cookies, Request filename, SOAP request data, XML request data
Technical CPE data
This section lists vulnerable CPE matches retained from the NVD configurations. It supplements the readable affected-product information above.
cpe:2.3:a:portainer:portainer:*:*:*:*:community:*:*:*- Version start (inclusive):
2.33.0 - Version end (exclusive):
2.33.8 - NVD match criteria ID:
4E7FE81D-D489-4034-9DB4-D48E3B6C3CE4
- Version start (inclusive):
cpe:2.3:a:portainer:portainer:*:*:*:*:community:*:*:*- Version start (inclusive):
2.34.0 - Version end (exclusive):
2.39.2 - NVD match criteria ID:
42BB76C6-ADCE-4D73-BAF0-7DBBB707C360
- Version start (inclusive):
cpe:2.3:a:portainer:portainer:2.40.0:*:*:*:community:*:*:*- NVD match criteria ID:
69F71AFC-F50D-4D10-9918-413D8E841CC2
- NVD match criteria ID:
Vulnerability Description
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.
Recommended Actions
Maintain the observed Atomicorp protections. Keep your Atomicorp commercial rules current and confirm that the selected observed rules (340007 , 344360 , 347009 , 390709 ) have not been locally disabled. Atomicorp commercial rules are enabled by default. If you use Atomic WAF, review the applicable policy and rule settings.
Apply the vendor’s remediation. WAF protection is defense in depth and does not replace upgrading or following the affected vendor’s guidance.
- Affected versions: portainer version >= 2.33.0, < 2.33.8.
- Affected versions: portainer version >= 2.39.0, < 2.39.2.
- Affected versions: portainer version >= 2.40.0, < 2.41.0.
- No specific CNA/vendor solution or workaround is included in the current CVE Record (opens in a new tab) . Review the vendor’s security advisories and supported-release guidance before making changes.
Validate after changes. Confirm rule updates are current, review WAF events for the affected application, and test application behavior after vendor upgrades, mitigations, or local policy changes.
Research Notes
Atomicorp WAF protections are designed around attack techniques and exploit behaviors, allowing existing protections to apply across multiple vulnerabilities without requiring a unique rule for every CVE.
Public Vulnerability References
- NVD (opens in a new tab)
- CVE Record (opens in a new tab)
- Exploit or technical research: https://github.com/portainer/portainer/security/advisories/GHSA-rpgq-m5fp-32wr (opens in a new tab)
Test or Research Source
- Source: Atomicorp AI Research Framework
- Tags: cve, derived, traversal, waf-probe
Research Note Context
This research note documents exploit-technique analysis associated with this vulnerability and references Atomicorp WAF protections observed during engineering review, testing, or validation activities.
Atomicorp security controls are generally designed to identify and mitigate attack techniques and exploit behaviors rather than individual CVE identifiers. As a result, protections developed for one vulnerability may also apply to related attack variants and future vulnerabilities using similar techniques.
Learn More
Atomicorp develops commercially supported security technologies for web applications, servers, endpoints, workloads, and legacy enterprise platforms.
Organizations interested in protecting systems against exploit techniques associated with vulnerabilities such as this one can learn more about:
- Atomic ModSecurity Rules: commercially maintained WAF rules for ModSecurity deployments, including protections for web attacks, bots, scanners, malware, exploitation attempts, and emerging vulnerability classes.
- Atomic WAF: an enterprise web application firewall with Atomicorp rules, centralized management, reporting, authentication controls, and operational tooling.
- Atomic ModSecurity Integrator: a special licensing option for MSPs, MSSPs, OEMs, VARs, reverse proxy providers, and other integrators who want to incorporate Atomicorp ModSecurity rule technology into their own products or services.
- Atomic OSSEC: an enterprise OSSEC-based intrusion detection, compliance, and security monitoring platform.
- Atomic Protector: workload protection for Linux, web, cloud, data center, and hybrid environments.
For additional information, product evaluations, or technical discussions, visit https://www.atomicorp.com/ or https://modsecurity.io/ (opens in a new tab) .