Skip to content
Vulnerabilities

Orgs Urged to Patch TinaCMS CVE-2026-108261 to Block Unauthenticated GraphQL Code Execution

A critical flaw in TinaCMS allowed unauthenticated attackers to execute GraphQL commands as logged-in editors through crafted preview links.

Illustration: A cracked tablet screen rests on a wooden desk, displaying a blank interface with a single, jagged red line slicing through the center.
AI-generated illustration: Cipher Insider

Key points

  • CVE-2026-108261 allows remote code execution and content manipulation via the admin preview interface.
  • The vulnerability affects TinaCMS versions prior to 3.14.0 and @tinacms/app versions before 2.5.14.
  • Attackers can hijack editor sessions to read or modify protected site content without authentication.

The short version

  • A critical security flaw in TinaCMS allows attackers to bypass authentication checks in the admin preview route.
  • The issue stems from improper validation of URLs used in iframe sources and message channel trust anchors.
  • Patches are available in TinaCMS 3.14.0 and @tinacms/app 2.5.14 to resolve the session hijacking risk.

The details

TinaCMS, a headless content management system, contains a critical vulnerability identified as CVE-2026-108261. According to the National Vulnerability Database, this flaw has a CVSS score of 9.3, classifying it as critical. The issue exists in versions of tinacms prior to 3.14.0 and @tinacms/app versions earlier than 2.5.14. It allows an unauthenticated attacker to gain arbitrary read and write access to a site's content API by exploiting the admin preview functionality.

The root cause lies in how the admin interface handles URL parameters for preview links. The system builds the preview iframe source from a hash-router splat without verifying that the value remains same-origin. When an attacker crafts a link with a doubled slash in the fragment, the router interprets it as a protocol-relative URL. This causes the admin interface to load an external attacker-controlled site within the preview iframe.

This misconfiguration compromises the trust model of the GraphQL message channel. The system derives the expected origin for communication from the same unvalidated URL string. Consequently, the attacker's external frame is treated as a trusted source. The admin executes GraphQL operations submitted by the attacker's frame using the signed-in editor's credentials. This allows the attacker to expose or modify protected content as if they were the legitimate editor.

The context

The vulnerability involves multiple weaknesses, including CWE-346, CWE-441, and CWE-601, according to the NVD record. The lack of a sandbox attribute on the iframe and the absence of a Content Security Policy in the admin bundle exacerbate the risk. The react-router-dom package version 6.30.3 returns the splat with its own leading slash, which contributes to the protocol-relative URL generation.

GitHub advisory GHSA-x34j-47hf-4xg7 confirms that a single crafted link opened by a logged-in editor is sufficient for exploitation. The attacker does not need to authenticate to the system. Instead, they rely on the editor to open the malicious link. Once the editor opens the link, the attacker can submit any GraphQL operation, and the admin will execute it with the editor's token.

Defender's checklist

Organisations using TinaCMS should immediately verify their installed versions against the vulnerable ranges. Any instance running tinacms below 3.14.0 or @tinacms/app below 2.5.14 is exposed to this critical session hijacking attack. Administrators should review access logs for any unusual GraphQL activity originating from preview routes. Ensuring that all editor accounts use strong, unique passwords can mitigate the impact if a session is compromised.

Background: Session hijacking

Session hijacking and spoofing are distinct threats. Hijacking steals an active session token to assume control of an established connection without authentication. Spoofing forges source addresses or identities to initiate contact or evade filters. One exploits trust in existing state; the other exploits trust in origin.

Read the full guide: Difference Between Session Hijacking and Spoofing: Mechanisms and Defences

What to do and how to stay safe

  • Update TinaCMS to version 3.14.0 or later to apply the official patch for CVE-2026-108261.
  • Upgrade the @tinacms/app package to version 2.5.14 or later to resolve the preview origin validation flaw.
  • Educate content editors not to open unknown or suspicious links, particularly those directing to admin preview routes.
  • Monitor server logs for unexpected GraphQL mutations or reads that originate from iframe-based preview sessions.

Step-by-step guide: Unpatched Software: Why Missing Updates Create Hidden Entry Points

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

Frequently asked questions

Which versions of TinaCMS are affected by CVE-2026-108261?

Versions of tinacms prior to 3.14.0 and @tinacms/app versions prior to 2.5.14 are vulnerable to this critical authentication bypass.

Sources

  1. CVE Program
  2. GitHub Advisory Database

Related stories

Secure Configuration Baselines for Small Businesses

Default settings prioritise functionality over security, leaving small organisations exposed to automated attacks that exploit known weak configurations.