CVE-2026-29066: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-29066 is an arbitrary file read vulnerability in the TinaCMS CLI dev server caused by a permissive Vite filesystem configuration. The TinaCMS CLI (@tinacms/cli) configures Vite with server.fs.strict: false, disabling Vite's built-in filesystem access restriction and allowing unauthenticated attackers who can reach the dev server to read arbitrary files on the host system. All versions prior to 2.1.8 of the @tinacms/cli npm package are affected. The vulnerability was published on March 12, 2026, with a fix available in version 2.1.8. It carries a CVSS v3.1 base score of 6.2 (Medium) (GitHub Advisory, TinaCMS Advisory).

Technical details

The root cause lies in the TinaCMS CLI's Vite server configuration file (packages/@tinacms/cli/src/next/vite/index.ts), where fs: { strict: false } explicitly disables Vite's filesystem sandboxing (CWE-552, CWE-200). TinaCMS middleware only intercepts specific route prefixes (/media/*, /graphql, /altair, /searchIndex); any other request falls through to Vite's static file handler, which resolves and serves files using absolute paths directly from the host filesystem. Additionally, the server enables permissive CORS with no origin restriction, which may facilitate browser-based exploitation via DNS rebinding attacks. The advisory credits researcher alaeddine03 for discovery (TinaCMS Advisory, GitHub Advisory).

Impact

Successful exploitation allows an unauthenticated attacker to read any file accessible to the server process, with high confidentiality impact and no integrity or availability impact. Sensitive targets include /etc/passwd, /etc/shadow, SSH private keys, environment variables via /proc/self/environ, and cloud credentials or API keys stored in configuration files. The risk is elevated in cloud IDE environments (e.g., GitHub Codespaces, Gitpod) where dev server ports may be automatically forwarded and publicly accessible, as well as Docker/VM setups with port forwarding or misconfigured 0.0.0.0 bindings (TinaCMS Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub Security Advisory, consisting of simple curl commands that directly demonstrate arbitrary file read against a running TinaCMS dev server. No authentication or special privileges are required — only network access to the dev server port (default: 4001). There is no confirmed evidence of in-the-wild exploitation at this time, and no threat actor attribution has been reported. The EPSS score is approximately 6.479% (91st percentile) per the GitHub Advisory Database, while Feedly reports a lower estimate of 0.018%. Nuclei detection templates have been added to the ProjectDiscovery nuclei-templates repository, indicating active tooling interest (GitHub Advisory, TinaCMS Advisory).

Exploitation steps

  1. Reconnaissance: Identify environments running the TinaCMS CLI dev server (default port 4001) using network scanning tools such as Shodan, Censys, or Nmap. Target cloud IDE environments (Codespaces, Gitpod), Docker setups with port forwarding, or any host binding to 0.0.0.0.
  2. Confirm target: Verify the dev server is running and reachable by sending a basic HTTP request: curl -I http://<target>:4001/.
  3. Read sensitive system files: Send HTTP GET requests directly to absolute filesystem paths, which Vite resolves and serves without restriction:
    • curl http://<target>:4001/etc/passwd
    • curl http://<target>:4001/etc/hostname
  4. Exfiltrate credentials and secrets: Target high-value files such as:
    • curl http://<target>:4001/proc/self/environ (environment variables, API keys)
    • curl http://<target>:4001/root/.ssh/id_rsa (SSH private keys)
    • curl http://<target>:4001/home/<user>/.aws/credentials (cloud credentials)
  5. DNS rebinding (browser-based): If direct network access is unavailable, leverage the unrestricted CORS policy to perform a DNS rebinding attack from a malicious webpage, causing the victim's browser to make cross-origin requests to the dev server and relay file contents back to the attacker (TinaCMS Advisory).

Indicators of compromise

  • Network: Unexpected HTTP GET requests to port 4001 from external or untrusted IP addresses; requests to paths such as /etc/passwd, /etc/hostname, /proc/self/environ, or /.ssh/id_rsa in web server access logs; unusual outbound connections from the dev server host following file access.
  • Logs: Vite/TinaCMS dev server access logs showing requests to absolute filesystem paths (e.g., /etc/, /proc/, /root/, /home/) from non-localhost addresses; repeated 200 OK responses to such paths.
  • File System: No direct file system artifacts are created by exploitation (read-only attack), but evidence of credential reuse or unauthorized access to cloud accounts/SSH hosts may indicate prior exfiltration.
  • Process: Unusual child processes or network connections spawned from the Node.js/Vite process after exploitation; unexpected authentication attempts using credentials that were stored in files accessible to the dev server (TinaCMS Advisory).

Mitigation and workarounds

Upgrade @tinacms/cli to version 2.1.8 or later, which fixes the vulnerability by enabling Vite's filesystem access restriction. As interim mitigations: restrict network access to the dev server port (4001) to trusted networks or localhost only using firewall rules; avoid running the dev server in environments where the port is publicly accessible (e.g., avoid build.host: 0.0.0.0); do not run the TinaCMS dev server in untrusted or shared environments. Developers using cloud IDEs should ensure port forwarding is set to private/restricted access (TinaCMS Advisory, GitHub Advisory).

Community reactions

The vulnerability was reported by researcher alaeddine03 and published via the GitHub Security Advisory program on March 12, 2026. Detection templates for automated scanning were added to the ProjectDiscovery nuclei-templates repository shortly after disclosure, reflecting community interest in scanning for exposed instances. Brief social media discussion was observed on Bluesky following publication. No major vendor statements beyond the official advisory or significant media coverage have been identified (TinaCMS Advisory).

Additional resources


Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-966w-4vpf-p7hcHIGH7.1
  • JavaScript logoJavaScript
  • @aloma.io/aloma
NoYesOct 25, 2026
GHSA-mrwp-f3q8-3g9pMEDIUM5.9
  • JavaScript logoJavaScript
  • follow-redirects
NoYesOct 25, 2026
GHSA-hfm3-x63j-7fxpHIGHN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/migrate
NoYesOct 25, 2026
GHSA-6244-vvv9-76f5MEDIUMN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/plugin
NoYesOct 25, 2026
GHSA-q53q-qg98-p9jfHIGHN/A
  • JavaScript logoJavaScript
  • llm-fw
NoYesOct 25, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management