LOWCVSS v3.1 3.7Vulnerability

CVE-2026-113665

## Summary 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. --- ## Affected Code **File** ```text packages/apostrophe/modules/@apostrophecms/notification/index.js ``` ```javascript // restApiRoutes async patch(req, _id) { const dismissed = self.apos.launder.boolean(req.body.dismissed); if (dismissed) { await self.emit('beforeSave', req, { _id, dismissed }); await self.db.updateOne( { _id }, { $set: { dismissed }, $currentDate: { updatedAt: true } } ); } }, async delete(req, _id) { await self.db.deleteMany({ _id }); } ``` Unlike the `GET` notification route, these handlers do **not** verify: - Authentication (`req.user`) - Ownership (`userId === req.user._id`) - Authorization or permissions Instead, the supplied `_id` is used directly against the raw MongoDB collection. --- ## Root Cause The notification REST endpoints perform database operations directly using `self.db` without enforcing authentication or authorization. While the framework provides permission primitives (`req.user`, ownership checks, and `apos.permission`), these endpoints never invoke them. As a result, any request reaching these handlers is processed solely based on the supplied notification ID. For comparison, the `GET` notification route correctly checks: ```javascript if (!(req.user && req.user._id)) { throw self.apos.error('invalid'); } ``` No equivalent validation exists in the `PATCH` or `DELETE` handlers. --- ## Proof of Concept ### 1. Log in as an administrator ```bash curl -sS -c admin_cookies.txt \ "http://localhost:4321/api/v1/@apostrophecms/login/context" \ -o /dev/null curl -sS \ -b admin_cookies

Properties

Summary
ApostropheCMS: Missing Authorization on Notification PATCH/DELETE Endpoints
Severity
low
Nvd fetched at
2026-10-20T21:14:08.448323+00:00
Cvss score
3.7
Cvss severity
LOW
Retrieved at
2026-10-21T01:23:59+00:00
Ghsa published
2026-10-20T18:25:38Z
Source url
https://github.com/advisories/GHSA-vwwx-px9w-crrc
Ghsa updated
2026-10-20T18:25:38Z
Ghsa id
GHSA-vwwx-px9w-crrc
Last source
GitHub Advisory Database
Score
3.7
Cvss version
3.1
Cve id
CVE-2026-113665
Cvss vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/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:H/PR:N/UI:N/S:U/C:N/I:L/A:N
Published at
2026-10-20T18:17:19.993
Last modified
2026-10-20T19:53:10.247

Related Entities (4)

AFFECTS (1)

→[Software]npm/apostrophe

VULNERABLE_TO (1)

←[Software]npm/apostrophe

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-113665 (CVSS v3.1 3.7) — Ninja Signal Threat Intelligence | Ninja Signal