{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-108261", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-10-09T17:33:15.410Z", "datePublished": "2026-10-09T20:43:37.580Z", "dateUpdated": "2026-10-09T20:43:37.580Z" }, "containers": { "cna": { "title": "TinaCMS admin preview iframe loads an attacker-controlled origin from the URL fragment", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-346", "lang": "en", "description": "CWE-346: Origin Validation Error", "type": "CWE" } ] }, { "descriptions": [ { "cweId": "CWE-441", "lang": "en", "description": "CWE-441: Unintended Proxy or Intermediary ('Confused Deputy')", "type": "CWE" } ] }, { "descriptions": [ { "cweId": "CWE-601", "lang": "en", "description": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "LOW", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 9.3, "baseSeverity": "CRITICAL", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "privilegesRequired": "NONE", "scope": "CHANGED", "userInteraction": "REQUIRED", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/tinacms/tinacms/security/advisories/GHSA-x34j-47hf-4xg7", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/tinacms/tinacms/security/advisories/GHSA-x34j-47hf-4xg7" }, { "name": "https://github.com/tinacms/tinacms/pull/7522", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/tinacms/tinacms/pull/7522" }, { "name": "https://github.com/tinacms/tinacms/commit/b57dbf4b56201aef15cd92caa49fd12ab96bbecf", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/tinacms/tinacms/commit/b57dbf4b56201aef15cd92caa49fd12ab96bbecf" }, { "name": "https://github.com/tinacms/tinacms/releases/tag/@tinacms/app@2.5.14", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/tinacms/tinacms/releases/tag/@tinacms/app@2.5.14" }, { "name": "https://github.com/tinacms/tinacms/releases/tag/tinacms@3.14.0", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/tinacms/tinacms/releases/tag/tinacms@3.14.0" } ], "affected": [ { "vendor": "tinacms", "product": "tinacms", "versions": [ { "version": "< 3.14.0", "status": "affected" } ] }, { "vendor": "@tinacms", "product": "app", "versions": [ { "version": "< 2.5.14", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-10-09T20:43:37.580Z" }, "descriptions": [ { "lang": "en", "value": "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." } ], "source": { "advisory": "GHSA-x34j-47hf-4xg7", "discovery": "UNKNOWN" } } } }