{"id":"CVE-2026-126774","kind":"vulnerability","aliases":["CVE-2026-126774"],"related":[],"title":"TinaCMS MDX serializer: content editors can inject JavaScript into pages","description":"@tinacms/mdx before 2.4.2 contains a code injection vulnerability in its MDX serializer, which writes rich-text values into MDX expressions without escaping them. Authenticated content editors can save crafted values that break out of list field or highlightColor expressions in the stored .mdx file, executing JavaScript in visitors' browsers or on build and server-side rendering hosts.","summary":"The @tinacms/mdx package writes rich-text values into MDX expressions without escaping them, so a crafted value can break out of a list field or highlightColor expression in a stored .mdx file. An attacker with content-editor access can run JavaScript in visitors' browsers or on build and server-side rendering hosts.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["mdx","next.js","package","self-hosted","tinacms"],"not_affected_if":["no-untrusted-editors","static-content-only"],"how_to_check":"- Check the installed version of `@tinacms/mdx` in the project lockfile or with `npm ls @tinacms/mdx`\n- Versions below `2.4.2` are listed as affected by the sources","fix":"- Upgrade `@tinacms/mdx` to `2.4.2` or later (version stated by the sources)","status":"open","published_at":"2026-11-11T19:17:37+00:00","first_seen_at":"2026-11-11T19:28:46+00:00","triaged_at":"2026-11-11T19:29:46+00:00","updated_at":"2026-11-11T19:29:46+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-11T19:29:46Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `@tinacms/mdx` to `2.4.2` or later (version stated by the sources)","reach":"internet","title":"TinaCMS MDX serializer: content editors can inject JavaScript into pages","impact":"high","summary":"The @tinacms/mdx package writes rich-text values into MDX expressions without escaping them, so a crafted value can break out of a list field or highlightColor expression in a stored .mdx file. An attacker with content-editor access can run JavaScript in visitors' browsers or on build and server-side rendering hosts.","audience":"developers","category":"package","nicknames":[],"who_cares":["tinacms","mdx","next.js","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"JavaScript runs in visitor browsers or on build and rendering hosts","analyst_note":"unknown whether the sources list affected product ranges beyond the fixed version; confirm against the vendor advisory if needed.','product_name':","how_to_check":"- Check the installed version of `@tinacms/mdx` in the project lockfile or with `npm ls @tinacms/mdx`\n- Versions below `2.4.2` are listed as affected by the sources","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-untrusted-editors","static-content-only"],"who_is_affected":"Sites built with TinaCMS that accept rich-text content from editors and store it as MDX. Exposure depends on the editor role being used for untrusted content and on whether the built pages or server-side rendering run the injected expression. Sites that do not use the MDX serializer, or that only let fully trusted people edit content, have less exposure.","user_interaction":"unknown","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000776,"input_tokens":4652,"output_tokens":622,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-126774':13A,16A '-2026':12A,15A '2.4.2':81C 'access':63B 'attack':58B 'authent':103C 'break':43B,111C 'browser':69B,128C 'build':72B,131C 'code':84C 'contain':82C 'content':4A,61B,104C 'content-editor':60B 'craft':40B,108C 'cve':11A,14A 'editor':5A,62B,105C 'escap':36B,101C 'execut':124C 'express':34B,51B,99C,118C 'field':48B,115C 'file':56B,123C 'highlightcolor':50B,117C 'host':22B,78B,137C 'inject':7A,85C 'javascript':8A,66B,125C 'list':47B,114C 'mdx':2A,17B,33B,55B,89C,98C,122C 'next.js':18B 'packag':19B,26B 'page':10A 'render':77B,136C 'rich':29B,94C 'rich-text':28B,93C 'run':65B 'save':107C 'self':21B 'self-host':20B 'serial':3A,90C 'server':75B,134C 'server-sid':74B,133C 'side':76B,135C 'store':54B,121C 'text':30B,95C 'tinacm':1A,23B 'tinacms/mdx':25B,79C 'valu':31B,41B,96C,109C 'visitor':68B,127C 'vulner':86C 'without':35B,100C 'write':27B,92C","nicknames":[],"mitigations":[],"who_affected":"Sites built with TinaCMS that accept rich-text content from editors and store it as MDX. Exposure depends on the editor role being used for untrusted content and on whether the built pages or server-side rendering run the injected expression. Sites that do not use the MDX serializer, or that only let fully trusted people edit content, have less exposure.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","mdx","nextjs","package","selfhosted","tinacms"],"campaign_type":null,"search_a":"'-126774':13A,16A '-2026':12A,15A 'content':4A 'cve':11A,14A 'editor':5A 'inject':7A 'javascript':8A 'mdx':2A 'page':10A 'serial':3A 'tinacm':1A","search_b":"'access':63B 'attack':58B 'break':43B 'browser':69B 'build':72B 'content':61B 'content-editor':60B 'craft':40B 'editor':62B 'escap':36B 'express':34B,51B 'field':48B 'file':56B 'highlightcolor':50B 'host':22B,78B 'javascript':66B 'list':47B 'mdx':17B,33B,55B 'next.js':18B 'packag':19B,26B 'render':77B 'rich':29B 'rich-text':28B 'run':65B 'self':21B 'self-host':20B 'server':75B 'server-sid':74B 'side':76B 'store':54B 'text':30B 'tinacm':23B 'tinacms/mdx':25B 'valu':31B,41B 'visitor':68B 'without':35B 'write':27B","search_c":"'2.4.2':81C 'authent':103C 'break':111C 'browser':128C 'build':131C 'code':84C 'contain':82C 'content':104C 'craft':108C 'editor':105C 'escap':101C 'execut':124C 'express':99C,118C 'field':115C 'file':123C 'highlightcolor':117C 'host':137C 'inject':85C 'javascript':125C 'list':114C 'mdx':89C,98C,122C 'render':136C 'rich':94C 'rich-text':93C 'save':107C 'serial':90C 'server':134C 'server-sid':133C 'side':135C 'store':121C 'text':95C 'tinacms/mdx':79C 'valu':96C,109C 'visitor':127C 'vulner':86C 'without':100C 'write':92C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-03T02:45:45+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126774","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126774","severity":null,"published_at":"2026-11-11T19:17:37+00:00","modified_at":"2026-11-11T19:17:37+00:00","first_seen_at":"2026-11-11T19:28:46+00:00","fetched_at":"2026-11-11T19:28:46+00:00","note":null}],"documents":[{"id":128103,"url":"https://github.com/tinacms/tinacms/commit/19285c6deeee52c380e8b2fdeafedc9530dc0618","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":128104,"url":"https://github.com/tinacms/tinacms/releases/tag/%40tinacms/mdx%402.4.2","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":128105,"url":"https://github.com/tinacms/tinacms/security/advisories/GHSA-6vw5-w22x-ghxv","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-03T02:45:45+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":128106,"url":"https://www.vulncheck.com/advisories/tinacms-mdx-before-2.4.2-code-injection-via-mdx-serializer-rich-text-values","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}