説明

攻撃模倣テスト方法、攻撃模倣テスト装置及び攻撃模倣テストプログラム

【課題】攻撃模倣テストを簡易に行う。
【解決手段】サーバへの接続が可能な被害者側ブラウザがサーバに対するアクセスを行った際に、被害者側ブラウザが被害を被る可能性のある状態(要求可能状態)にするための情報である要素データを、サーバへの接続が可能な加害者側ブラウザが取得し(ステップS12)、加害者側ブラウザが取得した要素データを加害者側ブラウザから被害者側ブラウザに送信し(ステップS14)、被害者側ブラウザの状態に要素データを反映させて、被害者側ブラウザの状態を、サーバにアクセスした場合に被害を被る可能性のある状態(要求可能状態)に設定する(ステップS24)。これにより、要素データの取得、送受信、要求可能状態への設定を自動化する。

【発明の詳細な説明】
【技術分野】
【0001】
本件は、攻撃模倣テスト方法、攻撃模倣テスト装置及び攻撃模倣テストプログラムに関する。
【背景技術】
【0002】
最近、Webブラウザの制御機能を狙った攻撃として、「クロスサイトリクエスト偽造」(cross-site request forgery:以下、「CSRF」と呼ぶ)や、セッションフィクセーション(session fixation)といった攻撃がある(例えば、特許文献1参照)。これらの攻撃は、被害者側ブラウザが、攻撃者にとって都合のよいリクエストをサーバへ送信し、サーバがそれを受け入れてしまうことで実現される攻撃である。したがって、このような攻撃を防ぐためには、例えば、サーバが攻撃者にとって都合のよいリクエストを受け取っても、それを受け入れないようにしておくことが必要となる。
【0003】
例えば、CSRF攻撃を防ぐ方法には、攻撃者が被害者側ブラウザへ働きかけることでは被害者側ブラウザからサーバに送信され難い値をリクエストに含めておく方法がある。この場合、サーバは、リクエストの正誤によって異常なリクエストを検知する。なお、被害者側ブラウザからサーバに送信され難い値とは、フォーム内のhidden型フィールドやRefererヘッダー値などである。
【0004】
また、セッションフィクセーション攻撃を防ぐ方法には、サーバがログインなどの重大なリクエストに際して常にセッションを作り直すようにする方法がある。この場合、セッションクッキーが書き換えられた状態で重大なリクエストが送信されたときには、攻撃者のセッションに権限が付与されないようにすることができる。
【0005】
このように、攻撃ごとに防御する方法が異なることから、サーバには、様々な攻撃を防ぐための機能を設けておくことが望ましい。しかるに、たとえば、サーバにおいて、対策していない箇所があったり、対策方法が間違っていたりする可能性もあるため、Webアプリケーション開発者は、正しい対策が行われているかについてテストを実行する必要がある。
【0006】
テストの代表的な方法には、実際に攻撃が行われるのと同様の方法を模倣(シミュレート)して、攻撃が失敗したら正しく対策されているとする方法がある。このようなテストはブラックボックステスト方式と呼ばれ、Webアプリケーションの外部からHTTPプロトコルによって通信する方式で行われるのが一般的である。また、一般的なブラックボックステストについては、自動化が進んでいる一方、CSRF攻撃やセッションフィクセーション攻撃に関するテストを自動的に行うことは難しい。これらの攻撃を模倣してテストするには、アプリケーションに依存した適切な処理が必要であり、アプリケーションに関する知識・仕様情報をもたない装置やプログラムでは実現が難しいからである。
【0007】
このため、CSRF攻撃やセッションフィクセーション攻撃への対策に関するテストは、人間が適切な状態・方法や攻撃の成否を判断しながら対話的に行うのが有力と考えられる。例えば、それぞれが攻撃者側と被害者側の役割を持つ二つ(又はそれ以上)のクライアント(一般的にはWebブラウザが仮想的にクライアントとして動作する)を実行し、その両方を操作しながら行う方法である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−301327号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、従来のWebクライアント、Webブラウザには対話的にテストを行うための機能が用意されていない。また、仮に全て人手で対話的な操作を行おうとすると、大変手間がかかる。このことは、同じテストを何度も繰り返す場合に、特に問題となる。
【0010】
そこで本件は上記の課題に鑑みてなされたものであり、攻撃に対するテストを簡易に行うことが可能な攻撃模倣テスト方法、攻撃模倣テスト装置及び攻撃模倣テストプログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本明細書に記載の攻撃模倣テスト方法は、サーバへの接続が可能な第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを、前記サーバへの接続が可能な第2のブラウザが取得する取得工程と、前記取得工程で前記第2のブラウザが取得した前記要素データを前記第2のブラウザから前記第1のブラウザに送信する送信工程と、前記送信工程で送信された要素データを前記第1のブラウザで受信する受信工程と、前記第1のブラウザの状態に、前記受信工程で受信された前記要素データを反映させて、当該第1のブラウザの状態を、前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する設定工程と、を含んでいる。
【0012】
本明細書に記載の攻撃模倣テスト装置は、サーバへの接続が可能な第1のブラウザと、前記第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを取得する、前記サーバへの接続が可能な第2のブラウザと、を備え、前記第2のブラウザは、取得した前記要素データを前記第1のブラウザに送信する送信部を有し、前記第1のブラウザは、前記要素データを受信する受信部と、当該第1のブラウザの状態に前記受信部で受信した前記要素データを反映させて、前記第1のブラウザの状態を前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する設定部と、を有する。
【0013】
本明細書に記載の攻撃模倣テストプログラムは、サーバへの接続が可能な第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを、前記サーバへの接続が可能な第2のブラウザが取得し、前記取得する処理で前記第2のブラウザが取得した前記要素データを前記第2のブラウザから前記第1のブラウザに送信し、前記送信する処理で送信された前記要素データを前記第1のブラウザで受信し、前記第1のブラウザの状態に、前記受信する処理で受信された前記要素データを反映させて、当該第1のブラウザの状態を、前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する処理を、コンピュータに実行させる。
【発明の効果】
【0014】
本明細書に記載の攻撃模倣テスト方法、攻撃模倣テスト装置及び攻撃模倣テストプログラムは、攻撃に対するテストを簡易に行うことができるという効果を奏する。
【図面の簡単な説明】
【0015】
【図1】一実施形態に係る攻撃模倣テスト装置を含むシステムの構成を概略的に示す図である。
【図2】図1の情報処理部のハードウェア構成を示す図である。
【図3】図1の情報処理部の機能ブロック図である。
【図4】図4(a)は、攻撃者側ブラウザAの処理を示すフローチャートであり、図4(b)は、被害者側ブラウザBの処理を示すフローチャートである。
【図5】要素データ(フォーム)を示す図である。
【図6】図6(a)は、要素データがフォームである場合における、図4(a)のステップS12の処理を示すフローチャートであり、図6(b)は、要素データがフォームである場合における、図4(b)のステップS24の処理を示すフローチャートである。
【図7】要素データ(クッキー)を示す図である。
【図8】図8(a)は、要素データがクッキーである場合における、図4(a)のステップS12の処理を示すフローチャートであり、図8(b)は、要素データがクッキーである場合における、図4(b)のステップS24の処理を示すフローチャートである。
【図9】変形例を示す図である。
【発明を実施するための形態】
【0016】
以下、一実施形態について、図1〜図8に基づいて詳細に説明する。図1には、一実施形態にかかる攻撃模倣テスト方法を実現可能な攻撃模倣テスト装置10を含むシステムの構成が概略的に示されている。図1に示すように、攻撃模倣テスト装置10は、インターネット(IPネットワーク)などのネットワーク12に接続されている。また、ネットワーク12には、テスト対象のサーバ14(Webサイトとも呼ばれる)も接続されている。
【0017】
攻撃模倣テスト装置10は、汎用的なPC(Personal Computer)などの端末であり、情報処理部20と、ユーザインタフェース22(キーボードやマウス、表示装置など)と、を備える。図2には、情報処理部20のハードウェア構成が示されている。図2に示すように、情報処理部20は、CPU90、ROM92、RAM94、記憶部(ここではHDD(Hard Disk Drive))96、及び可搬型記憶媒体用ドライブ99等を備えており、情報処理部20の構成各部は、バス98に接続されている。情報処理部20では、ROM92あるいはHDD96に格納されているプログラム(攻撃模倣テストプログラム)、或いは可搬型記憶媒体用ドライブ99が可搬型記憶媒体91から読み取ったプログラム(攻撃模倣テストプログラム)をCPU90が実行することにより、図3の各部の機能が実現される。
【0018】
図3には、情報処理部20の機能ブロック図が示されている。この図3に示すように、情報処理部20では、二つ以上(図3では2つ)のWebクライアント(ブラウザ(クライアント)A及びブラウザ(クライアント)B)が動作する。なお、各ブラウザA,Bはそれぞれが汎用的なオペレーティングシステム(OS)上で動作するアプリケーションプログラムであり、仮想的にクライアントとして動作するものとする。また、本実施形態では、各Webクライアントソフトウェアが攻撃者側と被害者側の両方の機能を兼ね備えているものとする。なお、各ブラウザは、それぞれ攻撃者側又は被害者側として動作することで、役割分担を行っている。
【0019】
ブラウザAは、図3に示すように、通常処理部32と、要素データ抽出部34と、送信部としての要素データ送信部36と、受信部としての要素データ受信部38と、設定部としての要求可能状態設定部40と、しての機能を有する。これらのうち、要素データ抽出部34及び要素データ送信部36は、ブラウザAが、攻撃者側(第2のブラウザ)となる場合に動作する。一方、要素データ受信部38及び要求可能状態設定部40は、ブラウザAが、被害者側(第1のブラウザ)となる場合に動作する。通常処理部32は、一般的なブラウザの処理を実行する。
ブラウザBも、ブラウザAと同様、通常処理部42と、要素データ抽出部44と、送信部としての要素データ送信部46と、受信部としての要素データ受信部48と、設定部としての要求可能状態設定部50と、しての機能を有する。これらのうち、要素データ抽出部44及び要素データ送信部46は、ブラウザBが、攻撃者側(第2のブラウザ)となる場合に動作する。一方、要素データ受信部48及び要求可能状態設定部50は、ブラウザBが被害者側(第1のブラウザ)となる場合に動作する。
【0020】
要素データ抽出部34は、他方のブラウザ(ブラウザB)がサーバ14に対するアクセスを行った際に当該ブラウザが被害を被る可能性のある状態にするための情報である要素データを抽出(取得)する。同様に、要素データ抽出部44は、他方のブラウザ(ブラウザA)がサーバ14に対するアクセスを行った際に当該ブラウザが被害を被る可能性のある状態にするための情報である要素データを抽出(取得)する。要素データとしては、例えば、フォームや、クッキーが挙げられる。
【0021】
要素データ送信部36,46は、要素データ抽出部34,44が取得した要素データを他方のブラウザ(要素データ抽出部34の場合ブラウザB、要素データ抽出部44の場合ブラウザA)に対して送信する。要素データ受信部38,48は、要素データ送信部46,36から送信されてきた要素データを受信する。
【0022】
要求可能状態設定部40,50は、要素データ受信部38,48が受信した要素データを、ブラウザの状態に反映させて、当該ブラウザの状態をサーバ14にアクセスした場合に被害を被る可能性のある状態に設定する。
【0023】
ここで、CSRF攻撃と、セッションフィクセーション攻撃について、具体的に説明する。
【0024】
最近のweb(World Wide Web)では、掲示板やウェブログ(ブログ)のような発信情報の更新処理、ネットワークに接続された機器の管理、商品やサービスの購入といった商取引など、多くのアプリケーションが実現されている。このような高度なWebアプリケーションでは、特定のユーザのみに情報を提供したり操作を許可したりすることが求められる。このため、SSL(Secure Sockets Layer)やTLS(Transport Layer Security)による保護を行うHTTPSプロトコルや、HTTP認証といったセキュリティ機能が出現してきている。またHTTPプロトコルはステートレスであり、プロトコル自体は複数のリクエストを関連付ける機能を持たないため、クッキーと呼ばれる技術も出現してきている。これはサーバがレスポンスに付与した値(クッキー)を、ブラウザが暗黙的に記憶し、ブラウザは、それ以降リクエストのたびにその値を付けてサーバに送信するというものである。
【0025】
一方で、Webブラウザには、その振舞いをサーバ側の指定で制御できる機能が設けられるようになった。その一つであるクライアント側スクリプトはHTMLページ内やそこから参照されるファイル内に記述できる簡易なプログラム言語であり、Webブラウザの振舞いをある程度制御することができる(例えば、Java(登録商標)Script)。ただし、これらのWebブラウザ制御機能は、ユーザや開発者に機能性や利便性をもたらすのみならず、セキュリティ侵害を起こそうとする者にとっても好都合である。
【0026】
すなわち、攻撃者は、細工されたHTMLページを任意のサイトに用意し、ユーザにそのページを開かせることにより、そのページに用意されたJava(登録商標)Scriptやその他の要素によってWebブラウザを操作するようにする。このような手段で、被害者側のブラウザに、被害者が意図しないリクエストを送信させることにより引き起こされる攻撃がCSRF攻撃である。このCSRF攻撃は、特に、リクエストが重要な処理、たとえば掲示板などへのメッセージの書き込みや削除、機器への設定変更処理、商品購入やサービスの申し込みなどである場合に、問題となる。CSRF攻撃ではリクエストをサーバへ送信するのは被害者側ブラウザである。このため、ブラウザが記憶しているクッキーによって依頼者を識別している場合や、ブラウザが稼動しているコンピュータの識別子(たとえばIPアドレス)によってアクセス可否を判断している場合などが多い。この場合、本来、攻撃者自身が送信するリクエストでは許可されない処理が、サーバで受け付けられるため、深刻な被害となる。
【0027】
また、リンクやフォームのような単純なハイパーテキスト部品であっても、ユーザはその送信先や送信内容を必ずしも確認しないので、ユーザが意図しない送信先へ意図しない内容のリクエストを送らせる行為は容易に実現できる。このような手段で、被害者のブラウザが記憶しているセッションクッキー情報を強制的に書き換えておくことで、被害者のリクエストを攻撃者にとって都合の良いセッションに属するものとサーバに識別させる攻撃手法が、セッションフィクセーション攻撃である。この攻撃では、クッキーが書き換えられた状態に気づかずに被害者がリクエストを送信すると、攻撃者にとってアクセス可能なセッションに被害者の送信内容やログイン権限などが付与される。これにより、攻撃者は被害者の送信した情報を盗み見たり、被害者になりすまして別の処理を要求したりすることが可能になる。クッキー情報を書き換える手段としては、ブラウザのバグを悪用したり、適用ドメインを広く指定したクッキーを与えたり、通信路上で改ざんしたりする、などの方法が知られている。
【0028】
本実施形態では、CSRF攻撃や、セッションフィクセーション攻撃に対して、サーバ14上での対策が有効か否かを検査するためのテスト(ブラックボックステスト)を、攻撃模倣テスト装置10を用いて実行する。このテストは、CSRF攻撃やセッションフィクセーション攻撃を模倣して(同一の攻撃を被害者側ブラウザに仕掛けて)、その結果を見るテストである。
【0029】
以下、図4(a)、図4(b)のフローチャートに沿って、その他図面を適宜参照しつつ、攻撃模倣テスト装置10のブラウザAとブラウザBを用いた攻撃模倣テストについて、詳細に説明する。
【0030】
(CSRF攻撃に関するテスト)
本実施形態では、ブラウザAが、第2のブラウザとしての攻撃者側ブラウザであるものとし、ブラウザBが、第1のブラウザとしての被害者側ブラウザであるものとする。すなわち、本処理では、図3の要素データ受信部38、要求可能状態設定部40、要素データ抽出部44、及び要素データ送信部46は、機能しないものとする。
【0031】
図4(a)のフローチャートは、攻撃者側ブラウザAの処理を示し、図4(b)のフローチャートは、被害者側ブラウザBの処理を示している。これらの処理は同時並行的に実行される。まず、図4(a)のステップS10では、通常処理部32が、攻撃者としての準備処理を行う。より具体的には、ユーザ(テスト実施者)の指示の下、通常処理部32が、ログインや目的のページへの遷移といった準備作業を実行する。また、図4(b)のステップS20では、通常処理部42が、被害者としての準備処理(ログインや目的のページへの遷移など)を行う。
【0032】
次いで、図4(a)のステップS12では、要素データ抽出部34が、要素データを抽出する。なお、ステップS12の処理は、ユーザ(テスト実施者)からの指示を受けたタイミングで行われる。ここでは、CSRF攻撃のテストを行うので、要素データ抽出部34は、要素データとしてフォームを抽出することになる。要素データ(フォーム)の構成は、一例として、図5に示すような構成となっている。図5に示すように、要素データは、項目「method」、「action」、「パラメータ群」から成る。「method」はHTTPメソッド名であり、formタグのmethod属性から得られる。「action」はフォームの送信先URLであり、formタグのaction属性(および同属性が相対URLの場合にはフォームを含むページを得たリクエストURL)から得られる。「パラメータ群」は一般に複数の下位項目から成り、各下位項目はformタグに含まれるコントロールと呼ばれる要素を表すタグ(inputタグ、selectタグなど)から得ることができ、それぞれが「種類」、「名前」、「値」から成る。
【0033】
ここで、「種類」はコントロールの種類を指し、例えば、text、password、hidden、textarea、radio、checkbox、selectがある。「名前」はコントロールの名前を指し、name属性から得ることができる。「値」はコントロールに設定されている初期値を指し、value属性から得ることができる。ただし、複数の選択肢を持つコントロール(radio、selectなど)の場合、値は複数であってもよい。
【0034】
図4(a)のステップS12では、具体的に、図6(a)のフローチャートに沿った処理を実行する。まず、図6(a)のステップS30では、要素データ抽出部34が、表示中のHTMLページ内のformタグを選択する。次いで、ステップS32では、要素データ抽出部34が、ステップS30で選択されたformタグのmethod属性とaction属性を取得する。次いで、ステップS34では、formタグ内の各コントロールについて、種類、名前、値を取り出す。以上のようにして、図5のような要素データが抽出されると、図4(a)のステップS14に移行する。
【0035】
図4(a)のステップS14では、要素データ送信部36が、要素データの送信を行う。また、これに伴って、図4(b)のステップS22では、要素データ受信部48が、要素データの受信を行う。なお、本実施形態では、攻撃者側ブラウザAと被害者側ブラウザBとが、同一の装置上に存在しているので、要素データの送受信には、一般的なプロセス間通信の手段を用いることができる。ただし、これに限らず、例えば、攻撃者側ブラウザAと被害者側ブラウザBとが異なる装置上に存在している場合には、通信機能(例えばIPネットワーク)を用いて要素データを送受信することができる。たとえば、IPネットワークを用いる場合であれば、被害者側ブラウザが特定のポート番号で待ち受けし、攻撃者側ブラウザがそのポート番号に接続して、要素データを適当な方式で符号化して送受信することで実現できる。なお、接続するクライアントの識別子、例えば名前やポート番号などは、ユーザ(テスト実施者)が事前に登録しておくか、あるいは、必要になったときにユーザ(テスト実施者)に問い合わせるなどの一般的な方法で定めるものとする。なお、上述した構造の要素データを受け渡す際の中間形式としては、たとえばXML文書にするなどの方法がある。
【0036】
次いで、図4(b)のステップS24では、要求可能状態設定部50が、要求可能状態設定処理を実行する。すなわち、要求可能状態設定部50は、被害者側ブラウザBにおいて、受け取ったフォーム情報をformタグとして反映させたHTMLページを表示させる。この場合、たとえばJava(登録商標)Scriptを用いて動的にHTMLページを作成することが可能である。なお、この場合の「Java(登録商標)Script」には、その他の亜種や類似技術であるECMAScript、JScript、VBScriptなども含まれる。図4(b)のステップS24においては、具体的には、図6(b)のフローチャートに沿った処理が実行される。
【0037】
図6(b)の処理では、まず、ステップS40において、要求可能状態設定部50が、表示中のHTMLページを選択する。なお、表示中のHTMLページが存在しない場合には、要求可能状態設定部50は、新たな空白のHTMLページを作成する。
【0038】
次いで、ステップS42では、要求可能状態設定部50が、ステップS22で受信した要素データに含まれるmethod属性とaction属性をもつformタグを生成する。次いで、ステップS44では、要求可能状態設定部50が、各パラメータについてformタグ内に対応する名前、値を持ったコントロールを生成する。なお、フォーム情報に含まれる各パラメータはformタグ内のコントロールとして表現されるが、攻撃者側と異なる種類のコントロールにしても構わない。たとえば、種類がhiddenのパラメータをtext型のコントロールとして表現することで、そのパラメータの値を、送信前にブラウザ上で編集可能になる。したがって、攻撃者側ブラウザAあるいは被害者側ブラウザBに、編集可能なパラメータの値を、ユーザ(テスト実施者)の意図に合わせて編集するための機能を設けてもよい。これにより、テスト結果をより簡単に判別できるような内容や、より実際の攻撃に近い内容に書き換えることが可能となる。
【0039】
以上の処理により、要求可能状態設定部50は、被害者ブラウザBの状態を要求可能状態とすることができる。すなわち、被害者ブラウザBの状態が攻撃者によって細工されたリクエストをサーバへ送信することが可能な状態に設定されることになる(攻撃模倣)。その後は、図4(b)のステップS26に移行する。
【0040】
ステップS26に移行すると、通常処理部42は、細工されたリクエストの送信処理を実行する。なお、このステップS26の処理は、ユーザ(テスト実施者)の操作に応じて、すなわち、ユーザがフォーム送信ボタンなどを押したタイミングで、行われる。
【0041】
そして、次のステップS28では、通常処理部42が、送信したリクエストに対してサーバ14から送信されてきたレスポンスを出力(表示)する。この出力をユーザが確認することで、攻撃模倣による結果を確認することができ、これにより、攻撃模倣テストの目的が達成されることとなる。なお、ユーザは出力されたレスポンスを確認する場合のみならず、例えば、リクエスト送信後のサーバの動作を観察することでも、攻撃模倣による結果を確認することが可能な場合がある。
【0042】
(セッションフィクセーション攻撃に関するテスト)
次に、セッションフィクセーション攻撃に関するテスト方法について説明する。このセッションフィクセーション攻撃に関するテストの場合、前述したCSRF攻撃の場合と異なり、要素データはクッキーの情報の少なくとも一部となる。また、図4(a)のステップS12と、図4(b)のステップS24の具体的処理内容が、CSRF攻撃の場合と異なる。
【0043】
要素データ(クッキー)は、具体的には、図7のような構成を有する。すなわち、図7に示すように、要素データ(クッキー)は、「名前」、「値」、「対象ドメイン名」の項目を有する。「名前」と「値」はそれぞれクッキーの名前と値であり、「対象ドメイン名」はクッキーを送信するドメイン名を指す。なお、要素データ(クッキー)の項目としては、上記に加えて、図7に示すように、「対象パス」、「有効期限」、「Secure属性」などの項目を採用してもよいが、必須の項目ではない。
【0044】
本テストでは、図4(a)のステップS12の処理(要素データ抽出処理)において、図8(a)のフローチャートに沿った処理を実行する。図8(a)の処理では、まず、ステップS50において、要素データ抽出部34が、表示中のHTMLページに属するdocument.cookie(セッションクッキー情報)を取得する。この場合、要素データ抽出部34は、例えば、HTMLページを開いている状態でJava(登録商標)Scriptを実行することで取得することができる。あるいは、要素データ抽出部34は、ブラウザAのクッキー格納領域(通常処理部32が有しているものとする)を直接操作して読み出してもよい。一般にブラウザは複数のクッキーを記憶できる。したがって、ステップS50では、複数のクッキーが取得される場合がある。ステップS52では、ステップS50において複数のクッキーが取得されたか否かを判断する。ここでの判断が否定された場合には、ステップS56に移行するが、ステップS52の判断が肯定された場合には、ステップS54に移行する。
【0045】
ステップS54では、要素データ抽出部34が、取得された複数のクッキーから適当なクッキーを選択する。この場合、選択される適当なクッキーを、クッキーの名前などにより事前に決めておくなどすることができる。あるいは、ユーザ(テスト実施者)に対してクッキーを表示し、ユーザに選択を促すようにしてもよい。
【0046】
そして、ステップS56では、要素データ抽出部34が、取得(選択)したクッキーの名前、値、対象、ドメイン名を取得する。
【0047】
これに対し、図4(b)のステップS24の処理(要求可能状態設定処理)では、図8(b)のステップS60において、要求可能状態設定部50が、ブラウザBに対象ドメイン名のページを表示しているか否かを判断する。ここでの判断が否定された場合には、ステップS64に移行するが、判断が肯定された場合には、ステップS62に移行する。
【0048】
ステップS62に移行した場合、要求可能状態設定部50は、新たに対象ドメイン名のページを表示する。この場合、要求可能状態設定部50は、たとえばJava(登録商標)Scriptを用いて対象ドメイン名のページを開くことができる。そして、ステップS64に移行すると、要求可能状態設定部50は、対象ドメイン名のページの状態はそのままで、ブラウザAの要素データ送信部36から送信され、ブラウザBの要素データ受信部48で受信したクッキーをブラウザBのクッキー記憶領域(通常処理部42が有しているものとする)に追加または上書きする。この場合、要求可能状態設定部50は、たとえば、対象ドメイン名のページのcookie属性(document.cookie)にクッキーの名前と値を追加する。
【0049】
なお、上記の処理以外は、CSRF攻撃に対する攻撃模倣テストと同様の処理(図4(a)、図4(b)の処理)を行うことになる。このようにすることで、セッションフィクセーション攻撃に対する攻撃模倣テストを行うことが可能となる。
【0050】
以上、詳細に説明したように、本実施形態によると、サーバ14への接続が可能な被害者側ブラウザBがサーバ14に対するアクセスを行った際に、被害者側ブラウザBが被害を被る可能性のある状態(要求可能状態)にするための情報である要素データを、サーバ14への接続が可能な加害者側ブラウザAが取得し(ステップS12)、加害者側ブラウザAが取得した要素データを加害者側ブラウザAから被害者側ブラウザBに送信し(ステップS14)、被害者側ブラウザBの状態に要素データを反映させて、被害者側ブラウザBの状態を、サーバ14にアクセスした場合に被害を被る可能性のある状態(要求可能状態)に設定する(ステップS24)。このように、要素データの取得、送受信、要求可能状態への設定を自動化することで、攻撃模倣テスト(ブラックボックステスト)を何度も繰り返すような場合であっても、簡易にテストを行うことが可能となる。
【0051】
また、本実施形態によると、要素データとしてフォームやクッキーを用いることで、クロスサイトリクエストフォージェリー(CSRF攻撃)や、セッションフィクセーション攻撃に関するテストを簡易に行うことが可能となる。
【0052】
なお、上記実施形態では、攻撃者側ブラウザAと被害者側ブラウザBとが、同一の装置上に存在しており、各ブラウザ間では、一般的なプロセス間通信の手段を用いて、要素データを送受信する場合について説明した。しかしながら、これに限られるものではなく、要素データの受け渡しをクリップボード経由で行ってもよい。クリップボードとは、情報処理部20のOSやアプリケーションから容易に読み書きできる一時的なデータの仮想的な格納場所であり、一般的に切り取り(カット)、コピー、貼り付け(ペースト)などの機能を実現するために用いられる。この場合、攻撃者側の要素データ送信部36が、要素データ(フォーム情報やクッキー情報)を、クリップボードへ書き込み、被害者側の要素データ受信部48がクリップボードから当該情報を読み出すことで、受け渡しが完了する。なお、クリップボード上に複数のデータを格納して選択的に取り出せるようにしてもよいし、あるいは、クリップボード上で、データの種類(フォーム情報とクッキー情報の区別)をメタデータとして保持するようにしてもよい。
【0053】
また、要素データの受け渡しをファイル経由で行うこととしてもよい。攻撃者側ブラウザAの要素データ送信部36は、要素データをファイルへ書き出し、被害者側ブラウザBの要素データ受信部48は、そのファイルから要素データを読み出すようにする。この場合、被害者側ブラウザBは、特定のファイルの更新を監視したり、攻撃者側ブラウザAからネットワークなどを介してファイル更新イベント(およびそのファイル名)を受け取ったりしたときを、受信(読み出し)の契機とすることができる。
【0054】
なお、上記実施形態では、CSRF攻撃に関する攻撃模倣テストを行う場合、被害者側ブラウザBにおいて、受け取ったフォーム情報を含むHTMLページを生成することとしていたが、これに限られるものではない。例えば、当該HTMLページの生成を攻撃者側ブラウザAで行うこととしてもよい。例えば、攻撃者側において上記実施形態の被害者側と同様にHTMLページを生成し、それをファイルに保存する(図9の(1a)参照)。この場合、攻撃者側から被害者側へ渡すデータは、保存したHTMLファイルのURLのみとすることができる(図9の(2)参照)。このようにすることで、被害者側では受け取ったURLへアクセスすることで要求可能状態に設定することが可能である(図9の(3a)参照)。
【0055】
なお、図9の(1b)、(3b)に示すように、攻撃者側ブラウザAが特定のポート番号で待ち受けて一種のWebサーバとして振る舞うようにしてもよい。この場合、攻撃側ブラウザAにアクセスしてきた被害者側ブラウザBに対して、生成したHTMLページを提供するようにしてもよい。この場合、図9の(2)では、攻撃者側ブラウザAは、待ち受けているポート番号を指すURLを被害者側ブラウザBに送信するのみでよい。
【0056】
また、図9の(1c)、(3c)に示すように、生成したHTMLページをテスト対象とは別のWebサーバへアップロードすることとしてもよい。
【0057】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【0058】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0059】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0060】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【0061】
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) サーバへの接続が可能な第1のブラウザが前記サーバに対するアクセスを行った際に当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを、前記サーバへの接続が可能な第2のブラウザが取得する取得工程と、前記取得工程で前記第2のブラウザが取得した前記要素データを前記第2のブラウザから前記第1のブラウザに送信する送信工程と、前記送信工程で送信された要素データを前記第1のブラウザで受信する受信工程と、前記第1のブラウザの状態に、前記受信工程で受信された前記要素データを反映させて、当該第1のブラウザの状態を、前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する設定工程と、を含む攻撃模倣テスト方法。
(付記2) 前記要素データは、フォームであり、前記攻撃は、クロスサイトリクエストフォージェリーであることを特徴とする付記1に記載の攻撃模倣テスト方法。
(付記3) 前記要素データは、クッキーであり、前記攻撃は、セッションフィクセーションであることを特徴とする付記1に記載の攻撃模倣テスト方法。
(付記4) 前記送信工程及び前記受信工程では、前記要素データを、IPネットワークを用いた受け渡し、クリップボードを用いた受け渡し、ファイルを用いた受け渡し、のいずれかにより、前記第2のブラウザと前記第1のブラウザとの間の送受信を行うことを特徴とする付記1〜3のいずれか一項に記載の攻撃模倣テスト方法。
(付記5) サーバへの接続が可能な第1のブラウザと、前記第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを取得する、前記サーバへの接続が可能な第2のブラウザと、を備え、前記第2のブラウザは、取得した前記要素データを前記第1のブラウザに送信する送信部を有し、前記第1のブラウザは、前記要素データを受信する受信部と、当該第1のブラウザの状態に前記受信部で受信した前記要素データを反映させて、前記第1のブラウザの状態を前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する設定部と、を有することを特徴とする攻撃模倣テスト装置。
(付記6) 前記要素データは、フォームであり、前記攻撃は、クロスサイトリクエストフォージェリーであることを特徴とする付記5に記載の攻撃模倣テスト装置。
(付記7) 前記要素データは、クッキーであり、前記攻撃は、セッションフィクセーションであることを特徴とする付記5に記載の攻撃模倣テスト装置。
(付記8) 前記送信部及び前記受信部では、前記要素データを、IPネットワークを用いた受け渡し、クリップボードを用いた受け渡し、ファイルを用いた受け渡し、のいずれかにより、前記第2のブラウザと前記第1のブラウザとの間の送受信を行うことを特徴とする付記5〜7のいずれか一項に記載の攻撃模倣テスト装置。
(付記9) サーバへの接続が可能な第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを、前記サーバへの接続が可能な第2のブラウザが取得し、前記取得する処理で前記第2のブラウザが取得した前記要素データを前記第2のブラウザから前記第1のブラウザに送信し、前記送信する処理で送信された前記要素データを前記第1のブラウザで受信し、前記第1のブラウザの状態に、前記受信する処理で受信された前記要素データを反映させて、当該第1のブラウザの状態を、前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する処理を、コンピュータに実行させることを特徴とする攻撃模倣テストプログラム。
(付記10) 前記要素データは、フォームであり、前記攻撃は、クロスサイトリクエストフォージェリーであることを特徴とする付記9に記載の攻撃模倣テストプログラム。
(付記11) 前記要素データは、クッキーであり、前記攻撃は、セッションフィクセーションであることを特徴とする付記9に記載の攻撃模倣テストプログラム。
(付記12) 前記送信する処理では、前記要素データを、IPネットワークを用いた受け渡し、クリップボードを用いた受け渡し、ファイルを用いた受け渡し、のいずれかにより、前記第2のブラウザから前記第1のブラウザへ送信することを特徴とする付記9〜11のいずれか一項に記載の攻撃模倣テストプログラム。
【符号の説明】
【0062】
10 攻撃模倣テスト装置
12 ネットワーク(IPネットワーク)
14 サーバ
36、46 要素データ送信部(送信部)
38,48 要素データ受信部(受信部)
40,50 要求可能状態設定部(設定部)

【特許請求の範囲】
【請求項1】
サーバへの接続が可能な第1のブラウザが前記サーバに対するアクセスを行った際に当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを、前記サーバへの接続が可能な第2のブラウザが取得する取得工程と、
前記取得工程で前記第2のブラウザが取得した前記要素データを前記第2のブラウザから前記第1のブラウザに送信する送信工程と、
前記送信工程で送信された要素データを前記第1のブラウザで受信する受信工程と、
前記第1のブラウザの状態に、前記受信工程で受信された前記要素データを反映させて、当該第1のブラウザの状態を、前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する設定工程と、
を含む攻撃模倣テスト方法。
【請求項2】
前記要素データは、フォームであり、
前記攻撃は、クロスサイトリクエストフォージェリーであることを特徴とする請求項1に記載の攻撃模倣テスト方法。
【請求項3】
前記要素データは、クッキーであり、
前記攻撃は、セッションフィクセーションであることを特徴とする請求項1に記載の攻撃模倣テスト方法。
【請求項4】
前記送信工程及び前記受信工程では、前記要素データを、IPネットワークを用いた受け渡し、クリップボードを用いた受け渡し、ファイルを用いた受け渡し、のいずれかにより、前記第2のブラウザと前記第1のブラウザとの間の送受信を行うことを特徴とする請求項1〜3のいずれか一項に記載の攻撃模倣テスト方法。
【請求項5】
サーバへの接続が可能な第1のブラウザと、
前記第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを取得する、前記サーバへの接続が可能な第2のブラウザと、を備え、
前記第2のブラウザは、取得した前記要素データを前記第1のブラウザに送信する送信部を有し、
前記第1のブラウザは、前記要素データを受信する受信部と、当該第1のブラウザの状態に前記受信部で受信した前記要素データを反映させて、前記第1のブラウザの状態を前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する設定部と、を有することを特徴とする攻撃模倣テスト装置。
【請求項6】
サーバへの接続が可能な第1のブラウザが前記サーバに対するアクセスを行った際に、当該第1のブラウザが被害を被る可能性のある状態にするための情報である要素データを、前記サーバへの接続が可能な第2のブラウザが取得し、
前記取得する処理で前記第2のブラウザが取得した前記要素データを前記第2のブラウザから前記第1のブラウザに送信し、
前記送信する処理で送信された前記要素データを前記第1のブラウザで受信し、
前記第1のブラウザの状態に、前記受信する処理で受信された前記要素データを反映させて、当該第1のブラウザの状態を、前記サーバにアクセスした場合に被害を被る可能性のある状態に設定する処理を、コンピュータに実行させることを特徴とする攻撃模倣テストプログラム。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−146100(P2012−146100A)
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2011−3477(P2011−3477)
【出願日】平成23年1月11日(2011.1.11)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】