CVE-2026-63506: Broken Access Control in TinaCMS isAuthorized Authentication Handler
Vulnerability ID: CVE-2026-63506
CVSS Score: 8.8
Published: 2026-09-17
CVE-2026-63506 is a critical authorization bypass vulnerability in TinaCMS self-hosted backend authentication packages (@tinacms/auth and next-tinacms-azure). By exploiting a request-controlled clientID parameter, unauthenticated attackers with an active token for any developer-registered TinaCloud application can bypass tenant boundaries and execute unauthorized administrative operations, including full GraphQL database interactions and arbitrary media management.
TL;DR
A broken access control flaw in TinaCMS's authorization handler allows attackers to bypass authentication on self-hosted instances using their own registered TinaCloud application credentials.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-639
- Attack Vector: Network (AV:N)
- CVSS Base Score: 8.8 (High)
- Exploit Status: Proof-of-Concept / Conceptual
- KEV Status: Not Listed
- Impact: Bypass of administrative authentication leading to database and asset manipulation
Affected Systems
- @tinacms/auth
- next-tinacms-azure
- tinacms
-
@tinacms/auth: < 1.1.4 (Fixed in:
1.1.4) -
next-tinacms-azure: < 15.0.1 (Fixed in:
15.0.1)
Code Analysis
Commit: 0a927a4
Fix authentication bypass by verifying identity against server-configured NEXT_PUBLIC_TINA_CLIENT_ID instead of request query parameters
Mitigation Strategies
- Update @tinacms/auth to 1.1.4 or higher
- Update next-tinacms-azure to 15.0.1 or higher
- Explicitly pass NEXT_PUBLIC_TINA_CLIENT_ID to the isAuthorized function
- Configure runtime verification to ensure clientID environment variables are not empty
Remediation Steps:
- Analyze package.json dependencies for vulnerable versions of @tinacms/auth (< 1.1.4) or next-tinacms-azure (< 15.0.1)
- Execute npm install @tinacms/auth@1.1.4 next-tinacms-azure@15.0.1 to pull secure versions
- Locate self-hosted authentication handlers (e.g., api/tina/[...media].ts or api/gql.ts)
- Modify authentication calls to bind the configuration parameter explicitly: isAuthorized(req, process.env.NEXT_PUBLIC_TINA_CLIENT_ID)
- Redeploy the application and verify that requests passing arbitrary client IDs are rejected with a 401/403 status code
References
Read the full report for CVE-2026-63506 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)