SVG file signiture
SVG 파일은 XMl 기반의 벡터 이미지파일이다. SVG 파일포맷을 개발한 W3C1 문서에 따르면 SVG 파일은 XML내에서 반드시 SVG 네임스페이스를 선언해야 한다고 한다. 따라서 이 네임스페이스 선언부를 통해 SVG 파일을 식별할 수 있다. 그리고 해당 문자열은 아래와 같다.
<svg xmlns="http://www.w3.org/2000/svg
“an SVG namespace declaration must be provided so that all SVG elements are identified as belonging to the SVG namespace.”
출처 – https://www.w3.org/TR/SVG/struct.html#NewDocument
XML에 있어 네임스페이스는 확장 마크업 언어(Extensible Markup Language) 문서에서 사용된 element(엘리먼트, 요소) 및 attribute(속성) 이름을 URI를 통해 참조한 네임스페이스와 연결하여 간단히 정의할 수 있는 방법을 제공한다.
쉽게 말해 <myattribute>
와 같은 어떤 요소나 속성을 쓰려면 관련된 정의를 미리 해야 하는데, 미리 정의된 것들을 URI를 통해 가져다 쓸수 있다는 뜻이다.
1차로 SVG 파일인지 식별하고, 2차로 자바스크립트가 포함됐는지 식별하고, 3차로 머신러닝을 적용해 스크립트 난독화 여부를 판단한다면 의심 레벨의 정적인 진단이 가능하지 않을까?