CVE-2025-68278: tinacms vulnerable to arbitrary code execution
Summary tinacms uses the gray-matter package in an insecure way allowing attackers that can control the content of the processed markdown files, e.g., blog posts, to execute arbitrary code.
Details The gray-matter package executes by default the code in the markdown file's front matter. tinacms does not change this behavior when process markdown file, e.g., by passing a custom engine property for js/javascript in the options object.
PoC 1. Create a tinacms app using the cli/documentation: npx create-tina-app@latest 2. Modify one of the blog posts to contain the following front matter: js ---js { "title": "Pawned" + console.log(require("fs").readFileSync("/etc/passwd").toString()) } --- 3. Start the tinacms server, e.g., with npm run dev 4. Observe the console of the server printing the password file, showing that attackers can execute arbitrary commands.
Impact RCE: attackers can execute arbitrary JavaScript code on the server hosting tinacms.
Feasibility Potential attack scenarios can be executed like this: Companies often have technical writers as contractors. These contractors produce md files, which they send over email or upload in a shared cloud folder. Developers download these files and upload them in tinacms's content folder. While this example might appear speculative or contrived, a general observation is that developers would be very surprised to find out that processing untrusted markdown files via tinacms = server-side code execution = complete machine take over. That is, tinacms users might not expect markdown files to contain anything else than data and gray-matter violates that assumption.
Other sources
Tina is a headless content management system. In tinacms prior to version 3.1.1, tinacms uses the gray-matter package in an insecure way allowing attackers that can control the content of the processed markdown files, e.g., blog posts, to execute arbitrary code. tinacms version 3.1.1, @tinacms/cli version 2.0.4, and @tinacms/graphql version 2.0.3 contain a fix for the issue.
— MITRE
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2025-68278?
CVE-2025-68278 has a high severity rating due to the potential for arbitrary code execution.
How do I fix CVE-2025-68278?
To fix CVE-2025-68278, upgrade to tinacms version 3.1.1 or later, or update the affected packages accordingly.
What causes CVE-2025-68278?
CVE-2025-68278 is caused by the insecure use of the gray-matter package in tinacms that allows code execution via controlled markdown content.
Which versions of tinacms are affected by CVE-2025-68278?
CVE-2025-68278 affects tinacms versions prior to 3.1.1, including certain versions of @tinacms/cli and @tinacms/graphql.
Can CVE-2025-68278 be exploited remotely?
Yes, CVE-2025-68278 can be exploited remotely by an attacker who can control the content of processed markdown files.