Skip to content

← Public intelligence

npm package

tinacms

Open actionable advisories and recorded vendor fixes. This public package view has no inventory attached and cannot establish whether your deployment is affected. A vendor fix never resolves your finding; verify your installed version and the source guidance.

Open advisories

5 actionable advisories, newest first. Withdrawn advisories and news are excluded. Coverage is partial.

  1. Critical, CVSS 9.3npmAmendedPublished

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

    CVE-2026-108261 · GHSA-x34j-47hf-4xg7

    Affected
    • npm tinacms <= 3.13.0
    Fixed in
    3.14.0· Vendor fix available
    Issue
    The TinaCMS admin builds its preview <iframe src from the /~/ hash-router splat without checking that the value stays same-origin. A fragment with a doubled slash (#/~//attacker.example/p) becomes the protocol-relative URL //attacker.example/p, so the admin frames an external site. That same unvalidated string derives expectedOrigin, the only trust anchor for the admin↔preview postMessage channel, so the attacker's frame is treated as trusted: it can submit any GraphQL operation, which the admin executes with the signed-in editor's token and posts back to the attacker's origin. One link, opened by a logged-in editor, gives an unauthenticated remote attacker arbitrary read and write access to the site's content API as that editor. Details Root cause — the router splat becomes the frame source with no same-origin check: The leading / is meant to force a relative path, but react-router-dom@6.30.3 returns the splat with its own leading slash for /~//x, producing //x. The iframe…

    Recommended action: Upgrade to 3.14.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.com (1)osv.dev (2)Source checked Evidence →
  2. High, CVSS 8.5npmAmendedPublished

    TinaCMS: Cross-origin postMessage handlers and rich-text URL-sanitization bypass enable stored XSS and session takeover

    CVE-2026-55660 · GHSA-g5qx-h5f3-mp2f

    Affected
    • npm tinacms < 3.9.3
    Fixed in
    3.9.3· Vendor fix available
    Issue
    TinaCMS registers window message listeners — the useTina overlay handler, the OAuth authentication popup handler, and the admin↔preview iframe GraphQL reducer — that act on event.data without verifying event.origin or event.source, and post messages using non-specific target origins. A page the victim visits (or a window in an opener/iframe relationship with a Tina admin) can forge messages to drive the editor, inject preview content, or observe/forge the OAuth popup channel to take over an authenticated editing session. Fixed in #7056 by allow-listing trusted origins and verifying event.source (isFromAdmin, isFromTrustedPreviewOrigin), and by posting only to explicit target origins (never ""). Note: the rich-text URL-sanitization issue previously bundled here has been split into its own advisory (GHSA-2vcc-5v34-9jc8) so each vulnerability can receive a distinct CVE.

    Recommended action: Upgrade to 3.9.3 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:osv.dev (1)github.com (2)Source checked Evidence →
  3. Medium, CVSS 4.8npmAmendedPublished

    TinaCMS rich-text (slatejson) rendering does not sanitize link/image URLs, allowing stored XSS via dangerous URL schemes

    CVE-2026-55661 · GHSA-2vcc-5v34-9jc8

    Affected
    • npm tinacms < 3.9.3
    Fixed in
    3.9.3· Vendor fix available
    Issue
    TinaCMS rich-text parsing and the default link/image renderers did not sanitize the url field on Slate link/image nodes. Content containing javascript: or data:text/html URLs — including case-variant, whitespace-padded, and control-character-obfuscated forms — is rendered into href/src and executes when the content is viewed. Any actor able to author rich-text content (for example a lower-privileged editor, or imported/external content) can achieve stored XSS against editors and site viewers. Fixed in https://github.com/tinacms/tinacms/pull/7056 via a sanitizeUrl() helper (case-insensitive, whitespace/control-character-normalized scheme allow-list) applied recursively to Slate trees at parse time and in the default rich-text rendering.

    Recommended action: Upgrade to 3.9.3 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:osv.dev (1)github.com (2)Source checked Evidence →
  4. High, CVSS 7.4npmAmendedPublished

    Tina: Path Traversal in Media Upload Handle

    CVE-2026-28791 · GHSA-5hxf-c7j4-279c

    Affected
    • npm tinacms < 2.1.7
    Fixed in
    2.1.7· Vendor fix available
    Issue
    Affected Package | Field | Value | |-------|-------| | Package | @tinacms/cli | | Version | 2.0.5 (latest at time of discovery) | | Vulnerable File | packages/@tinacms/cli/src/next/commands/dev-command/server/media.ts | | Vulnerable Lines | 42-43 | --- Summary A path traversal vulnerability (CWE-22) exists in the TinaCMS development server's media upload handler. The code at media.ts:42-43 joins user-controlled path segments using path.join() without validating that the resulting path stays within the intended media directory. This allows writing files to arbitrary locations on the filesystem. Attack Vector: Network (HTTP POST request) Impact: Arbitrary file write, potential Remote Code Execution --- Details Vulnerable Code Location File: packages/@tinacms/cli/src/next/commands/dev-command/server/media.ts Lines: 42-43 Root Cause The path.join() function resolves .. (parent directory) segments in the path. When the user-supplied path contains traversal sequences like…

    Recommended action: Upgrade to 2.1.7 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:osv.dev (1)github.com (2)Source checked Evidence →
  5. High, CVSS 7.3npmAmendedPublished

    tinacms is vulnerable to arbitrary code execution

    CVE-2025-68278 · GHSA-529f-9qwm-9628

    Affected
    • npm tinacms < 3.1.1
    Fixed in
    3.1.1· Vendor fix available
    Issue
    uses the package in an insecure way allowing attackers that can control the content of the processed markdown files, e.g., blog posts, to execute arbitrary code. Details The package executes by default the code in the markdown file's front matter. does not change this behavior when process markdown file, e.g., by passing a custom engine property for js/javascript in the options object. PoC 1. Create a tinacms app using the cli/documentation: 2. Modify one of the blog posts to contain the following front matter: 3. Start the tinacms server, e.g., with 4. Observe the console of the server printing the password file, showing that attackers can execute arbitrary commands. Impact RCE: attackers can execute arbitrary JavaScript code on the server hosting tinacms. Feasibility Potential attack scenarios can be executed like this: Companies often have technical writers as contractors. These contractors produce md files, which they send over email or upload in a shared cloud folder.…

    Recommended action: Upgrade to 3.1.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:osv.dev (1)github.com (2)Source checked Evidence →