🇰🇷 한글 설명
Nuxt 프레임워크의 navigateTo() 함수에서 외부 URL로 이동할 때 HTML 메타 태그를 생성하는 과정에서 보안 취약점이 발견되었습니다. URL 내의 특정 특수문자가 제대로 인코딩되지 않아 공격자가 임의의 HTML이나 자바스크립트를 삽입할 수 있는 XSS 공격이 가능합니다.
💡 쉬운 설명
웹사이트가 다른 페이지로 자동으로 이동하게 만드는 기능에 허점이 있어, 나쁜 코드를 몰래 끼워 넣을 수 있는 문제입니다. 이를 통해 공격자가 사용자의 정보를 훔치거나 웹사이트를 조작할 수 있습니다.
🇺🇸 원문 (English)
Nuxt is an open-source web development framework for Vue.js. From versions 3.4.3 to before 3.21.6 and 4.0.0-alpha.1 to before 4.4.6, navigateTo() with external: true generates a server-side HTML redirect body containing a <meta http-equiv="refresh"> tag. The destination URL is only sanitized by replacing " with %22, leaving <, >, &, and ' unencoded. An attacker who can influence the URL passed to navigateTo(url, { external: true }) can break out of the content="…" attribute and inject arbitrary HTML/JavaScript that executes under the application's origin. This issue has been patched in versions 3.21.6 and 4.4.6.
📍 영향받는 시스템
Nuxt versions 3.4.3 to < 3.21.6 and 4.0.0-alpha.1 to < 4.4.6
⚔️ 공격 벡터
navigateTo(url, { external: true })에 조작된 URL을 전달하여 HTML 속성을 탈출하고 스크립트 주입
🛡️ 대응 방법
Nuxt 버전을 3.21.6 또는 4.4.6 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 Nuxt 버전을 확인하여 취약한 버전 범위(3.4.3~3.21.5 또는 4.0.0-alpha.1~4.4.5)에 해당하는지 확인합니다.
npm list nuxt | grep nuxt