Skip to main content

TinaCMS CLI CVE-2026-63123

| EUVDEUVD-2026-62971 MEDIUM
Cross-Site Request Forgery (CSRF) (CWE-352)
2026-08-19 GitHub_M GHSA-rgr9-r7mj-mf6x
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Phish developer with malicious link
  2. Delivery
    Developer visits attacker page with tinacms dev active
  3. Exploit
    Attacker page sends multipart POST to localhost /media/upload/*
  4. Execution
    Browser skips CORS preflight (simple request)
  5. Persist
    CORS middleware returns false but does not terminate request
  6. Impact
    Dev server writes attacker-controlled file to media root

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK

1 technique across 1 tactic: Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two specific conditions must both be met: (1) the target developer must be running tinacms dev locally - this vulnerability is exclusive to the CLI development server and is not present in production TinaCMS deployments; and (2) the developer must visit an attacker-controlled web page in the same browser session while the dev server is active, at which point the attacker page autonomously triggers the upload with no further developer interaction beyond the initial page visit (CVSS UI:R). The attack is bounded to writing files within the configured media root directory - the resolveStrictlyWithinBase path sanitization function prevents traversal to other filesystem locations, which limits the attacker to poisoning or overwriting content within that directory. No authentication layer exists on the dev server (PR:N), so no credential theft is a prerequisite. The vulnerability does not apply to developers who run tinacms dev exclusively in isolated browser profiles or network namespaces, or who have upgraded to 2.5.2.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N, score 6.5) accurately characterizes the attack: network-reachable, low complexity, no authentication required, but gated on developer user interaction (visiting a malicious page). Real-world risk is meaningful but contextually bounded - this vulnerability exists only in the development server (tinacms dev) and does not affect production deployments, substantially limiting the at-risk population to developers actively editing TinaCMS projects locally. The integrity impact is high within the media root but is hard-bounded by resolveStrictlyWithinBase path sanitization; the researcher explicitly did not demonstrate traversal outside the media directory or code execution, so the 'H' integrity rating reflects the worst-case file-write scenario rather than RCE. No KEV listing exists, meaning active exploitation is not confirmed by CISA. A researcher-validated POC exists in the GHSA advisory, confirming exploitability. EPSS data is not provided in the input. The overall priority is moderate: developers using @tinacms/cli < 2.5.2 should upgrade promptly, but the constrained impact surface and UI:R requirement reduce urgency relative to server-side CSRF vulnerabilities.

Exploit ScenarioDerived

An attacker sends a developer a phishing link to a malicious web page containing JavaScript that constructs a multipart/form-data POST to http://localhost:<tinacms-port>/media/upload/injected-asset.jpg with attacker-supplied file contents. When the developer opens the link while tinacms dev is running, the browser submits the simple cross-origin request without a preflight check; the dev server processes the upload and writes the attacker's content to the media root. A researcher-validated POC for this exact scenario is included in GHSA-rgr9-r7mj-mf6x, confirming that the file write completes even though the browser treats the fetch response as blocked.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 19, 2026

Cross-site request forgery in the TinaCMS CLI dev server allows an attacker-controlled web page to write arbitrary files into a developer's local media root without their knowledge. The Vite dev server's CORS middleware only suppressed response headers for disallowed origins but never terminated the underlying request, and because multipart/form-data is a browser 'simple request' exempt from CORS preflight, an attacker page can silently drive a complete media upload to completion. Exploitation requires the targeted developer to visit an attacker-controlled page while tinacms dev is running locally; no public exploit identified at time of analysis, though a researcher-validated proof-of-concept is documented in GHSA-rgr9-r7mj-mf6x. Vendor-released patch: @tinacms/cli@2.5.2.

RemediationAI

Upgrade @tinacms/cli to version 2.5.2 or later via npm install @tinacms/cli@2.5.2 or the equivalent yarn/pnpm command. Version 2.5.2 adds server-side origin enforcement that rejects disallowed cross-origin requests with HTTP 403 before they reach any handler, covering /media/upload, /media DELETE, searchIndex POST/DELETE, and /graphql POST. The fix is confirmed in the GitHub release at https://github.com/tinacms/tinacms/releases/tag/@tinacms/cli@2.5.2 and implemented in commit 211997cdb53cbd43638bdee999faa65375cfc260. If immediate upgrade is not possible, the primary compensating control is behavioral: developers should avoid visiting untrusted URLs in the same browser session while tinacms dev is running, or use a dedicated browser profile for development work that is never used for general browsing. Network-layer controls (firewall rules restricting loopback port access) are insufficient alone because the CSRF attack originates from the developer's own browser, not an external network peer. There is no viable configuration-only workaround in versions prior to 2.5.2.

Affected VersionsENISA

tinacms < 2.5.2

Affected Packages

npm @tinacms/cli fix: 2.5.2
euvd tinacms fix: 2.5.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

TinaCMS is an open-source headless CMS whose CLI package (@tinacms/cli) ships a Vite-based local dev server for content editing. The root cause is CWE-352 (Cross-Site Request Forgery): the cors npm library's origin callback returning false only affects the Access-Control-Allow-Origin response header - it does not terminate the request server-side. The affected route handler in packages/@tinacms/cli/src/next/vite/plugins.ts unconditionally forwards any POST to /media/upload/* into mediaRouter.handlePost regardless of origin decision. The upload handler in packages/@tinacms/cli/src/next/commands/dev-command/server/media.ts extracts a path from the URL, resolves it via resolveStrictlyWithinBase against the configured media folder, and pipes attacker-controlled multipart contents to disk. Because multipart/form-data is a browser simple content-type, no CORS preflight OPTIONS request is triggered, bypassing the only origin gate that existed. The CPE cpe:2.3:a:tinacms:tinacms:*:*:*:*:*:*:*:* covers all pre-2.5.2 releases. The fix in PR #7111 introduces an isOriginAllowed() function and enforces server-side 403 rejection on all state-changing routes before handlers are reached.

Know when Tinacms gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
vuln.today AI 6.5 MEDIUM

Network-reachable via browser CSRF with no auth (PR:N), but requires developer to visit malicious page (UI:R); integrity high for media root writes, confidentiality none as CORS blocks response reading.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
Aug 19, 2026 - 22:04 EUVD

DescriptionCVE.org

Tina is a headless content management system. Prior to 2.5.2, the TinaCMS CLI package's Vite dev server packages/@tinacms/cli/src/next/vite/cors.ts origin callback returns false for a disallowed origin but does not reject the request, and packages/@tinacms/cli/src/next/vite/plugins.ts still routes POST /media/upload/* to mediaRouter.handlePost. The upload code in packages/@tinacms/cli/src/next/commands/dev-command/server/media.ts writes attacker-controlled multipart contents inside the configured media root. A remote attacker can cause a developer's browser to submit this state-changing request by inducing the developer to visit an attacker-controlled page while tinacms dev is running. This issue is fixed in version 2.5.2.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
niche JAMstack headless CMS, developer tooling only
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy