Webセキュリティ強化!X-Content-Type-Options nosniffの仕組みと設定方法

こんにちは。飯塚です。
 
システム開発の脆弱性検証として、OWASP ZAP を使うことがあります。検知された各脆弱性の理解のために記事にしました。
 
対応方法はシステムの要件によっても変わりますし、絶対に脆弱性を防げると保証できるものではない点はご了承ください。

OS, Apache, OWASP ZAPのバージョン

項目 バージョン
OS Debian GNU/Linux 12 (bookworm)
Apache 2.4.XX
OWASP ZAP 2.15.0

X-Content-Type-Options Header Missing とは

MDNの説明を引用します。

HTTP のレスポンスヘッダーで、 Content-Type ヘッダーで示された MIME タイプを変更せずに従うべきであることを示すために、サーバーによって使用されるマーカーです。

このヘッダーがないと、一部のブラウザでは MIME スニッフィング攻撃をされる可能性があります。
 
参考
【ZAP】X-Content-Type-Options Header Missing
【MDN】X-Content-Type-Optionsヘッダー
【MDN】MIME スニッフィング

MIME スニッフィング攻撃とは

MIME スニッフィングとは、サーバーから受け取ったファイルのMIME タイプをブラウザが推定する仕組みです。
 
ざっくりですが、MIME スニッフィング攻撃が成立する例は下記です。

  1. PNG形式の画像に偽造したJavaScriptファイルを攻撃者がサイト内にアップロードする
  2. 攻撃者がURLに細工をしてHTMLとして読み込ませる
  3. MIME スニッフィングにより、PNGをHTMLとして読み込んで、スクリプトが実行される

 
ちなみに古いバージョンのIEといった、一部のブラウザにしかこの機能はないため、攻撃自体も成立しないとされています。

ApacheでHTTPレスポンスヘッダーの「X-Content-Type-Options」を設定する

Apache のフォルダ構成

/etc/apache2
    |-- apache2.conf
    |-- /conf-available
        |-- security.conf

Apache の対応
/conf-available/security.confX-Content-Type-Optionsヘッダー を適切に設定します。以下、設定例です。
Header set X-Content-Type-Options: "nosniff"

設定ファイルの変更なので、反映にはApacheの再起動が必要です。
systemctl restart httpd

まとめ

いかがでしょうか。
 
一部の古いブラウザでしか発生しないので、他の脆弱性と比べると情報が少なかったです。IEは廃止されていますが、ユーザーには最新バージョンのブラウザを使っていただくように周知しましょう。
 
OWASP ZAPで検知された他の脆弱性についても記事を今後書きます。参考になれば幸いです。
 
 
 
 
《関連記事》

セッションとCookieの違いとPHPでの使い方
技術
2016.4.19(Tue)

セキュリティ対策はばっちり? セッションとCookieの違いとPHPでの使い方をご紹介!

#PHP

Apache Log4jの脆弱性の仕組みと対応の必要性
技術
2021.12.24(Fri)

【図解】Apache Log4jの脆弱性の仕組みと対応の必要性、攻撃有無の確認方法(CVE-2021-44228)

#Java

セキュリティ脆弱性テストのためのプロキシツール!Burp Suiteの使い方
技術
2023.10.4(Wed)

セキュリティ脆弱性テストのためのプロキシツール!Burp Suiteの使い方

#ツール

記事をシェア
MOST VIEWED ARTICLES