Skip to main content

TinaCMS CVE-2026-59992

| EUVDEUVD-2026-63102 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-08-19 GitHub_M GHSA-8mq9-5fw2-5rm4
5.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as CMS editor
  2. Delivery
    Craft request with arbitrary storage key
  3. Exploit
    Submit DELETE or presigned-PUT request to media handler
  4. Execution
    Handler issues SDK call with attacker-chosen key
  5. Impact
    Write or delete object outside mediaRoot boundary

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation requires an active, authenticated CMS editor account (CVSS PR:L confirmed) within the TinaCMS deployment - anonymous or unauthenticated access is insufficient. The vulnerable code path is reached via standard media upload (GET with ?key=) and delete (DELETE with ?media=) HTTP requests to the Next.js API route that mounts createMediaHandler, which must be publicly reachable or reachable from the editor's network. The deployment must use at least one of the four affected adapter packages in a version prior to the fixed releases. Exploitation is limited to keys the deployment's storage credential can actually reach: if the IAM/service-principal policy is already scoped tightly to the mediaRoot prefix, the practical impact is contained even without patching. There is no requirement for a specific non-default configuration - any default TinaCMS deployment using these adapters with a broad storage credential is vulnerable.

Impact

The NVD-assigned CVSS 5.4 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L) understates the practical impact: the I:L and A:L ratings assume limited scope, but the description explicitly states that an editor can reach 'other tenants' or non-media objects' throughout the entire bucket, which aligns more closely with I:H/A:H. The attack complexity is genuinely low once an editor account exists - no special tooling is required beyond crafting a query string. No EPSS data was provided and the vulnerability is not in CISA KEV, indicating no confirmed mass or active exploitation. No public proof-of-concept has been identified. The real-world risk is therefore moderate-to-high for any multi-tenant TinaCloud deployment or self-hosted deployment where the storage credential has broad bucket permissions, because a single compromised or malicious editor account can overwrite or purge arbitrary objects. Single-tenant deployments with tightly scoped IAM policies (bucket limited strictly to the media prefix) face substantially reduced blast radius. The scope change (S:U) in the provided vector is reasonable since impact stays within the same storage system, but organizations should treat this as high-priority given the potential for data destruction across an entire storage bucket.

Exploit ScenarioDerived

A malicious authenticated CMS editor on a multi-tenant TinaCloud deployment crafts a DELETE request to the media handler with req.query.media set to an arbitrary S3 key such as 'other-tenant/config/production-settings.json' - a key that falls outside the editor's mediaRoot but within the deployment IAM credential's reach. The handler issues a DeleteObjectCommand for that exact key without validation, permanently removing the object. No public exploit code has been identified, but the attack requires nothing beyond a valid editor session and knowledge of target key names, making it trivially reproducible by any motivated editor.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 19, 2026

Broken access control across all four first-party TinaCMS production media adapters (next-tinacms-s3, next-tinacms-dos, next-tinacms-azure, next-tinacms-cloudinary) allows any authenticated CMS editor to write or delete storage objects outside the operator-configured mediaRoot boundary. The handlers pass attacker-controlled query parameters (req.query.key for presigned S3 PUTs, req.query.media for DELETEs) directly to storage SDK operations without validating that the resulting key falls within the permitted path prefix, giving editors write and delete authority over the entire storage bucket or container reachable by the deployment's IAM or service credential. Vendor-released patches exist in all four packages; no public exploit or CISA KEV listing has been identified at time of analysis.

RemediationAI

Vendor-released patches are available: upgrade next-tinacms-s3 to 23.0.4, next-tinacms-dos to 23.0.4, next-tinacms-azure to 14.0.4, and next-tinacms-cloudinary to 26.0.4. The fix introduces a shared resolveKey and resolveDirectory validation layer (packages/*/src/media-key.ts) that normalises attacker-supplied keys, rejects empty keys, absolute paths, NUL bytes, percent-encoded traversal sequences, and any key that resolves outside the configured mediaRoot before the storage SDK call is made. The commit is d44558e9b4502d4f4fc2c970d22985339fe2b6ce and the release tag is https://github.com/tinacms/tinacms/releases/tag/next-tinacms-s3@23.0.4. If immediate patching is not possible, the most effective compensating control is to restrict the storage credential used by the deployment to the exact key prefix corresponding to mediaRoot (e.g., an S3 IAM policy with s3:PutObject and s3:DeleteObject scoped to arn:aws:s3:::bucket-name/media-root-prefix/*); this limits the blast radius to the intended directory even if the handler remains unpatched, though it does not fix the boundary bypass itself. Trade-off: overly restrictive IAM policies may break legitimate media operations if the prefix is misconfigured. Additionally, auditing recent storage operations for keys outside the expected mediaRoot prefix can identify whether the flaw was already exploited.

Affected VersionsENISA

next-tinacms-azure < 14.0.4
next-tinacms-dos < 23.0.4
next-tinacms-cloudinary < 26.0.4
tinacms < 23.0.4
next-tinacms-s3 < 23.0.4

Affected Packages

npm next-tinacms-azure fix: 14.0.4
npm next-tinacms-cloudinary fix: 26.0.4
npm next-tinacms-dos fix: 23.0.4
npm next-tinacms-s3 fix: 23.0.4
euvd tinacms fix: 23.0.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 5 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

TinaCMS is a headless, Git-backed content management system that exposes Next.js API route handlers for media operations. The affected packages - next-tinacms-s3, next-tinacms-dos (DigitalOcean Spaces), next-tinacms-azure (Azure Blob Storage), and next-tinacms-cloudinary - each implement a createMediaHandler that issues presigned upload URLs or direct SDK calls on behalf of authenticated CMS editors. The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key): the handlers expose a mediaRoot configuration option intended to scope editors to a subdirectory, but they never validate that the caller-supplied key resolves within that root before constructing the presigned URL or issuing the SDK command. In the S3 adapter (handlers.ts:67-90), req.query.key becomes the Key field of a PutObjectCommand presigned URL verbatim; in the DELETE branch (handlers.ts:199-223), the second element of req.query.media becomes the DeleteObjectCommand key. Adjacent weaknesses CWE-284 (Improper Access Control) and CWE-862 (Missing Authorization) also apply. CPE strings confirm the vulnerability spans tinacms:next-tinacms-s3, tinacms:next-tinacms-dos, tinacms:next-tinacms-azure, and tinacms:next-tinacms-cloudinary across all versions prior to the fixed releases.

Know when Tinacms gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
vuln.today AI 8.1 HIGH

Editor auth required (PR:L); no confidentiality impact; but write/delete spans entire bucket (I:H, A:H), not just limited data.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
Low

Lifecycle Timeline

2
Patch available
Aug 19, 2026 - 22:04 EUVD
CVE Published
Aug 19, 2026 - 21:30 cve.org
MEDIUM 5.4

DescriptionCVE.org

Tina is a headless content management system. Prior to next-tinacms-s3 23.0.4, next-tinacms-dos 23.0.4, next-tinacms-azure 14.0.4, and next-tinacms-cloudinary 26.0.4, the first-party production media adapters pass attacker-controlled object keys to storage SDK upload and delete operations without enforcing the operator's configured mediaRoot. In packages/next-tinacms-s3/src/handlers.ts, createMediaHandler accepts req.query.key for a signed PutObject URL and the DELETE path uses req.query.media as the DeleteObjectCommand key. The same missing key-boundary check exists in packages/next-tinacms-dos/src/handlers.ts, packages/next-tinacms-azure/src/handlers.ts, and packages/next-tinacms-cloudinary/src/handlers.ts. An authenticated CMS editor can therefore create or delete objects anywhere the deployment's storage credential can reach, including other tenants' or non-media objects. These issues are fixed in next-tinacms-s3 23.0.4, next-tinacms-dos 23.0.4, next-tinacms-azure 14.0.4, and next-tinacms-cloudinary 26.0.4.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Low
niche headless CMS, limited enterprise adoption compared to WordPress
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy