🇰🇷 한글 설명
Serialize JavaScript는 정규표현식과 함수를 포함하는 JSON 상위 집합으로 JavaScript 값을 직렬화합니다. 7.1.3 이전 버전에서는 함수 소스 이스케이프 로직이 함수 소스 텍스트가 닫는 스크립트 접두사로 끝날 때 이를 무력화하지 못해, 공격자가 HTML script 요소를 종료하고 이후 값을 통해 페이지에 악성 마크업을 삽입할 수 있습니다. 악용하려면 spoofed toString() 등을 통해 직렬화되는 함수의 소스 텍스트를 제어해야 합니다.
💡 쉬운 설명
데이터를 웹페이지에 넣을 때 사용하는 직렬화 라이브러리의 결함으로, 특정 함수 텍스트를 통해 웹페이지에 악성 코드가 삽입될 수 있습니다. 7.1.3 이상 버전으로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
Serialize JavaScript serializes JavaScript values to a superset of JSON that includes regular expressions and functions. Prior to 7.1.3, the function-source escaping logic does not neutralize a bare closing-script prefix when attacker-influenced function source text ends exactly at that prefix. Because each function body is escaped independently, a;
by surrounding serialized output can terminate an HTML script element, and a later serialized value supplies injected markup that becomes a live element in the page. Exploitation requires control of a serialized function's source text, such as through a spoofed toString(). This issue is fixed in version 7.1.3.
📍 영향받는 시스템
serialize-javascript 7.1.3 미만 버전
⚔️ 공격 벡터
공격자가 직렬화되는 함수의 소스 텍스트(예: spoofed toString())를 제어하여 script 요소를 종료하고 악성 HTML/스크립트를 삽입하는 XSS 공격
🛡️ 대응 방법
serialize-javascript를 7.1.3 이상으로 업그레이드
🔧 검증 코드
출력된 버전이 7.1.3 미만이면 취약하며, 7.1.3 이상이면 패치된 상태입니다. 출력이 없으면 해당 패키지가 설치되지 않은 것입니다.
npm ls serialize-javascript 2>/dev/null | grep serialize-javascript