CVE-2026-113669

CVE-2026-113669 is a medium-severity security vulnerability in apostrophe (npm), affecting versions < 4.33.0. It is fixed in 4.33.0, 1.6.1.

Does this CVE actually affect you?

Kodem shows which CVEs are reachable and running in your applications, so you fix what's exploitable, not just what's listed.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Runtime intelligence, not another scanner.

Summary

ApostropheCMS: Cross-domain session token in URL confers session takeover

Summary
Apostrophe'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's full session (including passport.user) with no credentials.

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.assigns 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.

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 "Content-Type: application/json" \
     --data '{"username":"admin","password":"adminpassword","session":true}' \
     http://localhost:3100/api/v1/@apostrophecms/login/login
# 2) Attacker with NO credentials visits the leaked token URL:
curl -c atk.cookies "http://localhost:3100/?aposCrossDomainSessionToken=HUNTING_TOKEN"
#    → 302 Location: / ; attacker now holds a vulnlab.sid SID cookie
# 3) Attacker reads admin-only content via adopted session:
curl -b atk.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:draft"
#    → 200  adopted-session read -> Secret Private Page | secretData = TOP-SECRET-VALUE-abc123
# 4) Cache entry consumed (single-use): {"value":null}

Impact
Session hijack / account takeover of the migrated user for anyone who obtains the token, inheriting all the account's privileges. Exposure is realistic precisely because the token is in URLs: server/proxy/browser-access logs, browser history, and the Referer header when the destination host differs from the source (the intended use case). Single-use limits but does not remove the window.

Remediation, Deliver the token via a short-lived HttpOnly signed SameSite cookie rather than a query parameter; bind consumption to the exact source/destination host pair, expire in seconds, and never log it.

Impact

Affected versions

apostrophe (< 4.33.0) @apostrophecms/passport-bridge (< 1.6.1)

Security releases

apostrophe → 4.33.0 (npm) @apostrophecms/passport-bridge → 1.6.1 (npm)

Kodem intelligence

Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.

Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter. Kodem's runtime-powered SCA identifies whether this CVE is reachable in your applications.

Already deployed Kodem?

See it in your environmentNew to Kodem? Get a demo →

Remediation advice

Upgrade the following packages to resolve this vulnerability:

apostrophe to 4.33.0 or later; @apostrophecms/passport-bridge to 1.6.1 or later

Kodem Kai can prioritize this vulnerability in your dependency tree and generate a fix recommendation.

Frequently Asked Questions

  1. What is CVE-2026-113669? CVE-2026-113669 is a medium-severity security vulnerability in apostrophe (npm), affecting versions < 4.33.0. It is fixed in 4.33.0, 1.6.1.
  2. Which packages are affected by CVE-2026-113669?
    • apostrophe (npm) (versions < 4.33.0)
    • @apostrophecms/passport-bridge (npm) (versions < 1.6.1)
  3. Is there a fix for CVE-2026-113669? Yes. CVE-2026-113669 is fixed in 4.33.0, 1.6.1. Upgrade to this version or later.
  4. Is CVE-2026-113669 exploitable, and should I be worried? Whether CVE-2026-113669 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo
  5. What actually determines whether CVE-2026-113669 is exploitable, and how bad it is? Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.
  6. How do I fix CVE-2026-113669?
    • Upgrade apostrophe to 4.33.0 or later
    • Upgrade @apostrophecms/passport-bridge to 1.6.1 or later

Other vulnerabilities in apostrophe

Stop the waste.
Protect your environment with Kodem.