Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
Network-reachable editor endpoint (AV:N, PR:L, UI:N); pollution subverts a separate auth component (S:C); resulting anonymous API access yields high confidentiality but only low integrity/availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
ApostropheCMS is an open-source Node.js content management system. In versions up to and including 4.30.0, apos.util.set() traverses dot-notation paths without sanitizing __proto__, allowing an authenticated editor to write arbitrary values to Object.prototype via the $pullAll patch operator. A confirmed gadget in publicApiCheck() causes this to bypass authorization on all piece-type REST API endpoints for every subsequent unauthenticated request, for the lifetime of the Node.js process. As of time of publication, no known patched versions are available.
Articles & Coverage 1
AnalysisAI
Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object.prototype via the $pullAll patch operator, ultimately bypassing authorization on all piece-type REST API endpoints for unauthenticated requests until the Node.js process restarts. The flaw stems from apos.util.set() failing to sanitize __proto__ in dot-notation paths, and no public exploit identified at time of analysis but the advisory describes a confirmed exploitation gadget in publicApiCheck(). No vendor-released patch identified at time of analysis, making this an open-window risk for any internet-exposed editor account.
Technical ContextAI
ApostropheCMS is a Node.js-based open-source content management system whose editing API exposes a generic patch mechanism for piece-type documents. The vulnerable apos.util.set() helper walks user-supplied dot-notation property paths to assign values without filtering reserved JavaScript property names such as __proto__, constructor, or prototype - the canonical CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes / 'Prototype Pollution') pattern. When the $pullAll patch operator is used against an editor-accessible endpoint, the attacker-controlled keys reach this sink and mutate Object.prototype itself. The advisory identifies a specific gadget in publicApiCheck() - the function that decides whether a REST request requires authentication - meaning a polluted property on Object.prototype is read as if it were a configured value on the check object, flipping the authorization decision for the lifetime of the process (cpe:2.3:a:apostrophecms:apostrophe:*).
RemediationAI
No vendor-released patch identified at time of analysis - the advisory explicitly states no patched versions are available, so monitor https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-6h5j-32cf-4253 and apply the fix immediately once published. Compensating controls until then: tightly restrict who holds the editor role and disable open registration for editor-level accounts (trade-off: blocks legitimate contributor onboarding); place the admin and piece-type REST API endpoints behind an authenticated reverse proxy or IP allowlist so that even a polluted publicApiCheck() cannot serve anonymous traffic (trade-off: breaks intentionally public APIs); filter $pullAll patch bodies at a WAF or middleware to drop any path token containing __proto__, constructor, or prototype (trade-off: bypassable via unicode or unusual encodings and may break legitimate keys); and schedule frequent Node.js process restarts so any successful pollution is short-lived (trade-off: brief downtime and does not prevent re-exploitation).
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-36590
GHSA-6h5j-32cf-4253