クロスサイト スクリプティング のセキュリティ問題

概要

公開日: 2000 年 2 月 2 日

トピック

摘要 摘要

問題 問題

この攻撃はどのように行われるのですか? この攻撃はどのように行われるのですか?

結果 結果

Web サイトをどのように保護すればよいのでしょうか? Web サイトをどのように保護すればよいのでしょうか?

結論 結論

免責条項 免責条項

摘要

マイクロソフト リサーチは一般的な Web サイト開発方法と Web サーバーと通信を行う際の Web ブラウザの基本的な想定に基づいた新種のセキュリティ攻撃を確認しました。このセキュリティ攻撃はクロスサイト スクリプティングと呼ばれます。これはベンダー固有の問題ではなく、現在市場で提供されている全ての Web サーバーとブラウザに影響を及ぼします。

この攻撃は HTML ページを動的に生成する Web サーバーに関わるものです。これらのサーバーがブラウザに送り返す動的なページにブラウザからの入力を埋め込む場合、これらのサーバーをだまし、動的なページにコンテンツを含めるようにして、悪意のあるスクリプトを実行させるようにすることができます。Web ブラウザはそれらの 「信頼された」 サイトについての基本的な想定、そしてよく訪れる Web サイトとの持続状態を保存するために使われるクッキーにより、この問題が永続的に発生する可能性があります。この攻撃で、Web サイトのコンテンツが変更されることはありません。しかし、信頼されたサーバーに関連する情報コンテキストでブラウザが実行してしまう可能性のある新しい悪意のあるスクリプトを挿入することができます。

このセキュリティ問題に対処し、防ぐことは理論的に容易です。組織が直面する困難な点は次の 2 点となるでしょう。

  • 分析 : Web プログラマは Web サイトを構成する各 Web ページを分析し、潜在的なセキュリティの欠陥を発見する必要があります。
  • 修正とテスト : Web コードのカスタマイズには非常に多くのバリエーションがあるため、この時点で手助けをする自動ツールは現在ありません。手動で作業を行わなければいけないため、さらに時間がかかります。

 

問題

Web ページは単にブラウザにより表示される Web サーバーから送られたテキストだけで構成されているわけではありません。Web ページにはスクリプトと呼ばれる組込みのプログラム要素を含むことができます。これらのスクリプトはサーバーまたはクライアントで実行されます。Web サイト設計者はスクリプトを使用して、オンライン取引、動的な検索、高度なナビゲーションなどを行うことができます。

HTML で、特定の文字は 「特殊文字」 とみなされ、サーバーやブラウザは表示用の通常のテキストと機能を提供する要素とを区別します。クライアントとサーバー間の通信に、悪意のあるスクリプトを導入する特殊文字を挿入することにより、このクロスサイト スクリプティングの問題が利用されます。

この脆弱性は Web サーバーが動的な Web ページを生成する時に発生します。例えば、サーチ エンジンが検索を行い、動的に検索結果ページを生成する時などです。生成されたコンテンツが前に述べた特殊文字を含むように細工された場合、受信したブラウザはこれらの特殊文字を有効とみなし、信頼されたソースからのものとして取り扱います。そしてブラウザは挿入されたスクリプトを実行します。

この攻撃の本質は、ブラウザが攻撃者の Web サイトではなく、スクリプトが送られてきた Web サイトのセキュリティ コンテキストで悪意のあるスクリプトを実行するということです。このようにすることで、攻撃者は標的となるサーバーとクライアントの本来セキュリティ上安全であるはずの環境内のすべてにアクセスすることができます。これがこの攻撃が 「クロスサイト」 と呼ばれる由縁です。

 

この攻撃はどのように行われるのですか?

クロスサイト スクリプト攻撃は特定の攻撃対象となる Web サイトとその Web サイトを訪れるユーザーを標的としています。この攻撃を特定の個人に対して行うことも可能ですが、攻撃者が 1 人 の Web ユーザーを標的とするために開発に努力を費やすことはほとんどありません。もっとも可能性のあるクロスサイト スクリプト攻撃の対象は E コマース サイトです。

攻撃者はまず、標的となる Web サイトを分析し、悪意のあるスクリプトと挿入方法を開発する必要があります。攻撃者がクレジット カード番号などの情報を標的となるブラウザから受信することに興味がある場合、攻撃に先駆けて受信するためのコンポーネントを開発する必要があります。

次に攻撃者は、電子メールや、見かけ上無害な Web ページに興味を引くようなコンテンツを置くなどして、Web サイト ユーザーが攻撃者と接触できるように誘導します。標的となるブラウザが攻撃者の Web サイトと接触すると、リンクはブラウザ リクエストのすべてまたは一部を標的となる Web サイトへリダイレクトし、この過程で悪意のあるスクリプトが導入されます。これは攻撃者が設定したシナリオによって、ブラウザに表示されたり、またはブラウザから隠されたりして行われます。これで、攻撃は開始されました。そしてブラウザは信頼されていないソースからのスクリプトを、信頼されたソースからのスクリプトのように実行します。この悪意のあるスクリプトはクッキーの一部として保存されることもあります。

一般的なシナリオでは、攻撃者は攻撃を受けたブラウザの何割かが、いつか標的となる Web サイトを訪問することを期待します。攻撃を受けたブラウザがこれを行うと、サーバーとクライアントが安全な一対一の環境であると信頼していても、攻撃者は希望どおりのことをできるようになります。

 

結果

クロスサイト スクリプト攻撃には潜在的に深刻な結果があります。重要な点として、この種の攻撃は既存の Web サイトを変更することが目的ではありません。安全であると思われているブラウザ環境に不正なスクリプトを挿入することを目的としています。

これらの攻撃の影響は、いたずらから犯罪行為に及ぶものまであります。サーチ エンジンはでたらめで役に立たない検索結果を返します。Web サイトを以前訪れたことのあるユーザーを認識し、そのユーザーの名前を使用して挨拶をするページなどに中傷の言葉が挿入される可能性もあります。ユーザーに失礼なメッセージで挨拶をするように変更されます。さらに深刻な場合、クレジット カード番号が認証されていない場所に送信される、機密情報を含むデータがファイアウォールの背後から取り出される、また重要なデータが破壊されるなどの問題が発生します。この攻撃が及ぼす影響の範囲は、攻撃者の能力と、どのような悪質な行動を望んでいるかによります。

 

Web サイトをどのように保護すればよいのでしょうか?

この危険性に対する対応策として、次の 2 通りの手順に従うことが必要です。

  • 短期的な対応策 : 既存の Web サイトの調査、分析、修正そしてテストを行ってください。ユーザーの入力が処理される全てのページに特殊文字のフィルタリングを行ってください。
  • 長期的な対応策 : 標準的な開発方法に、フィルタリングを含むように調整して下さい。

クロスサイト スクリプト攻撃の撃退方法は、Web サイトの入出力に対して特殊文字のフィルタリングを実装することです。この問題を解決するためには主に Web サーバー側で負担しなければなりません。一般的に Web サイトは入力か出力のどちらかをフィルタする必要がありますが、必ずしも両方とも必要ではありません。どちらをフィルタするかに関してはそれぞれ一長一短があります。これらの要因はこの問題の技術文書に説明されています。

修正するために必要となる時間と費用の他、この問題の複雑さはすべて組織によって異なります。その要因は以下の通りです。

  • Web サイトの規模
  • Web サイトを作成する開発チームの数
  • Web サイトの既存の開発方法 (テンプレートやカスケード スタイル シートの使用など)
  • 内部の開発リソースの利用可能度と能力
  • 外部の開発リソースの利用可能度と能力
  • この作業を助けるための自動化ツールが利用可能であること

 

結論

クロスサイト スクリプティング問題は Web コミュニティに重大な困難をもたらしました。この問題は 1 つの Web サーバーやブラウザに限定されません。スクリプトを使用する全ての Web 技術に影響を及ぼします。さらに、本文書ではさまざまなクロスサイト スクリプティング攻撃実行の可能性について述べました。

この問題は、既存のソフトウェアに修正プログラムを適用すれば対処できる典型的なソフトウェアのセキュリティ上の問題ではありません。Web サイトのコードの書き方は数多くあるため、現在この問題の対処の手助けとなる自動ツールはありません。対処方法は現実には手動で行われ、すべての組織にとって、通常の Web 開発ポリシーの調整が必要となります。

マイクロソフトはカーネギーメロン大学の CERT Coordination Center と インターネット コミュニティを代表するさまざまな企業と協力し、この問題を取り扱っています。この問題についてさらに詳しい情報は CERT の Web サイト http://www.cert.org または マイクロソフト セキュリティ TechCenter をご覧ください。

 

免責条項

© 2000 Microsoft Corporation. All rights reserved.

このチェックリスト内の情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation (以下「マイクロソフト」といいます) は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。