Skip to main content

ApostropheCMS EUVDEUVD-2026-105208

| CVE-2026-113660 MEDIUM
Missing Authorization (CWE-862)
2026-10-20 GitHub_M GHSA-vmxh-77cw-65j7
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege user
  2. Exploit
    Query exist-in-locale API for restricted documents
  3. Impact
    Receive localized identifiers for draft/restricted content

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a valid authenticated low-privilege account on the target ApostropheCMS instance (PR:L) and the ability to call the exist-in-locale API endpoint; exploitation then works against default configurations with no special feature toggle. What limits it: an attacker must already hold working credentials (no unauthenticated access), the impact is confined to confirming existence and retrieving localized identifiers of restricted/draft documents (confidentiality only, no modification or full-content disclosure), and only ApostropheCMS versions prior to 4.33.0 are affected.

Impact

This is a genuine but low-priority issue. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3 Medium) is internally consistent with the description: network-reachable, low attack complexity, but requiring an authenticated low-privilege account (PR:L) and yielding only limited confidentiality impact (C:L) with no integrity or availability effect. The underlying weakness is CWE-862 (Missing Authorization) - the exist-in-locale API discloses whether restricted documents exist in a given locale and mode (including draft) and returns localized document identifiers without enforcing per-document view/edit checks. This is an information-disclosure/enumeration flaw, not code execution or takeover. No EPSS score, CISA KEV listing, POC, or SSVC data was provided in the input, so exploitation probability and automatability cannot be quantified. Given the authentication requirement, confidentiality-only impact, and absence of any exploitation signal, this is a real-but-low-risk issue rather than an urgent priority - patch in normal maintenance cycles. Caveat: the input 'Authentication Bypass' tag is misleading; exploitation requires a valid authenticated session, so this is an authorization (authz) gap, not an authentication bypass.

Exploit ScenarioDerived

A low-privilege authenticated user of an ApostropheCMS site (e.g. a limited editor or registered contributor) sends requests to the exist-in-locale API to probe whether specific restricted documents exist across locales and modes, including unpublished draft mode. The endpoint returns localized document identifiers without checking the caller's view/edit permissions, letting the user confirm the existence of content they should not be able to see. No public exploit identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 20, 2026

ApostropheCMS versions prior to 4.33.0 expose an exist-in-locale API that answers localized existence checks without applying document-level view or edit authorization, letting an authenticated low-privilege user confirm whether restricted or draft-mode documents exist in a given locale and obtain their localized identifiers. Exploitation requires a valid low-privilege account (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) and works against default configurations, but only discloses existence metadata - not document content - and cannot modify or delete anything, so this is a genuine but low-priority issue. No public exploit code has been identified at time of analysis and the issue is not listed in CISA KEV; the vendor-released patch is version 4.33.0.

RemediationAI

Vendor-released patch: upgrade to ApostropheCMS 4.33.0, which corrects the exist-in-locale handler so document-level view and edit authorization criteria are applied before existence results and localized identifiers are returned. Apply the upgrade through your normal dependency management (bump the apostrophecms/apostrophe dependency to 4.33.0 and reinstall), and review the two referenced upstream commits (9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce and f84fd41cbf6c22eb8d0008fc9c25df1f7130b350) plus the advisory GHSA-vmxh-77cw-65j7 to confirm which handlers changed. If immediate upgrade is not possible, compensating controls include restricting the exist-in-locale route to trusted roles or network segments via a reverse-proxy rule or a project-level middleware guard, at the cost of breaking legitimate editor UI checks that rely on that endpoint; reducing the population of low-privilege accounts and ensuring untrusted users cannot be granted draft-capable roles lowers exposure but does not close the gap. Since the flaw requires an authenticated session, enforcing strong authentication and auditing low-privilege accounts for anomalous locale/mode probing provides detection value. No vendor-released workaround other than upgrading is documented, and there is no evidence of active exploitation, so prioritization can follow normal low-severity patch cadence.

Affected VersionsENISA

Apostrophe < 4.33.0

Affected Packages

npm apostrophe fix: 4.33.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

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 backed by MongoDB, with a first-class localization layer that lets editors maintain per-locale variants and draft versions of documents. The vulnerable component is the exist-in-locale API endpoint, which is designed to tell a client whether a document is present in a particular locale (and mode, including draft mode). The root cause is CWE-862 (Missing Authorization): the handler performs the locale/existence lookup and returns localized document identifiers but never applies the document-level view or edit permission criteria that normal piece/page retrieval enforces. Because the endpoint is reachable over the network by any holder of a low-privilege session and no special feature toggle is needed, the authorization gap is enough to turn a legitimate utility API into an information-disclosure oracle for restricted and unpublished content. The scope is bounded to identifiers and existence confirmation - the response does not leak document bodies and there is no integrity or availability component. The CPE cpe:2.3:a:apostrophecms:apostrophe:*:*:*:*:*:*:*:* reflects that the whole product line before the fix is in scope.

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 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Network API reachable (AV:N), no special conditions (AC:L), requires a low-privilege authenticated account (PR:L), no user interaction; only limited confidentiality leakage of document existence/identifiers, no integrity or availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 20, 2026 - 19:03 EUVD

DescriptionCVE.org

ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0, ApostropheCMS’s exist-in-locale API allows an authenticated low-privilege user to determine whether restricted documents exist in a specified locale and mode, including draft mode. The endpoint returns localized document identifiers without applying document-level view or edit authorization criteria. This issue is fixed in version 4.33.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Low
niche open-source Node.js CMS, limited enterprise footprint
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

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