CVE-2026-34603
published 2026-04-01CVE-2026-34603: Tina is a headless content management system. Prior to version 2.2.2, @tinacms/cli recently added lexical path-traversal checks to the dev media routes, but…
PriorityP354high8.3CVSS 3.1
AVNACLPRLUINSUCHIHAL
EPSS
0.41%
32.6th percentile
Tina is a headless content management system. Prior to version 2.2.2, @tinacms/cli recently added lexical path-traversal checks to the dev media routes, but the implementation still validates only the path string and does not resolve symlink or junction targets. If a link already exists under the media root, Tina accepts a path like pivot/written-from-media.txt as "inside" the media directory and then performs real filesystem operations through that link target. This allows out-of-root media listing and write access, and the same root cause also affects delete. This issue has been patched in version 2.2.2.
Affected
3 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| ssw | tinacms_cli | <= 2.2.1 | — |
| tinacms | graphql | >= 0 < 2.2.2 | 2.2.2 |
| tinacms | tinacms | < 2.2.2 | 2.2.2 |
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
GHSA
@tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
ghsa·2026-04-01
CVE-2026-34603 [HIGH] CWE-22 @tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
@tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
## Summary
`@tinacms/cli` recently added lexical path-traversal checks to the dev media routes, but the implementation still validates only the path string and does not resolve symlink or junction targets.
If a link already exists under the media root, Tina accepts a path like `pivot/written-from-media.txt` as "inside" the media directory and then performs real filesystem operations through that link target. This allows out-of-root media listing and write access, and the same root cause also affects delete.
## Details
The dev media handlers validate user-controlled paths with:
```ts
function resolveWithinBase(userPath: string, baseDir: string): string {
const resolvedBase = path.resolve(baseDir);
c
OSV
@tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
osv·2026-04-01
CVE-2026-34603 [HIGH] @tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
@tinacms/graphql's Media Endpoints Can Escape the Media Root via Symlinks or Junctions
## Summary
`@tinacms/cli` recently added lexical path-traversal checks to the dev media routes, but the implementation still validates only the path string and does not resolve symlink or junction targets.
If a link already exists under the media root, Tina accepts a path like `pivot/written-from-media.txt` as "inside" the media directory and then performs real filesystem operations through that link target. This allows out-of-root media listing and write access, and the same root cause also affects delete.
## Details
The dev media handlers validate user-controlled paths with:
```ts
function resolveWithinBase(userPath: string, baseDir: string): string {
const resolvedBase = path.resolve(baseDir);
c
No detection rules found.
No public exploits indexed.
2026-04-01
Published