<?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 07:31:21 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-113660</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-113660</link>
      <description>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0, ApostropheCMS’s exist-in-locale API allows an authenticated low-privilege user to determine whether restricted documents exist in a specified locale and mode, including draft mode. The endpoint returns localized document identifiers without applying document-level view or edit authorization criteria. 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, ApostropheCMS’s exist-in-locale API allows an authenticated low-privilege user to determine whether restricted documents exist in a specified locale and mode, including draft mode. The endpoint returns localized document identifiers without applying document-level view or edit authorization criteria. 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-113660</guid>
    </item>
    <item>
      <title>GHSA-vmxh-77cw-65j7 — ApostropheCMS: Authenticated Object-Level Authorization Bypass in exist-in-locale Reveals Restricted Localized Draft Id…</title>
      <link>https://db.gcve.eu/vuln/ghsa-vmxh-77cw-65j7</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe&lt;/p&gt;
&lt;p&gt;**Summary**
ApostropheCMS’s exist-in-locale API allows an authenticated low-privilege user to determine whether restricted documents exist in a specified locale and mode, including draft mode. The endpoint returns localized document identifiers without applying document-level view or edit authorization criteria.&lt;/p&gt;
&lt;p&gt;The issue was reproduced against a real local ApostropheCMS application running the reviewed source code. The test used a synthetic guest account and synthetic restricted draft records.&lt;/p&gt;
&lt;p&gt;**Details**
Exact vulnerable source path: ` packages/apostrophe/modules/@apostrophecms/i18n/index.js:503-529`
Exact API route:` POST /api/v1/@apostrophecms/i18n/exist-in-locale`
The handler verifies only that the requester is authenticated:&lt;/p&gt;
&lt;p&gt;```
if (!req.user) {
  throw self.apos.error(&amp;#39;notfound&amp;#39;);
}
```
It then performs a direct database lookup using attacker-controlled document IDs, locale, and mode:&lt;/p&gt;
&lt;p&gt;```
const found = await self.apos.doc.db.find({
  aposLocale: `${locale}:${mode}`,
  aposDocId: {
    $in: ids.map(self.apos.doc.toAposDocId)
  }
}).project({
  _id: 1,
  aposDocId: 1
}).toArray();
```
This query does not apply:&lt;/p&gt;
&lt;p&gt;.permission(&amp;#39;view&amp;#39;)
.permission(&amp;#39;edit&amp;#39;)
apos.permission.criteria(req, &amp;#39;view&amp;#39;)
object-level document authorization
locale-specific authorization&lt;/p&gt;
&lt;p&gt;The endpoint accepts multiple IDs, making bulk probing possible.&lt;/p&gt;
&lt;p&gt;**Proof of Concept**&lt;/p&gt;
&lt;p&gt;The local application was running at: http://127.0.0.1:3000
The test account had the low-privilege role: guest
The local databa…&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**
ApostropheCMS’s exist-in-locale API allows an authenticated low-privilege user to determine whether restricted documents exist in a specified locale and mode, including draft mode. The endpoint returns localized document identifiers without applying document-level view or edit authorization criteria.&lt;/p&gt;
&lt;p&gt;The issue was reproduced against a real local ApostropheCMS application running the reviewed source code. The test used a synthetic guest account and synthetic restricted draft records.&lt;/p&gt;
&lt;p&gt;**Details**
Exact vulnerable source path: ` packages/apostrophe/modules/@apostrophecms/i18n/index.js:503-529`
Exact API route:` POST /api/v1/@apostrophecms/i18n/exist-in-locale`
The handler verifies only that the requester is authenticated:&lt;/p&gt;
&lt;p&gt;```
if (!req.user) {
  throw self.apos.error(&amp;#39;notfound&amp;#39;);
}
```
It then performs a direct database lookup using attacker-controlled document IDs, locale, and mode:&lt;/p&gt;
&lt;p&gt;```
const found = await self.apos.doc.db.find({
  aposLocale: `${locale}:${mode}`,
  aposDocId: {
    $in: ids.map(self.apos.doc.toAposDocId)
  }
}).project({
  _id: 1,
  aposDocId: 1
}).toArray();
```
This query does not apply:&lt;/p&gt;
&lt;p&gt;.permission(&amp;#39;view&amp;#39;)
.permission(&amp;#39;edit&amp;#39;)
apos.permission.criteria(req, &amp;#39;view&amp;#39;)
object-level document authorization
locale-specific authorization&lt;/p&gt;
&lt;p&gt;The endpoint accepts multiple IDs, making bulk probing possible.&lt;/p&gt;
&lt;p&gt;**Proof of Concept**&lt;/p&gt;
&lt;p&gt;The local application was running at: http://127.0.0.1:3000
The test account had the low-privilege role: guest
The local databa…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-vmxh-77cw-65j7</guid>
    </item>
  </channel>
</rss>
