Quick answers
- Is CVE-2026-108261 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-108261 being exploited in the wild.
- How severe is CVE-2026-108261?
- Critical severity, with a CVSS score of 9.3, published 9 October 2026.
- Which products and versions are affected?
- @tinacms/app (npm) <= 2.5.13, SEMVER:introduced=0,fixed=2.5.14; tinacms (npm) <= 3.13.0, SEMVER:introduced=0,fixed=3.14.0; TinaCMS @Tinacms/App <=2.5.12; TinaCMS <=3.12.1.
- Is there a fix for CVE-2026-108261?
- Yes. @tinacms/app (npm): upgrade to 2.5.14 or later; tinacms (npm): upgrade to 3.14.0 or later. Until then: Restrict editor access to TinaCMS admin until patched, or deploy a reverse proxy that validates URL fragments and blocks protocol-relative URLs in the /~/* route. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-108261 attacked?
- It is attacked over the network, in a web application.
- Am I affected by CVE-2026-108261?
- Check whether you run @tinacms/app (npm), tinacms (npm), TinaCMS @Tinacms/App or one of the others listed 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
- @tinacms/app (npm): upgrade to 2.5.14 or later
npm install @tinacms/app@2.5.14 - tinacms (npm): upgrade to 3.14.0 or later
npm install tinacms@3.14.0
Restrict editor access to TinaCMS admin until patched, or deploy a reverse proxy that validates URL fragments and blocks protocol-relative URLs in the /~/* route.
Technical details
The vulnerability stems from the router's splat parameter (`/~/*`) being directly assigned to the iframe source without same-origin validation. A crafted fragment like `#/~//attacker.example/p` becomes the protocol-relative URL `//attacker.example/p`, causing the admin to frame an external site. The same unvalidated URL is used to derive `expectedOrigin`, the only trust anchor for the admin-to-preview `postMessage` channel. The attacker's frame can then submit arbitrary GraphQL mutations, which execute with the signed-in editor's authentication token and return results to the attacker's origin. The vulnerability bypasses the incomplete fix in version 3.9.3 which added sender-side origin checks but never validated the URL being compared.
Affected products
- TinaCMS TinaCMS <=3.12.1
- TinaCMS @tinacms/app <=2.5.12
Identifiers
- CVE-2026-108261
- GHSA-x34j-47hf-4xg7
Timeline
- 2026-10-09: disclosed