(57)【特許請求の範囲】
【請求項１】
ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部と、
判定対象である対象ページを取得する対象ページ取得手段と、
取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、
前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記抽出手段によって抽出された前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段と、
を備えたログイン判定装置。
【請求項２】
ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部にアクセス可能なコンピュータを用いたログイン判定プログラムであって、前記ログイン判定プログラムは、コンピュータを
判定対象である対象ページを取得する対象ページ取得手段と、
取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、
前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記抽出手段によって抽出された前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段と、
して機能させるためのログイン判定プログラム。
【請求項３】
請求項２のログイン判定プログラムにおいて、
前記対象ページはＨＴＭＬ言語にて記載されており、
前記階層構造解析手段は、取得した対象ページのＨＴＭＬタグのネスティング状態に応じて、階層構造の解析を行うことを特徴とするログイン判定プログラム。
【請求項４】
請求項２または３のログイン判定プログラムにおいて、
前記階層構造解析手段は、ＨＴＭＬタグの各階層に含まれる各種類のタグの数を階層構造として解析し、
前記抽出手段は、前記構造記録部に記録された対象ページを構成するタグの各階層に含まれる各種類のタグの数と、前記階層構造解析手段によって解析された対象ページを構成するタグの各階層に含まれる各種類のタグの数とを比較し、対応するタグの数が異なる部分を階層構造の異なる部分として抽出することを特徴とするログイン判定プログラム。
【請求項５】
第１の対象ページを構成するタグの階層構造と、第２の対象ページを構成するタグの階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記抽出手段によって抽出された、第１の対象ページまたは第２の対象ページを構成するタグの前記階層構造の異なる部分に対応する部分の内容に基づいて、第１の対象ページと第２の対象ページの変化内容を決定する変化内容決定手段と、
を備えたページ変化検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、対象となるページの注目すべき変化を容易に検出することができる装置に関するものである。
【背景技術】
【０００２】
ウエブサイトへの攻撃に対する脆弱性を検査するためのプログラムが開発されている（たとえば、特許文献１）。しかし、攻撃の一つであるＣＳＲＦ（クロスサイト・リクエスト・フォージェリ）に対する脆弱性を判定するためのプログラムは実用化されていない。
【０００３】
ウエブサイトに対する攻撃の一つにＣＳＲＦ（クロスサイト・リクエスト・フォージェリ）がある。図１に、ＣＳＲＦの概要を説明する。
【０００４】
ＣＳＲＦを行う悪意のある攻撃者は、攻撃者端末装置Ｃからサーバ装置ＳのＳＮＳにアクセスし、Ｂさんの掲示板Ｂのリンクに仕掛けを行う。ユーザがユーザ端末装置Ａ１から、自らの掲示板を含むＳＮＳにログインする。次に、ユーザが、Ｂさんの掲示板Ｂにアクセスして閲覧する。続いて、攻撃者が仕掛けを行った掲示板Ｂ中のリンクを、ユーザがクリックすると仕掛けプログラムが動作する。仕掛けプログラムは、ユーザ端末装置Ａ１がログインしていることを利用して、ユーザ端末装置Ａ１からのリクエストであるかのようにして、悪意のあるリクエストをＳＮＳに送信する。たとえば、ユーザの掲示板Ａの設定を変更（非公開を公開に変更など）する。
【０００５】
上記のように、ＣＳＲＦによる攻撃に対する脆弱性のあるウエブサイトは、ユーザが意図していない設定変更などがなされてしまうおそれがある。
【０００６】
このようなウエブ脆弱性をチェックするためのソフトウエアが開発されている。ウエブサイトに対してＣＳＲＦによる攻撃を仕掛け、当該ウエブサイトがＣＳＦＲによる攻撃に耐えることができるかどうかを判断するものである。
【０００７】
ＣＳＲＦに対する脆弱性をチェックするためには、チェックのためのユーザ端末装置がサーバ装置に対してログイン状態になっていなければならない。つまり、ログイン状態か否かを正確に判定することが前提となる。
【０００８】
従来、次のような処理によって、ログインの有無を自動的に判定するようにしている。まず、ログイン前の対象ページ（ログインをするためのページ）と、ログイン後の対象ページを取得する。ログイン後の対象ページのうち、ログイン前の対象ページと一致している部分のデータと、異なる部分のデータのバイト数を算出し、これを記録しておく。実際に、ログインの有無を判定する場合には、ログインを行い対象ページを取得する。取得した対象ページから、予め記録している一致部分を削除し、残った部分のデータのバイト数を算出する。このバイト数が、予め記録されているバイト数と同じであれば、ログインできていると判断する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２５０９４５
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記のような従来技術では、ログインした画面中に、時刻表示やアクセスするごと（所定時間ごと）に異なる内容となる広告表示等が含まれている場合には、ログイン状態となっていてもバイト数が同じにならない場合が多く、ログインの有無を正確に判断できないという問題があった。
【００１１】
また、上記のようなログインの有無判定だけでなく、ページの改竄判定などにおいても、検出すべき変化のみに注目して迅速な判断を実行したいという要請がある。
【００１２】
この発明は上記のような問題点を解決して、検出すべき変化に注目して迅速な判断をすることのできるログイン判定装置やページ変化判定装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
(1)この発明に係るログイン判定装置は、ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部と、判定対象である対象ページを取得する対象ページ取得手段と、取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段とを備えている。
【００１４】
したがって、正確にしかも迅速にログインの有無を判定することができる。
【００１５】
(2)この発明に係るログイン判定プログラムは、ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部にアクセス可能なコンピュータを用いたログイン判定プログラムであって、前記ログイン判定プログラムは、コンピュータを、判定対象である対象ページを取得する対象ページ取得手段と、取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段として機能させるためのログイン判定プログラムである。
【００１６】
したがって、正確にしかも迅速にログインの有無を判定することができる。
【００１７】
(3)この発明に係るログイン判定プログラムは、前記対象ページはＨＴＭＬ言語にて記載されており、前記階層構造解析手段は、取得した対象ページのＨＴＭＬタグのネスティング状態に応じて、階層構造の解析を行うことを特徴としている。
【００１８】
したがって、ＨＴＭＬタグに基づいて階層構造の解析を行うことができる。
【００１９】
(4)この発明に係るログイン判定プログラムは、前記階層構造解析手段は、ＨＴＭＬタグの各階層に含まれる各種類のタグの数を階層構造として解析し、前記抽出手段は、前記構造記録部に記録された対象ページを構成するタグの各階層に含まれる各種類のタグの数と、前記階層構造解析手段によって解析された対象ページを構成するタグの各階層に含まれる各種類のタグの数とを比較し、対応するタグの数が異なる部分を階層構造の異なる部分として抽出することを特徴としている。
【００２０】
したがって、階層構造に変化のあった部分のみを対象として内容判断を行うことができるので、判定が迅速であり正確である。
【００２１】
(5)この発明に係るページ変化検出装置は、第１の対象ページを構成するタグの階層構造と、第２の対象ページを構成するタグの階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、第１の対象ページまたは第２の対象ページを構成するタグの前記階層構造の異なる部分に対応する部分に基づいて、第１の対象ページと第２の対象ページの変化内容を決定する変化内容決定手段とを備えている。
【００２２】
したがって、階層構造に変化のあった部分のみを対象として比較を行うことができるので、判定が迅速であり正確である。
【００２３】
「対象ページ取得手段」は、実施形態においては、ステップＳ４がこれに対応する。
【００２４】
「階層構造解析手段」は、実施形態においては、ステップＳ５がこれに対応する。
【００２５】
「抽出手段」は、実施形態においては、ステップＳ６がこれに対応する。
【００２６】
「ログイン判断手段」は、実施形態においては、ステップＳ７、Ｓ８およびＳ９がこれに対応する。
【００２７】
「ページ」とは、タグによる階層構造を持つ言語の一表示単位などの、スクロールを含め、ひとまとまりとして表示される一表示単位を含む概念である。
【００２８】
「プログラム」とは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【００２９】
【図１】クロスサイト・リクエスト・フォージェリの概要を説明するための図である。
【図２】この発明の一実施形態によるログイン判定装置の機能ブロック図である。
【図３】ログイン判定装置としての診断サーバ装置１４と、ユーザ端末装置１２、診断対象サーバ装置１６との関係を示す図である。
【図４】診断サーバ装置１４のハードウエア構成である。
【図５】ログインのための画面を示す図である。
【図６】図５の画面のＨＴＭＬデータである。
【図７】図６のＨＴＭＬデータの階層構造である。
【図８】ログイン判定プログラムのフローチャートである。
【図９】ログイン後の画面を示す図である。
【図１０】図９の画面のＨＴＭＬデータである。
【図１１】図１０のＨＴＭＬデータの階層構造である。
【図１２】差異フラグテーブルを示す図である。
【発明を実施するための形態】
【００３０】
１．機能ブロック図
図２に、この発明の一実施形態によるログイン判定装置の機能ブロック図を示す。参照階層構造記録部４には、ログイン前であることが判明しているログインのためのページの参照階層構造が、予め記録されている。判定を行う際には、対象ページ取得手段２は、ＩＤやパスワードなどを送信してログインの要求を行って対象ページを取得する。階層構造解析手段６は、取得した対象ページの階層構造を解析する。抽出手段８は、記録されている参照階層構造と、対象ページの階層構造とを比較し、異なる部分を特定する。階層構造の異なる部分に対応する対象ページの内容を抽出する。ログイン判断手段１０は、対象ページから抽出した内容中に、所定のキーワード（たとえば、ログイン前の画面に表示されている「ログイン」などのキーワード）が含まれているかどうかに基づいて、ログイン状況を判断する。以上のようにして、対象ページに対するログインの有無を判定することができる。
【００３１】
２．ハードウエア構成
図３に、この発明の一実施形態によるログイン判定装置としての診断サーバ装置１４の接続状況を示す。診断サーバ装置１４は、ユーザ端末装置１２からの指令を受けて、診断対象サーバ装置１６にアクセスしその脆弱性診断を行う。診断対象サーバ装置１６は、脆弱性診断の結果をユーザ端末装置１２に送信する。
【００３２】
図４に、診断サーバ装置１４のハードウエア構成を示す。ＣＰＵ２０には、メモリ２２、ハードディスク２４、ＣＤ−ＲＯＭドライブ２６、通信回路２８が接続されている。通信回路２８は、インターネットなどを介して、診断対象サーバ装置１６やユーザ端末装置１２と通信を行うための回路である。
【００３３】
ハードディスク２４には、WINDOWS（商標）などのオペレーティングシステム３２、ログイン判定プログラム３４、参照ＨＴＭＬ階層構造３６、キーワード３８が記録されている。ＯＳ３２、ログイン判定プログラム３４は、ＣＤ−ＲＯＭ３０に記録されていたものを、ＣＤ−ＲＯＭドライブ２６を介してハードディスク２４にインストールしたものである。なお、ログイン判定プログラム３４は、ＯＳ３２と協働してその機能を発揮する。
【００３４】
参照ＨＴＭＬ階層構造３６は、ログイン判定を行うページのログイン前のＨＴＭＬ階層構造を解析して予め記録したものである。たとえば、図５に示すようなログインのためのページ（ログイン前のページ）のＨＴＭＬデータが図６に示すものであったとする。このページの参照ＨＴＭＬ階層構造は、図７に示すようなものとなる。
【００３５】
つまり、図６において、<html>タグとこれに対応する</html>タグによって囲まれる部分（２行目から４３行目まで）が、最も上位の階層（階層０）である。この階層のレベルには、<html>タグ</html>タグが１つ存在するので、図７の階層０のタグ種類<html>には、１が記録されている。
【００３６】
<html>タグ</html>タグによって囲まれた部分（２行目から４３行目まで）の中には、<head></head>および<body></body>が次の階層として含まれている。したがって、図７の階層１のタグ種類<head><body>には、それぞれ１が記録されている。
【００３７】
<head></head>および<body></body>によって囲まれた部分（３行目から５行目まで、６行目から４２行目まで）の中には、<title></title>、<center></center>、<br>、<table></table>が次の階層として含まれている。なお、<br>は他のタグと異なり、対応する</br>が存在しないので、この実施形態では、<br>の直後に</br>があるものとして階層を判断するようにしている。たとえば、図６において、１０行目の<br>は、第２階層である<center>や<table>と同じ第２階層であると判断することができる。なお、<br>以外にも<input>など対応する</input>が存在しないタグについても同様の処理を行う。
【００３８】
以上のようにして、図７の階層２のタグ種類<center>、<br>、<table>には、それぞれ１が記録される。
【００３９】
なお、当該階層に２以上同じタグが存在する場合には、その数字が図７に記録されていることになる。たとえば、図７において、階層４のタグ種類<td>には２が記録されているので、この階層には<td>が２つ存在することがわかる。
【００４０】
前述のように、ハードディスク２４には、キーワード３８も記録されている。この実施形態は、キーワード３８としてログイン後の画面に現れる特有の用語（たとえば「ようこそ」「ログアウト」）を記録するようにしている。
【００４１】
３．ログイン判定処理
図８に、ログイン判定プログラム３４のフローチャートを示す。まず、ＣＰＵ２０は、ユーザ端末装置１２からの指令を受信する（ステップＳ１）。ユーザ端末装置１２からの指令には、診断対象サイトのＵＲＬやログインのためのユーザＩＤ、パスワードなどが含まれている。なお、ユーザ端末装置１２からの指令を複数記録しておき、まとめて処理を行うようにしてもよい。
【００４２】
次に、ＣＰＵ２０は、通信回路２８を制御し、指令に含まれるＵＲＬに基づいて診断対象サイト（診断対象サーバ装置１６）にアクセスする（ステップＳ２）。これにより、診断対象サイトから図５に示すようなログイン画面が送信される。これに対応して、ＣＰＵ２０は、ユーザＩＤおよびパスワードを診断対象サイトに送信する（ステップＳ３）。
【００４３】
ＣＰＵ２０は、診断サイトからのレスポンス（ＨＴＭＬデータ）を受信し、ハードディスク２４に記録する（ステップＳ４）。ログインが上手くできていれば、図９に示すようなログイン後の画面を表示するためのＨＴＭＬデータが返信されてくるはずである。図９の画面に対応するＨＴＭＬデータを図１０に示す。
【００４４】
ＣＰＵ２０は、ハードディスク２４に記録したＨＴＭＬデータの階層構造を解析する（ステップＳ５）。解析して得られたＨＴＭＬ階層構造は、図１１に示すとおりである。
【００４５】
続いて、ＣＰＵ２０は、ハードディスク２４に記録されている参照ＨＴＭＬ階層構造（図７）と、レスポンスを解析して得られたＨＴＭＬ階層構造（図１１）とを比較し、その差異部分を抽出する（ステップＳ６）。図１２に、差異部分抽出のために生成された差異フラグテーブルを示す。ＣＰＵ２０は、図７の参照ＨＴＭＬ階層構造３６と、図１１のＨＴＭＬ階層構造とを比較し、同一の部分を「０」、異なる部分を「１」として、差異フラグテーブルを生成する。
【００４６】
図７の参照ＨＴＭＬ階層構造３６と、図１１のＨＴＭＬ階層構造は、階層５の<form>と階層６の<br><input>における値が異なっており、あとは同一である。したがって、図１２に示すような差異フラグテーブルが生成されることになる。
【００４７】
次に、ＣＰＵ２０は、レスポンスの差異部分に対応する部分を特定する。ここでは、階層５の<form>と階層６の<br><input>が差異部分であるから、図１０のレスポンス中のこれに対応する部分の内容を取り出す。階層５の<form>に対応するのは１４行目から１６行目であり、階層６の<input>に対応するのは１５行目である。また、階層６の<br>には対応する</br>がないため、その内容部分はないものとして扱う。したがって、以下に示すように１４行目から１６行目が取り出されることになる。
<form action="logout.php" method="post">
<input type="submit" value="ログアウト">
</form>
【００４８】
ＣＰＵ２０は、取り出した内容中に、ハードディスク２４に記録されているキーワード３８に合致するものがあるかどうかを判断する（ステップＳ７）。この実施形態では、キーワード３８として、「ようこそ」「ログアウト」を記録している。ここでは、取り出した内容中に「ログアウト」が含まれている。したがって、ＣＰＵ２０は「ログイン有」と判断する（ステップＳ８）。
【００４９】
また、正しくログインできていないレスポンスの場合には、図１０のようなデータとはならず、「正しいユーザＩＤ、パスワードを入力してください」などのメッセージが追加された画面となる。この場合には、取り出した内容中にキーワード３８が含まれない。ＣＰＵ２０は、キーワード３８が含まれなければ、ログイン無と判断する（ステップＳ９）。
【００５０】
上記のようにして、ログインの有無を判定することができる。なお、この実施形態では、ＨＴＭＬ階層構造を比較して差異部分を抽出するようにしている。アクセスごとに、あるいは所定時間ごとに変化する広告部分や時計表示部分などは、表示内容は変化するもののＨＴＭＬ構造は、そのままである場合がほとんどである。したがって、この実施形態によれば、このような変化は無視し、目的とする変化が起こる可能性のある部分を取り出して判定を行うことができ、処理が迅速である。
【００５１】
このようにログインの有無を判定した後、ＣＳＲＦに対する脆弱性判定を行う。
【００５２】
４．その他の実施形態
(1)上記実施形態では、ＣＳＲＦに対する脆弱性判定の前提としてのログイン判定について説明した。しかし、ログイン有無の判定一般に適用することができる。
【００５３】
(2)上記実施形態では、参照ＨＴＭＬ階層構造３６としてログイン前のＨＴＭＬデータの階層構造を記録している。しかし、参照ＨＴＭＬ階層構造３６としてログイン後のＨＴＭＬデータの階層構造を記録しておくようにしてもよい。この場合、レスポンスのＨＴＭＬデータの階層構造と参照ＨＴＭＬ階層構造３６を比較して異なる部分を抽出し、これに対応するレスポンスのＨＴＭＬデータの部分に、ログイン用の画面に特有のキーワード（たとえば、「ログイン」「新規登録」など）があれば、正しくログインがなされていないと判断する。
【００５４】
(3)上記実施形態では、ログインの有無を判定するようにしている。しかし、比較すべき２つのページについて、アクセスごとにあるいは所定時間ごとに変化する広告部分や時計表示部分などの変化は無視し、注目すべき変化部分を検出するために用いることもできる。
【００５５】
また、差異フラグテーブルに基づいて、両ページの類似度（差異度）を判断することもできる。差異フラグテーブルにおける「１」を全て見いだし、各「１」から右向きに最終階層のマスまでの矩形を描く。これら矩形の面積の和が大きいほど、両ページの類似度は低いと判断する。これは、階層が高い部分が異なるほど差異が大きいと考えられるからである。
【００５６】
たとえば、図１２に示す差異フラグテーブルでは、階層５のタグ種類<form>の「１」から最終階層までの矩形の面積（２マス）と、階層６のタグ種類<br><input>の「１」から最終階層までの矩形の面積（それぞれ、１マス）を合計した面積（４マス）となる。
【００５７】
(4)上記実施形態では、ＨＴＭＬデータを例として説明したが、他の階層構造を有する言語（たとえばＸＭＬ）にも適用することができる。
【００５８】
(5)上記実施形態では、ログイン判定プログラムが診断サーバ装置１４に記録されている場合について説明した。しかし、ユーザ端末装置１２にログイン判定プログラムを記録し、ユーザ端末装置１２から直接診断対象サーバ装置１６にアクセスして判定を行うようにしてもよい。
【００５９】
(6)上記実施形態では、２つのページの比較を行う例を示した。しかし、ユーザの訪問したページのアクセスログの記録に用いることもできる。ユーザの訪問したページのＨＴＭＬデータの全てを記録するのは煩雑である。そこで、階層構造と注目すべきタグに関する内容のみを記録するようにすればよい。
【図１】
0005421950.tif 000002
【図２】
0005421950.tif 000003
【図３】
0005421950.tif 000004
【図４】
0005421950.tif 000005
【図５】
0005421950.tif 000006
【図６】
0005421950.tif 000007
【図７】
0005421950.tif 000008
【図８】
0005421950.tif 000009
【図９】
0005421950.tif 000010
【図１０】
0005421950.tif 000011
【図１１】
0005421950.tif 000012
【図１２】
0005421950.tif 000013