TinaCMS rich-text (slatejson) rendering does not sanitize link/image URLs, allowing stored XSS via dangerous URL schemes
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- Active
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- None · None · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-79.
Summary
Tina is a headless content management system. In versions prior to @tinacms/mdx 2.1.7 and tinacms 3.9.3, rich-text parsing and the default link/image renderers did not sanitize the url field on Slate link/image nodes. Content containing javascript: or data:text/html URLs — including case-variant, whitespace-padded, and control-character-obfuscated forms — is rendered into href/src and executes when the content is viewed. Any actor able to author rich-text content (for example a lower-privileged editor, or imported/external content) can achieve stored XSS against editors and site viewers. This issue is fixed in versions @tinacms/mdx 2.1.7 and tinacms 3.9.3.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| tinacms | tinacms | before 3.9.3 | 3.9.3 | Patch available | CNA |
| tinacms | @tinacms/mdx | before 2.1.7 | 2.1.7 | Patch available | CNA |
| — | tinacms (npm) | before 3.9.3 | 3.9.3 | Patch available | GHSA-2vcc-5v34-9jc8 |
| — | @tinacms/mdx (npm) | before 2.1.7 | 2.1.7 | Patch available | GHSA-2vcc-5v34-9jc8 |
- tinacms Vendortinacms Affected before 3.9.3 Fixed in 3.9.3 Patch available CNA
- @tinacms/mdx Vendortinacms Affected before 2.1.7 Fixed in 2.1.7 Patch available CNA
- tinacms (npm) Vendor— Affected before 3.9.3 Fixed in 3.9.3 Patch available GHSA-2vcc-5v34-9jc8
- @tinacms/mdx (npm) Vendor— Affected before 2.1.7 Fixed in 2.1.7 Patch available GHSA-2vcc-5v34-9jc8
Remediation
- Fix · CNA tinacms (tinacms) Fixed in 3.9.3
- Fix · CNA @tinacms/mdx (tinacms) Fixed in 2.1.7
- Fix · GHSA-2vcc-5v34-9jc8 tinacms (npm) Fixed in 3.9.3 Advisory →
- Fix · GHSA-2vcc-5v34-9jc8 @tinacms/mdx (npm) Fixed in 2.1.7 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-55661
- 2026-10-03 Alias added: GHSA-2vcc-5v34-9jc8
References
More tinacms vulnerabilities
- TI-2026-22987 Cross-Origin File Exfiltration via CORS Misconfiguration + Path Traversal in TinaCMS CVSS 3.1CRITICAL 9.7
- TI-2026-70295 TinaCMS admin preview frames attacker-controlled origin CVSS 3.1CRITICAL 9.3
- TI-2026-45239 Tina: [Broken Access Control] letting any TinaCloud user authorize against any self-hosted site CVSS 3.1HIGH 8.8
- TI-2026-26851 @tinacms/graphql's `FilesystemBridge` Path Validation Can Be Bypassed via Symlinks or Junctions CVSS 3.1HIGH 8.8
- TI-2026-22988 Path Traversal Leading to Arbitrary File Read, Write and Delete in TinaCMS CVSS 3.1HIGH 8.4
- TI-2026-70293 Code injection in Tina CLI via unescaped Git branch name CVSS 3.1HIGH 8.2
Sources
- CVE-2026-55661 · CVE Program
- CVE-2026-55661 · NVD
- FIRST EPSS
- GHSA-2vcc-5v34-9jc8 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences