Turbo: Login callback CSRF/session fixation
Affected releases · turbo
- 2.x2.0.0 – 2.9.12Fixed in 2.9.14
- 1.x and older0.0.1 – 1.13.4No fix, no longer updated
On 2.x, the newest line:
npm install turbo@2.9.14Affected
2.0.0 – 2.9.12
90 releases
Fixed
2.9.14 – 2.11.10
30 releases, latest
Affected
1.0.0 – 1.13.4
138 releases
Affected
0.0.1 – 0.8.5
69 releases
Is your project affected?
Paste your package.json, or type the range you declare for turbo. It is read in your browser and sent nowhere.
What happens
Impact
Turborepo's self-hosted login and SSO browser flows did not validate a CSRF state value on the localhost callback. While the CLI was waiting for authentication, a malicious web page could send a request to the local callback server with an attacker-controlled token. If accepted before the legitimate callback, the CLI could complete login with the wrong credentials.
This affects users authenticating the turbo CLI against self-hosted remote cache/auth endpoints. Vercel-hosted login flows using device authorization are not affected.
Fix
The login and SSO redirect flows now generate a random state value, include it in the browser authentication URL, and require the same value on the localhost callback before accepting a token. Callbacks with a missing or mismatched state are rejected.
Workarounds
If you cannot upgrade immediately, avoid browser-based self-hosted turbo login or SSO flows on machines that may load untrusted web content during authentication. Use a pre-provisioned token or environment-based authentication instead.