Skip to main content

ApostropheCMS EUVDEUVD-2026-105213

| CVE-2026-113665 LOW
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-20 GitHub_M GHSA-vwwx-px9w-crrc
3.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain valid notification ID (MongoDB ObjectId)
  2. Exploit
    Send unauthenticated PATCH/DELETE to notification endpoint
  3. Impact
    Modify or permanently delete victim's notification

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation targets the PATCH and DELETE REST endpoints of the ApostropheCMS notification module in versions prior to 4.33.0, which operate directly on the MongoDB notifications collection with no authentication or ownership check. The concrete prerequisite is possession of a valid target notification ID; because these IDs are MongoDB ObjectIds that are not easily enumerable or guessable, this is the primary limiting factor and the reason CVSS assigns AC:H. No authentication is required (CVSS PR:N) and no user interaction is needed (UI:N). Impact is confined to tampering with or deleting another user's notifications - there is no confidentiality exposure and no service-level denial. Affected deployments are any ApostropheCMS 4.x installation below 4.33.0 running the default notification module.

Impact

This is a genuinely low-priority issue whose signals are internally consistent rather than conflicting. The CVSS 3.1 base score of 3.7 (LOW) is driven by AV:N/PR:N/UI:N (network-reachable, unauthenticated, no user interaction) but tempered by AC:H and a limited impact of C:N/I:L/A:N. The AC:H is the key qualifier: exploitation requires the attacker to first obtain a *valid* notification ID (a MongoDB ObjectId that is not readily enumerable), which is why this is not scored as a trivial unauthenticated flaw despite PR:N. No EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of exploitation probability or active abuse - the absence of these signals is consistent with a low-value, hard-to-weaponize IDOR. The impact ceiling is narrow: an attacker can tamper with or delete another user's UI notifications (I:L), not read confidential data (C:N) or deny service (A:N). CWE-639 (authorization bypass through user-controlled key / IDOR) matches the description precisely. Net: a real but minor authorization defect, correctly rated LOW; patch during normal maintenance, not an emergency. One caveat: the description says notifications can be *permanently* deleted, which one could argue nudges toward a minor availability impact on that data - NVD scored A:N, treating deletion as an integrity effect, which is defensible.

Exploit ScenarioDerived

An unauthenticated attacker who learns or otherwise obtains a valid notification ID submits a crafted PATCH or DELETE request directly to ApostropheCMS's notification REST endpoint, which performs the MongoDB operation without checking authentication or ownership. The result is that another user's notification is silently modified or permanently deleted. No public exploit is identified at time of analysis, and the high attack complexity reflects the need to acquire a non-enumerable notification ID first.

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 modification and deletion of other users' notifications is possible in ApostropheCMS versions prior to 4.33.0, because the notification module's PATCH and DELETE REST endpoints act directly on the underlying MongoDB collection without verifying that the requester is authenticated or that they own the target document. The practical barrier is knowledge of a valid notification ID: these are MongoDB ObjectIds, so they are not readily enumerable, which is why the vector carries AC:H despite PR:N and UI:N. Impact is limited to integrity of notification records (no confidentiality exposure and no availability impact), and no public exploit code has been identified at time of analysis; the issue is fixed in 4.33.0.

RemediationAI

Upgrade to ApostropheCMS 4.33.0 (release tag apostrophe@4.33.0), which contains the authorization fix; the relevant upstream changes are commits 9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce and f84fd41cbf6c22eb8d0008fc9c25df1f7130b350, and full details are in advisory GHSA-vwwx-px9w-crrc. If an immediate upgrade is not feasible, the practical compensating control is to require authentication for the notification endpoints at the edge - for example, a reverse-proxy or middleware rule that rejects unauthenticated PATCH and DELETE requests to the notification module's REST routes while leaving read paths intact; the trade-off is that any legitimate anonymous notification polling will break, and the rule must be kept in sync with route naming across Apostrophe versions. A blunter option is to disable or unregister the notification module on instances that do not use it, at the cost of losing in-application notification delivery. Because exploitation depends on possessing a valid notification ObjectId, treat notification IDs as sensitive in logs, error pages, and client-side state while patches are being rolled out.

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. Its notification module exposes REST handlers for PATCH and DELETE requests that resolve the notification identifier supplied by the client and then perform the update or removal straight against the MongoDB notifications collection, skipping the authorization layer that would normally confirm the caller is logged in and is the owner of that record. This maps to CWE-639 (Authorization Bypass Through User-Controlled Key): the notification ID in the request is an attacker-controllable key that is trusted as proof of entitlement. Because MongoDB ObjectIds are 12-byte values (timestamp, machine/process entropy, counter) and are not sequentially enumerable in practice, a successful attack requires prior disclosure or interception of a specific notification ID, which is the concrete prerequisite behind the high attack-complexity rating. The flaw lives in the default notification module, so stock 4.x deployments that have not disabled it are in scope; per the CVSS vector the attacker needs no credentials and no user interaction.

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

Network-reachable REST endpoint and no authentication give AV:N/PR:N/UI:N, but needing a non-enumerable notification ID forces AC:H; impact is limited to modifying/deleting a notification, so C:N/I:L/A:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:H/AT:N/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
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
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, the notification module exposes PATCH and DELETE REST endpoints that perform operations directly on the underlying MongoDB collection without verifying that the requester is authenticated or owns the target notification. As a result, an unauthenticated attacker who obtains a valid notification ID can modify or permanently delete another user's notification. This issue is fixed in version 4.33.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% 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 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

18
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +18
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