Skip to main content

ApostropheCMS EUVDEUVD-2026-105170

| CVE-2026-112957 MEDIUM
Missing Authorization (CWE-862)
2026-10-20 GitHub_M GHSA-vh56-5m88-39rq
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 editor-level user
  2. Exploit
    Obtain target admin-only page _id
  3. Execution
    Call getOne pages REST endpoint directly
  4. Impact
    Receive unredacted restricted content and privileged fields

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 an authenticated account with at least editor-level privileges on the ApostropheCMS instance, plus knowledge of the specific document _id of an admin-only page. Exploitation targets the getOne pages REST endpoint specifically; the getAll endpoint is not vulnerable because it correctly applies viewRole type-level restrictions and viewPermission field-level redaction. Only instances running versions prior to 4.34.0 that actually use viewRole/viewPermission to restrict admin-only pages or privileged fields from editors are exposed; installations where editors are already trusted with that content, or that have upgraded to 4.34.0, are not meaningfully affected. No user interaction is needed, but the editor-account and known-_id prerequisites are the primary limiting factors.

Impact

This is a broken-access-control / missing-authorization flaw (CWE-862), not an authentication bypass despite the input tag. The provided CVSS:3.1/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: exploitation is network-reachable (REST endpoint) but requires an authenticated editor-level account (PR:L) and yields only a confidentiality impact (C:L, I:N, A:N) - the attacker reads admin-only page content and privileged fields but cannot modify or deny service. No EPSS score, no CISA KEV listing, and no public POC are present in the input, so there is no signal of active or probable exploitation; absence of these is expected for a freshly disclosed, medium-severity info-disclosure bug and should not be read as suppression. This is a genuine but bounded privilege-escalation-of-read issue: real priority only for deployments that rely on viewRole/viewPermission to hide admin-only pages from editors, and a lower priority elsewhere. The limiting factors (trusted-but-lower-privilege account required, attacker must already know a target document _id) make widespread opportunistic exploitation unlikely; the realistic threat is an insider or a compromised editor account.

Exploit ScenarioDerived

An authenticated editor-level user - or an attacker who has phished/compromised such an account - discovers or guesses the _id of an admin-only page and calls the getOne pages REST endpoint directly. Because getOne skips the viewRole type-level check and viewPermission field-level redaction that getAll enforces, the response discloses the full content of the restricted page including privileged fields. No public exploit code is identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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

Broken access control in ApostropheCMS's pages REST API (all versions prior to 4.34.0) allows an authenticated editor-level user who knows a document _id to read the full content of admin-only pages and privileged fields via the getOne endpoint, which skips the viewRole and viewPermission enforcement that the getAll endpoint correctly applies. Exploitation requires an authenticated account with at least editor privileges plus knowledge of the target page's _id, giving a confidentiality-only impact (CVSS 4.3, AV:N/AC:L/PR:L/UI:N/C:L/I:N/A:N). No public exploit code has been identified at time of analysis and the flaw is not confirmed actively exploited (not in CISA KEV); the vendor-released patch is 4.34.0.

RemediationAI

Upgrade the apostrophe npm package to 4.34.0 or later - vendor-released patch: 4.34.0 (release notes at https://github.com/apostrophecms/apostrophe/releases/tag/apostrophe@4.34.0, advisory at https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-vh56-5m88-39rq, and fixes in commits 06e4b377f3c360f9e89c32dccd7e505ad5ddf498 and 40b989b1a9dd23d30029b8ce7668634265cfe5ea) - which makes getOne apply the same viewRole type-level restriction and viewPermission field-level redaction as getAll. If upgrading must be deferred, the most direct compensating control is to gate or override the pages getOne route in project code so it performs an explicit permission check (or requires an admin) before serializing a document, since the vulnerable handler simply omits that step; the trade-off is that legitimate editor-side or headless consumers of that endpoint will start receiving 403s and may need a redesign. A second option is to stop relying on viewRole/viewPermission for confidentiality - either remove the admin-only restrictions on page types and privileged fields, or move sensitive content into a separate document type/collection not reachable through the pages API - at the cost of exposing that content to all editors. Operationally, restrict creation of editor-level accounts to trusted staff and review the role grants that make an editor able to enumerate or obtain admin-only page _ids, since limiting the prerequisite accounts shrinks the attack surface without fixing the code. Add detection in the interim: log and alert on pages getOne REST calls that return 200 for documents whose page type the calling role cannot see through getAll, and treat any such access as suspicious. Note that none of these workarounds are a substitute for the 4.34.0 upgrade.

Affected VersionsENISA

Apostrophe < 4.34.0

Affected Packages

npm apostrophe fix: 4.34.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 built around modules, widgets and a MongoDB document store, and it ships a REST layer that exposes page documents over endpoints such as getAll and getOne. The root cause is CWE-862 (Missing Authorization): the permission logic that guards page reads is applied piecemeal per endpoint rather than in a shared layer. The getAll endpoint runs the full permission pipeline - it applies viewRole type-level restrictions (which decide whether the caller's role may see that page type at all) and viewPermission field-level redaction (which strips privileged fields before serialization) - but the getOne endpoint performs neither step, so a serialized page document is returned essentially unredacted. Because document _ids are stable and can leak through other payloads, exports or links, an editor can supply an _id for an admin-only page and receive content the role model was designed to hide. Note that the supplied tag 'Authentication Bypass' is a mischaracterization: the attacker must already be authenticated as an editor; this is a missing-authorization / privilege-escalation-in-read-scope issue, not a login bypass. The upstream fix lands in 4.34.0 (commits 06e4b377f3c360f9e89c32dccd7e505ad5ddf498 and 40b989b1a9dd23d30029b8ce7668634265cfe5ea), bringing getOne in line with getAll's viewRole and viewPermission handling.

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-reachable REST endpoint (AV:N/AC:L) requires an authenticated editor account so PR:L, not PR:N; only unauthorized read of restricted content, hence C:L and I:N/A:N.

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 - 18:17 EUVD

DescriptionCVE.org

ApostropheCMS is an open-source Node.js content management system. Prior to 4.34.0, the getOne REST endpoint for pages does not apply viewRole type-level restrictions or viewPermission field-level redaction. An editor-level user who knows a document _id can read the full content of admin-only pages and their privileged fields, while the getAll endpoint correctly enforces both restrictions. This issue is fixed in version 4.34.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 5 npm packages depend on apostrophe (5 direct, 0 indirect)

Ecosystem-wide dependent count for version 4.34.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Low
niche open-source Node.js CMS, limited enterprise footprint vs WordPress
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.3%
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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