CVE-2026-32731
Received Received - Intake
Zip Slip Vulnerability in ApostropheCMS Import-Export Allows Arbitrary File Write

Publication date: 2026-03-18

Last updated on: 2026-03-24

Assigner: GitHub, Inc.

Description
ApostropheCMS is an open-source content management framework. Prior to version 3.5.3 of `@apostrophecms/import-export`, The `extract()` function in `gzip.js` constructs file-write paths using `fs.createWriteStream(path.join(exportPath, header.name))`. `path.join()` does not resolve or sanitise traversal segments such as `../`. It concatenates them as-is, meaning a tar entry named `../../evil.js` resolves to a path outside the intended extraction directory. No canonical-path check is performed before the write stream is opened. This is a textbook Zip Slip vulnerability. Any user who has been granted the Global Content Modify permission β€” a role routinely assigned to content editors and site managers β€” can upload a crafted `.tar.gz` file through the standard CMS import UI and write attacker-controlled content to any path the Node.js process can reach on the host filesystem. Version 3.5.3 of `@apostrophecms/import-export` fixes the issue.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-03-18
Last Modified
2026-03-24
Generated
2026-06-16
AI Q&A
2026-03-19
EPSS Evaluated
2026-06-15
NVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
apostrophecms import-export to 3.5.3 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-22 The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

This vulnerability is a Zip Slip issue in ApostropheCMS's import-export module prior to version 3.5.3. The `extract()` function in `gzip.js` uses `path.join()` to construct file paths for extraction without sanitizing or resolving directory traversal segments like `../`. This allows an attacker to craft a `.tar.gz` file with entries that escape the intended extraction directory and write files anywhere on the host filesystem accessible to the Node.js process.

Specifically, any user with the Global Content Modify permission, typically content editors or site managers, can upload a malicious archive through the CMS import interface and cause arbitrary files to be written to the server.

The issue is fixed in version 3.5.3 of `@apostrophecms/import-export`.

Impact Analysis

This vulnerability can have severe impacts including complete compromise of the server hosting ApostropheCMS. An attacker with the appropriate permission can write arbitrary files anywhere on the filesystem accessible to the Node.js process.

  • They could overwrite critical files, inject malicious code, or place backdoors.
  • This can lead to full system compromise, data loss, or unauthorized access.
  • The CVSS score of 9.9 indicates a critical severity with high impact on confidentiality, integrity, and availability.
Compliance Impact

I don't know

Detection Guidance

I don't know

Mitigation Strategies

To mitigate this vulnerability, you should upgrade the `@apostrophecms/import-export` package to version 3.5.3 or later, where the issue is fixed.

Additionally, restrict the Global Content Modify permission to only trusted users, as any user with this permission can exploit the vulnerability by uploading crafted `.tar.gz` files.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-32731. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart