High severity · published Apr 1, 2026
CVE-2026-34604
@tinacms/graphql's `FilesystemBridge` Path Validation Can Be Bypassed via Symlinks or Junctions
8.8
CVSS
0.4%
EPSS
No
On KEV
Description
Tina is a headless content management system. Prior to version 2.2.2, @tinacms/graphql uses string-based path containment checks in FilesystemBridge. That blocks plain ../ traversal, but it does not resolve symlink or junction targets. If a symlink/junction already exists under the allowed content root, a path like content/posts/pivot/owned.md is still considered "inside" the base even though the real filesystem target can be outside it. As a result, FilesystemBridge.get(), put(), delete(), and glob() can operate on files outside the intended root. This issue has been patched in version 2.2.2.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
High
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.4% · higher than 31% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
TI
tinacms · tinacms
< 2.2.2 · source: vendor
TI
Tinacms/graphql · Ssw
through 2.2.1 · source: NVD
Affected product
TI
tinacms
tinacms
More from tinacms
9.3
CVE-2026-108261
TinaCMS admin preview iframe loads an attacker-controlled origin from the URL fragment
8.8
CVE-2026-63506
Tina: [Broken Access Control] letting any TinaCloud user authorize against any self-hosted site
8.8
CVE-2025-68278
tinacms vulnerable to arbitrary code execution
8.3
CVE-2026-34603
@tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
8.2
CVE-2026-108259
Tina: Code injection via unescaped Git branch name in generated client source