.NET(C#)
[웹취약점] 누락된 X 콘텐츠 타입 옵션 (X-Content-Type-Options)
알래스카비버
2025. 7. 8. 09:41
1. 취약점 설명
누락된 X 콘텐츠 타입 옵션 취약점은 HTTP 응답 메시지 내에 nosniff 플래그가 설정된 X-Content-Type-Options 헤더가 없는 취약점입니다.
웹 브라우저는 서버에서 응답받은 파일의 MIME 타입이 불분명하거나 의심스러운 경우, 자체적으로 콘텐츠 내용을 분석해서 MIME 타입을 추측(sniffing)하는 기능을 가지고 있습니다. 이를 MIME 타입 스니핑이라고 합니다.
예시
1. 공격자가 JavaScript가 포함된 .html 파일을 .jpg로 위장해 업로드
2. 서버는 이를 image/jpeg로 응답
3. 브라우저가 MIME 스니핑을 통해 실제 내용을 분석하고 text/html로 해석
4. HTML이 렌더링되며 악성 스크립트 실행 → XSS 발생
이런 공격을 방지하기 위해 HTTP 응답 헤더에 X-Content-Type-Options: nosniff 를 설정하는 것이 권장됩니다.
2. 분석 방법
HTTP 응답 헤더를 확인했을 때 X-Content-Type-Options 가 없다면 취약한 상태입니다.
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
...
3. 해결 방법
Web.config에서 X-Content-Type-Options 헤더 설정
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
</system.webServer>