TinaCMS admin preview frames attacker-controlled origin
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- Required
- Attack complexity
- Low
- Impact type
- Security bypass, Spoofing
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-346 and CWE-601.
Summary
TinaCMS before 3.14.0 and @tinacms/app before 2.5.14 derive a trusted preview origin from the admin preview URL. An unauthenticated attacker can send a crafted link to a signed-in editor, making the admin frame an attacker origin as the trusted preview (CWE-346). The frame can then send GraphQL reads or mutations that run with the editor's credentials, exposing or modifying protected content.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
Description from the CNA
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| tinacms | tinacms | before 3.14.0 | 3.14.0 | Patch available | CNA |
| tinacms | app | before 2.5.14 | 2.5.14 | Patch available | CNA |
| — | tinacms (npm) | before 3.14.0 | 3.14.0 | Patch available | GHSA-x34j-47hf-4xg7 |
| — | @tinacms/app (npm) | before 2.5.14 | 2.5.14 | Patch available | GHSA-x34j-47hf-4xg7 |
- tinacms Vendortinacms Affected before 3.14.0 Fixed in 3.14.0 Patch available CNA
- app Vendortinacms Affected before 2.5.14 Fixed in 2.5.14 Patch available CNA
- tinacms (npm) Vendor— Affected before 3.14.0 Fixed in 3.14.0 Patch available GHSA-x34j-47hf-4xg7
- @tinacms/app (npm) Vendor— Affected before 2.5.14 Fixed in 2.5.14 Patch available GHSA-x34j-47hf-4xg7
Remediation
Update tinacms to 3.14.0 and @tinacms/app to 2.5.14, the fixed versions for each product.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
- Fix · CNA tinacms (tinacms) Fixed in 3.14.0
- Fix · CNA app (@tinacms) Fixed in 2.5.14
- Fix · GHSA-x34j-47hf-4xg7 tinacms (npm) Fixed in 3.14.0 Advisory →
- Fix · GHSA-x34j-47hf-4xg7 @tinacms/app (npm) Fixed in 2.5.14 Advisory →
Timeline
- 2026-10-10 Threatist record created from CVE-2026-108261
- 2026-10-10 Alias added: GHSA-x34j-47hf-4xg7
- 2026-10-10 Fix available: npm/@tinacms/[email protected], npm/[email protected] · GHSA-x34j-47hf-4xg7
- 2026-10-10 CVSS score added · GHSA-x34j-47hf-4xg7
- 2026-10-10 Weakness changed · GHSA-x34j-47hf-4xg7
- 2026-10-10 6 new references · GHSA-x34j-47hf-4xg7
- 2026-10-11 Priority changed: MEDIUM → LOW
- 2026-10-13 CISA SSVC decision points changed
- 2026-10-13 Priority changed: LOW → HIGH
References
Other 6
- https://github.com/tinacms/tinacms/security/advisories/GHSA-x34j-47hf-4xg7
- https://github.com/tinacms/tinacms/pull/7522
- https://github.com/tinacms/tinacms/commit/b57dbf4b56201aef15cd92caa49fd12ab96bbecf
- https://github.com/tinacms/tinacms/releases/tag/@tinacms/[email protected]
- https://github.com/tinacms/tinacms/releases/tag/[email protected]
- https://github.com/tinacms/tinacms
More tinacms vulnerabilities
- TI-2026-22987 Cross-Origin File Exfiltration via CORS Misconfiguration + Path Traversal in TinaCMS CVSS 3.1CRITICAL 9.7
- TI-2026-45239 Tina: [Broken Access Control] letting any TinaCloud user authorize against any self-hosted site CVSS 3.1HIGH 8.8
- TI-2026-26851 @tinacms/graphql's `FilesystemBridge` Path Validation Can Be Bypassed via Symlinks or Junctions CVSS 3.1HIGH 8.8
- TI-2026-22988 Path Traversal Leading to Arbitrary File Read, Write and Delete in TinaCMS CVSS 3.1HIGH 8.4
- TI-2026-70293 Code injection in Tina CLI via unescaped Git branch name CVSS 3.1HIGH 8.2
- TI-2026-26850 @tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions CVSS 3.1HIGH 8.3
Sources
- CVE-2026-108261 · CVE Program
- CVE-2026-108261 · NVD
- FIRST EPSS
- GHSA-x34j-47hf-4xg7 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences