Skip to main content

ApostropheCMS EUVDEUVD-2026-105214

| CVE-2026-113666 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-20 GitHub_M GHSA-j5rq-xfvr-p969
7.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with view-draft or guest role
  2. Delivery
    Send piece-type REST GET with crafted projection exclusion
  3. Exploit
    Traverse constructor.prototype path in unsetNestedField
  4. Execution
    Delete shared Object.prototype method
  5. Impact
    Process-wide denial of service until restart

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

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 holding view-draft access - which every editing (editor/contributor) role has - or, when guestApiAccess is enabled, any logged-in account. The consumer deployment MUST use the @apostrophecms/db-connect SQLite, PostgreSQL, or multipostgres adapter; the default MongoDB adapter is NOT affected and is the primary limiting factor. The attacker also needs a matching document for the piece-type REST query to resolve. Exploitation sends an exclusion projection key traversing constructor.prototype (e.g. constructor.prototype.hasOwnProperty) to the SQL-adapter applyProjection/unsetNestedField path. Limiting factors: authentication is required (no anonymous exploitation unless guestApiAccess is enabled), and the vulnerability does not exist on default MongoDB-backed installations.

Impact

Multiple signals converge on a moderate-to-serious availability risk that is conditional on deployment. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H, base 7.1) indicates a network-reachable, low-complexity attack requiring only low privilege and no user interaction, with high availability impact, low integrity impact and no confidentiality impact - consistent with the CWE-400 shared-state denial of service described. The privilege bar is genuinely low: every editing role holds view-draft, and enabling guestApiAccess reduces the prerequisite to any logged-in account, so in content-heavy deployments the attacker pool is large. However, exploitation is gated by a non-default backend: only consumers using the @apostrophecms/db-connect SQLite, PostgreSQL, or multipostgres adapters are affected, while the default MongoDB adapter is immune, which materially shrinks the real-world exploitable population. No EPSS score was provided in the input, and there is no CISA KEV listing and no public exploit code referenced, so there is no evidence of active exploitation - this is a high-CVSS issue whose real-world priority depends heavily on whether an organization runs a SQL adapter. The GHSA advisory and commit-level source evidence confirm the root cause and fix, so the technical claims are well substantiated even though exploitation-in-the-wild indicators are absent.

Exploit ScenarioDerived

A low-privileged but authenticated user (any editor/contributor with view-draft, or any logged-in user if guestApiAccess is enabled) on an ApostropheCMS site backed by the db-connect SQLite or PostgreSQL adapter sends a single piece-type REST GET request whose projection contains an exclusion key such as constructor.prototype.hasOwnProperty. The unsetNestedField helper walks the unvalidated dotted path to Object.prototype and deletes a shared runtime method, breaking request handling for every tenant and user until the process is restarted. No public exploit identified at time of analysis, though the GHSA advisory documents the exact exploit string.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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

Authenticated users with view-draft access can permanently break request handling across the entire ApostropheCMS Node.js process by sending a piece-type REST GET request whose project query contains an exclusion key such as constructor.prototype.hasOwnProperty. The malicious key reaches the SQLite, PostgreSQL, or multipostgres adapter's unsetNestedField helper, which walks the dotted path into Object.prototype and deletes a shared runtime method - surviving beyond the request and requiring a process restart to recover. Exploitation requires a logged-in account (every editing role has view-draft; guestApiAccess reduces this to any logged-in user) and a SQL-backed adapter with a matching document; installations on the default MongoDB adapter are not affected. No public exploit code or KEV-listed active exploitation was identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade @apostrophecms/db-connect to 1.1.0 and ApostropheCMS to 4.33.0 (release tags https://github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/db-connect@1.1.0 and https://github.com/apostrophecms/apostrophe/releases/tag/apostrophe@4.33.0), which adds segment validation in unsetNestedField per commits 9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce and f84fd41cbf6c22eb8d0008fc9c25df1f7130b350. Where immediate upgrade is not possible, the most effective control is to run the default MongoDB adapter instead of SQLite/PostgreSQL/multipostgres, since the vulnerable code path is never reached there - at the cost of a data migration. Additionally, disable guestApiAccess to restore the view-draft role requirement, and restrict piece-type REST access to trusted roles; both reduce the attacker pool but do not remove the flaw for editing roles. Note that process supervisors will restart the Node worker after a crash but cannot repair the corrupted in-process state without a restart, so monitor for unexplained request-handling failures as an indicator of exploitation.

Affected VersionsENISA

db-connect < 1.1.0
Apostrophe < 4.33.0

Affected Packages

npm @apostrophecms/db-connect fix: 1.1.0
npm apostrophe fix: 4.33.0
euvd db_connect fix: 1.1.0

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

The root cause class is CWE-400 (Uncontrolled Resource Consumption), realized here as prototype-chain tampering that produces persistent denial of service. @apostrophecms/db-connect provides an in-memory MongoDB emulation layer for its SQLite, PostgreSQL, and multipostgres adapters. Apostrophe's projection query builder launders only projection *values*, never projection *keys*, so an attacker-supplied dotted exclusion key flows unmodified into the database layer. On SQL adapters the exclusion branch of applyProjection (packages/db-connect/lib/shared.js) calls unsetNestedField(result, field), which splits the field on . and walks each segment with no guard - unlike its sibling setNestedField, it does not even block a literal __proto__, and neither helper blocks constructor or prototype. Because the working object is a plain object produced by JSON.parse(JSON.stringify(doc)), its constructor property resolves to the global Object, so a path of constructor.prototype.<member> reaches the shared Object.prototype and deletes a core configurable method. The violated invariant is that untrusted input must never traverse into and mutate shared prototype objects; because that member is shared process-wide, the deletion breaks request handling for every tenant and user until restart. Reachability is driven by getRestQuery in the piece-type module and project.launder/project.finalize in the doc-type module.

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

Network REST request with low complexity and only view-draft/guest privilege (PR:L); deleting a shared prototype method yields low integrity impact and high, process-wide availability impact with no confidentiality effect.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:H/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
None
Integrity
Low
Availability
High

Lifecycle Timeline

2
Patch available
Oct 20, 2026 - 19:03 EUVD
CVE Published
Oct 20, 2026 - 17:25 cve.org
HIGH 7.1

DescriptionCVE.org

ApostropheCMS is an open-source Node.js content management system. Prior to 1.1.0 of db-connect and 4.33.0 of ApostropheCMS, an account with view-draft access can submit a projection exclusion path that traverses through a constructor prototype chain to a shared prototype member when a consumer uses a SQLite, PostgreSQL, or multipostgres adapter and has a matching document. Every editing role has view-draft access, while guestApiAccess broadens this prerequisite to any logged-in account. The unsetNestedField helper then deletes the shared runtime member, causing persistent process-wide integrity and availability effects; the default MongoDB adapter is not affected. This issue is fixed in db-connect 1.1.0 and ApostropheCMS 4.33.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 8 npm packages depend on @apostrophecms/db-connect (2 direct, 6 indirect)

Ecosystem-wide dependent count for version 1.1.0.

Technical POC Analysis

CWE-400 (Uncontrolled Resource Consumption) is the assigned weakness; the advisory also records CWE-1321 (prototype pollution).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

ApostropheCMS deployments running the SQLite, PostgreSQL, or multipostgres database adapters can be pushed into a persistent failure state by a single malformed content request from any account holding view-draft permission, taking the entire Node.js process offline until it is manually restarted. Sites on the default MongoDB adapter are not exposed, so exposure is concentrated in teams that chose a SQL backend and, more acutely, in those who have enabled guest API access to widen the pool of accounts that can trigger it. No vendor fix is currently available and no public exploit code or confirmed active exploitation was identified at time of analysis, but the low effort required and the full-service outage outcome make this a priority for owner identification and interim hardening rather than passive monitoring.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: disable guestApiAccess and restrict view-draft permission to a minimal set of trusted editorial accounts; place the content API behind network restrictions or a VPN where feasible; filter or block piece-type REST GET requests whose project query contains prototype-related keys (constructor, prototype, hasOwnProperty) at the reverse proxy or WAF; add server-side sanitization of dotted exclusion paths before they reach the SQL adapter's unsetNestedField helper via a local patch or middleware; ensure an automated process supervisor restarts the Node.js process so recovery from a triggered failure is measured in seconds; migrate to the default MongoDB adapter where operationally viable; and alert on malformed project query parameters to detect attempted abuse.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Low
niche open-source Node.js CMS; only non-default SQL adapters affected
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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