ブラウザのCookieは常に妥協の産物でした。数十年前のウェブサーフィンはステートレスで、あるページと次のページの間には関連性がありませんでした。Cookieは、サーバーが(他の可能性の中でも)ブラウザが受け入れ可能なトークンを送信し、その後の各リクエストで返すことで、サーバーがブラウザを記憶できるセッションを確立することを可能にしました。しかし、Cookieによってもたらされる連続性は、プライバシー漏洩を引き起こす可能性を秘めていました。
プライバシーに対する新たな攻撃は、ブラウザのサードパーティCookieを許可する機能を悪用するものです。サードパーティCookieは、訪問先のサイトから配信されるものではなく、他のサイトから配信されるスクリプトやコンテンツによって使用されます。サードパーティCookieは、他のサイトでホストされているスクリプトやその他のメディアを提供する広告技術によって最も一般的に使用され、Cookieを使用してユーザーを追跡します。
しかし、より侵害性の低い目的にも使用されています。例えば、カリフォルニア大学バークレー校の図書館システムは、プロキシ経由でライセンスされたリソースの利用状況を追跡するためにサードパーティCookieを使用しています。しかし、広告関連での使用を考慮し、ブラウザメーカーは数年前に、ユーザーの選択によりサードパーティCookieを無効化できる機能を追加しました。これにより、サイトの機能が損なわれたり、利用できなくなったりすることがあります。広告ネットワークもこの制限を回避する方法を学びました。
この新たな攻撃は、すべてのブラウザでサードパーティCookieを即座に無効にし、必要な場合にのみ有効にし、人々がCookieを受け入れなくなったことによる影響を商業ウェブサイトが対処できるようにすべきだと主張しています。必ずしも広告をブロックするわけではなく、ほとんどの場合、テキストや動画の配信に支障が出ることもありませんが、導入はずっと前から望まれていました。これは、現時点で十分に起こり得る攻撃を軽減する唯一の方法です。
オーシャンズ 00000011
この脆弱性を発見した研究者たちは、この脆弱性を「HEIST」と名付けました。これは、彼らが最近Black Hatカンファレンスで発表した論文のタイトル「HTTP暗号化情報はTCPウィンドウを通じて盗まれる可能性がある」に由来しています。難解に聞こえるかもしれませんが、説明は簡単です。HEISTは、あらゆる最新ブラウザとあらゆるプラットフォームのブラウザ機能を悪用します。
要約すると、このエクスプロイトは攻撃者にユーザーを偽装させることはできませんが、ユーザーがログアウトしていないウェブサイトや、短期間のセッション維持に使用されるCookie(ウェブメールなど)の有効期限が切れていないウェブサイトに表示される個人情報を抽出できます。これにはクレジットカード番号や病状などが含まれる可能性がありますが、現状では、クレジットカード番号の長さやメールアドレスの一般的な形式など、推測できない情報を取得することはできないはずです。
強力でインタラクティブなWebアプリをデスクトップブラウザとモバイルブラウザで実行したいという要望により、JavaScriptは年々高度化しています。現在では、Webアプリとネイティブアプリを同一プラットフォーム上で区別することがほぼ不可能な場合もあります。しかし、より強力になればなるほど、リスクも高まります。
論文の著者であるマシー・ヴァンホフ氏とトム・ヴァン・ゲーテム氏は、HEISTを用いて、スクリプトとサーバー間のインタラクティブな通信方法を改善し、開発者がインタラクションの実行時間を計測できるようにする新しいブラウザ機能を活用。ユーザーが訪問したページに読み込まれるスクリプトを介して、巧妙に作成された一連のリクエストを送信することで、HEISTはページコンテンツに関する膨大な情報を抽出する。(HEISTを使用する攻撃者は、フィッシング詐欺の手法を用いてユーザーを悪意のあるページに誘導したり、セルフサービスの広告購入を可能にする広告ネットワークを通じて、無防備なブログや企業のサイトに悪意のあるJavaScriptを挿入したりすることができる。)
著者らは、グラフィカルブラウザの黎明期からWebの基盤となっている同一オリジンポリシーに違反することなく、この攻撃を回避しています。この概念は、特定のWebページ上のスクリプトが、異なるサーバー上のコンテンツ、あるいは同じサーバーであっても異なる方法でアクセスすることを禁止します。つまり、安全に読み込まれていないhttpページには、同じサーバー上のhttps接続からデータを要求するスクリプトを含めることはできず、また、スクリプトは無関係なWebサイトから情報を取得することはできません。
このポリシーの目的は、スクリプトがユーザーの知らないうちに、また許可なく、ユーザーが接続している可能性のある他の情報にアクセスするのを防ぐことです。また、クロスサイトリクエストフォージェリ(CSRF)も防止します。CSRFとは、悪意のあるウェブページがスクリプトを実行し、ユーザーがアカウントを保有している無関係なサイトで銀行振込などの操作を実行しようとする攻撃です。ウェブサイトにもCSRF対策として様々な対策が講じられていますが、その一部はブラウザの同一オリジンポリシーに依存しています。
HEISTは、より新しく効率的なブラウザ機能と、基盤となるWebプロトコルの新しい形式を利用してサーバーリクエストを送信し、サーバー側では読み取ることはできませんが、返されるリクエストを分析・測定することで、返されるリクエストの大まかな形状を把握することができます。やり取りが暗号化されているかどうかも関係ありません。リクエストを変化させ、既知の情報を利用することで、攻撃者はブラックボックスを取得し、それを揺さぶって中身を解明することができます。例えば、誰かが(軽率にも)クレジットカード情報をメールで送って、代理で買い物をさせたとします。HEISTはWebメールホストを検索し、最終的にカード番号、有効期限、認証コードを明らかにする可能性があります。
いずれもマルウェアをインストールする必要はありません。悪意のあるページにアクセスするだけで、同じブラウザから再度ログインするために Cookie の形式でアカウント情報がキャッシュされているサイトに対して、バックグラウンドでこれらのタスクを実行できる JavaScript が実行される可能性があります。
クッキーを砕く
著者らは、このデータ漏洩を許す基盤となる通信プロトコルのいくつかの属性について、かなり悲観的な見通しを描いています。ブラウザメーカー、ウェブサイト、サーバーソフトウェア開発者、そしておそらくオペレーティングシステム開発者も、HEISTなどの攻撃が成功する可能性を低減するために、いくつかの低レベル属性を調整する必要があるでしょう。著者らは、ある問題は1996年から知られていたため、期待しすぎないように注意するよう指摘しています。
ただし、サードパーティの Cookie を無効にすると、スクリプトが、期限切れでないセッションがある可能性のある人気サイトからページを取得しようとするのを防ぐことはできませんが、セッション トークンやその他の詳細が Cookie に含まれるのを防ぐことができるため、大きなメリットがあります。
ブラウザごとにデフォルトの動作が異なり、バージョンアップしても設定が引き継がれることがよくあります。何年も前にサードパーティCookieのブロックを有効にしたか無効にしたのに、いまだにその状態のままになっている可能性があります。
新たなエクスプロイトをブロックするには、「Cookieをブロック」を「現在のWebサイトからのCookieのみ許可」に設定します。「アクセスしたWebサイトからのCookieのみ許可」がデフォルトです。
Apple は OS X 版 Safari (Safari > 環境設定 > プライバシー) と iOS 版 Safari (設定 > Safari > Cookie をブロック) で、いくつかの異なる状態を混在させています。両方のブラウザでデフォルトになっている「訪問した Web サイトからの Cookie を許可」では、サードパーティの Cookie がブロックされますが、Cookie を保存した、以前訪問したサイトからの Cookie は渡されます。この脆弱性を悪用する行為に対処するには、「現在の Web サイトからの Cookie のみを許可」に設定して、サードパーティの Cookie の送信をすべて無効にします。そうしないと、この脆弱性を悪用する行為は頻繁にアクセスするサイトからの Cookie のみを使用するため、保護が有効になっていない場合と同じ状態になります。
Chrome では、chrome://settings/content にアクセスし、「サードパーティの Cookie とサイトデータをブロック」にチェックを入れます。Chrome では、 「例外を管理」をクリックすることで、ファーストパーティ以外の Cookie を必要とする特定のサイトでの制限を回避できます。Firefox では、about:preferences#privacy にアクセスし、「履歴」メニューの「履歴にカスタム設定を使用する」を選択します。次に、「サードパーティの Cookie を受け入れる」ポップアップ メニューの「サイトからの Cookie を受け入れる」で、「訪問済みサイトから」(Safari の制限と同じ)を選択せず、「受け入れない」を選択します。
このエクスプロイトは、深刻であると同時に脆弱でもあります。つまり、あまり熟練していない攻撃者でも使用できるツールとして簡単に武器化でき、悪意のある当事者が見つける可能性のある情報の種類を予測して詳細を抽出するテストを実行できる、最もよく使用される Web サイト (Gmail やその他のいくつかの Web サイトなど) に対して最も効果的です。
大手ウェブサイトは、こうした行動パターンを検知し、識別可能な形でユーザーを保護するための独自のソリューションを導入するだろうと予想しています。サードパーティCookieを無効化し、最大の攻撃機会を遮断することは容易であるため、直ちに変更することをお勧めします。