웹 공격 기법들

MIME Sniffing

우제혁 2023. 7. 4. 22:27

개념 

 

MIME 스니핑(MIME sniffing)은 웹 브라우저가 서버로부터 전송된 리소스의 MIME 타입을 직접 확인하지 않고, 리소스의 내용을 분석하여 자동으로 올바른 MIME 타입을 추측하는 과정.

웹 브라우저는 일반적으로 서버에서 전달되는 HTTP 응답의 Content-Type 헤더를 통해 리소스의 MIME 타입을 확인한다.

 

예를 들어, "Content-Type: image/jpeg"은 리소스가 JPEG 이미지임을 나타낸다. 그러나 MIME 스니핑은 브라우저가 이

러한 Content-Type 헤더를 신뢰하지 않고, 리소스의 내용을 직접 분석하여 MIME 타입을 추측하는 것을 의미한다.

 

 

보안 측면

악의적인 사용자가 리소스의 MIME 타입을 변조하여, 브라우저가 리소스를 다른 형식으로 인식하도록 유도할 수 있다.

이를 통해 크로스 사이트 스크립팅(XSS) 공격, 파일 다운로드 취약점 등을 악용할 수 있다.

방지

MIME 스니핑을 방지하기 위해 브라우저는 X-Content-Type-Options 헤더를 사용하여 서버에서 제공하는 MIME 타입을 무시하고, 리소스의 실제 MIME 타입을 사용하도록 지시할 수 있다.

 

따라서 X-Content-Type-Options: nosniff 헤더를 설정함으로써 브라우저는 MIME 스니핑을 비활성화하고, 서버에서 제공하는 신뢰할 수 있는 MIME 타입을 사용하여 리소스를 처리하게 됩니다. 이는 보안 측면에서 중요한 조치이다.

 

 

예시

당신이 방문하는 웹 페이지에서 JavaScript 파일을 다운로드한다고 가정

 

보통 서버는 해당 JavaScript 파일의 MIME 타입을 "application/javascript"로 설정하여 응답.

이 경우, 브라우저는 해당 파일이 JavaScript 파일임을 확인하고 적절하게 처리합니다.

그러나 MIME 스니핑은 브라우저가 서버에서 제공하는 MIME 타입을 신뢰하지 않고, 리소스의 내용을 직접 분석하여 MIME 타입을 추측.

 

예를 들어, 악의적인 사용자가 서버로부터 전달되는 JavaScript 파일의 MIME 타입을 조작하여 "text/html"로 설정할 수 있다. 이렇게 되면 브라우저는 해당 파일을 HTML로 인식하게 된다.

MIME 스니핑은 악의적인 사용자가 다양한 공격을 시도할 수 있는 틈을 만들 수 있다.

위의 예에서, 브라우저는 JavaScript 파일을 HTML로 오해하고 실행하기 때문에 크로스 사이트 스크립팅(XSS) 공격이 발생할 수 있다.

 이는 사용자의 개인정보 탈취, 세션 하이재킹 등을 포함한 다양한 보안 취약점을 악용하는 데 사용될 수 있다.



 

 

관련 자료 :

2023.07.04 - [웹 공격 기법들] - content-type를 코드에서 설정하는 법

참고 자료 : https://mimesniff.spec.whatwg.org/