Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVisit site to obtain CSRF cookie
-
ExploitPOST to unauthenticated clean-export endpoint
-
ExecutionInvoke self.cleanExport(req) without authz
-
ImpactDiscard victim's pending import files / mark job complete
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The vulnerable route is POST /api/v1/@apostrophecms/import-export/clean-export in the @apostrophecms/import-export module prior to 3.7.1, which performs no authentication or authorization check (CWE-306). The only prerequisite to invoke the route is possession of the standard CSRF cookie, which any client obtains simply by visiting the site - so an anonymous user can reach the endpoint. However, meaningful impact is tightly limited: cleanExport only affects a specific import identified by a random pending-import ID that is shown only to the user who uploaded it, so an attacker can realistically only interfere with an import whose ID they already know or can observe. Further limiting factors: the site must have the optional import-export module installed and an import must be pending; impact is confined to discarding pending import files and marking an import job completed (no data disclosure, no service outage). |
| Impact | This is a low real-world priority despite being a missing-authentication flaw (CWE-306). The input CVSS 3.1 base score is only 3.1 (AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N), reflecting no confidentiality or availability impact and only partial integrity impact. No EPSS probability was provided, the CVE is not listed in CISA KEV, and no public exploit was supplied - so there is no signal of active or probable exploitation. CONFLICT TO VERIFY: the CVSS vector encodes PR:L (privileges required), yet the description and the CWE-306 classification explicitly state the clean-export route 'lacks authentication and authorization checks' and can be called by 'unauthenticated anonymous users' who merely hold the standard CSRF cookie - the vector's PR:L appears inconsistent with the description, which supports PR:N. The high attack complexity (AC:H) is well justified by the vendor changeset: exploitation is meaningfully constrained because the pending import's ID is random and only shown to the uploading user, so an attacker can only interfere with an import they can already identify. Net effect: a genuine authorization gap but with limited, hard-to-target impact - routine-patch priority, not an emergency. |
| Exploit ScenarioDerived | An attacker visits the ApostropheCMS site to obtain the standard CSRF cookie, then sends an unauthenticated POST to /api/v1/@apostrophecms/import-export/clean-export, triggering self.cleanExport(req). If the attacker knows (or can guess/observe) a victim's random pending-import ID, they can discard that user's pending import files and mark the import job as completed. No public exploit code was identified at time of analysis; the fixing commits are public but do not constitute a weaponized PoC. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Unauthenticated tampering with import jobs in ApostropheCMS: the @apostrophecms/import-export module before 3.7.1 exposes POST /api/v1/@apostrophecms/import-export/clean-export without any authentication or authorization check, so any site visitor holding the standard CSRF cookie can invoke cleanExport and discard a pending import's uploaded files and mark that import job completed. Impact is narrow rather than severe - the operation targets a pending import by its random ID, which is only disclosed to the uploading user, so an attacker must already know or observe that identifier, and the site must have the optional import-export module installed with an import in flight. There is no data disclosure and no availability impact; no public exploit identified at time of analysis, and vendor fixes are available in 3.7.1.
RemediationAI
Upgrade @apostrophecms/import-export to 3.7.1 (and the matching apostrophe release) - the release tag is https://github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/import-export@3.7.1 and the vendor advisory is https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-rw26-wwfc-9wvm; the underlying fixes land in commits 40b989b1a9dd23d30029b8ce7668634265cfe5ea and 06e4b377f3c360f9e89c32dccd7e505ad5ddf498, which add a logged-in-user requirement to the clean-export and override-duplicates routes and record import jobs as owned by the user who started them so cleanExport only ends the caller's own job. If immediate upgrade is not possible, disable the import-export module entirely in projects that do not use bulk content import (the trade-off is losing import/export functionality, which is usually acceptable on production content sites), or block POST /api/v1/@apostrophecms/import-export/clean-export at the reverse proxy or WAF for unauthenticated sessions - note that a blanket block also breaks legitimate logged-in users clearing their own failed imports, and IP allowlisting the admin path adds operational overhead for distributed editorial teams. Because exploitation requires knowing a random pending-import ID, avoid exposing import progress identifiers in logs, referrers, or shared links, and clear stale pending imports promptly as a compensating hygiene measure.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ApostropheCMS is an open-source Node.js content management system built on Express-style routing and a module system, where each feature (here @apostrophecms/import-export) registers its own API routes under /api/v1/@apostrophecms/<module>/. This is a classic CWE-306 missing authentication for a critical function: the clean-export route handler called self.cleanExport(req) directly without verifying req.user, and the vendor changeset also flags CWE-862 (missing authorization) and CWE-639 (authorization bypass through user-controlled key) because the handler neither checked login state nor verified that the caller owned the pending import identified by the request. Apostrophe's CSRF protection is cookie-based, so a client obtains the required CSRF cookie simply by visiting the site, which is why the anonymous-reachability barrier is effectively nil even though the CVSS base score stays low at 3.1 (AC:H reflects the random, non-disclosed pending-import ID as the real gating factor). The technology surface is Node.js/JavaScript, and the same release line bundles an unrelated hardening of csv-parse to 7.x plus output-escaping fixes for widget style attributes and color fields, so operators should treat the 3.7.1 upgrade as a bundle of small security fixes rather than a single patch.
Know when Apostrophecms gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
Route has no auth check (CWE-306) so PR:N not PR:L; AC:H because harm requires the victim's random import ID; only partial integrity (I:L), no C or A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
ApostropheCMS is an open-source Node.js content management system. Prior to 3.7.1 of the import-export module, the API endpoint POST /api/v1/@apostrophecms/import-export/clean-export in @apostrophecms/import-export lacks authentication and authorization checks. Any client-including unauthenticated anonymous users who have obtained the standard CSRF cookie from visiting the site-can directly invoke this route and trigger the underlying self.cleanExport(req) method. This issue is fixed in version 3.7.1.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Apostrophecms
View allIntegrity bypass in ApostropheCMS page management allows authenticated low-privileged editors to move pages into restric
Stored cross-site scripting in ApostropheCMS prior to 2.17.6 enables execution of arbitrary JavaScript in victim browser
'sanitize-html' prior to version 1.0.3 is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1), th
`sanitize-html` prior to version 2.0.0-beta is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1
Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or chang
Stored XSS in sanitize-html versions 1.9.0 through 2.17.6 allows authenticated low-privileged users to inject executable
Versions of the package sanitize-html before 2.12.1 are vulnerable to Information Exposure when used on the backend and
Apostrophe Technologies sanitize-html before 2.3.2 does not properly validate the hostnames set by the "allowedIframeHos
Apostrophe Technologies sanitize-html before 2.3.1 does not properly handle internationalized domain name (IDN) which co
Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object
Stored cross-site scripting in the @apostrophecms/seo plugin (versions ≤1.4.2) allows any user holding the default edito
Stored cross-site scripting in ApostropheCMS SEO fields permits an authenticated attacker to inject arbitrary JavaScript
EUVD-2026-105172
GHSA-rw26-wwfc-9wvm
NVD
CVE.org
EPSS
Exploit-DB