{"id":"CVE-2025-68278","aliases":["GHSA-529f-9qwm-9628"],"url":"https://o3.security/vulnerability/CVE-2025-68278","summary":"tinacms vulnerable to arbitrary code execution","details":"### Summary\n```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.\n\n### Details\nThe ```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.\n\n### PoC\n1. Create a tinacms app using the cli/documentation: \n```\nnpx create-tina-app@latest\n```\n2. Modify one of the blog posts to contain the following front matter:\n```js\n---js\n{\n  \"title\": \"Pawned\" + console.log(require(\"fs\").readFileSync(\"/etc/passwd\").toString())\n}\n---\n```\n3. Start the tinacms server, e.g., with ```npm run dev```\n4. Observe the console of the server printing the password file, showing that attackers can execute arbitrary commands. \n\n### Impact\nRCE: attackers can execute arbitrary JavaScript code on the server hosting tinacms.\n\n### Feasibility\nPotential 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.","published":"2025-12-18T15:27:21.403Z","modified":"2026-08-12T03:51:19.089541583Z","cvss":null,"epss":{"score":0.00472,"percentile":0.38719,"asOf":"2026-08-24"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"tinacms","fixedVersion":"3.1.1"},{"ecosystem":"npm","name":"@tinacms/cli","fixedVersion":"2.0.4"},{"ecosystem":"npm","name":"@tinacms/graphql","fixedVersion":"2.0.3"}],"fix":{"url":"https://github.com/tinacms/tinacms/commit/fa7c27abef968e3f3a3e7d564f282bc566087569","label":"tinacms/tinacms@fa7c27a"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/68xxx/CVE-2025-68278.json"},{"type":"ADVISORY","url":"https://github.com/tinacms/tinacms/security/advisories/GHSA-529f-9qwm-9628"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-68278"},{"type":"FIX","url":"https://github.com/tinacms/tinacms/commit/fa7c27abef968e3f3a3e7d564f282bc566087569"},{"type":"PACKAGE","url":"https://github.com/tinacms/tinacms"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:19.089541583Z"}}