Skip to content
Tuesday, October 13, 2026AboutContactRSS
Vulnerabilities

How do forged TinaCMS preview iframes let attackers run GraphQL mutations with editor credentials?

A critical vulnerability in TinaCMS allows attackers to forge preview iframes and execute GraphQL mutations using a logged-in editor's credentials.

Illustration: A generic web browser window displays a blank content frame.
AI-generated illustration: Sandbox Dispatch

Key points

  • The flaw affects tinacms versions prior to 3.14.0 and @tinacms/app versions prior to 2.5.14.
  • Attackers can trick editors into loading external sites as trusted preview frames.
  • The vulnerability enables arbitrary read and write access to the content API.

The National Vulnerability Database rates CVE-2026-108261 as a critical security issue in the TinaCMS headless content management system. The flaw allows unauthenticated attackers to hijack editor sessions by manipulating preview routes. According to the NVD record, this vulnerability enables remote code execution and data exposure without requiring initial authentication credentials.

How does the preview route vulnerability work?

The issue stems from how the admin interface handles the `/~/*` hash-router splat. The `index.tsx` file in `packages/tinacms/src/admin` passes this value directly to the preview iframe source. When a URL fragment contains a doubled slash, the router returns a protocol-relative URL that points to an external domain. This external site is then loaded inside the admin interface.

Why does the admin trust the attacker's frame?

The system derives the `expectedOrigin` for the GraphQL message channel from the same unvalidated URL string. Because the attacker controls the URL, they also control the expected origin value. The `postMessage` listener in `graphql-reducer.ts` checks if the message origin matches this expected value. Since both values are attacker-controlled, the check passes and the frame is treated as trusted.

What damage can an attacker cause with this flaw?

Once the admin interface loads the attacker-controlled frame, that frame can submit GraphQL operations to the admin. The admin executes these operations using the signed-in editor's authentication token. This gives the attacker arbitrary read and write access to the site's content API. They can view or modify protected content without needing the editor's password.

What versions are affected and fixed?

According to the GitHub advisory, the vulnerability affects `tinacms` versions up to and including 3.13.0. The package `@tinacms/app` is vulnerable in versions up to and including 2.5.13. The issue is resolved in `tinacms` version 3.14.0 and `@tinacms/app` version 2.5.14. Users running older versions are exposed to session hijacking via crafted preview links.

What to do and how to stay safe: TinaCMS

  • Update `tinacms` to version 3.14.0 or higher to apply the official patch for CVE-2026-108261.
  • Upgrade `@tinacms/app` to version 2.5.14 or higher to ensure the preview origin validation is fixed.
  • Educate editors to avoid clicking on unsolicited preview links that contain unusual URL fragments or doubled slashes.
  • Monitor server logs for unauthorized GraphQL mutations originating from unexpected origins during the patching process.

Step-by-step guide: Patch Management: Why Updates Fail and How to Fix It

General security guidance from the Sandbox Dispatch newsroom. It is not confirmed advice from the organisations named in this story.

Frequently asked questions

What is the CVSS score for CVE-2026-108261?

The National Vulnerability Database assigns a CVSS score of 9.3, classifying the severity as critical.

Which specific files contain the vulnerable code?

The vulnerability involves `index.tsx` in `packages/tinacms/src/admin`, `preview.tsx` in `packages/@tinacms/app/src`, and `preview-origin.ts` in `packages/@tinacms/app/src/lib`.

Does this vulnerability require the attacker to have an account?

No, the attacker does not need authentication. They only need to send a crafted link to a logged-in editor who opens it in the admin interface.

Sources

  1. CVE Program
  2. GitHub Advisory Database
TinaCMSCVE-2026-108261GraphQLSession HijackingContent Management System

Related stories

Argo CD PostDelete Hook Flaw Bypasses Auth Checks

A critical vulnerability in Argo CD allows Git users to create unauthorized Kubernetes resources by bypassing authorization during deletion events.