HIGHCVSS v3.1 7.1Vulnerability

CVE-2026-113666

## Summary `@apostrophecms/db-connect` ships an in-memory MongoDB emulation used by its SQLite, PostgreSQL, and multipostgres adapters. Its `unsetNestedField` helper walks an attacker-controlled dotted field path with no segment validation and calls `delete` on the resolved property. A low-privileged authenticated user (any role holding `view-draft`, which every editor and contributor has; reduced to any logged-in user when `guestApiAccess` is enabled) can send a piece-type REST GET request whose `project` query builder contains an exclusion key such as `constructor.prototype.hasOwnProperty`. On a SQLite or PostgreSQL adapter this key reaches `unsetNestedField`, which resolves `Object.prototype` and deletes a shared runtime method. Because that method is shared across the whole Node process, the deletion breaks request handling for every tenant and user until the process is restarted, giving a single request a persistent denial of service. ## Root Cause The projection query builder laundens only projection values, never projection keys, so an arbitrary dotted key survives to the database layer. On the SQLite and PostgreSQL adapters an exclusion projection is applied in JavaScript by `applyProjection`, which for each excluded field calls `unsetNestedField(result, field)`. `unsetNestedField` splits the field on `.` and walks the resulting segments 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` 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 be able to traverse into and mutate shared prototype objects. ```text Affected functions (repository-relative paths): - unsetNestedField packages/d

Properties

Summary
ApostropheCMS: Authenticated projection-exclusion prototype-member deletion in @apostrophecms/db-connect causes process-wide denial of service
Severity
high
Nvd fetched at
2026-10-20T21:14:08.448323+00:00
Cvss score
7.1
Cvss severity
HIGH
Retrieved at
2026-10-21T01:23:59+00:00
Ghsa published
2026-10-20T18:03:50Z
Source url
https://github.com/advisories/GHSA-j5rq-xfvr-p969
Ghsa updated
2026-10-20T18:03:51Z
Ghsa id
GHSA-j5rq-xfvr-p969
Last source
GitHub Advisory Database
Score
7.1
Cvss version
3.1
Cve id
CVE-2026-113666
Cvss vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
First seen by Signal
2026-10-20T21:15:35+00:00
Is ghsa only
false
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
Published at
2026-10-20T18:17:20.127
Last modified
2026-10-20T19:53:10.247

Related Entities (6)

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-113666 (CVSS v3.1 7.1) — Ninja Signal Threat Intelligence | Ninja Signal