Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as editor-level user
-
ExploitObtain target admin-only page _id
-
ExecutionCall getOne pages REST endpoint directly
-
ImpactReceive 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
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.
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 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- 5 npm packages depend on apostrophe (5 direct, 0 indirect)
Ecosystem-wide dependent count for version 4.34.0.
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
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-105170
GHSA-vh56-5m88-39rq
NVD
CVE.org
EPSS
Exploit-DB