Skip to content
OpenAdvisories
Medium · 5.4 CVE-2026-59992 EUVD-2026-63102GHSA-8mq9-5fw2-5rm4

Tina: Broken Access Control: arbitrary bucket-key write/delete in `next-tinacms-s3` (and sibling production media adapters)

Published Aug 19, 2026 · Updated Aug 21, 2026 · Assigned by GitHub_M

Description

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.

Affected products

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

Affected packages

EcosystemPackageAffectedFixedRecord
npm next-tinacms-azure < 14.0.4 14.0.4 GHSA-8mq9-5fw2-5rm4
npm next-tinacms-cloudinary < 26.0.4 26.0.4 GHSA-8mq9-5fw2-5rm4
npm next-tinacms-dos < 23.0.4 23.0.4 GHSA-8mq9-5fw2-5rm4
npm next-tinacms-s3 < 23.0.4 23.0.4 GHSA-8mq9-5fw2-5rm4

References