CVE-2026-113670: ApostropheCMS page REST API authorization bypass

CVE-2026-113670 · Severity: medium · CVSS 5.3 · Published 2026-10-20

ApostropheCMS is a headless content management system used to manage and publish web page content. The page REST API fails to enforce access controls on private, login-required, and admin-only pages, allowing unauthenticated visitors and low-privilege users to read sensitive page content and discover the complete site structure. An attacker can enumerate page IDs and retrieve full page documents including restricted data fields.

Technologies: ApostropheCMS, apostrophe (npm). Vendors: ApostropheCMS, npm.

Quick answers

Is CVE-2026-113670 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-113670 being exploited in the wild.
How severe is CVE-2026-113670?
Medium severity, with a CVSS score of 5.3, published 20 October 2026.
Which products and versions are affected?
apostrophe (npm) < 4.33.0.
Is there a fix for CVE-2026-113670?
No fixed version is recorded yet. Remove `.permission(false)` from the `getOne` and `all` handlers or re-apply the page type's `viewRole` threshold and `visibility` filters to match the behavior of the list and autocomplete REST endpoints; make `publicApiCheck` perform explicit authorization checks per REST verb.</anigation> </invoke> If you run it, Junglewise drafts a mitigation that fits your setup and applies it once you approve, with senior security engineers behind it.
How is CVE-2026-113670 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-113670?
Check whether you run ApostropheCMS or apostrophe (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

Remove `.permission(false)` from the `getOne` and `all` handlers or re-apply the page type's `viewRole` threshold and `visibility` filters to match the behavior of the list and autocomplete REST endpoints; make `publicApiCheck` perform explicit authorization checks per REST verb.</anigation> </invoke>

Technical details

The `getOne` and `all` REST API handlers in the page module call `getRestQuery(req).permission(false)`, which disables permission checks and bypasses the page type's `viewRole` threshold and `visibility` filters. The `publicApiCheckAsync` function only verifies that a `publicApiProjection` exists but performs no authorization; this differs from the piece-type API's correct implementation, which enforces role-based access. Unauthenticated HTTP requests and authenticated low-privilege users can directly query pages by `_id` or slug and obtain full documents with protected fields.

Affected products

  • ApostropheCMS ApostropheCMS

Identifiers

  • CVE-2026-113670
  • GHSA-2j32-q6rx-h844

Timeline

  • 2026-10-20: disclosed

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.