🇰🇷 한글 설명
Turborepo 2.9.14 이전 버전에서 자체 호스팅 로그인 및 SSO 브라우저 흐름이 localhost 콜백의 CSRF state 값을 검증하지 않습니다. CLI가 인증을 기다리는 동안 악성 웹페이지가 공격자가 제어하는 토큰을 로컬 콜백 서버로 전송할 수 있으며, 정상 콜백보다 먼저 수락되면 잘못된 자격증명으로 로그인이 완료될 수 있습니다. Vercel 호스팅 디바이스 인증 흐름은 영향받지 않습니다.
💡 쉬운 설명
Turborepo 도구를 자체 서버에 연결해 로그인할 때, 악성 웹사이트가 로그인 과정에 끼어들어 잘못된 계정으로 로그인되게 만들 수 있습니다. 이 문제는 2.9.14 버전에서 수정되었습니다.
🇺🇸 원문 (English)
Turborepo is a high-performance build system for JavaScript and TypeScript codebases. Prior to 2.9.14, 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. This vulnerability is fixed in 2.9.14.
📍 영향받는 시스템
Turborepo 2.9.14 미만 버전을 사용하며 자체 호스팅 원격 캐시/인증 엔드포인트에 turbo CLI로 인증하는 환경
⚔️ 공격 벡터
사용자가 로그인 중일 때 악성 웹페이지가 localhost 콜백 서버로 공격자 토큰을 전송하여 정상 콜백보다 먼저 수락되도록 하는 CSRF 방식
🛡️ 대응 방법
Turborepo를 2.9.14 이상 버전으로 업데이트하세요.
🔧 검증 코드
출력된 버전이 2.9.14 미만이면 취약하며, 2.9.14 이상이면 수정된 버전입니다.
npx turbo --version 2>/dev/null