SVG 파일이란?

SGV는 Scalable Vector Graphics의 약자로, scale이 가능한 벡터 이미지란 뜻입니다.

말 그대로 이미지 크기를 늘리거나 줄여도 화질에 영향을 받지 않는 다는 뜻입니다.

SVG  파일의 특징

SGV 파일은 특이하게 XML 기반의 텍스트 파일의 구조를 가집니다.

.svg 라는 확장자를 가지며 브라우저에서 직접 렌더링합니다.

이때 JavaScript가 포함될 수 있고 이벤트 핸들링까지 가능하기에 XSS, CSRF 등의 공격에 사용될 수 있씁니다.

SVG 관련 주요 취약점

1. XSS

  • SGV 내부에 onload, onbegin 등 이벤트 핸들러를 삽입하여 XSS 공격이 가능합니다.
<svg xmlns="http://www.w3.org/2000/svg">
  <animate onbegin="alert(1)" attributeName="x" dur="1s" />
</svg>

 

2. JavaScript 실행

  • SVG는 내부적으로 JavaScript 실행을 허용하기에 백엔드에서 SVG를 필터링 없이 업로드하게 하면 악성 스크립트가 포함될 수 있습니다.
  • 자바스크립트를 활용하기에 DOM에 직접 영향을 주거나, 이를 이용해 사용자의 클릭을 유도하여 정보를 탈취하는 등이 가능합니다.

SVG 관련 보안

1. 서버에서 SVG를 직접 렌더링하거나 표시하지 않기.

  • 업로드된 SVG는 이미지로써만 사용하고, 직접 HTML삽입은 피함으로써 악성 코드가 실행되는걸 막을 수 있습니다

2. SVG 내용을 확인하기.

  • SVG 내에 스크립트나 이벤트 핸들러, 외부 참조 링크 등을 제거하는 다양한 필터링 도구를 사용해야합니다.

3. CSP 사용

  • 콘텐츠 보안 정책을 통해 script태그, object 태그, img 태그등을 조정해 악성 SVG 실행을 제한 해야합니다.

이외에도 파일 확장자 검증, MIME 타입 설정 등의 설정으로 보안성을 올릴 수 있습니다.

 

 

'보안 > 이론 정리' 카테고리의 다른 글

웹 해킹 - URL 필터 우회  (0) 2025.09.23
Java - 어노테이션(@)  (0) 2025.09.22
웹 해킹 - SSTI  (0) 2025.09.15
웹 해킹 - DOM-based XSS  (0) 2025.08.06
Base64에 대한 여러가지  (0) 2025.07.17

+ Recent posts