🇰🇷 한글 설명
Vitest는 Vite 기반의 테스팅 프레임워크입니다. 4.0.17부터 4.1.6 이전, 그리고 5.0.0-beta.3 이전 버전의 Vitest Browser Mode에서는 /__vitest_test__/ 경로가 otelCarrier 쿼리 파라미터를 인라인 모듈 스크립트에 그대로 삽입하여, 조작된 브라우저 러너 URL로 Vitest 서버 출처에서 임의의 JavaScript를 실행하고 VITEST_API_TOKEN을 탈취할 수 있습니다. 이 취약점은 4.1.6 및 5.0.0-beta.3에서 수정되었습니다.
💡 쉬운 설명
테스트 도구의 웹 주소에 악성 코드를 끼워 넣으면 공격자가 개발 서버에서 코드를 실행할 수 있습니다. 이를 통해 API 인증 토큰이 빼앗길 수 있습니다.
🇺🇸 원문 (English)
Vitest is a testing framework powered by Vite. From 4.0.17 until 4.1.6 and 5.0.0-beta.3, Vitest Browser Mode served /__vitest_test__/ with the otelCarrier query parameter inserted directly into an inline module script, allowing a crafted browser-runner URL to execute arbitrary JavaScript in the Vitest server origin and recover VITEST_API_TOKEN for authenticated API calls. This issue is fixed in versions 4.1.6 and 5.0.0-beta.3.
📍 영향받는 시스템
Vitest 4.0.17 이상 4.1.6 미만 및 5.0.0-beta.3 미만 버전의 Browser Mode 사용 환경
⚔️ 공격 벡터
공격자가 조작된 otelCarrier 파라미터가 포함된 /__vitest_test__/ URL을 개발자에게 방문하게 하여 스크립트 실행 및 VITEST_API_TOKEN 탈취
🛡️ 대응 방법
Vitest를 4.1.6 이상 또는 5.0.0-beta.3 이상으로 업그레이드하고, 노출된 토큰이 있다면 즉시 재발급
🔧 검증 코드
출력된 버전이 4.0.17 이상 4.1.6 미만이거나 5.0.0-beta.3 미만이면 취약하며, 4.1.6 이상 또는 5.0.0-beta.3 이상이면 패치된 상태입니다.
npm ls vitest 2>/dev/null | grep vitest