Executive brief
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.
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
Timeline
- 2026-03-18: disclosed
- 2026-03-18: patched: patched in version 3.5.3