説明

ドライブバイ・ファーミングに対するリファラーチェックを介したクライアント側の保護

【課題】クライアント・コンピュータシステムをドライブバイ・ファーミング攻撃から保護する方法を提供する。
【解決手段】本発明に係る方法は、HTTPヘッダーを含むHTTPリクエストをルータに送信する前に、クライアント・コンピュータシステムで前記HTTPリクエストをプロキシするステップと、前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別するか否かを判定するステップと、前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別すると判定したとき、前記HTTPリクエストをブロックするステップと、アラート通知を発生するステップとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに関するものである。より詳しくは、本発明は、コンピュータのセキュリティに関するものである。
【背景技術】
【0002】
低価格のブロードバンドルータは、コンピュータユーザが、ホームネットワークや、ワイヤレスホームネットワークを作る際によく使用されている。残念なことに、ユーザが悪意のあるウェブページを訪れることによって、そのユーザのルータは知らぬ間に悪質な攻撃を受ける。クライアント側のルータに組み込まれ得るあるタイプの悪質な攻撃は、ドライブバイ・ファーミング(drive-by pharming)攻撃と呼ばれるものであり、サービスの拒否、悪意のあるコードによる感染、又は個人情報の盗難のほか、その他の迷惑な結果をもたらす。
【発明の開示】
【課題を解決するための手段】
【0003】
本発明のある実施形態によれば、ドライブバイ・ファーミング攻撃からクライアント・コンピュータシステムを保護するための方法であって、HTTPヘッダーを含むHTTPリクエストをルータにリリースする前に、クライアント・コンピュータシステムで、前記HTTPリクエストをプロキシするステップと、前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別するか否かを判定するステップとを含み、前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別すると判定したとき、前記HTTPリクエストをブロックするステップと、アラート通知を発生するステップとをさらに含む方法を提供する。前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別しないと判定したとき、前記HTTPリクエストはリリースされる。
【0004】
本発明の別の実施形態によれば、前記方法はさらに、リリースされたHTTPリクエストをウェブブラウザに送信する前に、前記リリースされたHTTPリクエストに対するHTTPレスポンスをプロキシするステップと、前記HTTPレスポンスのコンテンツタイプを判定するステップと、前記コンテンツタイプがtext/htmlタイプ又はスクリプトタイプか否かを判定するステップとを含み、前記コンテンツタイプがtext/htmlタイプ又はスクリプトタイプであると判定されたとき、悪意のある行動を防止するために前記コンテンツを修正するステップと、前記HTTPレスポンスをリリースするステップとをさらに含む。前記コンテンツタイプがtext/htmlタイプ又はスクリプトタイプではないと判定されたとき、HTTPレスポンスはリリースされる。
【0005】
前記コンテンツタイプがtext/htmlタイプのとき、悪意のある行動を防止するために前記コンテンツを修正する前記ステップが、各HTML参照URLについてHTMLコンテンツを解析するステップと、各HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応するか否かを判定するステップとを含み、HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応すると判定されたとき、前記HTML参照URLを安全なURLに置き換えるステップと、前記HTTPレスポンスをリリースするステップとをさらに含む。ある実施形態では、ユーザへ警告が通知される。HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応しないと判定されたとき、HTTPレスポンスがリリースされる。
【0006】
前記コンテンツタイプがスクリプトタイプのとき、悪意のある行動を防止するために前記コンテンツを修正するステップが、安全なXMLHTTPリクエスト及び安全なアクティブX置換オブジェクトを定義するジャバスクリプト・オーバライドを、前記コンテンツの先頭、かつ任意のスクリプトの前に挿入するステップと、前記ジャバスクリプト・オーバライド以外のスクリプトについて前記コンテンツを解析するステップと、各スクリプトの各XMLHTTPリクエストを安全な各XMLHTTPリクエストに置き換えるステップと、各スクリプトの各オブジェクトタグをアクティブX置換オブジェクトに置き換えるステップと、前記HTTPレスポンスをリリースするステップとをさらに含む。
【0007】
本明細書で説明される実施形態は、以下の詳細な説明を添付の図面と共に参照することによって、最も良く理解されるであろう。
【発明を実施するための最良の形態】
【0008】
ルータを利用した代表的なホームネットワークにおいては、ユーザが、ウェブページのURLなどのリソースに対するリクエスト(要求)をホームネットワークのクライアント・コンピュータシステム上でウェブブラウザに入力する。ウェブブラウザは、ホームネットワーク上のコンピュータシステムについてのDNS設定を管理するルータに送信されるウェブページに対するHTTPリクエストを生成する。一般的に、ルータは、DNSルックアップを実行してリクエストされたウェブページのURLに対応するIPアドレスを割り出し、それが終わると、前記HTTPリクエストは、ウェブページをホストする対応するサーバに送信される。
【0009】
ドライブバイ・ファーミング攻撃においては、ドライブバイ・ファーミング・コードなどの悪意のあるコードを含むウェブページが、前記HTTPリクエストに対するHTTPレスポンスとして返信される。ユーザのウェブブラウザにおいて前記ウェブページを起動すると、悪意のあるコードが、ルータのIPアドレスを突き止めようとしてウェブブラウザからルータへHTTPリクエストを送信する。そして、ルータのIPアドレスを入手すると、悪意のあるコードは、ルータのウェブインタフェースに接続して、DNSレゾリューションが偽のウェブサイトにリダイレクト(出力先変更)するようにDNS設定を変更する。
【0010】
多くの場合、偽のウェブサイトの見た目は、ユーザがリダイレクトを警戒しないように、本物のウェブサイトそっくりに似せている。このことにより、ユーザが偽のウェブサイトに入力した情報、例えば個人情報及びパスワードが、攻撃者に詐取されてしまう。そして、攻撃者が、ユーザの情報を利用したデータへの不正アクセスやユーザの銀行口座から金を盗むなどの悪質な行為を行うことが可能となる。ドライブバイ・ファーミングに関する更なる情報は、シド・スタム(Sid Stamm)、ズルフィカル・ラムザン(Zulfikar Ramzan)及びマーカス・ヤコブソン(Markus Jakobsson)による論文「ドライブバイ・ファーミング(Drive-By Pharming)」(2006年12月13日)に記載されている(http://www.symantec.com/avcenter/reference/Driveby_Pharming.pdf.参照)。
【0011】
HTTPリクエストにおいては、リクエストされたリソースは通常、URL(Uniform Resource Locator)によって識別される。URLは、HTTPを介してアクセス可能なリソースの位置を指定する一連のテキストである。例えば、HTTPを用いて、URLは、「http://abigbank.com」のように記述することができる。
【0012】
URLは、一般的に、例えばウェブブラウザによってドメインネームサーバ(DNS)クエリを介して特定のインターネットプロトコル(IP)アドレスに分解される。通常、IPアドレスは32ビットの数である。したがって、例えば、「http://abigbank.com」というURLを「25.234.56.71」というIPアドレスに分解する。
【0013】
IPアドレスは、プライベートIPアドレス又はパブリックIPアドレスのいずれかである。URLは特定のIPアドレスに対応するので、本明細書中では、プライベートIPアドレスに対応するURLをプライベートURLと称し、パブリックIPアドレスに対応するURLをパブリックURLと称する。
【0014】
本明細書中では、プライベートIPアドレスは、ルーティング不可能なIPアドレスである。すなわち、プライベートIPアドレスは、インターネットへの直接接続に使用することができない。一般的に、ホームルータによってサービスを提供されるホームネットワーク上のクライアント・コンピュータシステムに割り当てられるIPアドレスは、ルーティング不可能なプライベートIPアドレスである。例えば、通常、ドット形式10進表記法に対応するIPアドレス、10.x.x.x、172.16.x.x、192.168.x.xは、プライベートIPアドレスであり、ルーティング不可能である。
【0015】
本明細書中では、パブリックIPアドレスは、ルーティング可能であるIPアドレスである。すなわち、パブリックIPアドレスは、インターネットへの直接接続に使用することができる。一般的に、インターネット上でウェブページをホストするウェブサーバに割り当てられるIPアドレスは、ルーティング可能なパブリックIPアドレスである。例えば、通常、ドット形式10進表記法に対応しないIPアドレス、10.x.x.x、172.16.x.x、192.168.x.xは、パブリックIPアドレスであり、ルーティング可能である。
【0016】
ウェブページなどのリソースに対するHTTPリクエストのフォーマットは、HTTPリクエストについての情報を提供するHTTPヘッダーを必要とするHTTPプロトコルによって指定される。HTTPプロトコルは、HTTPヘッダー中に利用可能な多数のフィールドを定義する。具体的には、HTTPクライアントからのHTTPリクエストは、一般的に、ターゲットURLフィールドと、リファラーURLフィールドとを含む。ターゲットURLフィールドは、リクエストされたURL(本明細書中では「ターゲットURL」と称する)を識別するデータを含む。リファラーURLフィールドは、HTTPリクエストが開始されたときにユーザが現在のページへ移動するのに辿ったリンクを含むページのURL(本明細書中では「リファラーURL」と称する)を識別するデータを含む。
【0017】
また、HTTPリクエストに対するHTTPレスポンスのフォーマットも、HTTPレスポンスについての情報を提供するHTTPヘッダーを必要とするHTTPプロトコルによって指定される。HTTPレスポンスは、一般的に、HTTPメッセージ・フィールド(コンテンツ・フィールドと呼ばれることもある)を含む。HTTPメッセージ・フィールドは、例えば、HTMLウェブページ、スクリプト、ファイル又はプログラムコードなどの、リクエストされたデータまたはコンテンツを含む。HTTPレスポンスには、一般的に、HTTPレスポンスにおいて返信されるコンテンツのメディアタイプ及び適用できる場合はサブタイプ(本明細書中では「コンテンツタイプ」と呼ぶ)を識別するデータを含むコンテンツタイプ・フィールドが含まれる。例えば、コンテンツタイプ・フィールドは、コンテンツのメディア型をtext/htmlあるいはスクリプトと識別するデータを含み得る。
【0018】
図2を参照して、ある実施形態では、クライアント・コンピュータシステムにおいて例えばウェブブラウザによって作成されたHTTPリクエストは、クライアント・コンピュータシステムからルータ(例えば、クライアント側ホームルータ)へリリースする前にプロキシされる(オペレーション204)。HTTPリクエストに含まれるHTTPヘッダーは、ターゲットURL(オペレーション206)及びリファラーURL(オペレーション208)を判定するために解析される。
【0019】
HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURLと、ルーティング不可能なプライベートIPアドレスに対応するターゲットURLとの両方を識別するか否かが判定される(オペレーション210)。HTTPヘッダーが、パブリックIPアドレスに対応するリファラーURLと、プライベートIPアドレスに対応するターゲットURLとの両方を識別する場合は、HTTPリクエストはドライブバイ・ファーミング攻撃の徴候であると判定される。選択的に排除されない場合は(オペレーション212)、HTTPリクエストのルータへの送信はブロックされ(オペレーション214)、ユーザへの警告が作成される(オペレーション216)。
【0020】
反対に、HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURLと、ルーティング不可能なプライベートIPアドレスに対応するターゲットURLとの両方を識別しない場合は、HTTPリクエストはドライブバイ・ファーミング攻撃の徴候ではないと判定され、HTTPリクエストはルータへ送信するためにリリースされる(オペレーション218)。
【0021】
他の実施形態では、図2の方法を拡張して、埋め込まれたHTMLオブジェクトタグ、スクリプトで作成されたHTMLオブジェクトタグ、及びAJAXスタイルXMLのHTTPリクエストコールを利用したドライブバイ・ファーミング攻撃からクライアント・コンピュータシステムを保護するために、リリースされたHTTPリクエストに対するHTTPレスポンスを前述したようにプロキシし修正する。従って、図4A〜4Dに概略的に示すように、ある実施形態では、リリースされたHTTPリクエストに対するHTTPレスポンスは、ウェブブラウザに受信される前にプロキシされ(オペレーション406)、HTTPレスポンスのコンテンツタイプが判定される(オペレーション408)。そして、コンテンツタイプが、text/html又はスクリプトとして識別されるか否かが判定される(オペレーション410)。
【0022】
コンテンツタイプがtext/html又はスクリプトであると判定されない場合(「NO」)は、HTTPレスポンスが、ウェブブラウザへ送信するためにリリースされる(オペレーション412)。反対に、コンテンツタイプがtext/html又はスクリプトであると判定された場合は、図4Cに概略的に示すように、前記コンテンツは、例えばHTML参照URLについて解析される(オペレーション416)。各HTML参照URLは、前記URLがルーティング不可能なプライベートIPアドレスを示すか否か判定するために解析される(オペレーション420、422)。HTML参照URLがルーティング不可能なプライベートIPアドレスを示す場合は、元のHTML参照URLを、例えば、空白文字列や安全な代替URLなどの安全なURLに置き換える(オペレーション426)。選択的に、ユーザへの警告が作成される(オペレーション424)。前記HTTPレスポンスは、その後、ウェブブラウザへ送信するためにリリースされる(オペレーション412)。
【0023】
反対に、コンテンツタイプがスクリプトであると判定された場合は、図4Dに概略的に示すように、任意のスクリプトの前に、ジャバスクリプト・オーバライドがコンテンツの先頭に挿入される(オペレーション432)。ある実施形態では、ジャバスクリプト・オーバライドは、安全なXMLHTTPリクエスト及びアクティブX置換オブジェクトを定義する。前記コンテンツは、ジャバスクリプト・オーバライド以外は、スクリプトについて解析される(オペレーション434)。各スクリプトにおけるXMLHTTPリクエストの直接的使用の各例は、安全なXMLHTTPリクエストと置き換えられ(オペレーション440)、各オブジェクトタグはアクティブX置換オブジェクトと置き換えられる(オペレーション442)。前記HTTPレスポンスは、その後、ウェブブラウザへ送信するためにリリースされる(オペレーション412)。
【0024】
図1は、本発明の一実施形態に係るコンピュータシステム100を示す図である。コンピュータシステム100は、クライアント・アンチファーミング・アプリケーション106で実行されるクライアント・コンピュータシステム102(例えば第1のコンピュータシステム)を含む。クライアント・コンピュータシステム102(以降、ユーザデバイスとも称する)は、一般的に、中央演算処理装置(CPU)108(以降、プロセッサ108とも称する)、入出力(I/O)インターフェース110、及びメモリ112を備える。メモリ112は、オペレーティングシステム104を含む。
【0025】
ある実施形態では、メモリ112は、クライアント・アンチファーミング・アプリケーション106と、ウェブブラウザ・アプリケーション114を含む。ある実施形態では、ウェブブラウザ・アプリケーション114は、ウェブページコンテンツを表示する。ウェブブラウザ・アプリケーション114は、従来のウェブブラウザ・アプリケーションのうちのいずれか1つであり、特定のウェブブラウザ・アプリケーションは本実施形態に必須ではない。従来のウェブブラウザは当業者には周知であるので、本発明の本質についての説明から逸れることを避けるためにここではこれ以上の詳しい説明は省略する。
【0026】
クライアント・コンピュータシステム102は、キーボード116、マウス118、プリンタ120及びディスプレイ装置122などの標準的な装置、並びに、1つ以上の標準的な入出力(I/O)装置124をさらに含み得る。入出力(I/O)装置124としては、例えば、コンパクトディスク(CD)若しくはDVDドライブ、フレキシブルディスクドライブ、又は、クライアント・コンピュータシステム102との間でデータの入出力を行うための他のデジタル信号若しくは波形信号用のポートなどがある。ある実施形態では、クライアント・アンチファーミング・アプリケーション106は、クライアント・アンチファーミング・アプリケーション106を記憶しているCD、DVD又はフレキシブルディスクなどから、入出力装置124を介してクライアント・コンピュータシステム102にロードされる。
【0027】
クライアント・コンピュータシステム102は、家庭用ブロードバンドルータなどのルータ140に接続される。ルータ140は、ウェブブラウザ114で作成され、クライアント・コンピュータシステム102から送信されたアウトバウンドHTTPリクエストを受信する。ルータ140は、HTTPリクエストを、コンピュータシステム128などの指定されたコンピュータシステムへ送信する。
【0028】
また、ルータ140は、HTTPリクエストに対して返信されたインバウンドHTTPレスポンスなどのインバウンド通信を受信する。ルータ140は、HTTPレスポンスを、クライアント・コンピュータシステム102などの指定されたコンピュータシステムへ送信する。より詳細には、ルータ140は、HTTPレスポンスを、クライアント・コンピュータシステム102のウェブブラウザ114へ送信する。ルータ140は、家庭用ブロードバンドルータなどの従来のルータのうちのいずれか1つであり、特定のルータは本実施形態に必須ではない。
【0029】
本実施形態では、クライアント・アンチファーミング・アプリケーション106は、ウェブブラウザ114で作成されたHTTPリクエストを、クライアント・コンピュータシステム102からルータ140へリリースする前にプロキシする。HTTPリクエストは、例えばドライブバイ・ファーミング攻撃などの悪意のあるコードの活動の徴候について解析される。HTTPリクエストにドライブバイ・ファーミング攻撃の徴候があると判定された場合は、クライアント・コンピュータシステム102からルータ140へのHTTPリクエストのリリースがブロックされる、又は、HTTPリクエストがルータ140へリリースされる前に他の保護アクションが実行される。
【0030】
ある実施形態では、クライアント・アンチファーミング・アプリケーション106は、HTTPレスポンス(例えば、ウェブブラウザ114からのHTTPリクエストに応えてコンピュータシステム128から送信されたHTTPレスポンス)を、ウェブブラウザ114に受信される前にプロキシする。HTTPレスポンスは、ドライブバイ・ファーミング攻撃などの悪意のある活動を防止するために解析され修正される。
【0031】
ルータ140は、ネットワーク126を介して外部コンピュータシステム130に接続される。例えば、ルータ140は、ネットワーク126(例えば、インターネット)を介して、サーバー・コンピュータシステム130及びコンピュータシステム128に接続される。サーバー・コンピュータシステム130は、一般的に、ディスプレイ装置132、プロセッサ134、メモリ136、及びネットワークインタフェース138を備える。
【0032】
ある実施形態では、コンピュータシステム128は、コンピュータシステムにダウンロードしたときにドライブバイ・ファーミング攻撃を引き起こす悪意のあるコードを有するウェブページをホスティングするウェブコンテンツサーバーであり得る。本明細書では、ある実施形態では、悪意のあるコードは、認定ユーザの承認及び/又は許可を得ずにコンピュータシステム環境に侵入するコンピュータプログラム、モジュール、一組のモジュール、又はコードと定義される。ドライブバイ・ファーミング攻撃を引き起こすコードは、悪意のあるコードの一例である。そして、本明細書では、悪意のある活動は、悪意のあるコードの実行により引き起こされる任意の活動と定義される。
【0033】
ある実施形態では、コンピュータシステム128は、クライアント・コンピュータシステム102及び/又はサーバー・コンピュータシステム130と同様であり、例えば、中央演算処理装置、入出力(I/O)インターフェース、及びメモリを含む。コンピュータシステム128は、キーボード、マウス、プリンタ、ディスプレイ装置、及びI/O装置などの標準的な装置をさらに含み得る。コンピュータシステム128の種々のハードウェアコンポーネントは、発明の本質についての説明から逸れることを避けるためにここではこれ以上の詳しい説明は省略する。
【0034】
ネットワーク126は、ユーザが関心を持つあらゆるネットワークまたはネットワーク・システムであり得る。種々の実施形態において、ネットワークインタフェース138及びI/Oインタフェース110としては、アナログモデム、デジタルモデムまたはネットワークインタフェースカードなどが挙げられる。クライアント・コンピュータシステム102、コンピュータシステム128、及びサーバー・コンピュータシステム130の特定の種類と構成は、本発明の本実施形態に必須ではない。
【0035】
図2は、本発明の一実施形態に係るクライアント・コンピュータシステム102をドライブバイ・ファーミング攻撃から保護するための方法200を説明するためのフロー図である。この実施形態では、ウェブサイトへの第1のHTTPリクエストをウェブブラウザ114からコンピュータシステム128へ送信すると、有害なドライブバイ・ファーミング・コードを含んでいるウェブページがウェブブラウザ114へ返信され、ウェブブラウザ114で実行されると仮定する。より詳細には、ウェブブラウザ114で実行されるウェブページに含まれている有害なドライブバイ・ファーミング・コードは、クライアント・コンピュータシステム102上でドライブバイ・ファーミング攻撃をしようとして、HTTPリクエストを開始する。
【0036】
図1及び図2を参照すると、ある実施形態では、プロセッサ108でクライアント・アンチファーミング・アプリケーション106を実行すると、後述するような方法200が実施される。方法200は、開始オペレーション202で開始され、HTTPリクエスト・プロキシオペレーション204へ進む。
【0037】
HTTPリクエスト・プロキシオペレーション204では、例えばウェブブラウザ114で悪意のあるコードを実行することによりクライアント・コンピュータシステム102で生成されたアウトバウンドHTTPリクエストは、クライアント・コンピュータシステム102からルータ140へリリースされる前にプロキシされる。ある実施形態では、前記HTTPリクエストは、クライアント・アンチファーミング・アプリケーション106のHTTPプロキシコンポーネントによってプロキシされる。前記HTTPリクエストは、当該HTTPリクエストのルータ140への送信をブロックするように、例えばフッキング技術などの任意の様々なプロキシ技術を利用してプロキシされる。HTTPリクエストのプロキシングは、当業者に周知であるので、本発明の本質についての説明から逸れることを避けるためにここではこれ以上の詳しい説明は省略する。
【0038】
ある実施形態では、HTTPリクエストは、少なくともリファラーURL及びターゲットURLを有するHTTPヘッダーを含む。前述したように、リファラーURLは、ターゲットURLがリクエストされユーザがアクセスしたウェブページのIPアドレスに対応する(すなわち分解する)。ターゲットURLは、リクエストされたウェブページのIPアドレス(以降、ターゲットURLのIPアドレスと称する)に対応する(すなわち、分解する)。プロセスフローは、HTTPリクエスト・プロキシオペレーション204から、ターゲットURL判定オペレーション206へ進む。
【0039】
ターゲットURL判定オペレーション206では、HTTPリクエストのHTTPヘッダーからターゲットURLが判定される。ターゲットURLの判定は、例えば、HTTPヘッダーを解析することによって、又は、ターゲットURLを判定するための他の解析技術を用いることによって行われる。プロセスフローは、ターゲットURL判定オペレーション206から、リファラーURL判定オペレーション208へ進む。
【0040】
リファラーURL判定オペレーション208では、オペレーション204でプロキシされたHTTPリクエストのHTTPヘッダーからリファラーURLが判定される。リファラーURLの判定は、例えば、HTTPヘッダーを解析することによって、又は、リファラーURLを判定するための他の解析技術を用いることによって行われる。プロセスフローは、リファラーURL判定オペレーション208から、パブリックリファラー及びプライベートターゲットのチェックオペレーション210へ進む。
【0041】
パブリックリファラー及びプライベートターゲットのチェックオペレーション210では、オペレーション206で判定されたターゲットURL及びオペレーション208で判定されたリファラーURLのそれぞれが分解される、あるいは、各IPアドレスに対応される。例えば、ターゲットURLが分解される又はターゲットURLのIPアドレスに対応され、リファラーURLが分解される又はリファラーURLのIPアドレスに対応される。
【0042】
リファラーURLのIPアドレスがルーティング可能なパブリックIPアドレスであるか否か、ターゲットURLのIPアドレスがルーティング不可能なプライベートIPアドレスであるか否かの判定がなされる。ある実施形態では、リファラーURLのIPアドレスとターゲットURLのIPアドレスは、既知のプライベート及び/又はパブリックIPアドレスのデータベースと比較される。あるいは、リファラーURLのIPアドレスとターゲットURLのIPアドレスは、各URLのIPアドレスがパブリック又はプライベートIPアドレスであるか否かを判定するために解析される。
【0043】
ある実施形態では、ルーティング可能なパブリックIPアドレスであると判定されたリファラーURLのIPアドレスの組み合わせは、ルーティング不可能なプライベートIPアドレスであると判定されたターゲットURLのIPアドレスと共に、ドライブバイ・ファーミング攻撃の徴候と見なされる。例えば、上記の組み合わせは、ドライブバイ・ファーミング攻撃を可能にすべくルータ140上で悪質な改変を実施するために、ルータ140のIPアドレスを確認するためにウェブブラウザ114で実行される悪意のあるコードによる攻撃の徴候と見なされる。
【0044】
一方、パブリックIPアドレスであるリファラーURLのIPアドレスとパブリックIPアドレスであるターゲットURLのIPアドレスとの組み合わせ、又は、プライベートIPアドレスであるリファラーURLのIPアドレスとパブリック若しくはプライベートIPアドレスであるターゲットURLのIPアドレスとの組み合わせは、ドライブバイ・ファーミング攻撃の徴候と見なされない。したがって、ある実施形態では、リファラーURLのIPアドレスがルーティング可能なパブリックIPアドレスであり、ターゲットURLのIPアドレスがルーティング不可能なプライベートIPアドレスと判定されない場合(「NO」)は、ドライブバイ・ファーミング攻撃の徴候と見なされない。その場合、プロセスフローは、パブリックリファラー及びプライベートターゲットのチェックオペレーション210から、HTTPリクエスト・リリースオペレーション218へ進む。
【0045】
HTTPリクエスト・リリースオペレーション218では、オペレーション204でプロキシされたHTTPリクエストがリリースされ、クライアント・コンピュータシステム102からルータ140へ送信される。その後、プロセスフローは、HTTPリクエスト・リリースオペレーション218から、終了オペレーション220へ進んで方法プロセス200を終了する。あるいは、選択的に、次のHTTPリクエストをプロキシするときに、オペレーション204に戻る。
【0046】
パブリックリファラー及びプライベートターゲットのチェックオペレーション210に再び戻って、リファラーURLのIPアドレスがルーティング可能なパブリックIPアドレスであり、ターゲットURLのIPアドレスがルーティング不可能なライベートIPアドレスであると判定された場合(「YES」)は、この組み合わせは、ドライブバイ・ファーミング攻撃の徴候と見なされる。プロセスフローは、パブリックリファラー及びプライベートターゲットのチェックオペレーション210からブロック解除のチェックオペレーション212へ選択的に進む。あるいは、チェックオペレーション210からHTTPリクエスト・ブロックオペレーション214へ直接的に進む。
【0047】
ブロック解除のチェックオペレーション212では、HTTPリクエストに対してなされているブロックを解除するか否かの判定が行われる。例えば、ある実施形態では、リファラーURLのIPアドレスが、ブロックが解除されたリファラーURLのIPアドレスのリストの項目と比較される、及び/又は、ターゲットURLのIPアドレスが、ブロックが解除されたターゲットURLのIPアドレスのリストの項目と比較される。
【0048】
ある実施形態では、リファラーURLのIPアドレスとブロックが解除されたリファラーURLのIPアドレスのリストの項目とが一致する場合、及び/又は、ターゲットURLのIPアドレスがブロックが解除されたターゲットURLのIPアドレスのリストの項目と一致する場合は、HTTPリクエストに対してなされているブロックが解除される。他の実施形態では、リファラーURLのIPアドレス及び/又はターゲットURLのIPアドレスを用いた排他的な解析技術が利用可能である。さらなる他の実施形態では、HTTPリクエストのブロックを解除するか否かを判定するために、HTTPリクエストの他のパラメータを解析する。
【0049】
ある実施形態では、HTTPリクエストのブロックを解除すると判定された場合(「YES」)は、プロセスフローは、ブロック解除のチェックオペレーション212から、前述したHTTPリクエスト・リリースオペレーション218へ進む。反対に、HTTPリクエストのブロックを解除しないと判定された場合(「NO」)は、プロセスフローは、ブロック解除のチェックオペレーション212から、HTTPリクエスト・ブロックオペレーション214へ進む。
【0050】
HTTPリクエスト・ブロックオペレーション214では、HTTPリクエストがブロックされる。ある実施形態では、HTTPリクエストのルータ140への送信を防止する。このようにして、悪意のあるコードがHTTPリクエストを介してルータのIPアドレスを取得することを防止し、ルータ140に対してドライブバイ・ファーミング攻撃を補助するための悪質な改変が開始されるのを防止する。プロセスフローは、HTTPリクエスト・ブロックオペレーション214から、ユーザ警告オペレーション216へ進む。
【0051】
ユーザ警告オペレーション216では、警告を作成して、ユーザへ通知する。ユーザには、様々な技術のうちの1つを使用して通知する。例えば、ディスプレイ装置122にポップアップ・ウィンドウを表示することにより通知する。ある実施形態では、クライアント・コンピュータシステム102のユーザには、悪意のあるコード(例えば、ドライブバイ・ファーミング・コード)がクライアント・コンピュータシステム102に存在すること、及び/又は、HTTPリクエストをブロックしたことが通知される。その後、プロセスフローは、ユーザ警告オペレーション216から、終了オペレーション220へ進んで方法プロセス200を終了する。あるいは、クライアント・コンピュータシステム102で次のアウトバウンドHTTPリクエスをプロキシするときに、オペレーション204に戻る。
【0052】
上述した実施形態では、HTTPリクエストのブロック(例えば、オペレーション214)は、ユーザ入力を必要とせずに、自動的に実施される。他の実施形態では、図3A及び3Bを参照しつつ後述するように、HTTPリクエストをブロックする前に、前記ブロックの可否をユーザに確認する。
【0053】
図3A及び3Bは、本発明の他の実施形態に係る、クライアント・コンピュータシステム102をドライブバイ・ファーミング攻撃から保護するための方法300を説明するためのフロー図である。図1、2、3A及び3Bを参照して、ある実施形態では、プロセッサ108で実行されるクライアント・アンチファーミング・アプリケーション106は、下記のような方法300のオペレーションとなる。
【0054】
HTTPリクエスト・プロキシオペレーション204、オペレーション206、208、チェックオペレーション210、及びチェックオペレーション212(選択された場合)が、図2を参照しつつ説明した方法200のようにして実施される。そして、ブロック解除のチェックオペレーション212で「NO」が選択された場合、あるいは、チェックオペレーション212が実施されなくパブリックリファラー及びプライベートターゲットのチェックオペレーション210で「YES」が選択された場合は、プロセスフローは、ユーザ警告オペレーション306(図3参照)へ進む。
【0055】
図3Bを参照して、ユーザ警告オペレーション306では、ユーザへの警告を作成しクライアント・コンピュータシステム102に表示し、ブロックの可否をユーザに尋ねる(ユーザ入力を要求する)。例えば、ある実施形態では、ポップアップ又は他の通知を作成してディスプレイ装置122に表示し、HTTPリクエストのブロックの可否をユーザに尋ねる(ユーザに入力を要求する)。
【0056】
いくつかの実施形態では、ユーザへの通知は、HTTPリクエストが不審である及び/又はドライブバイ・ファーミング攻撃の徴候があるという文章説明によって行われる。ある実施形態では、ユーザへの通知は、クライアント・アンチファーミング・アプリケーション106がHTTPリクエストを受信したときに、HTTPリクエストをブロックするかリリースするかの応答選択をユーザが入力可能なグラフィカル・ユーザ・インターフェースを使用して行われる。
【0057】
例えば、グラフィカル・ユーザ・インターフェースは、「ドライブバイ・ファーミング攻撃の徴候があるHTTPリクエストが作成されました。このリクエストをブロックしますか?」という文章の質問と、その質問に対する「YES」及び「NO」の2つの選択ボタンとを含むことができる。ある実施形態では、「YES」のボタンを選択すると承認応答がクライアント・アンチファーミング・アプリケーション106へ送信され、「NO」のボタンを選択すると拒否応答がクライアント・アンチファーミング・アプリケーション106へ送信される。プロセスフローは、ユーザ警告オペレーション306から、ユーザ入力の受信オペレーション308へ進む。
【0058】
ユーザ入力の受信オペレーション308では、クライアント・アンチファーミング・アプリケーション106は、ユーザ入力を受信する。例えば、クライアント・アンチファーミング・アプリケーション106は、オペレーション306においてグラフィカル・ユーザ・インターフェースへ入力された、HTTPリクエストのブロックの可否についてのユーザ入力を受信する。プロセスフローは、ユーザ入力の受信オペレーション308から、ユーザのブロック承認のチェックオペレーション310へ進む。
【0059】
ユーザのブロック承認のチェックオペレーション310では、オペレーション308で受信されたユーザ入力がHTTPリクエストのブロックを承認しているか否かが判定される。ユーザ入力が、承認応答の場合(「YES」)は、HTTPリクエストのブロックが承認されたと判定する。ユーザ入力が、拒否応答の場合(「NO」)は、HTTPリクエストのブロックが拒否されたと判定する。
【0060】
ユーザがHTTPリクエストのブロックを拒否した場合(「NO」)は、HTTPリクエストがリリースされる。そして、プロセスフローは、ユーザのブロック承認のチェックオペレーション310から、前述したHTTPリクエスト・リリースオペレーション218へ進む。その後、プロセスフローは、HTTPリクエスト・リリースオペレーション218から、終了オペレーション304へ進んで方法プロセス300を終了する。あるいは、次のアウトバウンドHTTPリクエスをプロキシするときに、オペレーション204に戻る。
【0061】
ユーザのブロック承認のチェックオペレーション310に再び戻って、ユーザがHTTPリクエストのブロックを承認した場合(YES)は、HTTPリクエストはブロックされる。プロセスフローは、ユーザのブロック承認のチェックオペレーション310から、前述したHTTPリクエスト・ブロックオペレーション214へ進む。そして、プロセスフローは、HTTPリクエスト・ブロックオペレーション214から、前述したユーザ警告オペレーション216へ進む。その後、プロセスフローは、ユーザ警告オペレーション216から、終了オペレーション304へ進んで方法プロセス300を終了する。あるいは、次のアウトバウンドHTTPリクエストをプロキシするときに、オペレーション204に戻る。
【0062】
別の実施形態を、図4A〜4Dを参照して説明する。ドライブバイ・ファーミング攻撃から、クライアント・コンピュータシステム102をさらに保護するため、図示のように方法200を拡張し、HTTPリクエストに応じて返信されたHTTPレスポンスが解析され修正される。より詳しくは、クライアント・コンピュータシステム102を、HTTPレスポンスのコンテンツに存在する悪意のあるコードから保護するため、図示のように、インバウンドHTTPレスポンスが、ウェブブラウザ114に受信される前にプロキシされ、プロキシされたHTTPレスポンスが解析され修正される。
【0063】
図4A〜4Dは、本発明の別の実施形態に係るクライアント・コンピュータシステムをドライブバイ・ファーミング攻撃から保護するための方法400を説明するためのフロー図である。図1、図2、及び図4A〜図4Dを一緒に参照して、ある実施形態では、プロセッサ108でクライアント・アンチファーミング・アプリケーション106を実行すると、後述するような方法400が実施される。
【0064】
ある実施形態では、方法400は、開始オペレーション402で開始され、HTTPリクエスト・プロキシオペレーション204へ進む。HTTPリクエスト・プロキシオペレーション204が、上述の図2を参照しつつ説明した方法200のようにして実施され(参照することによりここに組み込まれる)、オペレーション206、208、チェックオペレーション210、チェックオペレーション212、オペレーション214、216及び218が、HTTPリクエスト送信オペレーション218の後に続くオペレーションを除いて、上述の図2を参照しつつ説明した方法200のようにして連続的に処理される。そして、プロセスフローは、オペレーション218でリリースされたHTTPリクエストに応じて返信されたHTTPレスポンスをプロキシするため、HTTPレスポンス・プロキシオペレーション406(図4B)へ進む。
【0065】
図4Bを参照すると、HTTPレスポンス・プロキシオペレーション406では、クライアント・コンピュータシステム102で受信した、コンピュータシステム128からのインバウンドHTTPレスポンスが、ウェブブラウザ114へリリースされる前にプロキシされる。例えば、ある実施形態では、インバウンドHTTPレスポンスが、クライアント・アンチファーミング・アプリケーション106のHTTPプロキシコンポーネントによって外部に出力されないようにする。フッキング技術などの任意の様々なプロキシ技術を利用して、HTTPレスポンスが外部に出力されないようにすることができる。HTTPレスポンスのプロキシングは、当業者に周知であるので、本発明の本質についての説明から逸れることを避けるためにここではこれ以上の詳しい説明は省略する。
【0066】
ある実施形態では、HTTPレスポンスは、少なくとも1つのコンテンツタイプ・フィールドを有するHTTPヘッダーを含み、さらに悪意のあるドライブバイ・ファーミング・コードなどのコンテンツを含むこともある。プロセスフローは、HTTPレスポンス・プロキシオペレーション406から、コンテンツタイプ判定オペレーション408へ進む。
【0067】
コンテンツタイプ判定オペレーション408では、HTTPレスポンスは、必要に応じて、HTTPレスポンスで返信されたコンテンツのコンテンツタイプを判定するために解析される。ある実施形態では、HTTPレスポンスのコンテンツタイプ・フィールドが、適用可能であれば、例えば、HTTPレスポンスを解析することによって、スキャニングすることによって、又はその他の評価方法によって、コンテンツタイプ及び様々なサブタイプを判定するために解析される。プロセスフローは、コンテンツタイプ判定オペレーション408から、コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410へ進む。
【0068】
コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410では、オペレーション408で判定されたコンテンツタイプが、text/html又はスクリプトのどちらかとして識別されたか否かの判定が行われる。コンテンツタイプがtext/html又はスクリプトではない場合(「NO」)は、プロセスフローは、コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410から、HTTPレスポンス・リリースオペレーション412へ進む。
【0069】
HTTPレスポンス・リリースオペレーション412では、オペレーション406でプロキシされたHTTPレスポンスがリリースされ、ウェブブラウザ114に送信される。プロセスフローは、HTTPレスポンス・リリースオペレーション412から、終了オペレーション404へ進んで方法プロセス400を終了する。あるいは、選択的に、次のHTTPリクエストをプロキシするときに、オペレーション204(図4A)に戻る。
【0070】
コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410(図4B)に再び戻って、反対に、コンテンツタイプがtext/html又はスクリプトである場合(「YES」)は、コンテンツタイプがtext/htmlであれば、プロセスフローは、コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410から、コンテンツのHTML参照URL解析オペレーション416(図4C)へ進み、あるいは、コンテンツタイプがスクリプトであれば、プロセスフローは、コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410から、ジャバスクリプト・オーバライド挿入オペレーション432(図4D)へ進む。
【0071】
次に図4Cを参照して、コンテンツのHTML参照URL解析オペレーション416では、HTTPレスポンスのコンテンツタイプがtext/htmlであると判定されたとき、HTTPレスポンスのHTMLコンテンツは、各HTML参照URLを特定するために解析される。ある実施形態では、クライアント・アンチファーミング・アプリケーション106の簡易HTML解析コンポーネントを、HTMLコンテンツの解析及び各HTML参照URLの特定のために使用することができる。ある実施形態では、HTML参照URLの例として、A、IMG、スクリプト、スタイル、オブジェクト、及び埋め込みタグのほかに、インラインスタイル又はブロックスタイルから参照されるURLが含まれる。プロセスフローは、コンテンツのHTML参照URL解析オペレーション416から、HTML参照URLチェックオペレーション418へ進む。
【0072】
HTML参照URLチェックオペレーション418では、少なくとも1つのHTML参照URLが、オペレーション416で識別されたか否かの判定が行われる。HTML参照URLが、オペレーション416で1つも識別されなかった場合(「NO」)は、プロセスフローは、HTML参照URLチェックオペレーション418から、オペレーション430に進んで、上述のHTTPレスポンスのウェブブラウザ114への送信を含むHTTPレスポンス・リリースオペレーション412(図4B)へ進むようにする。
【0073】
図4Cに再び戻って、反対に、少なくとも1つのHTML参照URLが、オペレーション416で識別された場合(「YES」)は、プロセスフローは、HTML参照URLチェックオペレーション418から、HTML参照URL選択オペレーション420へ進む。
【0074】
HTML参照URL選択オペレーション420では、解析するための、オペレーション416で識別された第1のHTML参照URLが選択される。プロセスフローは、HTML参照URL選択オペレーション420から、プライベートIPアドレスの指示チェックオペレーション422へ進む。
【0075】
プライベートIPアドレスの指示チェックオペレーション422では、オペレーション420で選択されたHTML参照URLが、プライベートIPアドレスに対応しているか否かの判定が行われる。ある実施形態では、HTML参照URLが分解されるとき、あるいは、HTML参照URLのIPアドレスに対応されるとき、本明細書中では、それをHTML参照URLのIPアドレスと称する。
【0076】
ある実施形態では、HTML参照URLのIPアドレスは、既知のプライベート及び/又はパブリックIPアドレスのデータベースと比較される。あるいは、HTML参照URLのIPアドレスは、HTML参照URLのIPアドレスがプライベートIPアドレスであるか否かを判定するために解析される。HTML参照URLのIPアドレスが、プライベートIPアドレスではないとき、即ちパブリックIPアドレスである場合(「NO」)は、プロセスフローは、プライベートIPアドレスの指示チェックオペレーション422から、次のHTML参照URLチェックオペレーション428へ進む。
【0077】
次のHTML参照URLチェックオペレーション428では、オペレーション416で識別されたHTML参照URLで、まだ評価されていない次のHTML参照URLが残っているか否かの判定が行われる。まだ評価されていない次のHTML参照URLが残っている場合(「YES」)は、プロセスフローは、選択された次のHTML参照URLを解析するために、次のHTML参照URLチェックオペレーション428から、オペレーション420に戻る。また、まだ評価されていない次のHTML参照URLが残っていない場合(「NO」)は、プロセスフローは、次のHTML参照URLチェックオペレーション428から、オペレーション430へ進んで、ウェブブラウザ114へ送信するためにリリースされたHTTPレスポンスが、HTTPレスポンス・リリースオペレーション412(図4B)へ進むようにし、終了オペレーション404で方法プロセス400を終了する。あるいは、選択的に、次のHTTPリクエストをプロキシするときに、オペレーション204(図4A)に戻る。
【0078】
図4C及びプライベートIPアドレスの指示チェックオペレーション422に再び戻って、反対に、HTML参照URLのIPアドレスが、プライベートIPアドレスである場合(「YES」)は、プロセスフローは、プライベートIPアドレスの指示チェックオペレーション422から、選択的に、ユーザ警告オペレーション424へ進む、あるいは、HTML参照URLの安全なURLへの置き換えオペレーション426へ直接的に進む。
【0079】
オプションのユーザ警告オペレーション424では、ユーザへの警告が作成され、ユーザへ通知される。ユーザには、様々な技術のうちの1つを使用して通知する。例えば、ディスプレイ装置122にポップアップ・ウィンドウを表示することにより通知する。ある実施形態では、クライアント・コンピュータシステム102(図1)のユーザには、悪意のあるコード(例えば、ドライブバイ・ファーミングコード)が検出されたことや、HTTPレスポンスのHTML参照URLが安全なHTMLURLに置き換えられたこと又はHTTPレスポンスのHTML参照URLが削除されたことが通知される。プロセスフローは、オプションのユーザ警告オペレーション424から、HTML参照URLの安全なURLへの置き換えオペレーション426へ進む。
【0080】
HTML参照URLの安全なURLへの置き換えオペレーション426では、元のHTML参照URLが、安全なURL、例えば、空白文字列、又はダミーファイルを指定するダミーURLに置き換えられる。ある実施形態では、元のHTML参照URL、例えば、「A HREF= "http://192.168.1.1"」が削除され、「A HREF=""」になる。あるいは、元のHTML参照URLに特定の処理が行われ、ゼロバイトの返信が戻るようにする。プロセスフローは、HTML参照URLの安全なURLへの置き換えオペレーション426から、次のHTML参照URLチェックオペレーション428へ進み、その後、上述のオペレーション420に戻る(「YES」の場合)、又は上述のHTTPレスポンス・リリースオペレーション412(図4B)(「NO」の場合)へ進む。HTTPレスポンス・リリースオペレーション412(図4B)では、HTTPレスポンスは、ウェブブラウザ114へ送信するためにリリースされる。
【0081】
図4B及びコンテンツタイプ(text/html又はスクリプト)チェックオペレーション410に再び戻って、反対に、HTTPレスポンスのコンテンツタイプが、スクリプトであると判定されたとき、プロセスフローは、コンテンツタイプ(text/html又はスクリプト)チェックオペレーション410から、ジャバスクリプト・オーバライド挿入オペレーション432(図4D)へ進む。次に図4Dを参照して、ジャバスクリプト・オーバライド挿入オペレーション432では、スクリプトに記述された攻撃を防止するべく、コンテンツ内の選択された適切な機能をオーバライドするジャバスクリプト(本明細書中では、ジャバスクリプト・オーバライドと称する)が、HTMLリクエストのコンテンツに挿入される。ある実施形態では、ジャバスクリプト・オーバライドが、HTMLページのコンテンツの先頭に、全ての<スクリプト>タグの前に挿入される。
【0082】
ある実施形態では、ジャバスクリプト・オーバライドは、安全なアプリケーションプログラムインタフェース(API)のクラス、例えば、標準的なXMLHTTPリクエストAPIの全機能を含む、安全なXMLHTTPリクエストAPI(安全なXMLHTTPリクエストと称する)を定義し、またHTTPリクエストを発信する前にリファラーIPアドレス及びターゲットIPアドレスを判定する。ジャバスクリプト・オーバライドは、次に、「document.write = SafeWrite」の実行を行う。
【0083】
「document.write = SafeWrite」は、document.write()に対する全ての呼び出しが、プライベートIPアドレスを参照する新たなHTMLを挿入しないようにする、又は標準的なXMLHTTPリクエストを使用させようとする新たなジャバスクリプトを挿入しないようにする。document.write()が、プライベートIPアドレスを参照するHTMLで呼び出されたとき、オペレーション426(図4C)を参照しつつ説明した上述の削除/置き換え(参照することによりここに組み込まれる)と、同一の削除/置き換えが行われる。
【0084】
document.write()が、標準的なXMLHTTPリクエストAPIを使用させようとするジャバスクリプトで呼び出されたとき、そのジャバスクリプトは、安全なXMLHTTPリクエストAPIに置き換えられる、あるいは、ランダムに選択された同等の名称に置き換えられる。ある実施形態では、挿入されたジャバスクリプト・オーバライドで使用される変数及びクラス名を攻撃者が知ってしまったときに、ジャバスクリプト・オーバライドの抜け道を見つける可能性を減少させるため、ジャバスクリプト・オーバライドで使用される変数及びクラス名はランダムに選択される。
【0085】
ある実施形態では、ジャバスクリプト・オーバライドは、アクティブX置換オブジェクトも定義する。アクティブX置換オブジェクトが呼び出されたとき、アクティブX置換オブジェクトは、元のアクティブXオブジェクトに対するリクエストをプロキシする。まず、そのリクエストが、パブリックのリファラーIPアドレス及びプライベートのターゲットIPアドレスを識別するか否かを確認し、方法200及び300を参照しつつ説明した上述の適切なブロック/指示を実行する。これにより、XMLHTTPリクエストAPIをサポートしていない、いくつかのウェブブラウザ、例えば、インターネットエクスプローラの旧バージョンを保護し、コンピュータシステムを攻撃するため、旧バージョンのアクティブXオブジェクトを使用させようとするウェブサイトに対する防御を可能にする。
【0086】
アクティブX置換オブジェクトは、オペレーション426(図4C)を参照しつつ説明した上述のXMLHTTPリクエストAPIを安全なXMLHTTPリクエストAPIに置き換える方法のように、真のアクティブXオブジェクト用のレジストを引き継ぐ必要がない。アクティブX置換オブジェクトは、Microsoft.XMLHTTPを、例えば、Symantec.SafeXMLHTTPなどの安全なオブジェクトに置き換えるために使用することもできる。例えば、存在するジャバスクリプトを探して置き換えたり、作成されたスクリプトを検索しているdocument.write()の呼び出しを探して置き換えたりする。プロセスフローは、ジャバスクリプト・オーバライド挿入オペレーション432から、コンテンツのスクリプト解析オペレーション434へ進む。
【0087】
コンテンツのスクリプト解析オペレーション434では、HTTPレスポンスのコンテンツは、オペレーション432で挿入されたジャバスクリプト・オーバライド以外は、各スクリプトについて解析される。ある実施形態では、HTTPレスポンスのコンテンツフィールドに存在するデータが、各スクリプトを識別するために解析される。プロセスフローは、コンテンツのスクリプト解析オペレーション434から、スクリプトチェックオペレーション436へ進む。
【0088】
スクリプトチェックオペレーション436では、少なくとも1つのスクリプトが、オペレーション434で識別されたか否かの判定が行われる。オペレーション434で1つのスクリプトも識別されなかった場合(「NO」)は、プロセスフローは、スクリプトチェックオペレーション436から、オペレーション450へ進み、上述のウェブブラウザ114へHTTPレスポンスを送信することに関連するHTTPレスポンス・リリースオペレーション412(図4B)へ進むようにする。あるいは、少なくとも1つのスクリプトがオペレーション434で識別された場合(「YES」)は、プロセスフローは、スクリプトチェックオペレーション436から、スクリプト選択オペレーション438へ進む。
【0089】
スクリプト選択オペレーション438では、解析するための、オペレーション434で識別されたスクリプトが選択される。プロセスフローは、スクリプト選択オペレーション438から、XMLHTTPリクエストAPIの安全なXMLHTTPリクエストAPIへの置き換えオペレーション440へ進む。
【0090】
XMLHTTPリクエストAPIの安全なXMLHTTPリクエストAPIへの置き換えオペレーション440では、スクリプトに存在する各XMLHTTPリクエストAPIは、必要に応じて、安全なXMLHTTPリクエストAPI(例えば、オペレーション432で既に挿入及び定義済みの安全なXMLHTTPリクエストAPI、又はその他の安全な同等物)に置き換えられる。プロセスフローは、XMLHTTPリクエストAPIの安全なXMLHTTPリクエストAPIへの置き換えオペレーション440から、オブジェクトタグのアクティブX置換オブジェクトへの置き換えオペレーション442へ進む。
【0091】
オブジェクトタグのアクティブX置換オブジェクトへの置き換えオペレーション442では、スクリプトに存在する各オブジェクトタグは、必要に応じて、オペレーション432で既に挿入及び定義済みのアクティブX置換オブジェクトに置き換えられる。ある実施形態では、Microsoft.XMLHTTPオブジェクトのほかに、MsXML2.XMLHTTPオブジェクト及びその他の使用済みのXMLリクエスタが、アクティブX置換オブジェクトに置き換えられる。プロセスフローは、オブジェクトタグのアクティブX置換オブジェクトへの置き換えオペレーション442から、次のスクリプトチェックオペレーション448へ進む。
【0092】
次のスクリプトチェックオペレーション448では、オペレーション434で識別されたスクリプトで、まだ評価されていない次のスクリプトが残っているか否かの判定が行われる。まだ評価されていない次のスクリプトが残っている場合(「YES」)は、プロセスフローは、選択された次のスクリプトを解析するため、オペレーション438に戻る。あるいは、まだ評価されていない次のスクリプトが残っていない場合(「NO」)は、プロセスフローは、オペレーション450へ進み、ウェブブラウザ114へ送信されるべきHTTPレスポンスがオペレーション412(図4B)へ進むようにし、終了オペレーション404(図4A)で方法プロセス400を終了する。あるいは、選択的に、次のインバウンドHTTPリクエストをプロキシするときに、オペレーション204(図4A)に戻る。
【0093】
別の実施形態では、方法400は、例えば、オペレーション210/212とオペレーション214との間に、オペレーション304、306、及び308(図3B)を含むように拡張することもでき、方法300と同様に、ユーザは、選択されたHTTPリクエストをブロックする前に、HTTPリクエストをブロックすることの承認又は拒否を入力するように要求される。
【0094】
さらに別の実施形態では、HTTPレスポンスをプロキシすること及び解析することを別々に実行することもできる。したがって、別の実施形態では、オペレーション402〜450は、クライアント・コンピュータシステムをドライブバイ・ファーミング攻撃などの悪意のあるコード及び/又は悪意のある行動から保護するため、クライアント・アンチファーミング・アプリケーション106によって別々に実行することもできる。
【0095】
再び図1を参照して、クライアント・アンチファーミング・アプリケーション106が、コンピュータメモリ112に記憶されている。本明細書中では、コンピュータメモリは、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせの何れかである。
【0096】
また、クライアント・アンチファーミング・アプリケーション106はアプリケーションと称しているが、これは例示にすぎない。クライアント・アンチファーミング・アプリケーション106は、アプリケーション又はオペレーティングシステムから呼び出され得るものでなければならない。ある実施形態では、アプリケーションは、通常は任意の実行可能なコードとして定義される。さらに、アプリケーション又はオペレーションがある動作を行っている場合、その動作はプロセッサが1以上の命令を実行した結果であることは、当業者には理解されよう。
【0097】
本発明の実施形態を、クライアント構成に基づいて説明してきたが、本発明は、パーソナルコンピュータ、ワークステーション、モバイル機器、又はコンピュータ装置のネットワークを含むハードウェア構成及び/又は任意の適切な手段を用いて実施することができる。他の実施形態では、クライアント構成以外の他のネットワーク構成(例えば、クライアント・サーバ構成、ピアツーピア構成、ウェブベースの構成、イントラネット構成、インターネット・ネットワーク構成)が用いられる。
【0098】
ここでは、コンピュータプログラム製品は、本発明のある実施形態においてコンピュータが読み出し可能なコードを格納又は持ち運びできるように構成されたメディア(媒体)を含む。コンピュータプログラム製品の例としては、CD−ROMディスク、DVD、ROMカード、フレキシブルディスク、磁気テープ、HDD、ネットワーク上のサーバ、及びネットワークを介して送信されるコンピュータが読み出し可能なコードを表す信号等が挙げられる。別の実施形態では、コンピュータプログラム製品としては、CD−ROMディスク、DVD、ROMカード、フレキシブルディスク、磁気テープ、HDD、及びネットワーク上のサーバを含む、コンピュータが読み出し可能なコードを格納するべく構成された有形のメディアを含む。
【0099】
図1に示すように、メディアは、コンピュータシステム自体に属するものであり得る。しかし、メディアは、コンピュータシステムから取り外すことも可能であり得る。例えば、クライアント・アンチファーミング・アプリケーション106は、プロセッサ108と異なる物理的位置に存在するメモリ112に記憶され得る。プロセッサ108は、メモリ112に接続されなければならない。このことは、クライアントサーバシステムによって、あるいは、モデムとアナログラインやデジタルインタフェースとデジタルキャリアラインを介した別のコンピュータとの接続によって達成され得る。
【0100】
より詳細には、ある実施形態では、クライアント・コンピュータシステム102及び/又はサーバー・コンピュータシステム130は、モバイルコンピュータ、ワークステーション、双方向ポケベル、携帯電話、デジタル無線電話機、携帯情報端末(PDA)、サーバー・コンピュータ、インターネット機器、又は上記した実施形態の少なくとも1つに従ってクライアント・アンチファーミング・アプリケーション106の機能を実行することができる構成要素を含む他の任意の装置である。同様に、別の実施形態では、クライアント・コンピュータシステム102及び/又はサーバー・コンピュータシステム130は、複数の異なるコンピュータ、無線装置、携帯電話、デジタル電話、双方向ポケベル、携帯情報端末(PDA)、サーバー・コンピュータ、又は上記の方法を実行するために相互接続される装置の任意の組み合わせから構成される。
【0101】
上記の開示内容に基づき、本発明の実施形態によるクライアント・アンチファーミング・アプリケーション106の機能は、多種多様なコンピュータシステム構成において実施することができる。さらに、クライアント・アンチファーミング・アプリケーション106の機能は、異なる装置のメモリに異なるモジュールとして記憶させることができる。例えば、最初はクライアント・アンチファーミング・アプリケーション106をサーバー・コンピュータシステム130に保存しておき、それから必要に応じて、クライアント・アンチファーミング・アプリケーション106の一部をクライアント・コンピュータシステム102へ移して、クライアント・コンピュータシステム102上で実行させることもできる。その結果、クライアント・アンチファーミング・アプリケーション106の機能の一部がサーバー・コンピュータシステム130のプロセッサ134で実行され、前記アプリケーション106の他の部分はクライアント・コンピュータシステム102のプロセッサ108で実行されることになる。
【0102】
上記の開示内容に基づき、当業者は、本発明の様々な実施形態を、多種多様な物理的ハードウェア構成において任意のオペレーティングシステム及びコンピュータ言語を用いて実施することができよう。さらなる別の実施形態では、クライアント・アンチファーミング・アプリケーション106は、サーバー・コンピュータシステム130のメモリ136に記憶される。クライアント・アンチファーミング・アプリケーション106は、ネットワーク126を介してクライアント・コンピュータシステム102のメモリ112に移される。この実施形態では、ネットワークインタフェース138及びI/Oインタフェース110は、アナログモデム、デジタルモデム、又はネットワークインタフェースカードを含み得る。モデムを使用する場合は、ネットワーク126は通信ネットワークを含み、クライアント・アンチファーミング・アプリケーション106は通信ネットワークを介してダウンロードされる。
【0103】
上記の開示内容は、本発明の例示的な実施形態を示すものである。本発明の範囲は、上記の実施形態に限定されるものではない。本明細書中に明示的に記載されている又は示唆されているか否かに関わらず、当業者であれば、本明細書の開示内容から本発明の実施形態に種々の改変を加えて実施し得るであろう。
【図面の簡単な説明】
【0104】
【図1】本発明の一実施形態による、クライアント・コンピュータシステム上で実行されるクライアント・アンチファーミング・アプリケーションを含むコンピュータシステムを示す図である。
【図2】本発明の一実施形態に係る、クライアント・コンピュータシステムをドライブバイ・ファーミング攻撃から保護する方法を説明するためのフロー図である。
【図3A】本発明の一実施形態に係る、ユーザの指示によってクライアント・コンピュータシステムをドライブバイ・ファーミング攻撃から保護する方法を説明するためのフロー図である。
【図3B】図3Aのフロー図の続きである。
【図4A】本発明の他の実施形態に係る、クライアント・コンピュータシステムをドライブバイ・ファーミング攻撃から保護する方法を説明するためのフロー図である。
【図4B】図4Aのフロー図の続きである。
【図4C】図4Bのフロー図の続きである。
【図4D】図4Bのフロー図の続きである。
【符号の説明】
【0105】
100 コンピュータシステム
102 クライアント・コンピュータシステム
104 オペレーティングシステム
106 クライアント・アンチファーミング・アプリケーション
108 プロセッサ
112 メモリ
114 ウェブブラウザ
110 I/Oインタフェース
114 メモリ
116 キーボード
118 マウス
140 ルータ
126 ネットワーク
128 コンピュータシステム
130 サーバー・コンピュータシステム

【特許請求の範囲】
【請求項1】
コンピュータで実行される方法であって、
HTTPヘッダーを含むHTTPリクエストをルータにリリースする前に、クライアント・コンピュータシステムで、前記HTTPリクエストをプロキシするステップと、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別するか否かを判定するステップと、
前記HTTPヘッダーを判定する前記ステップにおいて、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別すると判定したとき、
前記HTTPリクエストをブロックするステップと、
アラート通知を発生するステップとを含むことを特徴とするコンピュータで実行される方法。
【請求項2】
前記HTTPリクエストをブロックする前記ステップの前に、
前記HTTPリクエストのブロックを解除するか否かを判定するステップと、
前記HTTPリクエストのブロックの解除を判定する前記ステップにおいて、
前記HTTPリクエストのブロックを解除すると判定したとき、前記HTTPリクエストをリリースするステップと、
前記HTTPリクエストのブロックを解除しないと判定したとき、前記HTTPリクエストをブロックするステップとをさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
【請求項3】
前記HTTPリクエストをブロックする前記ステップの前に、
ユーザに、前記HTTPリクエストのブロックを承認するか又は拒否するかを入力させるステップと、
前記HTTPリクエストのブロックの拒否を受信したとき、前記HTTPリクエストをリリースするステップと、
前記HTTPリクエストのブロックの承認を受信したとき、前記HTTPリクエストをブロックするステップとをさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
【請求項4】
前記HTTPヘッダーを判定する前記ステップにおいて、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別しないと判定したとき、
前記HTTPリクエストをリリースするステップをさらに含み、
前記HTTPリクエストをリリースする前記ステップにおいて、
前記HTTPリクエストを、リリースされたHTTPリクエストとして、前記ターゲットURLへ送信されるようにすることを特徴とする請求項1に記載のコンピュータで実行される方法。
【請求項5】
前記リリースされたHTTPリクエストに応じて受信されたHTTPレスポンスをプロキシするステップと、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別するか否かを判定するステップと、
前記HTTPレスポンスを判定する前記ステップにおいて、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別しないと判定したとき、
前記HTTPレスポンスを送信するステップと、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別すると判定したとき、
悪意のある行動を防止するために前記コンテンツを修正するステップと、
前記HTTPレスポンスをリリースするステップとをさらに含むことを特徴とする請求項4に記載のコンピュータで実行される方法。
【請求項6】
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツを識別すると判定したとき、悪意のある行動を防止するために前記コンテンツを修正する前記ステップが、
前記コンテンツに存在する各HTML参照URLを識別するため、前記コンテンツを解析するステップと、
前記各HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応するか否かを判定するステップと、
前記各HTML参照URLを判定する前記ステップにおいて、
HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応しているとき、
前記HTML参照URLを安全なURLに置き換えるステップと、
前記HTTPリクエストをリリースするステップとをさらに含むことを特徴とする請求項5に記載のコンピュータで実行される方法。
【請求項7】
前記HTTPレスポンスが、コンテンツタイプがスクリプトのコンテンツを識別すると判定したとき、悪意のある行動を防止するために前記コンテンツを修正する前記ステップが、
前記コンテンツの先頭に、かつ任意のスクリプトの前に、安全なXMLHTTPリクエストAPI及びアクティブX置換オブジェクトを定義するジャバスクリプト・オーバライドを挿入するステップと、
前記ジャバスクリプト・オーバライド以外の各スクリプトを識別するため、前記コンテンツを解析するステップと、
前記各スクリプトにXMLHTTPリクエストAPIがある場合、前記安全なXMLHTTPリクエストAPIに置き換えるステップと、
前記各スクリプトにオブジェクトタグがある場合、前記アクティブX置換オブジェクトに置き換えるステップと、
前記HTTPリクエストをリリースするステップとをさらに含むことを特徴とする前記請求項5に記載のコンピュータで実行される方法。
【請求項8】
コンピュータプログラムコードを含むコンピュータで読み出し可能な有形のメディアを含むコンピュータプログラム製品であって、
HTTPヘッダーを含むHTTPリクエストをルータに送信する前に、クライアントコンピュータで、前記HTTPリクエストをプロキシするためのクライアント・アンチファーミング・アプリケーションを含み、
前記クライアント・アンチファーミング・アプリケーションが、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別するか否かを判定するステップと、
前記HTTPヘッダーを判定する前記ステップにおいて、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別すると判定したとき、
前記HTTPリクエストをブロックするステップと、
アラート通知を発生するステップとをさらに含むことを特徴とするコンピュータプログラム製品。
【請求項9】
前記クライアント・アンチファーミング・アプリケーションが、
前記HTTPリクエストをブロックする前記ステップの前に、前記HTTPリクエストのブロックを解除するか否かを判定するステップと、
前記HTTPリクエストのブロックの解除を判定する前記ステップにおいて、
前記HTTPリクエストのブロックを解除すると判定したとき、前記HTTPリクエストをリリースするステップと、
前記HTTPリクエストのブロックを解除しないと判定したとき、前記HTTPリクエストをブロックするステップとをさらに含むことを特徴とする請求項8に記載のコンピュータプログラム製品。
【請求項10】
前記クライアント・アンチファーミング・アプリケーションが、
前記HTTPリクエストをブロックする前記ステップの前に、ユーザに、前記HTTPリクエストのブロックを承認するか又は拒否するかを入力させるステップと、
前記HTTPリクエストのブロックの拒否を受信したとき、前記HTTPリクエストをリリースするステップと、
前記HTTPリクエストのブロックの承認を受信したとき、前記HTTPリクエストをブロックするステップとをさらに含むことを特徴とする請求項8に記載のコンピュータプログラム製品。
【請求項11】
前記HTTPヘッダーを判定する前記ステップにおいて、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別しないと判定したとき、
前記クライアント・アンチファーミング・アプリケーションが、
前記HTTPリクエストをリリースするステップをさらに含み、
前記HTTPリクエストをリリースする前記ステップにおいて、
前記HTTPリクエストを、リリースされたHTTPリクエストとして、前記ターゲットURLへ送信されるようにすることを特徴とする請求項8に記載のコンピュータプログラム製品。
【請求項12】
前記クライアント・アンチファーミング・アプリケーションが、
前記リリースされたHTTPリクエストに応じて受信されたHTTPレスポンスをプロキシするステップと、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別するか否かを判定するステップと、
前記HTTPレスポンスを判定する前記ステップにおいて、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別しないと判定したとき、
前記HTTPレスポンスをリリースするステップと、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別すると判定したとき、
悪意のある行動を防止するために前記コンテンツを修正するステップと、
前記HTTPレスポンスをリリースするステップとをさらに含むことを特徴とする請求項8に記載のコンピュータプログラム製品。
【請求項13】
前記HTTPレスポンスを判定する前記ステップにおいて、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツを識別すると判定したとき、
前記クライアント・アンチファーミング・アプリケーションが、
前記コンテンツに存在する各HTML参照URLを識別するため、前記コンテンツを解析するステップと、
前記各HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応するか否かを判定するステップと、
前記各HTML参照URLを判定する前記ステップにおいて、
HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応するとき、
前記HTML参照URLを安全なURLに置き換えるステップとをさらに含むことを特徴とする請求項12に記載のコンピュータプログラム製品。
【請求項14】
前記HTTPレスポンスを判定する前記ステップにおいて、
前記HTTPレスポンスが、コンテンツタイプがスクリプトのコンテンツを識別すると判定したとき、
前記クライアント・アンチファーミング・アプリケーションが、
安全なXMLHTTPリクエストAPI及びアクティブX置換オブジェクトを含むジャバスクリプト・オーバライドを、前記コンテンツの先頭に、かつ任意のスクリプトの前に挿入するステップと、
前記ジャバスクリプト・オーバライド以外の各スクリプトを識別するため、前記コンテンツを解析するステップと、
前記各スクリプトにXMLHTTPリクエストAPIがある場合、前記安全なXMLHTTPリクエストAPIに置き換えるステップと、
前記各スクリプトにオブジェクトタグがある場合、前記アクティブX置換オブジェクトに置き換えるステップとをさらに含むことを特徴とする請求項12に記載のコンピュータプログラム製品。
【請求項15】
コンピュータシステムであって、
クライアント・アンチファーミング・アプリケーションを記憶させたメモリと、
前記メモリに接続したプロセッサとを含み、
前記クライアント・アンチファーミング・アプリケーションを実行すると、
HTTPヘッダーを含むHTTPリクエストをルータに送信する前に、クライアント・コンピュータシステムで、前記HTTPリクエストをプロキシするステップと、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別するか否かを判定するステップと、
前記HTTPヘッダーを判定する前記ステップにおいて、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別すると判定したとき、
前記HTTPリクエストをブロックするステップと、
アラート通知を発生するステップとを含む方法が実行されることを特徴とするコンピュータシステム。
【請求項16】
前記HTTPリクエストをブロックする前記ステップの前に、ユーザに、前記HTTPリクエストのブロックを承認するか又は拒否するかを入力させるステップと、
前記HTTPリクエストのブロックの拒否を受信したとき、前記HTTPリクエストを送信するステップと、
前記HTTPリクエストのブロックの承認を受信したとき、前記HTTPリクエストをブロックするステップとをさらに含むことを特徴とする請求項15に記載のコンピュータシステム。
【請求項17】
前記HTTPヘッダーを判定する前記ステップにおいて、
前記HTTPヘッダーが、ルーティング可能なパブリックIPアドレスに対応するリファラーURL及びルーティング不可能なプライベートIPアドレスに対応するターゲットURLを識別しないと判定したとき、
前記HTTPリクエストをリリースするステップをさらに含み、
前記HTTPリクエストをリリースする前記ステップにおいて、
前記HTTPリクエストを、リリースされたHTTPリクエストとして、前記ターゲットURLへ送信されるにようすることを特徴とする請求項15に記載のコンピュータシステム。
【請求項18】
前記リリースされたHTTPリクエストに応じて受信されたHTTPレスポンスをプロキシするステップと、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別するか否かを判定するステップと、
前記HTTPレスポンスを判定する前記ステップにおいて、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別しないと判定したとき、
前記HTTPレスポンスをリリースするステップと、
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツ又はコンテンツタイプがスクリプトのコンテンツを識別すると判定したとき、
悪意のある行動を防止するために前記コンテンツを修正するステップと、
前記HTTPレスポンスをリリースするステップとをさらに含むことを特徴とする請求項17に記載のコンピュータシステム。
【請求項19】
前記HTTPレスポンスが、コンテンツタイプがtext/htmlのコンテンツを識別すると判定したとき、悪意のある行動を防止するために前記コンテンツを修正する前記ステップが、
前記コンテンツに存在する各HTML参照URLを識別するため、前記コンテンツを解析するステップと、
前記各HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応するか否かを判定するステップと、
前記各HTML参照URLを判定するステップにおいて、
HTML参照URLが、ルーティング不可能なプライベートIPアドレスに対応するとき、
前記HTML参照URLを安全なURLに置き換えるステップと、
前記HTTPリクエストをリリースするステップとをさらに含むことを特徴とする請求項18に記載のコンピュータシステム。
【請求項20】
前記HTTPレスポンスが、前記コンテンツタイプがスクリプトの前記コンテンツを識別すると判定したとき、悪意のある行動を防止するために前記コンテンツを修正する前記ステップが、
安全なXMLHTTPリクエストAPI及びアクティブX置換オブジェクトを定義するジャバスクリプト・オーバライドを、前記コンテンツの先頭に、かつ任意のスクリプトの前に挿入するステップと、
前記ジャバスクリプト・オーバライド以外の各スクリプトを識別するため、前記コンテンツを解析するステップと、
前記各スクリプトにXMLHTTPリクエストAPIがある場合、前記安全なXMLHTTPリクエストAPIに置き換えるステップと、
前記各スクリプトにオブジェクトタグがある場合、前記アクティブX置換オブジェクトに置き換えるステップと、
前記HTTPリクエストをリリースするステップとをさらに含むことを特徴とする請求項18に記載のコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate


【公開番号】特開2008−283686(P2008−283686A)
【公開日】平成20年11月20日(2008.11.20)
【国際特許分類】
【出願番号】特願2008−122127(P2008−122127)
【出願日】平成20年5月8日(2008.5.8)
【出願人】(501113353)シマンテック コーポレイション (78)
【氏名又は名称原語表記】Symantec Corporation
【住所又は居所原語表記】20330 Stevens Creek Boulevard, Cupertino, California 95014, USA
【Fターム(参考)】