핵심 요약
- 포트스위거 연구원이 널리 쓰이는 인기 SVG 보안 정제(Sanitizer) 라이브러리 8종을 테스트해 그중 6개를 우회하는 데 성공했습니다.
- 네임스페이스 조작, animate 태그 변조, XSLT 스타일시트 삽입 등 다양한 기법으로 정제기를 무력화하고 임의의 자바스크립트(XSS)를 실행했습니다.
- SVG가 단순 이미지가 아닌 복잡한 코드를 품을 수 있어 기존 필터링 도구들의 허점이 고스란히 드러났습니다.
요약 웹 보안 연구소 포트스위거(PortSwigger) 소속 연구원 개러스 헤이스(Gareth Heyes)가 웹 애플리케이션에서 널리 쓰이는 인기 SVG 새니타이저(위험 코드 정제 라이브러리) 8개를 전수 테스트한 결과, 무려 6개 라이브러리를 우회해 임의의 자바스크립트(XSS)를 실행하는 데 성공했다고 밝혔습니다.
SVG 파일은 벡터 이미지 형식임에도 스크립트, 이벤트 핸들러, 하이퍼링크, 애니메이션 및 임베디드 HTML까지 포함할 수 있어 많은 웹 서비스가 업로드 시 보안 정제 라이브러리를 필수로 거치도록 설계합니다. 연구원은 ChatGPT 추천 기준 유명 라이브러리 8종(DOMPurify, svg-hush, sanitize-svg, svg-sanitizer 등)을 대상으로 취약점 분석을 진행했습니다.
테스트 결과 일부 라이브러리(mattkrick/sanitize-svg 등)는 네임스페이스 혼동 기법에 취약해, 태그의 XML 네임스페이스를 XHTML로 변경하는 것만으로 브라우저가 직접 HTML로 렌더링하게 만들어 자바스크립트 URL을 실행할 수 있었습니다. 또한 대소문자 검증 오류로 인해 foreignObject 필터링을 그대로 통과하거나, animate 태그를 건드리지 않아 링크의 href 속성을 자바스크립트 URL로 변조하는 수법(Borewit/svg-sanitizer 대상)도 먹혔습니다.
특히 연구원은 외부 파일 없이 자체 포함된 XSLT 스타일시트와 data URL을 결합해 도메인 오리진 권한으로 자바스크립트를 실행하는 기법과, 파이어폭스 응답 헤더 및 사파리의 취약점을 파고드는 기법까지 공개하며 개발자들에게 SVG 업로드 및 필터링 시 각별한 주의를 당부했습니다.
Sponsored · 광고