High, CVSS 8.8npmAmendedPublished
Tina: [Broken Access Control] letting any TinaCloud user authorize against any self-hosted site
CVE-2026-63506 · GHSA-g74q-6g2f-874x
- Affected
- npm @tinacms/auth <= 1.1.3
- Fixed in
- 1.1.4· Vendor fix available
- Issue
- @tinacms/auth's isAuthorized(req) decides authorization by validating the caller's bearer token against https://identity.tinajs.io/v2/apps/${req.query.clientID}/currentUser, where the clientID comes from the request and is never compared to the site's own configured TinaCloud app id. The function answers "is this token a verified user of whatever app the caller named?" instead of "is this token a verified user of THIS site?" Any TinaCloud user can create their own free app, get a valid token for it, and send ?clientID=<their-own-app plus Authorization: <their-own-token to a victim self-hosted site. The victim's authorized callback runs const user = await isAuthorized(req); return user && user.verified, which returns true, and the victim authorizes the attacker. The attacker holds no account on the victim and needs no victim interaction. With the media handlers this grants read, upload, and delete on the victim's media bucket. When the backend uses…
Recommended action: Upgrade to 1.1.4 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.