x-content-typeの設定方法

セキュリティ

x-content-typeを指定しないと、MIMEタイプスニッフィング攻撃の標的にされる恐れがありますので、ファイルのアップロード機能を有するサイトでは設定する必要があります。

環境

OS Ubuntu 24.04.1 LTS
webServer Apache/2.4.58

確認方法

タンスのServerAnalizerを使って対象ページを確認した時に、次のように表示されている場合は対策が取られていません。
タンスのServer Analyzer (tansunohazama.sakura.ne.jp)

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

 ブラウザにはコンテンツの内容から、ファイルの種類を推測して、適切なファイルタイプに変更してレスポンスを返す機能があります。
 この機能を悪用すると、スクリプトファイルを画像ファイル等と偽ってアップロードしておき、この偽画像をダウンロードしようとした際に、ブラウザが勝手にコンテンツタイプを推測で変更し、スクリプトとしてダウンロードさせて実行させるものです。
 XSS等の攻撃に使われることがあります。
 サーバのx-content-type設定を行うことで、ブラウザがファイルタイプを勝手に修正しなくなるので、MIMEタイプスニッフィング攻撃対策となります。
 しかし、ファイルタイプを設定していなかったり、適切なファイルタイプが指定されていないファイルが表示されなくなることもあるので、設定変更にはやや注意が必要です。

修正方法

次のコマンドでapacheのconfファイルを修正してください

$ sudo nano /etc/apache2/apache2.conf

# 一番下に次の設定を追加(初期状態では項目がないので)

# add start X-Content-Type-Options 2024.10.17
Header set X-Content-Type-Options "nosniff"
# add end

Header set X-Content-Type-Options “nosniff”
 └ コンテンツタイプを嗅ぐな! ということでしょうかnosniff 以外の設定はわかりません

次のコマンドでApacheを再起動します

$ sudo systemctl restart apache2
# 再起動すれば修正完了

# 次のエラーが出る場合は、mod_headersモジュールが有効になっていないので、次のコマンドで有効にします
 Job for apache2.service failed because the control process exited with error code.
 See "systemctl status apache2.service" and "journalctl -xeu apache2.service" for details.

$ sudo a2enmod headers
 Enabling module headers.
 To activate the new configuration, you need to run:
   systemctl restart apache2
$ sudo systemctl restart apache2

確認結果

次のように表示されていれば対策が取られています。

MIMEタイプスニッフィングという攻撃があることを初めて知りましたw
色々と悪いこと考える人の発想というか執念はすごいと思うのですが、もっと他のことに能力を使えばいいと思うのは私だけでしょうか。