CVE-2026-32731: ApostropheCMS import-export arbitrary file write via path traversal

CVE-2026-32731 · Severity: low · CVSS 3.1 · Published 2026-03-18

ApostropheCMS is a Node.js-based content management system used to create and manage websites. The import-export feature contains a flaw that allows content editors to upload specially crafted archive files and write files anywhere on the server that the CMS process can access. An attacker with editor permissions could overwrite critical configuration files, inject malware, deface the website, or cause the application to stop working entirely.

Technologies: ApostropheCMS Import-Export, @apostrophecms/import-export (npm). Vendors: ApostropheCMS, npm.

Quick answers

Is CVE-2026-32731 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-32731 being exploited in the wild.
How severe is CVE-2026-32731?
Low severity, with a CVSS score of 3.1, published 18 March 2026.
Which products and versions are affected?
ApostropheCMS Import-Export <=3.5.2; @apostrophecms/import-export (npm) SEMVER:introduced=0,fixed=3.5.3.
Is there a fix for CVE-2026-32731?
Yes. @apostrophecms/import-export (npm): upgrade to 3.5.3 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-32731 attacked?
It is attacked over the network.
Am I affected by CVE-2026-32731?
Check whether you run ApostropheCMS Import-Export or @apostrophecms/import-export (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @apostrophecms/import-export (npm): upgrade to 3.5.3 or later
    npm install @apostrophecms/import-export@3.5.3

Technical details

This is a path traversal (Zip Slip) vulnerability in the gzip extraction function (packages/import-export/lib/formats/gzip.js, lines ~132–157). The vulnerable code uses path.join(exportPath, header.name) to construct file write paths without sanitizing or canonicalizing traversal segments like "../". An attacker with Global Content Modify permission (a standard editor-level role) can craft a .tar.gz archive containing entries with traversal payload names (e.g., "../../evil.js") and upload it via the CMS import UI. The unsanitized paths allow writes outside the intended extraction directory, potentially reaching the public web directory, configuration files, or Node.js startup modules. This enables arbitrary file write, persistent backdoors on restart, credential theft, or denial of service. The vulnerability has been patched in version 3.5.3 of @apostrophecms/import-export.

Affected products

  • ApostropheCMS import-export <=3.5.2

Identifiers

  • CVE-2026-32731
  • GHSA-mwxc-m426-3f78

Timeline

  • 2026-03-18: disclosed
  • 2026-03-18: patched: patched in version 3.5.3

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.