[ CVE-2026-108261 · Published 9 Oct 2026 ]

TinaCMS admin preview iframe loads an attacker-controlled origin from the URL fragment

CVSS 9.3 EPSS <1%Fix available

[ Why it matters ]Priority signals

  • Public proof-of-concept exploit exists (CISA SSVC)
  • Critical severity: CVSS 9.3

[ Description ]Official description

Tina is a headless content management system. Prior to tinacms 3.14.0 and @tinacms/app 2.5.14, the /~/* admin preview route in packages/tinacms/src/admin/index.tsx can turn an attacker-controlled hash-router splat into an off-origin iframe URL through packages/@tinacms/app/src/preview.tsx, while packages/@tinacms/app/src/lib/preview-origin.ts derives expectedOrigin from that same URL for the GraphQL message channel in packages/@tinacms/app/src/lib/graphql-reducer.ts. An unauthenticated attacker can send a crafted link to a signed-in editor, cause the admin to frame an attacker origin, and have that frame treated as the trusted preview. The attacker-controlled frame can submit GraphQL reads or mutations that the admin executes with the editor credentials, exposing or modifying protected content. This issue is fixed in tinacms 3.14.0 and @tinacms/app 2.5.14.

[ Fixes ]Fixes and patches

  • tinacms 3.14.0Fixed version · GitHub Advisories · npm package tinacms: upgrade to 3.14.0 or later (affected <= 3.13.0)
  • @tinacms/app 2.5.14Fixed version · GitHub Advisories · npm package @tinacms/app: upgrade to 2.5.14 or later (affected <= 2.5.13)

[ Packages ]Affected open-source packages