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-05-07
AI Q&A
2026-03-19
EPSS Evaluated
2026-05-05
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 Powered Q&A
Can you explain this vulnerability to me?

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`.


How can this vulnerability impact me? :

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.

How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

I don't know


How can this vulnerability be detected on my network or system? Can you suggest some commands?

I don't know


What immediate steps should I take to mitigate this vulnerability?

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.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart