🇰🇷 한글 설명
DOMPurify 3.4.17 이전 버전에는 PARSER_MEDIA_TYPE이 application/xhtml+xml일 때 SMIL attributeName=href 가드를 우회할 수 있는 크로스 사이트 스크립팅 취약점이 있습니다. transformCaseFunc가 속성명을 소문자로 변환하지 않아 발생합니다. 공격자는 href 속성을 지정한 animate 또는 set 요소와 javascript: 값을 포함한 SVG를 제출하여, 사용자가 정화된 링크를 클릭할 때 스크립트를 실행시킬 수 있습니다.
💡 쉬운 설명
DOMPurify는 웹페이지에 입력되는 내용에서 위험한 코드를 걸러내는 라이브러리입니다. 이 취약점은 특정 조건에서 위험한 링크 코드가 걸러지지 않아, 사용자가 링크를 클릭하면 악성 스크립트가 실행될 수 있습니다.
🇺🇸 원문 (English)
DOMPurify before 3.4.17 contains a cross-site scripting vulnerability that allows attackers to bypass the SMIL attributeName=href guard when PARSER_MEDIA_TYPE is application/xhtml+xml, because transformCaseFunc does not lowercase attribute names. Attackers can submit SVG with an animate or set element using attributeName="href" and a javascript: entry in values to execute script when users click the sanitized link.
📍 영향받는 시스템
DOMPurify 3.4.17 이전 버전을 사용하는 웹 애플리케이션 (XHTML/XML 파싱 모드 사용 시)
⚔️ 공격 벡터
attributeName="href"를 가진 animate/set 요소와 javascript: 값을 포함한 악성 SVG를 입력받아 사용자가 클릭하도록 유도
🛡️ 대응 방법
DOMPurify를 3.4.17 이상 버전으로 업그레이드
🔧 검증 코드
출력된 버전이 3.4.17 미만이면 취약하므로 업그레이드가 필요하고, 3.4.17 이상이면 패치된 상태입니다.
npm ls dompurify 2>/dev/null | grep dompurify