[ CVE-2026-108259 · Published 9 Oct 2026 ]
Tina: Code injection via unescaped Git branch name in generated client source
[ Why it matters ]Priority signals
- Public proof-of-concept exploit exists (CISA SSVC)
[ Description ]Official description
Tina is a headless content management system. Prior to 3.0.0, @tinacms/cli reads Git branch values from VERCEL_GIT_COMMIT_REF, GITHUB_BRANCH, or HEAD, incorporates the raw value into the API URL, and interpolates that URL into JavaScript string literals in packages/@tinacms/cli/src/next/codegen/index.ts and packages/@tinacms/cli/src/next/codegen/codegen/plugin.ts. A crafted Git-valid branch name containing a quote can terminate the generated string and inject an expression that executes when the generated client module is imported during a preview build. The injected code runs with the build process privileges and can read environment credentials, modify deployment artifacts, or make network requests. This issue is fixed in version 3.0.0.
[ Fixes ]Fixes and patches
- @tinacms/cli 3.0.0Fixed version · GitHub Advisories · npm package @tinacms/cli: upgrade to 3.0.0 or later (affected <= 2.7.0)
[ Packages ]Affected open-source packages
- @tinacms/cli npmAffected <= 2.7.0 · fixed in 3.0.0 · GHSA-pwhx-cvv3-qj5c