図面 (/)

技術 クロスサイトスクリプティングフィルタ

出願人 マイクロソフトテクノロジーライセンシング,エルエルシー
発明者 デービッドエー.ロススティーブンビー.リプナー
出願日 2014年10月30日 (5年4ヶ月経過) 出願番号 2014-221966
公開日 2015年3月19日 (5年0ヶ月経過) 公開番号 2015-053070
状態 特許登録済
技術分野 ストアードプログラムにおける機密保護
主要キーワード フィルタコンポーネント 状態ダイアグラム 非英数字 遠隔コントローラ シグネチャ生成 引用記号 折り返し型 チェックロジック
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2015年3月19日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題

十分なXSS軽減技術手段を適切に有していないだろうサーバに関連するXSSに対しての防御を可能とする、折り返し型クロスサイトスクリプティング(XSS)脆弱性を抑制するフィルタを提供する。

解決手段

注意深く選択されたヒューリスティクスを使用しかつURL及びPOSTデータの疑わしい部分と折り返されたページコンテンツとをマッチングさせてXSS攻撃を正確に認識する。安全と見なされるトラフィックを迅速に認識してこれを通過させ、フィルタによるパフォーマンスインパクトを最小限に維持する。非HTMLMIME型は、迅速に通過させられ、同一サイトリクエストであり得る。残りのリクエストに対しては、XSSヒューリスティクスがHTTPリクエストURLまたはPOSTデータにおいてマッチングしない限り、正規表現HTTPレスポンス全体に亘っては実行されない。

概要

背景

クロスサイトスクリプティング(XSS)は、しばしば言及されるウェブアプリケーションセキュリティ脆弱性である。XSS攻撃の目的は、攻撃者にユーザとユーザが信用するウェブサイトまたはウェブアプリケーションとの間の関係を支配可能とさせることである。

最も一般的な場合において、XSSは悪意のあるURLを含んでおり、このURLは、当該URL内に埋め込まれたクライアントスクリプトが、生成されるウェブページHTML(hypertext markup language)出力において繰り返されるように構成されている。被害者クライアントがクライアントウェブブラウザを使用して当該URLに移動した場合、その結果として生じるクライアント側スクリプトは、信頼されているサーバ共有されているセッションセキュリティ環境(security context)において実行される。仮想XSS攻撃は、以下の様に進むだろう:被害者がメールメッセージ内のリンククリックするように仕向けられる;リンクが被害者のブラウザを、良く知られておりかつ信頼されているウェブサイトらしきものに移動させる;しかし、URLリンクは悪意のあるスクリプトブロックを含む;信頼されているサイトによって形成されたウェブページは、スクリプトブロックを悪意のあるスクリプトevil.jsを含むURLからエコー(echo)して、クライアントにevil.comからのevil.jsスクリプトをローディングさせる。悪意のあるスクリプトは、ページに自らのニュース記事を表示する。被害者は、ニュース記事が信頼されているサイトからの本物の内容であると信用する。なぜならば、信頼されているサイトのドメインがブラウザのアドレスバーに表示されているからである。

信頼されているサイト上のコンテンツのなりすましは、全く害のない可能性がある。しかし、現代ウェブブラウザによって曝されているオブジェクトモデルは、さらに高度な攻撃を可能とする。コンテンツのなりすましの域を越え、これらの攻撃は:攻撃者に、遠隔的に被害者ユーザとしてウェブアプリケーションにログイン可能とさせ得るセッションクッキーを含むクッキーの盗取;悪意のあるウェブサイトへのキーボード入力モニタリング;及び、ユーザの代わりにウェブサイトにおける行為を実行することを含む(例えば、Windows(登録商標) Live MailにおけるXSS攻撃は、攻撃者に電子メールメッセージを読むこと及び転送すること、新しいスケジュール表予定を設定すること等を可能とさせる)。

近年では、ウェブサイトはインターネットを通じてウェブサイトに報告されたXSS問題点の保存記録を集め始めている。10,000を越える自主的提出されたウェブサイトに対するXSS問題点が保存記録されてきている。攻撃者は、XSS攻撃に関する保存記録を自由に調べて特定のウェブサイトにおいて使用可能である。XSSを軽減する(mitigating)従来の技術はクライアント側では使用されず文字コード、安全ライブラリ及びウェブアプリケーションスキャン技術を用いてサーバ側において使用されていた。上述したように、ウェブサイトサーバは、XSS攻撃される多種多様な可能性からの圧力下にある。さらに、提案されてきたいくつかのXSS軽減技術がクライアント側のコンポーネントを含むが、クライアント側で効果的に完全にXSS攻撃をフィルタリングすることが可能なものはなかった。

概要

十分なXSS軽減技術手段を適切に有していないだろうサーバに関連するXSSに対しての防御を可能とする、折り返し型クロスサイトスクリプティング(XSS)脆弱性を抑制するフィルタを提供する。注意深く選択されたヒューリスティクスを使用しかつURL及びPOSTデータの疑わしい部分と折り返されたページコンテンツとをマッチングさせてXSS攻撃を正確に認識する。安全と見なされるトラフィックを迅速に認識してこれを通過させ、フィルタによるパフォーマンスインパクトを最小限に維持する。非HTMLMIME型は、迅速に通過させられ、同一サイトリクエストであり得る。残りのリクエストに対しては、XSSヒューリスティクスがHTTPリクエストURLまたはPOSTデータにおいてマッチングしない限り、正規表現HTTPレスポンス全体に亘っては実行されない。

目的

以下に、本明細書において説明されるいくつかの新規な実施形態の基本的な理解を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

クロスサイトスクリプティング(XSS攻撃を処理するコンピュータ実装ステムであって、クライアントサーバとの間のトラフィックを処理する通信コンポーネントと、前記クライアントにおいて、前記トラフィックからの折り返し型XSS攻撃フィルタリングするフィルタコンポーネントと、を含み、前記フィルタリングは、少なくとも部分的に、前記クライアントから前記サーバに対するリクエストにおけるXSSヒューリスティクス識別であり、前記折り返し型XSS攻撃の疑いを示す識別と、前記クライアントにおいて前記サーバから受け取ったレスポンスにおけるコンテンツの識別であり、前記リクエストにおいて識別された前記XSSヒューリスティクスの表示が前記レスポンスにおいても存在することを確認するために、前記リクエストにおけるコンテンツをマッチングする識別と、前記レスポンスにおける前記コンテンツのフィルタリングであり、前記リクエストにおける前記コンテンツをマッチングするフィルタリングと、に基づいて行われる、ことを特徴とするシステム。

請求項2

前記通信コンポーネントは、前記サーバに対してHTTPリクエストを送信する前記クライアントのブラウザであり、かつ、前記フィルタコンポーネントは、前記XSS攻撃をフィルタリングするために、前記クライアント上で動作する、請求項1に記載のシステム。

請求項3

前記トラフィックは、HTTPリクエスト/レスポンストラフィックであり、かつ、前記フィルタコンポーネントは、前記レスポンストラフィックにおける前記XSS攻撃を確認するために、前記リクエストトラフィックを解析する、請求項1に記載のシステム。

請求項4

前記通信コンポーネントは、前記サーバにおけるファイアウォールアプリケーションであり、前記HTTPリクエスト/レスポンストラフィックを処理し、かつ、前記フィルタコンポーネントは、前記XSS攻撃をフィルタリングするために、前記ファイアウォールアプリケーションの一部として動作する、請求項3に記載のシステム。

請求項5

前記通信コンポーネントは、前記サーバでのプロキシファイアウォールアプリケーションであり、前記サーバは、前記HTTPリクエスト/レスポンストラフィックを処理するプロキシサーバまたはリバースプロキシサーバであり、かつ、前記フィルタコンポーネントは、前記XSS攻撃をフィルタリングするために、前記プロキシファイアウォールアプリケーションの一部として動作する、請求項3に記載のシステム。

請求項6

前記サーバは、特定のHTTPレスポンスヘッダに基づいて、前記レスポンスに対して前記フィルタコンポーネントを無効にする、請求項1に記載のシステム。

請求項7

前記フィルタコンポーネントは、前記サーバへ向けた前記クライアントの外部へのトラフィックに対してヒューリスティクスを処理して、シグネチャを生成し、かつ、前記サーバからの受信するトラフィックに対してシグネチャを処理して、前記XSS攻撃をフィルタリングする、請求項1に記載のシステム。

請求項8

前記フィルタコンポーネントは、前記XSS攻撃の発生を判定するために、前記サーバから前記クライアントへの前記レスポンスにおいて、置換のための1または複数の無効文字列を選択する、請求項1に記載のシステム。

請求項9

前記フィルタコンポーネントは、前記サーバからの受信するトラフィックに対して1または複数のシグネチャを処理して、前記XSS攻撃の発生を判定し、かつ、前記攻撃は、MIME型を有する前記受信するトラフィックのコンテンツに基づく、請求項1に記載のシステム。

請求項10

前記フィルタコンポーネントは、スクリプトエンジンへの全ての入力を処理し、スクリプトブロックが認識された場合に、前記フィルタコンポーネントは、リクエストに対するオリジナルの外部へのトラフィックをスキャンして、実行されようとしているスクリプトを発見し、かつ、前記スクリプトの前記スクリプトブロックとのマッチングに基づいて、前記スクリプトブロックをフィルタリングする、請求項1に記載のシステム。

請求項11

XSS攻撃を処理するコンピュータ実装システムであって、クライアントとサーバとの間のリクエスト及びレスポンスを処理するクライアントブラウザと、レスポンストラフィックからの折り返し型XSS攻撃をフィルタリングするための前記クライアントブラウザの一部としてのフィルタコンポーネントと、を含み、前記フィルタリングは、少なくとも部分的に、前記リクエストにおけるXSSヒューリスティクスの識別であり、前記折り返し型XSS攻撃の疑いを示す識別と、前記レスポンスにおけるコンテンツの識別であり、前記リクエストにおいて識別された前記XSSヒューリスティクスの表示が前記レスポンスにおいても存在することを確認するために、前記リクエストにおけるコンテンツをマッチングする識別と、に基づいている、ことを特徴とするシステム。

請求項12

コンピュータ読取り可能な媒体であって、前記媒体は信号ではなく、折り返し型のXSS攻撃をフィルタリングするためのインストラクション保管しており、サーバにリクエストを送信するステップと、前記サーバからレスポンスを受信するステップと、折り返し型XSS攻撃としての前記レスポンスをフィルタリングするステップと、を含み、前記フィルタリングするステップは、少なくとも部分的に、前記リクエストにおけるXSSヒューリスティクスの識別であり、前記折り返し型XSS攻撃の疑いを示す識別と、前記レスポンスにおけるコンテンツの識別であり、前記リクエストにおいて識別された前記XSSヒューリスティクスの表示が前記レスポンスにおいても存在することを確認するために、前記リクエストにおけるコンテンツをマッチングする識別と、に基づいている、ことを特徴とするコンピュータで読取り可能な媒体。

請求項13

前記インストラクションは、さらに、前記リクエストの疑わしい部分を折り返されたウェブページコンテンツとマッチングするステップと、を含み、前記レスポンス内にXSS攻撃が存在するかを判定する、請求項12に記載のコンピュータで読取り可能な媒体。

請求項14

前記リクエストは、1または複数のURLまたはPOSTデータを含む、請求項12に記載のコンピュータで読取り可能な媒体。

請求項15

前記インストラクションは、さらに、正規表現を使用するステップと、を含み、前記リクエストの前記1または複数のURLまたはPOSTデータ内の文字の特定のパターンを認識する、請求項14に記載のコンピュータで読取り可能な媒体。

請求項16

前記インストラクションは、さらに、非HTMLMIME型及び同一サイトリクエストをフィルタ処理及びシグネチャ生成無しに通過させるステップと、を含む、請求項12に記載のコンピュータで読取り可能な媒体。

請求項17

前記インストラクションは、さらに、リファラヘッダの完全に記述したドメイン名と取得されたURLの完全に記述したドメイン名とを比較することによって前記リクエストのリファラヘッダをチェックするステップと、マッチングしなかった場合、または、リファラヘッダが存在しないかもしくは空である場合に、前記リクエストをフィルタリングするステップと、を含む、請求項12に記載のコンピュータで読取り可能な媒体。

請求項18

前記インストラクションは、さらに、1または複数の無効文字を選択して、前記1または複数の無効文字をヒューリスティクスに挿入するステップと、を含み、前記レスポンスの処理において、変更に関する前記リクエスト内の疑わしい文字を認識する、請求項12に記載のコンピュータで読取り可能な媒体。

請求項19

前記インストラクションは、さらに、前記ヒューリスティクスによって定義された前記リクエスト内の文字の特定のパターンのマッチングに基づいて、ヒューリスティクスからシグネチャを生成するステップと、を含む、請求項12に記載のコンピュータで読取り可能な媒体。

請求項20

前記インストラクションは、さらに、シグネチャを使用して前記レスポンスをスキャンするステップと、前記シグネチャに基づいて、無効置換文字を使用して前記レスポンスを無効にするステップと、クライアントブラウザに前記レスポンスを返送するステップと、を含む、請求項12に記載のコンピュータで読取り可能な媒体。

技術分野

0001

本発明は、クロスサイトスクリプティングフィルタに関する。

背景技術

0002

クロスサイトスクリプティング(XSS)は、しばしば言及されるウェブアプリケーションセキュリティ脆弱性である。XSS攻撃の目的は、攻撃者にユーザとユーザが信用するウェブサイトまたはウェブアプリケーションとの間の関係を支配可能とさせることである。

0003

最も一般的な場合において、XSSは悪意のあるURLを含んでおり、このURLは、当該URL内に埋め込まれたクライアントスクリプトが、生成されるウェブページHTML(hypertext markup language)出力において繰り返されるように構成されている。被害者クライアントがクライアントウェブブラウザを使用して当該URLに移動した場合、その結果として生じるクライアント側スクリプトは、信頼されているサーバ共有されているセッションセキュリティ環境(security context)において実行される。仮想XSS攻撃は、以下の様に進むだろう:被害者がメールメッセージ内のリンククリックするように仕向けられる;リンクが被害者のブラウザを、良く知られておりかつ信頼されているウェブサイトらしきものに移動させる;しかし、URLリンクは悪意のあるスクリプトブロックを含む;信頼されているサイトによって形成されたウェブページは、スクリプトブロックを悪意のあるスクリプトevil.jsを含むURLからエコー(echo)して、クライアントにevil.comからのevil.jsスクリプトをローディングさせる。悪意のあるスクリプトは、ページに自らのニュース記事を表示する。被害者は、ニュース記事が信頼されているサイトからの本物の内容であると信用する。なぜならば、信頼されているサイトのドメインがブラウザのアドレスバーに表示されているからである。

0004

信頼されているサイト上のコンテンツのなりすましは、全く害のない可能性がある。しかし、現代ウェブブラウザによって曝されているオブジェクトモデルは、さらに高度な攻撃を可能とする。コンテンツのなりすましの域を越え、これらの攻撃は:攻撃者に、遠隔的に被害者ユーザとしてウェブアプリケーションにログイン可能とさせ得るセッションクッキーを含むクッキーの盗取;悪意のあるウェブサイトへのキーボード入力モニタリング;及び、ユーザの代わりにウェブサイトにおける行為を実行することを含む(例えば、Windows(登録商標) Live MailにおけるXSS攻撃は、攻撃者に電子メールメッセージを読むこと及び転送すること、新しいスケジュール表予定を設定すること等を可能とさせる)。

0005

近年では、ウェブサイトはインターネットを通じてウェブサイトに報告されたXSS問題点の保存記録を集め始めている。10,000を越える自主的提出されたウェブサイトに対するXSS問題点が保存記録されてきている。攻撃者は、XSS攻撃に関する保存記録を自由に調べて特定のウェブサイトにおいて使用可能である。XSSを軽減する(mitigating)従来の技術はクライアント側では使用されず文字コード、安全ライブラリ及びウェブアプリケーションスキャン技術を用いてサーバ側において使用されていた。上述したように、ウェブサイトサーバは、XSS攻撃される多種多様な可能性からの圧力下にある。さらに、提案されてきたいくつかのXSS軽減技術がクライアント側のコンポーネントを含むが、クライアント側で効果的に完全にXSS攻撃をフィルタリングすることが可能なものはなかった。

0006

以下に、本明細書において説明されるいくつかの新規な実施形態の基本的な理解を提供するための簡単な概要を記載する。この概要は、拡張的な概要ではなく、主要/重要な要素を特定する意図はなく、それらの範囲を画定する意図もない。本概要は、後に提供されるさらに詳細な説明の前置きとして単純な態様でいくつかのコンセプトを提供することのみを目的としている。

0007

開示されているクロスサイトスクリプティング(XSS)軽減技術は、今日存在するXSS脆弱性を除去するクライアント側フィルタインストールすることによって、完全にクライアントに重点を置いている。専らクライアント側で機能するXSSフィルタリングは、ウェブブラウザに、十分なXSS低減環境が適切に整っていないだろうサーバに関与するXSSに対して防御することを可能とさせる。現在の動的なウェブサイトにおけるXSSの拡散的な性質が、このことを必要としている。

0008

この技術は、折り返されたページ内容とURL及びPOSTデータの疑わしい部分とのマッチングによってXSS攻撃を正確に認識する。フィルタによって使用される技術は、安全と見なされるトラフィックを迅速に認識して通過させ、フィルタからのパフォーマンスインパクト(performance impact:パフォーマンスへの影響)を最小限に維持する。非HTMLMIMEタイプは、同一サイト(same−site)であるリクエストと同様に迅速に通過させられ得る。残りのリクエストに関しては、正規表現(他の文字列にマッチングさせるために使用される英数字の文字列)は、XSSヒューリスティクス(Huristics)がHTTPリクエストURLにおいてマッチングした場合を除いて、フルHTTPレスポンスに亘って実行されない。

0009

このフィルタは、他の場合では現れない新しいXSS脆弱性を開かない方法でXSS攻撃を無効化する。さらに、このフィルタは、良性な内容がXSS攻撃としてフラグ付けされる疑わしい事象において、ウェブブラウジング経験に悪影響を与えない方法でXSSを無効化する。

0010

フィルタへの入力は、フルHTTPリクエスト/レスポンストラフィックである。従って、代替実施例において、この技術は、ウェブプロキシサーバまたはウェブサーバにおいて機能し得る。この場合、フィルタは、特定のアプリケーションレベルの知識無しにXSSブロックが可能なジェネリックなウェブアプリケーションファイアウォールとして機能する。

0011

上記目的及び関連する目的を達成するため、いくつかの実例的特徴が、以下の説明及び添付の図面に関連して本明細書内で説明される。しかし、これらの特徴は、本明細書で説明される原理を用いることが可能である様々な態様のうちのいくつかを示したものに過ぎず、全ての特徴及びその均等物を含むことを意図している。他の利点及び新規な特徴は、添付の図面とともに以下の詳細な説明から明らかになるだろう。

図面の簡単な説明

0012

クロスサイトスクリプティング(XSS)攻撃をフィルタリングするシステムを示す図である。
XSSフィルタリングロジックのさらに詳細なブロックダイアグラムを示す図である。
新たな脅威が検出された際に使用されて展開され得るヒューリスティクスのセットの一例を示す図である。
XSS攻撃をフィルタリングするフィルタコンポーネントを含むブラウザ実装例を示す図である。
サーバにフィルタリングロジックを適用しているサーバ実装例を示す図である。
プロキシサーバにフィルタリングロジックを適用しているサーバの実装例を示す図である。
折り返し型XSS攻撃をフィルタリングするコンピュータに実装される方法を示す図である。
XSSフィルタを使用する例示の方法を示す図である。
開示されたアーキテクチャに従ってXSSフィルタリングを実行可能なコンピューティングシステムのブロックダイアグラムを示す図である。
折り返し型XSS攻撃のフィルタリングのための例示のコンピューティング環境の概略ブロックダイアグラムを示す図である。

実施例

0013

開示されるアーキテクチャは、完全にクライアントに重点を置く、折り返し型クロスサイトスクリプティング(XSS)軽減フィルタリング技術である。フィルタは、パフォーマント(performant)であり、互換性がありかつ安全である。互換性は、部分的にはウェブサイトの破壊を防ぐフィルタをいう。ブラウザは、デフォルト利用可能な特徴としてフィルタリング技術を使用して、関連するユーザを保護する能力を提供する。従って、フィルタが少数であってもウェブサイトを壊してしまう場合、フィルタがデフォルトで使用可能な特徴として実装されるのは困難であるかまたは不可能である。

0014

クライアント側のフィルタは、適切に十分なXSS軽減手段を有していないサーバに関連するXSS攻撃に対する防御を行う。この技術は、ヒューリスティクス及びヒューリスティックに生成されたシグネチャ(signature)を使用して、URL及びPOSTデータの疑わしい部分と折り返されたページコンテンツとをマッチングすることによってXSS攻撃を正確に識別する。フィルタは、安全とみなされるトラフィックを迅速に認識して通過させ、クライアント処理におけるフィルタのパフォーマンスインパクトを最小限にする。クライアント側のXSSフィルタは、ブラウザからウェブサーバへの特定のMIMEタイプのHTTPリクエスト及びHTTPレスポンスを監視可能である。非HTML(hypertext markup language)MIME(multipurpose Internet mail extentions)タイプは、同一サイトであるリクエストと同様に迅速に通過させられ得る。残りのリクエストに関して、正規表現は、XSSヒューリスティクスがHTTP(hypertext transfer protocol)リクエストURLにおいてマッチングしない限り、フルHTTPレスポンスに亘っては実行されない。

0015

ここで、添付の図面を参照する。図面において、全体に亘って同じ参照符号は同等な要素を示すのに使用される。以下の記述においては、説明のために、全体の理解をもたらすべく様々の具体的な詳細が示される。新規な実施形態がこれらの具体的な詳細無しに実施され得ることは明らかである。他の例においては、説明を容易にするために周知の構造及び周知のデバイスがブロックダイアグラムの形式で示される。

0016

図1は、XSS攻撃をフィルタリングするシステム100を示している。システム100は、クライアント104とサーバ106との間のトラフィックを処理するクライアント104の通信コンポーネント102と、XSSフィルタリングロジック110を使用して、トラフィックからの折り返し型XSS攻撃をフィルタリングするフィルタコンポーネント108と、を含む。通信コンポーネント102は、サーバ106にHTTPリクエストの形式でトラフィックを送信するブラウザであり得、クライアント104において動作しているフィルタコンポーネント108は、返送トラフィックからのXSS攻撃をフィルタリングする。当該攻撃はHTTPレスポンスの一部である。

0017

完全にクライアント104においてフィルタリングがなされる場合、通信コンポーネント102は、HTTPリクエストをサーバ106に送信するクライアントのブラウザであり、フィルタコンポーネント108は、クライアント104において動作してXSS攻撃をフィルタリングする。サーバ側の実装例が以下に説明される。

0018

トラフィックはHTTPリクエスト/レスポンストラフィックである可能性があり、フィルタコンポーネント108は、リクエストトラフィックを解析して、レスポンストラフィックにおけるXSS攻撃を確認する。このことは、フィルタコンポーネント108がリクエストトラフィックのリファラヘッダ(referer header)を解析することによってなされ得る。フィルタコンポーネント108は、ヒューリスティクスを有し、当該ヒューリスティクスをサーバ106へ向けたクライアント104の外部へのトラフィック(例えば、HTTPリクエスト)に対して処理し、シグネチャを生成し、サーバ106からの受信するトラフィック(例えば、HTTPレスポンス)に対するシグネチャを処理してXSS攻撃をフィルタリングする。

0019

ヒューリスティクス処理は、フィルタコンポーネント108を組み込んで1または複数の無効文字(neuter character)を選択する。HTTPレスポンスにおいて識別された無効文字は、無効置換文字置換される。換言すれば、1または複数のヒューリスティクスが、入力URL及びPOSTデータに亘って実行されてシグネチャが生成される。シグネチャ生成の処理は、無効文字を識別する処理である。そして、シグネチャは、サーバ106からの受信トラフィックに亘って実行されて、XSS攻撃の存在が判定される。このことは、本明細書でさらに詳細に説明される。1つの実装例において、フィルタコンポーネント108は、ブラウザにおいてHTMLとしてレンダリングされるレスポンスをもたらすMIME型を有する受信トラフィックのコンテンツに基づいたXSS攻撃に関する受信トラフィックを処理する。

0020

代替実装例において、フィルタコンポーネント108は、クライアントのブラウザの一部であり、ブラウザのスクリプトエンジンへの全ての入力を監視する。スクリプトブロックが認識された場合、フィルタコンポーネント108は、リクエストに関するオリジナルの外部へのトラフィック(例えば、オリジナルのURL及び/またはPOSTデータ)を再度スキャンし、実行されようとしているスクリプトを発見する。スクリプトが発見されかつ当該スクリプトがマッチングしないものである場合、当該スクリプトは同一サイトスクリプト(same−site script)であり、通過を許可され得る。しかし、当該スクリプトがマッチングするものである場合、それは折り返し型XSSであるとみなされ、この場合、当該スクリプトはフィルタリングされるかまたはさらに処理される。

0021

図2は、XSSフィルタリングロジック110のさらに詳細なブロックダイアグラムを示している。フィルタリングロジック110は、ヒューリスティクスのセット200を含むように示され、ヒューリスティクスのセット200は、ヒューリスティクス処理コンポーネント202を介して外部へのトラフィック(例えば、クライアントブラウザからの)に適用され得る。ヒューリスティクス200の処理はシグネチャ204をもたらし、シグネチャ204は、シグネチャチェックロジック206を使用して受信トラフィック(例えば、クライアントブラウザへの)に対して適用され得る。

0022

XSS解析は、2ステップの処理である。最初に、受信するリクエストトラフィック(例えば、URLまたはpostデータ)においてヒューリスティクスに基づいてシグネチャを形成し、2番目に、レスポンストラフィックに対してシグネチャを処理し、マッチングするものを発見する(リフクテッドバック(reflected back)とも称される)。換言すれば、クライアントからサーバへ達するURLまたはpostデータ(HTTPリクエスト)内のコンテンツを探索するだけではなく、HTTPレスポンス内へ同一のデータがリプレイ(replay)されているか否かも判別する。下位のフィルタは「1ステップ」であり、リクエスト内の不良は探索するが、エコーバックされ実行されるコンテンツとリクエストとをマッチングする試行は行わない。

0023

1つのXSS攻撃方法は、フィルタに二重引用符等の文字を排除させることによってフィルタを操作して、別の方法ではXSSは不可能であるXSSを可能にするものである。この攻撃を無効にする技術は、HTTPレスポンス内で変更される文字の良好な抽出を行う技術である。この正規のウェブページ以外のXSS部分だけの選択的な無効化は、ユーザへの最小限の干渉でXSSをブロックする。これは、ページのブロッキング及び/または高いレベルユーザ対話の要求とは対照的である。実行に影響する文字またはこのタイプの攻撃を可能とする文字は選択されないだろう。構文解析ツールがスクリプトに遭遇した際に、スクリプトが即時に実行されることを効果的に阻止するハッシュシンボルが使用され得る。従って、脅威は、問題となっているレスポンス内において置換されるだろう文字のインテリジェントな(intelligent)抽出によって軽減される。

0024

第2の攻撃手法は、文字がサーバへリプレイされるかまたはサーバからリプレイされる際にドロップ(drop)されるかまたは解釈されるリクエストに、文字を加えることによってフィルタを操作するものである。攻撃は、URL内に存在するスクリプトタグを含み得る。これは、実際に攻撃の一般的な形式である。従って、フィルタリングロジック110は、潜在的なスクリプトタグに関してURLまたはpostデータを解析する。このスクリプトタグがリプレイされている場合、ロジック110は、レスポンス内の同一のタグまたは同一のテキストを認識可能である必要がある。攻撃者が場違いなユニコード文字またはエクスクラメーションマーク(exclamation mark)を、例えばスクリプトタグの途中に追加可能であると判断し、サーバがこれらをリプレイする前にこれらの文字またはマークをドロップする場合、フィルタはバイパスされ得る。なぜならば、フィルタはスクリプトタグを探索するが、途中にエクスクラメーションマークを有するスクリプトタグは探索しないからである。

0025

この第2の攻撃手法を無効にする方法は、フィルタリングの第1のステージ(リクエスト)に基づいてシグネチャ204を作成すること、すなわち、シグネチャ204をHTTPレスポンス内において予期されるものに正確にマッチングするものにするのではなく、XSS攻撃の本質を形作る重要な文字にマッチングするものとするものである。換言すれば、リクエスト内への1または複数の追加の文字の挿入は、フィルタロジックの有効性を無効化しないだろう。

0026

ヒューリスティクス200は所定のセットであり、ブラウザにおいてスクリプト実行をもたらし得るスクリプトタグ及び/またはスクリプト表現のリクエストトラフィック(URLまたはpostデータ)を解析する第1のステージにおいて使用される。このような情報の識別は最終的なものではない。従って、ヒューリスティクス200において見出される情報は、HTTPレスポンスにおいてリプレイされるXSS攻撃の証拠として機能するシグネチャ204を生成するのに使用される。攻撃が時とともに進化すると、異なったヒューリスティクスがコード化されてヒューリスティクス200に追加されてこれらの新しい攻撃が認識され得る。新しいヒューリスティクスは、フィルタリングロジック110へのアップデートの形式で提供され得る。

0027

図3は、新しい脅威が検出された際に使用されて展開され得るヒューリスティクス200のセットの一例を示している。URLをスキャンするためのヒューリスティクスは、限定するわけではないが以下のものを含んでいる。

0028

ヒューリスティクス300は、(が続きその後に)が続く″または′を検出する。最初の″または′の後にはマッチングのための非英数字が続く。このことは、これらのものが誤ってURLにマッチングをすることを防止する。ヒューリスティクス302は、″;something.something=somethingelseを検出する。ヒューリスティクス304は、スクリプトブロックを明示的に検出する。ヒューリスティクス306は、″expression(″が後に続く″style″を検出する。ヒューリスティクス308は、ある表現を有するSTYLEエレメントを検出する。ヒューリスティクス310は、script src=blocksを検出する。ヒューリスティクス312は、第1の形式のjavaスクリプトURLを検出する。ヒューリスティクス314は、第2の形式のjavaスクリプトURLを検出する。ヒューリスティクス316は、vbスクリプトURLを検出する。ヒューリスティクス318は、EMBEDされたオブジェクトを検出する。ヒューリスティクス320は、デフォルトの動作を含む動作を検出する。ヒューリスティクス322は、スタイルシートを参照し得るLINKエレメントを検出する。ヒューリスティクス324は、データ結合を有するエレメントを検出する(スクリプトはXMLデータアイランド内に隠され得る)。ヒューリスティクス326は、アプレットを参照し得るAPPLETエレメントを検出する。ヒューリスティクス328は、型属性を有するOBJECTエレメントを検出する。ヒューリスティクス330は、<[TAG]ON[EVNT]=SomeFunction()...and...<[TAG]ON[EVENT]=SomeFunction()を検出し、ヒューリスティクス332は、クッキーを設定するかまたは無名コンテンツ(obscure content)型を設定し得るMETAエレメントを検出する。

0029

新しい脅威が検出された際には、他のヒューリスティクスも追加され得る。例えば、ブロックFRAMEs/IFRAMEsを検出するヒューリスティクスが提供され得る。入力の様々な置換が、必要に応じてシグネチャ生成処理においてプッシュ(push)され得る。例えば、いくつかのウェブサーバプラットフォームは、同一の名前を有するパラメータ暗黙のうちに組み合わせる。例えば、
http://microsoft.com/microsoft.asp?Name=asdf&Name=zzzzは、「asdf,zzzz」としてリプレイする名前付き因数(name variable)をもたらし得る。攻撃は、このサーバ側の動作を利用してフィルタを操作可能である。従って、フィルタは、類似のパラメータ名前収集を実行してこのサーバ側の動作を模倣する。シグネチャ生成処理におけるオリジナルのURLのプッシュに加えて、同一の名前のパラメータがある場合、フィルタはこれらを組み合わせて結果として得られたURLをシグネチャ生成プロセスにおいてプッシュする。上述の例示において、第2のURLがシグネチャ生成処理においてプッシュされる:
http://microsoft.com/microsoft.asp?Name=asdf,zzzz

0030

図4は、XSS攻撃をフィルタリングするフィルタコンポーネント108を含むブラウザ実装例400を示している。クライアントブラウザ402(通信コンポーネント)は、ウェブサーバ406にHTTPリクエスト404を送信する。フィルタコンポーネント108は、リクエスト内のURL及び/またはPOSTデータにヒューリスティクスを適用することによってリクエストを処理し、シグネチャを生成する。ヒューリスティクスが、リクエストは疑わしいと示した場合、フィルタコンポーネント108は、HTTPレスポンス408にシグネチャを適用し、折り返し型XSS攻撃をフィルタリングして排除する。

0031

代替の実施形態において、ブラウザ内のフィルタは、特定のHTTPレスポンスヘッダを送信することによって、特定のレスポンスに対するXSSフィルタを無効にすることをサーバに可能とさせる。非常に独特でかなり希な脆弱性(例えば「レスポンス分割」脆弱性)が無い限り、攻撃者がこのヘッダをスプーフィング(spoof)することは不可能であるので、攻撃者はこのフィルタを無効化することはできない。この特徴は、アプリケーション互換性手段として意図され、サーバ側XSSフィルタリングを行うウェブサイト、すなわちクライアント側のXSSフィルタがサーバに全く影響を与えてほしくないウェブサイトがブラウザ内の当該機能を無効化し得ることを保証する。

0032

図5は、サーバ実装例500を示しており、フィルタリングロジックがウェブサーバ502に適用されている。ここで、フィルタコンポーネント108は、サーバファイアウォールアプリケション504(この例においては通信コンポーネント)の一部として含まれ得る。ファイアウォールアプリケーション504は、ネットワーク508を通じたデータの通信を容易にする1または複数のサーバプロトコル506において動作する。ファイアウォールアプリケーション504とサーバ502との間のトラフィックは、HTTPリクエストトラフィック510及びHTTPレスポンストラフィック512を含み得る。フィルタコンポーネント108は、リクエストトラフィック510において動作し、ヒューリスティクスを利用してレスポンストラフィック512における処理のためのシグネチャを生成する。換言すれば、通信コンポーネントは、トラフィックを処理するサーバ502におけるファイアウォールアプリケーション504であり、フィルタコンポーネント108は、ファイアウォールアプリケーション504の一部として動作してXSS攻撃をフィルタリングする。

0033

図6は、サーバ実装例600を示しており、フィルタリングロジックがプロキシサーバ602に適用されている。ここにおいて、フィルタコンポーネント108は、プロキシサーバファイアウォール604(この例において通信コンポーネント)の一部として含まれ得る。プロキシファイアウォール604は、ネットワーク508を介したデータの通信を容易にする1または複数のサーバプロトコル506において動作する。プロキシファイアウォール604とプロキシサーバ602との間のトラフィックは、HTTPリクエストトラフィック510及びHTTPレスポンストラフィック512を含み得る。フィルタコンポーネント108は、リクエストトラフィック510において動作し、ヒューリスティクスを使用してレスポンストラフィック512における処理のためのシグネチャを生成する。換言すれば、通信コンポーネントは、トラフィックを処理するプロキシサーバ602におけるプロキシファイアウォール604であり、フィルタコンポーネント108は、プロキシファイアウォール604の一部として動作してXSS攻撃をフィルタリングする。

0034

サーバ実装例600と同一の構成は、一揃いのウェブサーバによる使用に関するリバースプロキシサーバにも適用可能である。従って、一揃いのサーバへ入ってくる全てのトラフィックは、最初にプロキシに到達し、プロキシは当該プロキシにおいてトラフィックを取り扱い得るか、またはさらなる処理のために指定されたサーバ(1または複数)にトラフィックを転送する。従って、プロキシからウェブサーバ(1または複数)に送られたリクエストは、レスポンストラフィックとともにチェックされ、仕掛けられたXSS攻撃の存在が確認され、XSS攻撃がブロックされる。

0035

以下に示すのは、開示されたアーキテクチャの新規な特徴を実行するための例示の手順の代表的な一連フローチャートである。説明の簡潔さのために、本明細書に示された1または複数の手順、例えばフローチャートまたはフローダイアグラムとして示された手順が一連の動作として示されて説明されているが、手順は、この動作の順序に限定されるものではなく、いくつかの動作は本明細書に示されかつ説明されたのと異なった順序で行われかつ/または他の動作と同時に行われ得ると理解されるべきである。例えば当業者は、手順が、一連の相互に関連する状態または事象として、状態ダイアグラム等において代替的に示され得ることを理解するべきである。さらに、手順において説明された全ての動作が新規な実装例に対して必要とされるわけでは無い。

0036

図7は、コンピュータに実装されて折り返し型XSS攻撃をフィルタリングする方法を示している。700において、リクエストはサーバに送信される。リクエストは、HTTPリクエストか、または他の適切なプロトコルに従った他のリクエストであり得る。702において、リクエストがヒューリスティクスを使用して処理されて、シグネチャが生成されるべきかが判定される。704において、レスポンスがサーバから受信される。このレスポンスは、HTTPレスポンスか、またはXSS攻撃に使用される他の同様のレスポンス型であり得る。706において、このレスポンスは、シグネチャの生成に基づいて折り返し型XSS攻撃としてフィルタリングされる。

0037

図8は、XSSフィルタを使用する例示の方法を示している。800において、HTTPレスポンスが受信される。1つのパフォーマンス志向の実装例において、フィルタはスクリプトの実行をもたらし得るMIME型を有するダウンロードされたコンテンツに対してのみ有効である。従って、802において、HTML MIME型に対してチェックが行われる。レスポンスがHTML MIME型ではない場合、フローは804に進み、HTTPレスポンスがクライアントウェブブラウザに送られる。レスポンスがHTML MIME型を含む場合、フローは802から806に進み、フィルタがHTTPリクエスト内のリファラヘッダをチェックする。同一のリファラの場合、これは同一サイトスクリティングであり、フローは804に進んでレスポンスが送られる。なぜならば、さらなるフィルタリングが実行される必要が無いからである。

0038

リファラヘッダ内の完全に記述したドメイン名が、取得されるURLの完全に記述したドメイン名とマッチングしない場合、リクエストはクロスサイトスクリプトである可能性があり、フィルタリングされる。従って、フローは806から808に進み、マッチングするヒューリスティックが発見される。マッチングするものが発見されない場合、フローは804にすすみ、ウェブブラウザにレスポンスが転送される。その後、フィルタはリクエストに関連するURL及びPOSTデータを取得し、正規表現を使用してXSS攻撃を示す特定のパターンを認識する。これらのケースインセンシティブ(case-insensitive)なパターンは、フィルタに関するヒューリスティクスである。以下は、正規表現形式のフィルタからのヒューリスティクスの例である。

0039

0040

ヒューリスティクス内の内側中括弧{}内の文字は「無効文字」と称され、後にHTTP応答内で認識され無効化される。ヒューリスティクスは、1または複数の無効文字を有し得る。ヒューリスティクスは、スクリプトタグを認識するだろう。スクリプトタグがHTML内で共通であり得るならば、URLまたはPOSTデータ内のスクリプトタグの存在は、XSS攻撃を示す。フィルタは、ブラウザにおいて使用されてクロスサイトスクリプティングをトリガし得る個々のメカニズムを、各々が認識するヒューリスティクスを含み得る。追加のメカニズムが後に認識されたならば、新しいヒューリスティクスがフィルタに追加され得る。

0041

無効文字の各々(この例の場合文字「r」)は、クロスサイトスクリプティング攻撃をブロックするためにHTTPレスポンスボディ内でフィルタによって結果的に変更されるだろう文字を示す。文字「#」は、無効置換文字として使用され得る。これは、HTMLエレメント及びHTMLエレメントが挿入されるスクリプトブロックを破壊するのに有効である。無効置換文字は、ヒューリスティクス毎ベースで設定可能である。

0042

フィルタの無効文字の抽出は、フィルタが妨害され得るか否かを判定し得る。あるヒューリスティクスに関して選択された不正な無効文字は、妨害され得るフィルタをもたらし得る。例として、無効文字としての引用記号抜き取りは、フィルタに引用符を無効化させるだろう。抜け目のない攻撃者は、このことを利用してページ上で強制的にマッチングさせて引用符を無効化し、クロスサイトスクリプティング攻撃を実際に可能とする。これ以外の方法では攻撃は不可能である。

0043

ヒューリスティクスにおけるマッチングは、必ずしもフィルタをトリガしてクロスサイトスクリプティングを検出するわけではない。しかし、マッチングは、フィルタに、HTTPレスポンスボディが分析されて、URLまたはPOSTデータが実際に出力ページに対してリプレイされたことが立証されるだろうことを示す。

0044

ヒューリスティクスがマッチングした場合、フローは808から810へ進み、フィルタはマッチングする対象の各々に対して1つのシグネチャを生成する。シグネチャは、リプレイされた疑わしい入力に関してHTTPレスポンスをスキャンするために使用され得る新しい正規表現である。無効置換文字は、シグネチャがマッチングされた後にURL内の所定の位置に一時的に置かれ、URLにおいてもはやマッチングするものが発見され得なくなるまでヒューリスティクスに関するマッチングが継続する。シグネチャは、無効置換文字を使用せずに適切に生成される。さもなければ、シグネチャは自分自身で無効置換文字を包含し、HTTPレスポンス内に存在する攻撃と正確にマッチングしないだろう。引用符、それに続く1セットの丸括弧を無効化するだろうヒューリスティクスを考える。

0045

0046

正規表現は、丸括弧の最初のセットまたは丸括弧の最後のセットにマッチングさせるのに十分に有効である。しかし、正規表現は、丸括弧の真ん中のセットをマッチングすることができない。このため、全てのシグネチャが特定のヒューリスティクスに対して識別されるまで、繰り返しのマッチング/無効化処理が行われることが求められる。

0047

ヒューリスティクスの各々によって、安全な文字のリストが提供される。スクリプトタグを検出するヒューリスティクスに関して、安全な文字は、大なり記号(>)及び小なり記号(<)並びに英数字である。安全な文字は、マッチングに重要である文字であり、かつヒューリスティクスがブロックしようとするある種の攻撃に必要な文字である。シグネチャベースの方法は、フィルタが逐語的なマッチングで単純に検索する場合にフィルタが必ずしもマッチングするものを発見しない故に用いられる。ウェブサーバは、特定の文字を偶然に除去または解釈し得る。実際にこのようにウェブサーバ動作の監視をすることは一般的であり、攻撃者はこの動作を有利に利用する。例えば、以下の様な攻撃者URLを考える。

0048

0049

サーバが入力から偶然にドル記号を除去した場合、この攻撃はマッチングしない。この種の攻撃を回避するために、逐語的テキストマッチングよりもシグネチャ手法が使用される。

0050

以下は、スクリプトタグを検出するヒューリスティクスのマッチング対象の一例である。

0051

0052

このマッチング対象に対して生成されるシグネチャは以下のものであり得る。

0053

0054

シグネチャ内の

0055

0056

の各々は、オリジナルのマッチング対象内の安全ではない文字を示している。0から10の特定されない文字列は、

0057

0058

にマッチングし得る。フローは810から812に進み、シグネチャとマッチングするものがチェックされる。特定のページに対してシグネチャが生成されていない場合、フローは812から804に進み、フィルタがページに変更無しでロードすることを許可する、すなわちXSS攻撃は検出されなかった。

0059

しかし、シグネチャが存在する場合、フローは812から814に進み、フィルタは、シグネチャの各々に関してHTTPレスポンスボディをスキャンし、シグネチャとマッチングするものの各々に関して適切な文字を無効化する。一度認識がなされると、フィルタは、中括弧内の文字によってシグネチャ内に示されるように、どの文字(1または複数)が無効化されるべきかを正確に記録する。一度全てのシグネチャがHTTPレスポンスボディに亘って実行されると、無効文字が所定の位置に置かれ、HTTPレスポンスボディはブラウザに返送される。816において、XSSが特定のURL(及び、適当ならばPOSTデータ)に関してブロックされた事実が記録され、ユーザは仕掛けられたXSS攻撃を通知される。816からフローは804に進み、804において、XSS攻撃が無効化されるだろう場合を除いて、ページは通常にレンダリングされるだろう。

0060

本願に使用されている「コンポーネント」及び「システム」は、コンピュータ関連エンティティハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアをいう。例えば、コンポーネントは、限定するものではないが、プロセッサにおいて実行されている処理、プロセッサ、ハードディスクドライブ、(光学及び/または磁気記憶媒体)複数の記憶デバイス、オブジェクト、実行可能ファイル、実行の脈絡(thread of execution)、プログラム及び/またはコンピュータであり得る。例として、サーバにおいて実行されているアプリケーション及びサーバ自体の両方がコンポーネントであり得る。1または複数のコンポーネントが、処理及び/または実行の脈絡内に存在し得、コンポーネントは、1のコンピュータ内に置かれ得るかまたは2以上のコンピュータ間に分散され得る。

0061

図9を参照すると、開示されたアーキテクチャに従ってXSSフィルタリングを実行するコンピューティングシステム900のブロックダイアグラムが示されている。システム900の様々な特徴に関して追加の説明を提供するために、図9及び以下の説明は、当該様々な特徴が実装され得る適切なコンピューティングシステム900の概要的で一般的な説明を提供することを目的としている。上述の説明は1または複数のコンピュータにおいて実行され得るコンピュータ実行可能命令の一般的な条件においてなされているが、当業者は新規な実施形態も他のプログラムモジュールとの組み合わせにおいて実装され得かつ/またはハードウェア及びソフトウェアの組み合わせとして実装可能であり得ることも理解するだろう。

0062

通常は、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造等を含む。さらに、当業者は、本発明の方法が、単一プロセッサもしくはマルチプロセッサコンピュータシステムミニコンピュータメインフレームコンピュータ、並びに、パーソナルコンピュータハンドヘルドコンピューティングデバイスマイクロプロセッサベースもしくはプログラム制御可能家電等を含む他のコンピュータシステム構成を用いて実施され得、各々が1または複数の関連するデバイスと動作可能に結合され得ることを理解するだろう。

0063

説明された特徴は、いくつかのタスクが通信ネットワークを通じて接続されているリモート処理デバイスによって実行される分散型コンピューティング環境においても実施され得る。分散型コンピューティング環境において、プログラムモジュールは、ローカル及びリモートメモリ記憶デバイス内に配され得る。

0064

コンピュータは一般的に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータよってアクセス可能な任意の市場入手可能媒体であり得、揮発性媒体及び不揮発性媒体リムーバブル媒体及び非リムーバブル媒体を含む。例示の目的であり限定するものではないが、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報の記憶の任意の方法及び技術において実装される揮発性及び不揮発性リムーバブル及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、限定するわけではないが、RAM、ROM、EEPROMフラッシュメモリもしくは他のメモリ技術CD−ROM、DVD(digital video disk)もしくは他の光学ディスク記憶装置磁気カセット磁気テープ磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または他の媒体であって、所望の情報を保存するために使用可能でありかつコンピュータによってアクセス可能な媒体を含む。

0065

図9を再度参照すると、様々な特徴を実装する例示のコンピュータシステム900は、コンピュータ902を含み、コンピュー902は、処理ユニット904、システムメモリ906及びシステムバス908を有する。システムバス908は、限定するわけではないがシステムメモリ906を含むシステムコンポーネントと処理ユニット904とのインタフェースを提供する。処理ユニット904は、様々な市場入手可能なプロセッサのいずれかであり得る。デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャも、処理ユニット904として使用され得る。

0066

システムバス908は、メモリバスメモリコントローラを有りまたは無しの)、周辺機器バス、及びローカルバスであって、様々な商用利用されているバスアーキテクチャを使用するバスをさらに相互に接続し得る様々なタイプのバス構造のいずれかであり得る。システムメモリ906は、不揮発性メモリ(不揮発性)910及び/または揮発性メモリ912(例えばRAM(random access memory))を含み得る。BIOS(basicinput/output system)は、不揮発性メモリ910(ROM、EPROM、EEPROM等)内に保存され得、BIOSは、起動中等におけるコンピュータ902内の要素間の情報の伝送を行う基本ルーチンを保存している。揮発性メモリ912は、データのキャッシュのためのスタティックRAM等の高速RAMも含む。

0067

コンピュータ902は、内蔵ハードディスクドライブ(HDD)914(EIDE、SATA等)、磁気フロッピー(登録商標)ディスクドライブFDD)916(例えば、リムーバブルディスケット918に書き込むかまたはそこから読み出しを行うもの)及び光学ディスクドライブ920(例えば、CD−ROMディスク922から読み出しを行うもの、またはDVD等の他の大容量の光学媒体からの読み出しもしくはそこへの書き込みをするもの)、をさらに含む。内蔵HDD914は、適切なシャーシにおける外部使用のために構成されても良い。HDD914、FDD916及び光学ディスクドライブ920は、それぞれHDDインタフェース924、FDDインタフェース926及び光学ドライブインタフェース928によってシステムバス908に接続され得る。外部ドライブ実装用のHDDインタフェース924は、USB(Universal Serial Bus)及びIEEE1394インタフェース技術のうちの少なくとも1つまたはこれらの両方を含み得る。

0068

ドライブ及び関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令等の不揮発性記憶装置を提供する。コンピュータ902に関して、ドライブ及び媒体は、適切なデジタルフォーマットで任意のデータの保存を行う。上述のコンピュータ可読媒体の説明が、HDD、リムーバブル磁気ディスケット(例えばFDD)、及びCDもしくはDVD等のリムーバブル光学媒体に言及しているが、ジップ(Zip)ドライブ、磁気カセット、フラッシュメモリカードカートリッジ等の、コンピュータよって可読な他のタイプの媒体も例示の動作環境において使用され得、さらにこのような媒体のいずれかが、開示されたアーキテクチャの新規な方法を実行するコンピュータ実行可能命令を含み得ることが当業者に理解されるべきである。

0069

多数のプログラムモジュールがドライブ及び揮発性メモリ912に保存され得、プログラムモジュールには、オペレーティングシステム930、1または複数のアプリケーションプログラム932、他のプログラムモジュール934、及びプログラムデータ936を含む。1または複数のアプリケーションプログラム932、他のプログラムモジュール934、及びプログラムデータ936は、通信コンポーネント102(ブラウザ等)、クライアント104、フィルタコンポーネント108、XSSフィルタロジック110、ヒューリスティクス処置コンポーネント202、ヒューリスティクス200、シグネチャ204、シグネチャチェックロジック206、ブラウザ402、サーバファイアウォール504、及びプロキシファイアウォール604を含み得る。

0070

オペレーティングシステムの全てまたは一部、アプリケーション、モジュール、及び/またはデータは、揮発性メモリ912内にもキャッシュされ得る。開示されたアーキテクチャが様々な市場入手可能なオペレーティングシステム、またはオペレーティングシステムの組み合わせとともに実装され得ることが理解されるべきである。

0071

ユーザは、1または複数の有線無線入力デバイス、例えばキーボード938及びマウス940等のポインティングデバイスを用いて、コンピュータ902にコマンド及び情報を入力し得る。他の入力デバイス(図示せず)は、マイクロフォン、IR遠隔コントローラジョイスティックゲームパッドスタイラスペンタッチスクリーン等を含み得る。これら及び他の入力デバイスは、システムバス908に接続されている入力デバイスインタフェース942を介して処理ユニット904にしばしば接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポートUSBポート、IRインタフェース等の他のインタフェースによっても接続され得る。

0072

モニタ944または他のタイプの表示デバイスも、ビデオアダプタ946等のインタフェースを介してシステムバス908に接続される。モニタ944に加えて、コンピュータは一般的に、スピーカプリンタ等の他の周辺機器出力デバイス(図示せず)を含む。

0073

コンピュータ902は、リモートコンピュータ(1または複数)948等の1または複数のリモートコンピュータとの有線及び/または無線通信を介した論理接続を使用してネットワーク環境において動作し得る。リモートコンピュータ(1または複数)948は、ワークステーションサーバコンピュータルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンタテイメント電化製品ピアデバイスまたは他の共通ネットワークノードであり得、一般的にコンピュータ902に関して説明される要素の多くまたは全てを含むが、簡潔さのためにメモリ/記憶デバイス950のみが図示されている。示された論理接続は、LAN(local area network)952及び/またはさらに大きなネットワーク、例えばWAN(wide area network)954との有線/無線接続性を有する。このようなLAN及びWANネットワーク環境は、オフィス及び会社において一般的であり、イントラネット等の企業規模広域コンピュータネットワークを容易にし、これらのネットワークの全ては、インターネット等のグローバル通信ネットワークに接続され得る。

0074

LANネットワーク環境において使用される場合、コンピュータ902は、有線及び/または無線通信ネットワークインタフェースまたはアダプタ956を介してLAN952に接続される。アダプタ956は、LAN952への有線及び/または無線通信を容易にし得、LAN952は、アダプタ956のワイヤレス機能と通信するために設けられたワイアレスアクセスポイントも含み得る。

0075

WANネットワーク環境において使用される場合、コンピュータ902は、モデム958を含む、すなわちWAN954上の通信サーバに接続されるか、またはインターネット等によってWAN954を介した通信を確立する他の手段を有する。内蔵または外部デバイスであり、有線及び/または無線デバイスであり得るモデム958は、入力デバイスインタフェース942を介してシステムバス908に接続されている。ネットワーク環境において、コンピュータ902またはその一部に関連して示されているプログラムモジュールは、リモートメモリ/記憶デバイス950内に保存され得る。示されたネットワーク接続は例示であり、コンピュータ間の通信接続を確立する他の手段も使用され得る。

0076

コンピュータ902は、無線通信内に動作可能に設けられている任意の無線デバイスまたはエンティティ、例えばプリンタ、スキャナデスクトップ及び/またはポータブルコンピュータ、ポータブルデータアシスタント通信衛星無線で検出可能なタグと関連した装置または場所(キオスクニューススタンド化粧室)の任意の一部、並びに電話と通信可能である。これらには、少なくともWi-Fi(すなわちワイヤレスフィディリティ)及びブルートゥース(Bluetooth(登録商標))無線技術を含む。従って、通信は、従来のネットワークまたは少なくとも2つのデバイス間の単純なアドホック通信のような所定の構造であり得る。Wi-Fiネットワークは、IEEE 802.11x(a、b、g等)と称される無線通信技術を使用して、安全で、信頼性があり、高速な無線接続性を提供する。Wi-Fiネットワークは、コンピュータ同士を接続するため、コンピュータとインターネットを接続するため、及びコンピュータと有線ネットワーク(IEEE802.3またはイーサネット(登録商標)を使用する)を接続するために使用され得る。

0077

図10を参照すると、折り返し型XSS攻撃をフィルタリングする例示のコンピューティング環境1000の概略ブロックダイアグラムが示されている。環境1000は、1または複数のクライアント1002を含んでいる。クライアント1002は、ハードウェア及び/またはソフトウェア(スレッド、プロセス、コンピューティングデバイス等)であり得る。例えば、クライアント1002は、クッキー(1または複数)及び/または関連する文脈情報(contextual information)を保有し得る。

0078

環境1000は、1または複数のサーバ1004も含む。サーバ1004もハードウェア及び/またはソフトウェア(スレッド、プロセス、コンピューティングデバイス等)であり得る。例えば、サーバ104はスレッドを保有して、そのアーキテクチャを使用して変換を行い得る。クライアント1002とサーバ1004との間の1つの可能な通信は、2または3以上のコンピュータプロセス間で伝送される様に成されたデータパケット形式であり得る。例えば、データパケットは、クッキー及び/または文脈情報を含み得る。環境1000は、通信フレームワーク1006(例えば、インターネット等のグローバル通信ネットワーク)を含み、通信フレームワーク1006は、クライアント1002とサーバ1004との間の通信を容易にするべく使用され得る。

0079

通信は、有線(光ファイバを含む)及び/または無線技術によって容易にされ得る。クライアント1002は、1または複数のクライアントデータストア1008に動作可能に接続され、クライアントデータストア1008は、情報をクライアント1002にローカルに保存するべく使用され得る(クッキー(1または複数)及び/または関連する文脈情報)。同様に、サーバ1004は、1または複数のサーバデータストア1010に動作可能に接続され、サーバデータストア1010は、情報をサーバ1004にローカルに保存するべく使用され得る。

0080

クライアント1002は、クライアント104を含み得、サーバ1004は、ウェブサーバ406、サーバ502及びサーバ602を含み得る。ファイアウォール504及び604は、サーバシステムにインストールされている。

0081

上述の説明は、開示されたアーキテクチャの例を含んでいる。当然ながら考えられるコンポーネント及び/または手順の組み合わせの全てを説明することは不可能であり、当業者は他の多くの組み合わせ及び配列が可能であることを理解するだろう。従って、新規なアーキテクチャは、添付の特許請求の範囲の趣旨及び範囲に含まれる全ての代替例、変更例及び変形例を包含する。さらに、「含む」は、発明を実施するための形態または特許請求の範囲において使用されている範囲において、特許請求の範囲における移行として使用される際の「含む」と同様に解釈される。

0082

上記の実施形態につき以下の付記を残しておく。
(付記1)
クロスサイトスクリプティング(XSS)攻撃を処理するコンピュータ実装システム(100)であって、
クライアントとサーバとの間のトラフィックを処理する通信コンポーネント(102)と、
前記トラフィックからの折り返し型XSS攻撃をフィルタリングするフィルタコンポーネント(108)と、
を含むことを特徴とするシステム。
(付記2)
前記通信コンポーネントが前記サーバにHTTPリクエストを送信する前記クライアントのブラウザであり、前記フィルタコンポーネントが前記クライアントにおいて動作して前記XSS攻撃をフィルタリングすることを特徴とする付記1に記載のシステム。
(付記3)
前記トラフィックがHTTPリクエスト/レスポンストラフィックであり、前記フィルタコンポーネントが前記リクエストトラフィックを解析して前記レスポンストラフィック内の前記XSS攻撃を確認することを特徴とする付記1に記載のシステム。
(付記4)
前記通信コンポーネントが前記HTTPリクエスト/レスポンストラフィックを処理する前記サーバにおけるファイアウォールアプリケーションであり、前記フィルタコンポーネントが前記ファイアウォールアプリケーションの一部として動作して前記XSS攻撃をフィルタリングすることを特徴とする付記3に記載のシステム。
(付記5)
前記通信コンポーネントが前記サーバにおけるプロキシファイアウォールアプリケーションであり、前記サーバは前記HTTPリクエスト/レスポンストラフィックを処理するプロキシサーバまたはリバースプロキシサーバであり、前記フィルタコンポーネントが前記プロキシファイアウォールアプリケーションの一部として動作して前記XSS攻撃をフィルタリングすることを特徴とする付記3に記載のシステム。
(付記6)
前記サーバが、特定のHTTPレスポンスヘッダに基づいて特定のレスポンスに対して前記フィルタコンポーネントを無効化することを特徴とする付記1に記載のシステム。
(付記7)
前記フィルタコンポーネントが、前記クライアントから前記サーバへ送信されるトラフィックに対してヒューリスティクスの処理をしてシグネチャを生成し、前記サーバから受信されるトラフィックに対して前記シグネチャを処理して前記XSS攻撃をフィルタリングすることを特徴とする付記1に記載のシステム。
(付記8)
前記フィルタコンポーネントが、前記サーバから前記クライアントへのレスポンスにおける置換に関する1または複数の無効文字を選択して、前記XSS攻撃の存在を判定することを特徴とする付記1に記載のシステム。
(付記9)
前記フィルタコンポーネントが前記サーバから受信されたトラフィックに対して1または複数のシグネチャを処理して前記XSS攻撃の存在を判定し、前記攻撃がMIME型を有する前記受信されたトラフィックのコンテンツに基づいていることを特徴とする付記1に記載のシステム。
(付記10)
前記フィルタコンポーネントがスクリプトエンジンへの全ての入力を処理し、スクリプトブロックが認識された場合に、前記フィルタコンポーネントがリクエストに関するオリジナルの送信トラフィックをスキャンして実行される直前のスクリプトを発見し、前記スクリプトと前記スクリプトブロックとのマッチングに基づいて前記スクリプトブロックをフィルタリングすることを特徴とする付記1に記載のシステム。
(付記11)
XSS攻撃を処理するコンピュータ実装システムであって、
クライアントとサーバとの間のリクエスト及びレスポンスを処理するクライアントブラウザ(402)と、
前記クライアントブラウザの一部であり、前記リクエストをヒューリスティクスを使用して解析するとともに前記レスポンスを前記ヒューリスティクスから生成されたシグネチャを使用して解析し、前記シグネチャに基づいて前記レスポンストラフィックからの折り返し型XSS攻撃をフィルタリングするフィルタコンポーネント(108)と、
を含むことを特徴とするシステム。
(付記12)
折り返し型のXSS攻撃をフィルタリングする方法であって、
サーバにリクエストを送信するステップ(700)と、
ヒューリスティクスを使用して前記リクエストを処理してシグネチャが生成されたかを判定するステップ(702)と、
前記サーバからレスポンスを受信するステップ(704)と、
前記シグネチャの前記生成に基づいて折り返し型のXSS攻撃として前記レスポンスをフィルタリングするステップ(706)と、
を含むことを特徴とする方法。
(付記13)
前記リクエストの疑わしい部分を折り返されたウェブページコンテンツとマッチングして前記レスポンス内にXSS攻撃が存在するかを判定するステップをさらに含むことを特徴とする付記12に記載の方法。
(付記14)
前記リクエストが1または複数のURLまたはPOSTデータを含むことを特徴とする付記12に記載の方法。
(付記15)
正規表現を使用して前記リクエストの前記1または複数のURLまたはPOSTデータ内の文字の特定のパターンを認識するステップをさらに含むことを特徴とする付記14に記載の方法。
(付記16)
非HTML MIME型及び同一サイトリクエストをフィルタ処理及びシグネチャ生成無しに通過させるステップをさらに含むことを特徴とする付記12に記載の方法。
(付記17)
リファラヘッダの完全に記述したドメイン名と取得されたURLの完全に記述したドメイン名とを比較することによって前記リクエストのリファラヘッダをチェックするステップと、マッチングしなかった場合またはリファラヘッダが存在しないかもしくは空の場合に前記リクエストをフィルタリングするステップと、をさらに含むことを特徴とする付記12に記載の方法。
(付記18)
1または複数の無効文字を選択して前記1または複数の無効文字を前記ヒューリスティクスに挿入して、前記レスポンスの処理において変更に関する前記リクエスト内の疑わしい文字を認識するステップをさらに含むことを特徴とする付記12に記載の方法。
(付記19)
前記ヒューリスティックスによって定義された前記リクエスト内の文字の特定のパターンのマッチングに基づいてヒューリスティクスから前記シグネチャを生成するステップをさらに含むことを特徴とする付記12に記載の方法。
(付記20)
前記シグネチャを使用して前記レスポンスをスキャンするステップと、前記シグネチャに基づいて無効置換文字を使用して前記レスポンスを無効化するステップと、クライアントブラウザに前記レスポンスを返送するステップと、をさらに含むことを特徴とする付記12に記載の方法。

0083

104クライアント
106サーバ
108フィルタコンポーネント
110 XSSフィルタリングロジック
402ブラウザ
406ウェブサーバ
502 ウェブサーバ
504ファイアウォールアプリケーション
602プロキシサーバ
604プロキシファイアウォール

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ