CVE-2026-113659
## Summary The client-side helper `apos.http.parseQuery()` in ApostropheCMS builds a nested object from a URL query string without sanitizing the keys `__proto__`, `constructor`, or `prototype`. Parsing an attacker-controlled query string therefore writes arbitrary properties onto `Object.prototype` (client-side prototype pollution). ApostropheCMS's admin UI calls this parser with `window.location.search` on **every authenticated page load** (the admin context bar's `data()` initializer). Because the admin UI is built on Vue, a polluted, enumerable property on `Object.prototype` is then picked up by Vue's standard element-mount routine and written to the DOM as an element property, turning the prototype pollution into DOM-based XSS in the victim's authenticated session. The escalation gadget is a well-known, general Vue behavior; the novel, reportable defect is the unsanitized `parseQuery` source together with the authenticated trigger, both of which are ApostropheCMS code. Any user who can get **any logged-in user (from the lowest-privileged `guest` role up to the highest-privileged `admin` role)** to open a crafted URL can execute arbitrary JavaScript in that user's session. This is **distinct from CVE-2026-53609** (server-side prototype pollution via `apos.util.set()` / `$pullAll`, fixed in 4.31.0): different side (client vs server), different code path, and the vulnerable code here is present in the current release. ## Package - **Ecosystem:** npm - **Package:** `apostrophe` - **Affected versions:** all **4.x** releases, **4.0.0 through 4.32.2** (current `latest`). Verified by inspecting the published npm tarballs: `[email protected]` already contains the vulnerable descent (`parentKey = 'root'`) with no `__proto__`/`constructor`/`prototype` filtering, and `[email protected]` is unchanged in this respect. The vulnerable `parseQuery()` logic was introduced in commit `0255086bf` (2020-11-12), well before the 4.0 version, so **ApostropheCMS 3.x is al
Properties
- Severity
- medium
- Summary
- ApostropheCMS: Client-side Prototype Pollution in apos.http.parseQuery leading to DOM-based XSS against authenticated users
- Nvd fetched at
- 2026-10-20T21:14:08.448323+00:00
- Cvss severity
- MEDIUM
- Cvss score
- 6.1
- Retrieved at
- 2026-10-21T01:23:59+00:00
- Ghsa published
- 2026-10-20T18:18:49Z
- Source url
- https://github.com/advisories/GHSA-m2m5-rw3w-cwmj
- Ghsa updated
- 2026-10-20T18:18:52Z
- Ghsa id
- GHSA-m2m5-rw3w-cwmj
- Last source
- GitHub Advisory Database
- Score
- 6.1
- Cvss version
- 3.1
- Cve id
- CVE-2026-113659
- Cvss vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- First seen by Signal
- 2026-10-20T21:15:35+00:00
- Is ghsa only
- false
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Published at
- 2026-10-20T18:17:19.283
- Last modified
- 2026-10-20T19:53:10.247
Related Entities (4)
HAS_WEAKNESS (2)
AFFECTS (1)
VULNERABLE_TO (1)
Explore deeper with Ninja Signal's threat intelligence graph