Hebikuzure's Tech Memo

2011年6月28日

Internet Explorer 9 セキュリティ Part 4: ユーザーを悪意のある混在コンテンツから保護する

Filed under: IE Blog — hebikuzure @ 7:16 PM

Internet Explorer 9 Security Part 4: Protecting Consumers from Malicious Mixed Content
http://blogs.msdn.com/b/ie/archive/2011/06/23/internet-explorer-9-security-part-4-protecting-consumers-from-malicious-mixed-content.aspx


久しぶりに IE Blog の記事の私訳です。 HTTP のコンテンツと HTTPS のコンテンツが混在している場合に表示される警告の意味、そして混在する事の危険性についてまとめられています。

以下の文章は IE Blog の 6/23 の記事 Internet Explorer 9 Security Part 4: Protecting Consumers from Malicious Mixed Content を hebikuzure が私的に試訳したものです。翻訳については Microsoft Corporation および日本マイクロソフト株式会社とは無関係に hebikuzure が公開情報に基づき独自に行ったものであり、この文書の内容についての文責は公開者である hebikuzure にあります。翻訳の内容および技術的内容については正確を期すよう十分な注意を払っておりますが、誤りや不正確な部分が含まれている可能性がありますので、本文書を利用される際には原文も併せてご確認ください。


Internet Explorer 9 セキュリティ Part 4: ユーザーを悪意のある混在コンテンツから保護する

2011年6月23日 午後12時09分

Web ページ上の混在したコンテンツは、特に一般ユーザーが (コーヒー ショップや空港などの無料の無線 LAN 接続のような) 信頼性の置けないパブリック ネットワークからのブラウジングに多くの時間を使う場合には、一般ユーザーを中間者 (マン イン ザ ミドル) 攻撃のリスクにさらします。攻撃者は、一般ユーザーが安全に提供されていると期待しているページのコンテンツを見る事ができますし、一般ユーザーに知られることなくコンテンツの内容を変更できるのです。こうした事態は Web サイトが、安全な HTTPS ページ内に HTTP で提供されるコンテンツを含めてしまう事で、HTTPS でのセキュリティ規約を無効にしてしまうために起きています。IE9 は皆さんが安全であり続けるために役立ちます。もし HTTPS サイトがセキュアでない HTTP コンテンツを含んでいる場合、Intetnet Explorer 9 は皆さんの情報が安全に保たれるよう、セキュアでないコンテンツをブロックします。

私の IE Blog への初期の投稿の一つで、HTTPS の Web サイトで一般的な二つの致命的な失敗について解説しました。その記事を投稿してからの 6 年間で Web は大きく変わりましたが、残念ながら依然としてこうした問題を良く見かけるのです。

混在したコンテンツの危険性を理解する

攻撃者は安全なページであってもその上の保護されていない、セキュアでない HTTP コンテンツであればどれでも "毒された" バージョンに置き換える事ができます。例えば、色々なブラウザーで https://www.youtube.com/ を訪れた時に中間者攻撃の攻撃者が介在している場合、それぞれ異なった結果になります。多くの他のブラウザーは自動的に保護されていないコンテンツを表示し、なりすましや情報漏洩を許してしまいます。例えば Chrome 13 では以下のようになります:

Internet Explorer 9 は、ページのトップ レベルに含まれるセキュアでないフレームによるコンテンツの存在はページの安全を損なうので、ブロックします:

攻撃の仕組み

HTTP 経由で提供されるページは「葉書」に良く似ています – 送信の経路上の誰でもそれに何が含まれているか見る事ができ、さらにコンテンツのメッセージを棄損したり書き換えたりできます。HTTPS 経由の Web ページは「封函された封筒」に似て、その内側のコンテンツが書き換えられたり公開されたりするのを防いでいます。この比喩に従えば、ページ上で HTTPS と HTTP が混在しているという事は封筒に封がされていないようなもので、最初から HTTPS の利点を放棄しているのです。

これは、スクリプトであれスタイルシートであれオブジェクトであれフレームであれ、ページ上のどのような部分であっても、コンテンツを参照するために HTTPS ではなく HTTP を利用する際に発生します。悪意のあるコンテンツはページを書き換え、コンテンツを盗み取り、ユーザーをある種の安全でない動作に誘います (例えば実際にはマルウェアであるのに "プラグインのダウンロードが必要です" と表示するなど) 。

この種の攻撃については、IE Test Drive の Mixed Content Demo ページでより詳しく調べる事ができます。

セキュアでないイメージ

Internet Explorer は 10 年以上に渡り混在したコンテンツの脆弱性からユーザーを保護するのに役立ってきましたが、IE9 ではどのようなタイプのセキュアでない参照がページ内に存在しているのかを識別する機能が追加されました。HTTPS ページにセキュアでないイメージが含まれていた場合、既定ではイメージの表示は許可されます。私たちは、Web サイトが頻繁にイメージについてこの種の失敗を犯している事でもたらされるユーザー エクスペリエンスを良好にするため、このようにしました。

現実に人気のある Web サイト上にセキュアでないコンテンツが非常に多い状況ですが、私たちは多くの場合、セキュアでないコンテンツは単に一つか少数の小さなイメージである事を確認しました。セキュアでないイメージは、それに対して攻撃者ができるのはイメージの内容を書き換える事だけで、ページの他の部分を攻撃するようなスクリプトを動作させる事はできないため、混在したコンテンツの中でも最もリスクの少ないタイプです。場合によっては、それらのイメージは単なる追跡ビーコンです (これはこれで、混在したコンテンツを警告するまでもなく、 IE9 の追跡防止機能によってサイレントにブロックされます) 。とは言え多くの場合、そうしたイメージは製品のロゴや、記号のアイコンのような物です。

HTTPS にセキュアでないイメージが含まれている場合、ユーザーにすべてのコンテンツが安全に提供されているのではない事を示すため、鍵のアイコンがアドレス バーから消えます。例えば下図の左側のページ (リンク) は HTTPS で提供され、これもまた HTTPS で提供されているイメージを含んでいます; 右側のページ (リンク) はセキュアでないイメージを含んでいます。イメージは表示されますが、アドレス バーの鍵のアイコンは消えています:

ユーザーはこの動作を変更し、Internet Explorer がセキュアなページでのセキュアでないイメージの表示をブロックするようにできます。ツール > インターネット オプション > 詳細設定 で、セキュリティ セクションの 他の混在したコンテンツを持つセキュリティで保護されていないイメージをブロックする のボックスをチェックします。

子孫ルールによるより良い保護

Internet Explorer 9 には、仮にトップレベル自身がセキュアでない場合でも HTTPS で提供されるフレーム内のセキュアでないコンテンツをブロックする事による、混在したコンテンツの脆弱性に対するより強力な保護が含まれています。

この保護は、HTTPS サブフレーム内のセキュアでないコンテンツは依然として危険であるため、必要な物です。それは HTTPS で提供されるフレームの Cookie や HTML ストレージ を盗み取ったり汚染したりでき、クロス サイト リクエスト フォージェリー攻撃を行え、その他の有害な行為も行えるのです。Web 開発者は時に HTTP のページで “セキュリティで保護されたコンテンツのみ表示します” というメッセージに出会って驚くことがありますが、これは特にこのテスト ページのように HTTPS フレームが非表示になっている場合です:

これについての最良の考え方は、私が「混在したコンテンツの子孫ルール」と呼んでいる物です: HTTPS で提供されるフレーム内のすべての子孫リソースは、HTTPS 経由で提供されなければならない。そうでなければブラウザーの混在したコンテンツの警告が表示される。

残念な事に、この保護は、人気のあるソーシャル ネットワークからのウィジェットを利用している多くのサイトで一時的なちょっとした問題を引き起こします。これらのウィジェットは HTTPS サブフレームを使っているのに、それ自身は HTTP サブフレームを使っています – このアーキテクチャは初歩的なクロス ドメイン コミュニケーションのメカニズムの一部として利用されています。こうしたウィジェットはセキュアでないサブフレームを取り除いて、その代わりにウィジェットのフレームと親のページとのコミュニケーションのために HTML5 のpostMessage API を利用するよう更新されつつあります。

F12 開発者ツールによる混在したコンテンツのトラブルシューティング

Internet Explorer 9 は、F12 開発者ツール コンソールを使う事で Web 開発者が混在したコンテンツの警告の原因を発見するのに役立ちます。ブラウザーがセキュリティで保護されたページ内にセキュアでないリソースを見つけると、警告メッセージがコンソールに表示されます。このメッセージには問題のあるセキュアでないリソースの URL の表示も含まれています。

この機能はページ内のどのコンテンツがセキュアでないか発見するプロセスを劇的に単純化し、IE8 を利用していた Web 開発者の頭痛の種が解消されます。開発者はセキュアでない参照を取り除く事でコンテンツの問題を修正でき、ページがブロックされず確実に鍵のアイコンが表示されるようにできます。

ヒント: ページによっては HTTP と HTTPS のどちらからでもアクセスできます。Web 開発者はユーザーが HTTPS 経由でアクセスした場合以外は HTTPS を利用したくないかもしれません。そこで "//example.com/image.gif" のような形式の相対プロトコル ハイパーリンクを利用して、リソースのあるページの元々のプロトコルを特定するテクニックがあります。ユーザーがこのような参照を含むセキュリティで保護されたページ (例えば https://example.com/page.htm) を訪れると、結果的に URI は https://example.com/image.gif. のように評価されます。その一方、ユーザーが同じページを HTTP を使って訪問すると、結果的に URI は http://example.com/image.gif. に評価されます。この方法により、サイトの開発者は混在したコンテンツの脆弱性を招くことなく、 HTTP と HTTPS のどちらでも動作するページを容易に構築できます。

IE9 のセキュリティ保護についてのその他の情報について、このシリーズの過去の記事 (パート1パート2パート3) もご覧ください。皆様の Web を安全にする手助けに感謝します。

Eric Lawrence
プログラム マネージャー

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。