Description
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.
Published: 2026-08-19
Score: 6.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

TinaCMS’s Vite development server contains a CSRF vulnerability: the origin callback in the cors module returns false for disallowed origins but does not reject the request, allowing cross‑origin POST /media/upload/* traffic to reach the media router. When the upload handler receives multipart data, it writes the contents directly into the configured media root without authenticating or validating the origin. An attacker can cause a developer to visit a malicious page while the dev server is active, and the browser will automatically submit a POST request that creates arbitrary files in the media directory, potentially including malicious code. This is a classic cross‑scripting error reflected in CWE‑352.

Affected Systems

All installations of the TinaCMS CLI (tinacms:tinacms) running the Vite dev server with the media upload feature and using a version earlier than 2.5.2. Any developer who starts the dev server locally and retains it online while browsing the internet is susceptible.

Risk and Exploitability

The vulnerability has a CVSS score of 6.5, indicating moderate severity. EPSS data is unavailable, and it is not listed in CISA’s KEV catalog. Exploitation requires social engineering: the attacker must first persuade a developer to visit a malicious page while the dev server is running. Once the precondition is satisfied, the attacker can issue a cross‑origin POST that the server blindly processes, creating arbitrary files. The lack of authentication or input validation in the upload routine makes the attack straightforward for an attacker with the ability to influence the developer’s browser.

Generated by OpenCVE AI on August 20, 2026 at 10:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the TinaCMS CLI to version 2.5.2 or later, which fixes the origin callback and disables processing of unauthorized POST /media/upload requests.
  • Restrict the Vite dev server to the local loopback interface (e.g., bind to 127.0.0.1) and prevent it from being exposed to external networks, using a firewall or local network configuration.
  • Enable audit logging for the media upload endpoint, monitor for unexpected files, and enforce stricter CORS policies where possible to reject cross‑origin POST attempts.

Generated by OpenCVE AI on August 20, 2026 at 10:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-rgr9-r7mj-mf6x Tina: Cross-origin `POST /media/upload/*` requests can write arbitrary files into the Tina dev server media root
History

Tue, 25 Aug 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 21 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
First Time appeared Tina
Tina tinacms
Vendors & Products Tina
Tina tinacms

Wed, 19 Aug 2026 22:00:00 +0000

Type Values Removed Values Added
Description 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.
Title Tina: Cross-origin `POST /media/upload/*` requests can write arbitrary files into the Tina dev server media root
Weaknesses CWE-352
References
Metrics cvssV3_1

{'score': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-25T14:20:27.175Z

Reserved: 2026-07-15T16:54:55.816Z

Link: CVE-2026-63123

cve-icon Vulnrichment

Updated: 2026-08-25T14:19:38.962Z

cve-icon NVD

Status : Received

Published: 2026-08-19T22:16:58.710

Modified: 2026-08-25T15:16:36.760

Link: CVE-2026-63123

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T13:02:27Z

Weaknesses
  • CWE-352

    Cross-Site Request Forgery (CSRF)