Defaults.Exposed

Defaults.Exposed修正 › MIMEスニッフィング対策(X-Content-Type-Options)

MIMEスニッフィング対策(X-Content-Type-Options) の直し方

ブラウザがファイルの本当の正体を推測するのを止める1行のヘッダーです。これがないと、誰かがサイトにアップロードしたファイル—あるいはあなた自身のページ上のファイル—がブラウザに誤解され、コードとして実行されることがあり、まさにそれが、無害そうなアップロードを顧客のセッションを盗む手段に変える攻撃の一部です。

あなたのビジネスにとっての結論: このヘッダーが欠けていることは、基本が整っていないという明確でスキャン可能な兆候です。それ単独でサイトを落とすことはまれですが、ファイルアップロードフォームやユーザー生成コンテンツと組み合わさると、攻撃者が訪問者のブラウザで悪意あるコードを実行する道を開き—ログイン済みセッションを乗っ取り、カード入力やログイン情報を盗み、データ侵害の議論で不利な側に立たせます。セキュリティの中でも最も安い修正のひとつです。1行、無料、約5分。

これで失いかねないもの

なぜ重要か。 サーバーがファイルの正体をあいまいにすると、ブラウザはコンテンツの種類を推測(『スニッフ』)しようとします。攻撃者はその推測を突きます。サーバーが画像とラベルするファイルをアップロードしつつ、ブラウザが実際にはJavaScriptだと判断して実行するよう中身を細工するのです。X-Content-Type-Options: nosniff ヘッダーは、すべてのブラウザに推測をやめてサーバーの宣言した種類を信頼するよう指示し、その一群の手口を閉じます。25点に値する評点付き検査で、欠けていると中重大度と評価されます。

オーナー向けの要点

すべてのウェブブラウザには静かな前提が組み込まれています。サイトからファイルをダウンロードすると、それがどんな種類のファイルかを割り出そうとするのです。通常はサーバーを信頼します。でもサーバーがあいまいだと、ブラウザは推測します—その推測がMIMEスニッフィングと呼ばれます。

問題は、攻撃者がその推測を操れることです。サーバーが正直に無害な画像だと信じるファイルを細工しつつ、ブラウザが推測に任せると実際にはプログラムコードの一部だと判断し—それを顧客のブラウザ内で、あなたのドメイン上で実行させられます。

推測をオフにする1行の指示があります。X-Content-Type-Options: nosniff。すべてのブラウザに『推測するな—サーバーが伝えるとおり正確に信頼せよ』と伝えます。それが修正のすべてです。無料で、約5分、適切に作られたサイトでは何も壊しません。

この検査はそのヘッダーを探します。欠けていると25点を失い、中重大度の問題と評価されます—ヘッダー単独が破滅的だからではなく、その欠如が基本が固められていない確かな兆候だからです。

これが招きうる損失

これらは現実的な、ビジネスレベルの筋書きです—最悪を煽る芝居ではありません。

これらはどれも高度な攻撃者を必要としません。MIMEスニッフィングの悪用はよく理解され自動化されており—まさにそれがスキャナーが欠けたヘッダーをきっぱり指摘する理由です。

これの実体

ブラウザがファイルを受け取ると、サーバーはコンテンツの種類(例えばPNG画像ならimage/png、ウェブページならtext/html)でそれをラベル付けすることになっています。歴史的に、ブラウザはそのラベルを完全には信頼しませんでした—一部のサーバーが間違えたためです—ので、ファイルの実際のバイトを覗き見て自分で判断していました。その覗き見がMIMEスニッフィングです。

便利さが負債になりました。攻撃者がファイルをサイトに乗せ(アップロードフォーム、コメント欄、取り込んだ書類経由で)その中身に影響を与えられれば、サーバーが無害にラベル付けするが、ブラウザが実行可能なスクリプトとしてスニッフするものを細工できます。ブラウザはそれを、あなたのドメインが持つすべての信頼とともに、あなたのドメイン上で実行します。

X-Content-Type-Options: nosniffは推測を完全に取り除きます。設定すると、ブラウザは『サーバーが宣言した種類だけを使い、それ以外は使うな』と告げられます。画像とラベルされたファイルは、中身がスクリプトに見えても、画像として扱われます。攻撃経路が閉じます。

『良い』状態とは: サイトからのすべてのレスポンス—ページもアセットも—がこのヘッダーを正確に運ぶこと:

X-Content-Type-Options: nosniff

他に有効な値も調整するものもありません。CDNとサーバーの両方が付けて(nosniff, nosniffと見えて)も問題なく、合格として数えられます。

修正方法(無料・約5分)

ウェブサイトを運用している人—IT担当、ウェブ開発者、ホスティングのサポート—にこの項を渡してください。修正は無料で速く、買うものはありません。 求めるのは単純です。『サイトのすべてのページとアセットにレスポンスヘッダーX-Content-Type-Options: nosniffを追加してほしい』。

担当者向けの詳細を、代表的なプラットフォーム別に。

Cloudflare(または同様のCDN/プロキシ) — しばしば最も速く、サイト全体を一度にカバーできます:

Nginx — 該当するserver(またはlocation)ブロック内に追加:

add_header X-Content-Type-Options "nosniff" always;

alwaysキーワードはエラーレスポンスにも送られることを保証します。保存後にNginxを再読み込みします。

Apachemod_headersが有効である必要があります。サイト設定か.htaccessに:

Header always set X-Content-Type-Options "nosniff"

IIS / Windowsホスティングweb.config<system.webServer>下:

<httpProtocol>
  <customHeaders>
    <add name="X-Content-Type-Options" value="nosniff" />
  </customHeaders>
</httpProtocol>

Node / Express — すべてのレスポンスに設定:

app.use((req, res, next) => {
  res.setHeader('X-Content-Type-Options', 'nosniff');
  next();
});

(またはhelmetパッケージを使えば、これと他のいくつかのセキュリティヘッダーを初期状態で設定します。)

Google Workspace / Microsoft 365 のサイト: これらはあなたのメールと書類を管理するもので、公開ウェブサイトのホスティングではないので、ヘッダーはそこでは設定されません—ウェブサイト自体が配信される場所(CDN、ウェブサーバー、サイトビルダー)で設定します。ホスト型サイトビルダー(Squarespace、Wix、Shopifyなど)を使う場合、多くはこのヘッダーを自動で付けます。思い込まず結果を確認し、欠けていればサポートに尋ねてください。

展開後、検証する。 スキャンを再実行するか、開発者にブラウザの開発者ツール(Networkタブ → 任意のリクエストをクリック → Response Headers)でレスポンスヘッダーを確認させ、X-Content-Type-Options: nosniffがあることを確かめます。サイトを少しテストして、スタイルやスクリプトが壊れていないか確認します—正しく作られたサイトでは何も壊れません。

よくある間違い

IT担当へ渡す内容

技術的なまとめ:この検査はHTTPレスポンスヘッダーを調べ、X-Content-Type-Optionsが存在し、その(大文字小文字を区別しない)値にnosniffが含まれるとき合格します—CDNとオリジンの両方が設定する複数送信元のnosniff, nosniffの場合を含みます。欠けている、またはnosniff以外の値は不合格です。25点に値する評点付きのP2検査で、不合格時は重大度と評価され、OWASP Top 10 A05(セキュリティ設定ミス)に対応します。是正は、すべてのレスポンスに適用する単一の静的レスポンスヘッダーで、パラメータも有効な代替値もありません。サイト全体のカバーにはエッジ(CDN)で、またはエラーレスポンスにも出るようalwaysセマンティクスでウェブサーバーに設定し、レスポンスヘッダーで確認してください。

よくある質問

誰にもファイルをアップロードさせていません。それでも必要ですか?

はい、やる価値があります。このヘッダーは多層防御です。自分のサイトから配信するスクリプト・スタイルシート・データファイルをブラウザが誤読するのも止め、アップロードフォームのないサイトでもいくつかのクロスサイトスクリプティングの手口から守ります。費用はかからず、正しく設定されたサイトを壊すこともないので、飛ばす理由はありません。

これを追加するとサイトの何かが壊れますか?

ほぼありません。nosniffはサーバーがすでに送っているコンテンツの種類をブラウザに尊重させるだけです。問題を起こす唯一の場合は、サーバーがファイルを誤ってラベル付けしているとき—例えばスタイルシートやスクリプトを間違った種類で送っているとき—です。何かが壊れたら、それはnosniffが引き起こしたのではなく露わにした本物のバグで、いずれにせよ直す価値があります。展開後に一度テストしてください。

『良い』状態は実際どんなものですか?

すべてのページとアセットに付く単一のレスポンスヘッダー:X-Content-Type-Options: nosniff。これが正しい設定のすべてで、他に有効な値も調整するものもありません。

CDN(Cloudflareなど)とサーバーの両方がこれを付けています。問題ですか?

いいえ。CDNとオリジンの両方が設定して値が二重に見える(『nosniff, nosniff』)のはまったく問題なく、合格します。片方を外す必要はありません。

これを直すのにお金はかかりますか?

いいえ。修正はウェブサーバーやCDNでの1行の無料設定です。単一のヘッダーの追加に料金を取る人がいたら、それは取りすぎです。この分野でお金を払う価値があるのは、継続的な監視・多サイトのポートフォリオ表示・正式な監査だけで、修正そのものではありません。

これはContent Security Policy(CSP)とどう違いますか?

互いを補完します。CSPはどのスクリプトやリソースがそもそも読み込まれてよいかを制御し、nosniffは読み込んだファイルをブラウザが誤分類するのを止めます。両方が必要です。nosniffははるかに簡単で速く追加できるので、完全なCSPへ向かう良い最初の一歩です。