🇰🇷 한글 설명
Nuxt의 서버 아일랜드 렌더러가 useHeadSafe 입력 데이터를 직렬화할 때 안전 마커를 유지하지 못하는 취약점입니다. 공격자가 제어하는 데이터가 .server.vue 컴포넌트나 NuxtIsland를 통해 전달될 경우, 허용 목록에서 제거되어야 할 이벤트 핸들러나 스크립트가 실행되어 저장형 XSS가 발생할 수 있습니다.
💡 쉬운 설명
웹사이트를 만드는 도구인 Nuxt에서 보안 검사를 통과해야 할 위험한 코드가 걸러지지 않고 그대로 실행되는 문제입니다. 해커가 악성 코드를 심어두면 사용자가 해당 페이지를 방문할 때 코드가 실행되어 정보를 탈취할 수 있습니다.
🇺🇸 원문 (English)
Nuxt is an open-source web development framework for Vue.js. From 3.13.0 until 4.6.2, the server-island renderer serializes raw useHeadSafe entry input into the island response without preserving the safe-input marker, and NuxtIsland later inserts that input into the page head as an ordinary entry. An application that passes attacker-controlled data to useHeadSafe in a .server.vue component or page, or in a component rendered through NuxtIsland, can therefore render values normally removed by the allowlist, including event-handler attributes or executable script content, resulting in stored cross-site scripting in the application origin. This issue is fixed in version 4.6.2 .
📍 영향받는 시스템
Nuxt versions 3.13.0 up to 4.6.2
⚔️ 공격 벡터
공격자가 제어 가능한 데이터를 useHeadSafe 함수에 전달하여 서버 아일랜드 응답에 악성 스크립트를 삽입
🛡️ 대응 방법
Nuxt 버전을 4.6.2 이상으로 업데이트
🔧 검증 코드
출력된 Nuxt 버전을 확인하여 4.6.2 미만(3.13.0 이상 포함)인지 확인
npm list nuxt | grep nuxt