Skip to main content

ApostropheCMS CVE-2026-113648

| EUVDEUVD-2026-105172 LOW
Missing Authentication for Critical Function (CWE-306)
2026-10-20 GitHub_M GHSA-rw26-wwfc-9wvm
3.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Visit site to obtain CSRF cookie
  2. Exploit
    POST to unauthenticated clean-export endpoint
  3. Execution
    Invoke self.cleanExport(req) without authz
  4. Impact
    Discard 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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Apostrophe < 4.34.0
import-export < 3.7.1

Affected Packages

npm @apostrophecms/import-export fix: 3.7.1
euvd apostrophe fix: 4.34.0
euvd import_export fix: 3.7.1

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

Vendor (GitHub_M) PRIMARY 3.1 LOW
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 3.7 LOW

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Oct 20, 2026 - 18:17 EUVD

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

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Low
niche open-source Node.js CMS; optional import-export module narrows footprint further
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

16
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +16
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2026-63669 MEDIUM POC
6.5 Aug 17

Integrity bypass in ApostropheCMS page management allows authenticated low-privileged editors to move pages into restric

CVE-2026-63670 MEDIUM POC
6.1 Aug 17

Stored cross-site scripting in ApostropheCMS prior to 2.17.6 enables execution of arbitrary JavaScript in victim browser

CVE-2014-125128 MEDIUM POC
6.1 Sep 08

'sanitize-html' prior to version 1.0.3 is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1), th

CVE-2019-25225 MEDIUM POC
6.1 Sep 08

`sanitize-html` prior to version 2.0.0-beta is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1

CVE-2021-25979 CRITICAL
9.8 Nov 08

Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or chang

CVE-2026-84371 MEDIUM POC
5.4 Sep 01

Stored XSS in sanitize-html versions 1.9.0 through 2.17.6 allows authenticated low-privileged users to inject executable

CVE-2024-21501 MEDIUM POC
5.3 Feb 24

Versions of the package sanitize-html before 2.12.1 are vulnerable to Information Exposure when used on the backend and

CVE-2021-26540 MEDIUM POC
5.3 Feb 08

Apostrophe Technologies sanitize-html before 2.3.2 does not properly validate the hostnames set by the "allowedIframeHos

CVE-2021-26539 MEDIUM POC
5.3 Feb 08

Apostrophe Technologies sanitize-html before 2.3.1 does not properly handle internationalized domain name (IDN) which co

CVE-2026-53609 CRITICAL
9.1 Jun 12

Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object

CVE-2026-53608 HIGH
8.7 Jun 12

Stored cross-site scripting in the @apostrophecms/seo plugin (versions ≤1.4.2) allows any user holding the default edito

CVE-2026-35569 HIGH
8.7 Apr 15

Stored cross-site scripting in ApostropheCMS SEO fields permits an authenticated attacker to inject arbitrary JavaScript

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy