MIME スニッフィング
MIME スニッフィング とは何ですか?
MIME スニッフィングブラウザがレスポンスのバイト列からコンテンツタイプを推測する挙動。攻撃者にアップロードファイルをスクリプトとして実行されるリスクがある。
MIME スニッフィングは、ブラウザがレスポンスの先頭バイトを調べ、サーバーが宣言した Content-Type を上書きしてリソースを描画する歴史的機能です。アプリがユーザーアップロードファイルを誤った型で配信していると、HTML や JavaScript を含むファイルが text/html としてスニッフされ、被害者のオリジンで実行されて保存型 XSS につながります。標準的な対策は X-Content-Type-Options: nosniff を返してブラウザに宣言された型を遵守させることです。厳密な Content-Type、CSP、ユーザーコンテンツを別オリジンで配信するといった対策と併用してください。
● 例
- 01
X-Content-Type-Options: nosniff
- 02
アバターアップロードが image/png を宣言しているが中身は HTML。nosniff がないとブラウザがページとして実行する。
● よくある質問
MIME スニッフィング とは何ですか?
ブラウザがレスポンスのバイト列からコンテンツタイプを推測する挙動。攻撃者にアップロードファイルをスクリプトとして実行されるリスクがある。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
MIME スニッフィング とはどういう意味ですか?
ブラウザがレスポンスのバイト列からコンテンツタイプを推測する挙動。攻撃者にアップロードファイルをスクリプトとして実行されるリスクがある。
MIME スニッフィング はどのように機能しますか?
MIME スニッフィングは、ブラウザがレスポンスの先頭バイトを調べ、サーバーが宣言した Content-Type を上書きしてリソースを描画する歴史的機能です。アプリがユーザーアップロードファイルを誤った型で配信していると、HTML や JavaScript を含むファイルが text/html としてスニッフされ、被害者のオリジンで実行されて保存型 XSS につながります。標準的な対策は X-Content-Type-Options: nosniff を返してブラウザに宣言された型を遵守させることです。厳密な Content-Type、CSP、ユーザーコンテンツを別オリジンで配信するといった対策と併用してください。
MIME スニッフィング からどのように防御しますか?
MIME スニッフィング に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
● 関連用語
- appsec№ 496
HTTP セキュリティヘッダ
HTTPS 強制・フレーム制限・コンテンツポリシー・リファラ制御などの防御動作をブラウザに指示するレスポンスヘッダ群。
- attacks№ 240
クロスサイトスクリプティング(XSS)
他のユーザーが閲覧するページに悪意あるスクリプトを注入し、当該サイトのオリジンとして被害者のブラウザで実行させる Web 脆弱性。
- appsec№ 214
コンテンツセキュリティポリシー (CSP)
スクリプト・スタイル・フレームなどの読み込み元をブラウザに指示する HTTP レスポンスヘッダで、XSS やデータ注入攻撃の影響を抑える。
- attacks№ 541
安全でないファイルアップロード
アプリケーションがユーザー提供のファイルを適切に検証せず受け付ける Web 脆弱性で、攻撃者により悪意あるファイルがアップロードされ RCE・改ざん・情報窃取に至る。
- appsec№ 960
同一オリジンポリシー (SOP)
あるオリジンから読み込まれた文書やスクリプトが、別のオリジンのリソースとどのように相互作用できるかを制限するブラウザのセキュリティ規則。
- appsec№ 982
セキュアコーディング
防御的パターン・言語固有のルール・公認ガイドラインに従い、セキュリティ欠陥を最小化するようにソースコードを書く実践。