🇰🇷 한글 설명
Vitest의 interceptorPlugin을 사용하는 개발 서버에서 unauthenticated WebSocket 클라이언트를 통해 조작된 URL을 포함한 수동 모크(manual mock)를 등록할 수 있는 취약점입니다. 공격자가 제어하는 URL이 생성된 모듈 소스에 이스케이프 처리 없이 삽입되어, 개발자의 브라우저가 해당 모듈을 로드할 때 개발 서버 오리진에서 공격자의 자바스크립트가 실행됩니다.
💡 쉬운 설명
개발 도구인 Vitest의 보안 허점을 이용해 공격자가 악성 코드를 심을 수 있는 문제입니다. 개발자가 코드를 테스트하는 과정에서 자신도 모르게 공격자의 스크립트가 실행될 위험이 있습니다.
🇺🇸 원문 (English)
Vitest is a Vite-native testing framework for JavaScript and TypeScript projects. From 2.1.0-beta.7 until 4.1.12 and 5.0.3, an unauthenticated non-browser WebSocket client that can reach a development server using interceptorPlugin can register a manual mock whose attacker-controlled url createManualModuleSource inserts unescaped into generated module source. When the developer browser loads the affected module, attacker-controlled JavaScript executes on the development-server origin. This issue is fixed in versions 4.1.12 and 5.0.3.
📍 영향받는 시스템
Vitest 2.1.0-beta.7 ~ 4.1.11 및 5.0.0 ~ 5.0.2
⚔️ 공격 벡터
인증되지 않은 WebSocket 클라이언트를 통한 악성 URL이 포함된 수동 모크 등록
🛡️ 대응 방법
Vitest를 버전 4.1.12 또는 5.0.3 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 취약한 버전 범위가 나타나면 업데이트가 필요합니다.
npm list vitest | grep -E 'vitest@(4\[\.\d+\.\d+\]|5\.0\.[0-2])'