ページ変化判定装置
【課題】 検出すべき変化に注目して迅速な判断をすることのできるログイン判定装置を提供する。
【手段】 対象ページ取得手段2は、IDやパスワードなどを送信してログインの要求を行って対象ページを取得する。階層構造解析手段6は、取得した対象ページの階層構造を解析する。抽出手段8は、記録されている参照階層構造と、対象ページの階層構造とを比較し、異なる部分を特定する。階層構造の異なる部分に対応する対象ページの内容を抽出する。ログイン判断手段10は、対象ページから抽出した内容中に、所定のキーワード(たとえば、ログイン時に表示される「ログイン」などのキーワード)が含まれているかどうかに基づいて、ログイン状況を判断する。
【手段】 対象ページ取得手段2は、IDやパスワードなどを送信してログインの要求を行って対象ページを取得する。階層構造解析手段6は、取得した対象ページの階層構造を解析する。抽出手段8は、記録されている参照階層構造と、対象ページの階層構造とを比較し、異なる部分を特定する。階層構造の異なる部分に対応する対象ページの内容を抽出する。ログイン判断手段10は、対象ページから抽出した内容中に、所定のキーワード(たとえば、ログイン時に表示される「ログイン」などのキーワード)が含まれているかどうかに基づいて、ログイン状況を判断する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、対象となるページの注目すべき変化を容易に検出することができる装置に関するものである。
【背景技術】
【0002】
ウエブサイトへの攻撃に対する脆弱性を検査するためのプログラムが開発されている(たとえば、特許文献1)。しかし、攻撃の一つであるCSRF(クロスサイト・リクエスト・フォージェリ)に対する脆弱性を判定するためのプログラムは実用化されていない。
【0003】
ウエブサイトに対する攻撃の一つにCSRF(クロスサイト・リクエスト・フォージェリ)がある。図1に、CSRFの概要を説明する。
【0004】
CSRFを行う悪意のある攻撃者は、攻撃者端末装置Cからサーバ装置SのSNSにアクセスし、Bさんの掲示板Bのリンクに仕掛けを行う。ユーザがユーザ端末装置A1から、自らの掲示板を含むSNSにログインする。次に、ユーザが、Bさんの掲示板Bにアクセスして閲覧する。続いて、攻撃者が仕掛けを行った掲示板B中のリンクを、ユーザがクリックすると仕掛けプログラムが動作する。仕掛けプログラムは、ユーザ端末装置A1がログインしていることを利用して、ユーザ端末装置A1からのリクエストであるかのようにして、悪意のあるリクエストをSNSに送信する。たとえば、ユーザの掲示板Aの設定を変更(非公開を公開に変更など)する。
【0005】
上記のように、CSRFによる攻撃に対する脆弱性のあるウエブサイトは、ユーザが意図していない設定変更などがなされてしまうおそれがある。
【0006】
このようなウエブ脆弱性をチェックするためのソフトウエアが開発されている。ウエブサイトに対してCSRFによる攻撃を仕掛け、当該ウエブサイトがCSFRによる攻撃に耐えることができるかどうかを判断するものである。
【0007】
CSRFに対する脆弱性をチェックするためには、チェックのためのユーザ端末装置がサーバ装置に対してログイン状態になっていなければならない。つまり、ログイン状態か否かを正確に判定することが前提となる。
【0008】
従来、次のような処理によって、ログインの有無を自動的に判定するようにしている。まず、ログイン前の対象ページ(ログインをするためのページ)と、ログイン後の対象ページを取得する。ログイン後の対象ページのうち、ログイン前の対象ページと一致している部分のデータと、異なる部分のデータのバイト数を算出し、これを記録しておく。実際に、ログインの有無を判定する場合には、ログインを行い対象ページを取得する。取得した対象ページから、予め記録している一致部分を削除し、残った部分のデータのバイト数を算出する。このバイト数が、予め記録されているバイト数と同じであれば、ログインできていると判断する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2005−250945
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上記のような従来技術では、ログインした画面中に、時刻表示やアクセスするごと(所定時間ごと)に異なる内容となる広告表示等が含まれている場合には、ログイン状態となっていてもバイト数が同じにならない場合が多く、ログインの有無を正確に判断できないという問題があった。
【0011】
また、上記のようなログインの有無判定だけでなく、ページの改竄判定などにおいても、検出すべき変化のみに注目して迅速な判断を実行したいという要請がある。
【0012】
この発明は上記のような問題点を解決して、検出すべき変化に注目して迅速な判断をすることのできるログイン判定装置やページ変化判定装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
(1)この発明に係るログイン判定装置は、ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部と、判定対象である対象ページを取得する対象ページ取得手段と、取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段とを備えている。
【0014】
したがって、正確にしかも迅速にログインの有無を判定することができる。
【0015】
(2)この発明に係るログイン判定プログラムは、ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部にアクセス可能なコンピュータを用いたログイン判定プログラムであって、前記ログイン判定プログラムは、コンピュータを、判定対象である対象ページを取得する対象ページ取得手段と、取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段として機能させるためのログイン判定プログラムである。
【0016】
したがって、正確にしかも迅速にログインの有無を判定することができる。
【0017】
(3)この発明に係るログイン判定プログラムは、前記対象ページはHTML言語にて記載されており、前記階層構造解析手段は、取得した対象ページのHTMLタグのネスティング状態に応じて、階層構造の解析を行うことを特徴としている。
【0018】
したがって、HTMLタグに基づいて階層構造の解析を行うことができる。
【0019】
(4)この発明に係るログイン判定プログラムは、前記階層構造解析手段は、HTMLタグの各階層に含まれる各種類のタグの数を階層構造として解析し、前記抽出手段は、前記構造記録部に記録された対象ページを構成するタグの各階層に含まれる各種類のタグの数と、前記階層構造解析手段によって解析された対象ページを構成するタグの各階層に含まれる各種類のタグの数とを比較し、対応するタグの数が異なる部分を階層構造の異なる部分として抽出することを特徴としている。
【0020】
したがって、階層構造に変化のあった部分のみを対象として内容判断を行うことができるので、判定が迅速であり正確である。
【0021】
(5)この発明に係るページ変化検出装置は、第1の対象ページを構成するタグの階層構造と、第2の対象ページを構成するタグの階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、第1の対象ページまたは第2の対象ページを構成するタグの前記階層構造の異なる部分に対応する部分に基づいて、第1の対象ページと第2の対象ページの変化内容を決定する変化内容決定手段とを備えている。
【0022】
したがって、階層構造に変化のあった部分のみを対象として比較を行うことができるので、判定が迅速であり正確である。
【0023】
「対象ページ取得手段」は、実施形態においては、ステップS4がこれに対応する。
【0024】
「階層構造解析手段」は、実施形態においては、ステップS5がこれに対応する。
【0025】
「抽出手段」は、実施形態においては、ステップS6がこれに対応する。
【0026】
「ログイン判断手段」は、実施形態においては、ステップS7、S8およびS9がこれに対応する。
【0027】
「ページ」とは、タグによる階層構造を持つ言語の一表示単位などの、スクロールを含め、ひとまとまりとして表示される一表示単位を含む概念である。
【0028】
「プログラム」とは、CPUにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【0029】
【図1】クロスサイト・リクエスト・フォージェリの概要を説明するための図である。
【図2】この発明の一実施形態によるログイン判定装置の機能ブロック図である。
【図3】ログイン判定装置としての診断サーバ装置14と、ユーザ端末装置12、診断対象サーバ装置16との関係を示す図である。
【図4】診断サーバ装置14のハードウエア構成である。
【図5】ログインのための画面を示す図である。
【図6】図5の画面のHTMLデータである。
【図7】図6のHTMLデータの階層構造である。
【図8】ログイン判定プログラムのフローチャートである。
【図9】ログイン後の画面を示す図である。
【図10】図9の画面のHTMLデータである。
【図11】図10のHTMLデータの階層構造である。
【図12】差異フラグテーブルを示す図である。
【発明を実施するための形態】
【0030】
1.機能ブロック図
図2に、この発明の一実施形態によるログイン判定装置の機能ブロック図を示す。参照階層構造記録部4には、ログイン前であることが判明しているログインのためのページの参照階層構造が、予め記録されている。判定を行う際には、対象ページ取得手段2は、IDやパスワードなどを送信してログインの要求を行って対象ページを取得する。階層構造解析手段6は、取得した対象ページの階層構造を解析する。抽出手段8は、記録されている参照階層構造と、対象ページの階層構造とを比較し、異なる部分を特定する。階層構造の異なる部分に対応する対象ページの内容を抽出する。ログイン判断手段10は、対象ページから抽出した内容中に、所定のキーワード(たとえば、ログイン前の画面に表示されている「ログイン」などのキーワード)が含まれているかどうかに基づいて、ログイン状況を判断する。以上のようにして、対象ページに対するログインの有無を判定することができる。
【0031】
2.ハードウエア構成
図3に、この発明の一実施形態によるログイン判定装置としての診断サーバ装置14の接続状況を示す。診断サーバ装置14は、ユーザ端末装置12からの指令を受けて、診断対象サーバ装置16にアクセスしその脆弱性診断を行う。診断対象サーバ装置16は、脆弱性診断の結果をユーザ端末装置12に送信する。
【0032】
図4に、診断サーバ装置14のハードウエア構成を示す。CPU20には、メモリ22、ハードディスク24、CD−ROMドライブ26、通信回路28が接続されている。通信回路28は、インターネットなどを介して、診断対象サーバ装置16やユーザ端末装置12と通信を行うための回路である。
【0033】
ハードディスク24には、WINDOWS(商標)などのオペレーティングシステム32、ログイン判定プログラム34、参照HTML階層構造36、キーワード38が記録されている。OS32、ログイン判定プログラム34は、CD−ROM30に記録されていたものを、CD−ROMドライブ26を介してハードディスク24にインストールしたものである。なお、ログイン判定プログラム34は、OS32と協働してその機能を発揮する。
【0034】
参照HTML階層構造36は、ログイン判定を行うページのログイン前のHTML階層構造を解析して予め記録したものである。たとえば、図5に示すようなログインのためのページ(ログイン前のページ)のHTMLデータが図6に示すものであったとする。このページの参照HTML階層構造は、図7に示すようなものとなる。
【0035】
つまり、図6において、<html>タグとこれに対応する</html>タグによって囲まれる部分(2行目から43行目まで)が、最も上位の階層(階層0)である。この階層のレベルには、<html>タグ</html>タグが1つ存在するので、図7の階層0のタグ種類<html>には、1が記録されている。
【0036】
<html>タグ</html>タグによって囲まれた部分(2行目から43行目まで)の中には、<head></head>および<body></body>が次の階層として含まれている。したがって、図7の階層1のタグ種類<head><body>には、それぞれ1が記録されている。
【0037】
<head></head>および<body></body>によって囲まれた部分(3行目から5行目まで、6行目から42行目まで)の中には、<title></title>、<center></center>、<br>、<table></table>が次の階層として含まれている。なお、<br>は他のタグと異なり、対応する</br>が存在しないので、この実施形態では、<br>の直後に</br>があるものとして階層を判断するようにしている。たとえば、図6において、10行目の<br>は、第2階層である<center>や<table>と同じ第2階層であると判断することができる。なお、<br>以外にも<input>など対応する</input>が存在しないタグについても同様の処理を行う。
【0038】
以上のようにして、図7の階層2のタグ種類<center>、<br>、<table>には、それぞれ1が記録される。
【0039】
なお、当該階層に2以上同じタグが存在する場合には、その数字が図7に記録されていることになる。たとえば、図7において、階層4のタグ種類<td>には2が記録されているので、この階層には<td>が2つ存在することがわかる。
【0040】
前述のように、ハードディスク24には、キーワード38も記録されている。この実施形態は、キーワード38としてログイン後の画面に現れる特有の用語(たとえば「ようこそ」「ログアウト」)を記録するようにしている。
【0041】
3.ログイン判定処理
図8に、ログイン判定プログラム34のフローチャートを示す。まず、CPU20は、ユーザ端末装置12からの指令を受信する(ステップS1)。ユーザ端末装置12からの指令には、診断対象サイトのURLやログインのためのユーザID、パスワードなどが含まれている。なお、ユーザ端末装置12からの指令を複数記録しておき、まとめて処理を行うようにしてもよい。
【0042】
次に、CPU20は、通信回路28を制御し、指令に含まれるURLに基づいて診断対象サイト(診断対象サーバ装置16)にアクセスする(ステップS2)。これにより、診断対象サイトから図5に示すようなログイン画面が送信される。これに対応して、CPU20は、ユーザIDおよびパスワードを診断対象サイトに送信する(ステップS3)。
【0043】
CPU20は、診断サイトからのレスポンス(HTMLデータ)を受信し、ハードディスク24に記録する(ステップS4)。ログインが上手くできていれば、図9に示すようなログイン後の画面を表示するためのHTMLデータが返信されてくるはずである。図9の画面に対応するHTMLデータを図10に示す。
【0044】
CPU20は、ハードディスク24に記録したHTMLデータの階層構造を解析する(ステップS5)。解析して得られたHTML階層構造は、図11に示すとおりである。
【0045】
続いて、CPU20は、ハードディスク24に記録されている参照HTML階層構造(図7)と、レスポンスを解析して得られたHTML階層構造(図11)とを比較し、その差異部分を抽出する(ステップS6)。図12に、差異部分抽出のために生成された差異フラグテーブルを示す。CPU20は、図7の参照HTML階層構造36と、図11のHTML階層構造とを比較し、同一の部分を「0」、異なる部分を「1」として、差異フラグテーブルを生成する。
【0046】
図7の参照HTML階層構造36と、図11のHTML階層構造は、階層5の<form>と階層6の<br><input>における値が異なっており、あとは同一である。したがって、図12に示すような差異フラグテーブルが生成されることになる。
【0047】
次に、CPU20は、レスポンスの差異部分に対応する部分を特定する。ここでは、階層5の<form>と階層6の<br><input>が差異部分であるから、図10のレスポンス中のこれに対応する部分の内容を取り出す。階層5の<form>に対応するのは14行目から16行目であり、階層6の<input>に対応するのは15行目である。また、階層6の<br>には対応する</br>がないため、その内容部分はないものとして扱う。したがって、以下に示すように14行目から16行目が取り出されることになる。
<form action="logout.php" method="post">
<input type="submit" value="ログアウト">
</form>
【0048】
CPU20は、取り出した内容中に、ハードディスク24に記録されているキーワード38に合致するものがあるかどうかを判断する(ステップS7)。この実施形態では、キーワード38として、「ようこそ」「ログアウト」を記録している。ここでは、取り出した内容中に「ログアウト」が含まれている。したがって、CPU20は「ログイン有」と判断する(ステップS8)。
【0049】
また、正しくログインできていないレスポンスの場合には、図10のようなデータとはならず、「正しいユーザID、パスワードを入力してください」などのメッセージが追加された画面となる。この場合には、取り出した内容中にキーワード38が含まれない。CPU20は、キーワード38が含まれなければ、ログイン無と判断する(ステップS9)。
【0050】
上記のようにして、ログインの有無を判定することができる。なお、この実施形態では、HTML階層構造を比較して差異部分を抽出するようにしている。アクセスごとに、あるいは所定時間ごとに変化する広告部分や時計表示部分などは、表示内容は変化するもののHTML構造は、そのままである場合がほとんどである。したがって、この実施形態によれば、このような変化は無視し、目的とする変化が起こる可能性のある部分を取り出して判定を行うことができ、処理が迅速である。
【0051】
このようにログインの有無を判定した後、CSRFに対する脆弱性判定を行う。
【0052】
4.その他の実施形態
(1)上記実施形態では、CSRFに対する脆弱性判定の前提としてのログイン判定について説明した。しかし、ログイン有無の判定一般に適用することができる。
【0053】
(2)上記実施形態では、参照HTML階層構造36としてログイン前のHTMLデータの階層構造を記録している。しかし、参照HTML階層構造36としてログイン後のHTMLデータの階層構造を記録しておくようにしてもよい。この場合、レスポンスのHTMLデータの階層構造と参照HTML階層構造36を比較して異なる部分を抽出し、これに対応するレスポンスのHTMLデータの部分に、ログイン用の画面に特有のキーワード(たとえば、「ログイン」「新規登録」など)があれば、正しくログインがなされていないと判断する。
【0054】
(3)上記実施形態では、ログインの有無を判定するようにしている。しかし、比較すべき2つのページについて、アクセスごとにあるいは所定時間ごとに変化する広告部分や時計表示部分などの変化は無視し、注目すべき変化部分を検出するために用いることもできる。
【0055】
また、差異フラグテーブルに基づいて、両ページの類似度(差異度)を判断することもできる。差異フラグテーブルにおける「1」を全て見いだし、各「1」から右向きに最終階層のマスまでの矩形を描く。これら矩形の面積の和が大きいほど、両ページの類似度は低いと判断する。これは、階層が高い部分が異なるほど差異が大きいと考えられるからである。
【0056】
たとえば、図12に示す差異フラグテーブルでは、階層5のタグ種類<form>の「1」から最終階層までの矩形の面積(2マス)と、階層6のタグ種類<br><input>の「1」から最終階層までの矩形の面積(それぞれ、1マス)を合計した面積(4マス)となる。
【0057】
(4)上記実施形態では、HTMLデータを例として説明したが、他の階層構造を有する言語(たとえばXML)にも適用することができる。
【0058】
(5)上記実施形態では、ログイン判定プログラムが診断サーバ装置14に記録されている場合について説明した。しかし、ユーザ端末装置12にログイン判定プログラムを記録し、ユーザ端末装置12から直接診断対象サーバ装置16にアクセスして判定を行うようにしてもよい。
【0059】
(6)上記実施形態では、2つのページの比較を行う例を示した。しかし、ユーザの訪問したページのアクセスログの記録に用いることもできる。ユーザの訪問したページのHTMLデータの全てを記録するのは煩雑である。そこで、階層構造と注目すべきタグに関する内容のみを記録するようにすればよい。
【技術分野】
【0001】
この発明は、対象となるページの注目すべき変化を容易に検出することができる装置に関するものである。
【背景技術】
【0002】
ウエブサイトへの攻撃に対する脆弱性を検査するためのプログラムが開発されている(たとえば、特許文献1)。しかし、攻撃の一つであるCSRF(クロスサイト・リクエスト・フォージェリ)に対する脆弱性を判定するためのプログラムは実用化されていない。
【0003】
ウエブサイトに対する攻撃の一つにCSRF(クロスサイト・リクエスト・フォージェリ)がある。図1に、CSRFの概要を説明する。
【0004】
CSRFを行う悪意のある攻撃者は、攻撃者端末装置Cからサーバ装置SのSNSにアクセスし、Bさんの掲示板Bのリンクに仕掛けを行う。ユーザがユーザ端末装置A1から、自らの掲示板を含むSNSにログインする。次に、ユーザが、Bさんの掲示板Bにアクセスして閲覧する。続いて、攻撃者が仕掛けを行った掲示板B中のリンクを、ユーザがクリックすると仕掛けプログラムが動作する。仕掛けプログラムは、ユーザ端末装置A1がログインしていることを利用して、ユーザ端末装置A1からのリクエストであるかのようにして、悪意のあるリクエストをSNSに送信する。たとえば、ユーザの掲示板Aの設定を変更(非公開を公開に変更など)する。
【0005】
上記のように、CSRFによる攻撃に対する脆弱性のあるウエブサイトは、ユーザが意図していない設定変更などがなされてしまうおそれがある。
【0006】
このようなウエブ脆弱性をチェックするためのソフトウエアが開発されている。ウエブサイトに対してCSRFによる攻撃を仕掛け、当該ウエブサイトがCSFRによる攻撃に耐えることができるかどうかを判断するものである。
【0007】
CSRFに対する脆弱性をチェックするためには、チェックのためのユーザ端末装置がサーバ装置に対してログイン状態になっていなければならない。つまり、ログイン状態か否かを正確に判定することが前提となる。
【0008】
従来、次のような処理によって、ログインの有無を自動的に判定するようにしている。まず、ログイン前の対象ページ(ログインをするためのページ)と、ログイン後の対象ページを取得する。ログイン後の対象ページのうち、ログイン前の対象ページと一致している部分のデータと、異なる部分のデータのバイト数を算出し、これを記録しておく。実際に、ログインの有無を判定する場合には、ログインを行い対象ページを取得する。取得した対象ページから、予め記録している一致部分を削除し、残った部分のデータのバイト数を算出する。このバイト数が、予め記録されているバイト数と同じであれば、ログインできていると判断する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2005−250945
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上記のような従来技術では、ログインした画面中に、時刻表示やアクセスするごと(所定時間ごと)に異なる内容となる広告表示等が含まれている場合には、ログイン状態となっていてもバイト数が同じにならない場合が多く、ログインの有無を正確に判断できないという問題があった。
【0011】
また、上記のようなログインの有無判定だけでなく、ページの改竄判定などにおいても、検出すべき変化のみに注目して迅速な判断を実行したいという要請がある。
【0012】
この発明は上記のような問題点を解決して、検出すべき変化に注目して迅速な判断をすることのできるログイン判定装置やページ変化判定装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
(1)この発明に係るログイン判定装置は、ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部と、判定対象である対象ページを取得する対象ページ取得手段と、取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段とを備えている。
【0014】
したがって、正確にしかも迅速にログインの有無を判定することができる。
【0015】
(2)この発明に係るログイン判定プログラムは、ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部にアクセス可能なコンピュータを用いたログイン判定プログラムであって、前記ログイン判定プログラムは、コンピュータを、判定対象である対象ページを取得する対象ページ取得手段と、取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段として機能させるためのログイン判定プログラムである。
【0016】
したがって、正確にしかも迅速にログインの有無を判定することができる。
【0017】
(3)この発明に係るログイン判定プログラムは、前記対象ページはHTML言語にて記載されており、前記階層構造解析手段は、取得した対象ページのHTMLタグのネスティング状態に応じて、階層構造の解析を行うことを特徴としている。
【0018】
したがって、HTMLタグに基づいて階層構造の解析を行うことができる。
【0019】
(4)この発明に係るログイン判定プログラムは、前記階層構造解析手段は、HTMLタグの各階層に含まれる各種類のタグの数を階層構造として解析し、前記抽出手段は、前記構造記録部に記録された対象ページを構成するタグの各階層に含まれる各種類のタグの数と、前記階層構造解析手段によって解析された対象ページを構成するタグの各階層に含まれる各種類のタグの数とを比較し、対応するタグの数が異なる部分を階層構造の異なる部分として抽出することを特徴としている。
【0020】
したがって、階層構造に変化のあった部分のみを対象として内容判断を行うことができるので、判定が迅速であり正確である。
【0021】
(5)この発明に係るページ変化検出装置は、第1の対象ページを構成するタグの階層構造と、第2の対象ページを構成するタグの階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、第1の対象ページまたは第2の対象ページを構成するタグの前記階層構造の異なる部分に対応する部分に基づいて、第1の対象ページと第2の対象ページの変化内容を決定する変化内容決定手段とを備えている。
【0022】
したがって、階層構造に変化のあった部分のみを対象として比較を行うことができるので、判定が迅速であり正確である。
【0023】
「対象ページ取得手段」は、実施形態においては、ステップS4がこれに対応する。
【0024】
「階層構造解析手段」は、実施形態においては、ステップS5がこれに対応する。
【0025】
「抽出手段」は、実施形態においては、ステップS6がこれに対応する。
【0026】
「ログイン判断手段」は、実施形態においては、ステップS7、S8およびS9がこれに対応する。
【0027】
「ページ」とは、タグによる階層構造を持つ言語の一表示単位などの、スクロールを含め、ひとまとまりとして表示される一表示単位を含む概念である。
【0028】
「プログラム」とは、CPUにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【0029】
【図1】クロスサイト・リクエスト・フォージェリの概要を説明するための図である。
【図2】この発明の一実施形態によるログイン判定装置の機能ブロック図である。
【図3】ログイン判定装置としての診断サーバ装置14と、ユーザ端末装置12、診断対象サーバ装置16との関係を示す図である。
【図4】診断サーバ装置14のハードウエア構成である。
【図5】ログインのための画面を示す図である。
【図6】図5の画面のHTMLデータである。
【図7】図6のHTMLデータの階層構造である。
【図8】ログイン判定プログラムのフローチャートである。
【図9】ログイン後の画面を示す図である。
【図10】図9の画面のHTMLデータである。
【図11】図10のHTMLデータの階層構造である。
【図12】差異フラグテーブルを示す図である。
【発明を実施するための形態】
【0030】
1.機能ブロック図
図2に、この発明の一実施形態によるログイン判定装置の機能ブロック図を示す。参照階層構造記録部4には、ログイン前であることが判明しているログインのためのページの参照階層構造が、予め記録されている。判定を行う際には、対象ページ取得手段2は、IDやパスワードなどを送信してログインの要求を行って対象ページを取得する。階層構造解析手段6は、取得した対象ページの階層構造を解析する。抽出手段8は、記録されている参照階層構造と、対象ページの階層構造とを比較し、異なる部分を特定する。階層構造の異なる部分に対応する対象ページの内容を抽出する。ログイン判断手段10は、対象ページから抽出した内容中に、所定のキーワード(たとえば、ログイン前の画面に表示されている「ログイン」などのキーワード)が含まれているかどうかに基づいて、ログイン状況を判断する。以上のようにして、対象ページに対するログインの有無を判定することができる。
【0031】
2.ハードウエア構成
図3に、この発明の一実施形態によるログイン判定装置としての診断サーバ装置14の接続状況を示す。診断サーバ装置14は、ユーザ端末装置12からの指令を受けて、診断対象サーバ装置16にアクセスしその脆弱性診断を行う。診断対象サーバ装置16は、脆弱性診断の結果をユーザ端末装置12に送信する。
【0032】
図4に、診断サーバ装置14のハードウエア構成を示す。CPU20には、メモリ22、ハードディスク24、CD−ROMドライブ26、通信回路28が接続されている。通信回路28は、インターネットなどを介して、診断対象サーバ装置16やユーザ端末装置12と通信を行うための回路である。
【0033】
ハードディスク24には、WINDOWS(商標)などのオペレーティングシステム32、ログイン判定プログラム34、参照HTML階層構造36、キーワード38が記録されている。OS32、ログイン判定プログラム34は、CD−ROM30に記録されていたものを、CD−ROMドライブ26を介してハードディスク24にインストールしたものである。なお、ログイン判定プログラム34は、OS32と協働してその機能を発揮する。
【0034】
参照HTML階層構造36は、ログイン判定を行うページのログイン前のHTML階層構造を解析して予め記録したものである。たとえば、図5に示すようなログインのためのページ(ログイン前のページ)のHTMLデータが図6に示すものであったとする。このページの参照HTML階層構造は、図7に示すようなものとなる。
【0035】
つまり、図6において、<html>タグとこれに対応する</html>タグによって囲まれる部分(2行目から43行目まで)が、最も上位の階層(階層0)である。この階層のレベルには、<html>タグ</html>タグが1つ存在するので、図7の階層0のタグ種類<html>には、1が記録されている。
【0036】
<html>タグ</html>タグによって囲まれた部分(2行目から43行目まで)の中には、<head></head>および<body></body>が次の階層として含まれている。したがって、図7の階層1のタグ種類<head><body>には、それぞれ1が記録されている。
【0037】
<head></head>および<body></body>によって囲まれた部分(3行目から5行目まで、6行目から42行目まで)の中には、<title></title>、<center></center>、<br>、<table></table>が次の階層として含まれている。なお、<br>は他のタグと異なり、対応する</br>が存在しないので、この実施形態では、<br>の直後に</br>があるものとして階層を判断するようにしている。たとえば、図6において、10行目の<br>は、第2階層である<center>や<table>と同じ第2階層であると判断することができる。なお、<br>以外にも<input>など対応する</input>が存在しないタグについても同様の処理を行う。
【0038】
以上のようにして、図7の階層2のタグ種類<center>、<br>、<table>には、それぞれ1が記録される。
【0039】
なお、当該階層に2以上同じタグが存在する場合には、その数字が図7に記録されていることになる。たとえば、図7において、階層4のタグ種類<td>には2が記録されているので、この階層には<td>が2つ存在することがわかる。
【0040】
前述のように、ハードディスク24には、キーワード38も記録されている。この実施形態は、キーワード38としてログイン後の画面に現れる特有の用語(たとえば「ようこそ」「ログアウト」)を記録するようにしている。
【0041】
3.ログイン判定処理
図8に、ログイン判定プログラム34のフローチャートを示す。まず、CPU20は、ユーザ端末装置12からの指令を受信する(ステップS1)。ユーザ端末装置12からの指令には、診断対象サイトのURLやログインのためのユーザID、パスワードなどが含まれている。なお、ユーザ端末装置12からの指令を複数記録しておき、まとめて処理を行うようにしてもよい。
【0042】
次に、CPU20は、通信回路28を制御し、指令に含まれるURLに基づいて診断対象サイト(診断対象サーバ装置16)にアクセスする(ステップS2)。これにより、診断対象サイトから図5に示すようなログイン画面が送信される。これに対応して、CPU20は、ユーザIDおよびパスワードを診断対象サイトに送信する(ステップS3)。
【0043】
CPU20は、診断サイトからのレスポンス(HTMLデータ)を受信し、ハードディスク24に記録する(ステップS4)。ログインが上手くできていれば、図9に示すようなログイン後の画面を表示するためのHTMLデータが返信されてくるはずである。図9の画面に対応するHTMLデータを図10に示す。
【0044】
CPU20は、ハードディスク24に記録したHTMLデータの階層構造を解析する(ステップS5)。解析して得られたHTML階層構造は、図11に示すとおりである。
【0045】
続いて、CPU20は、ハードディスク24に記録されている参照HTML階層構造(図7)と、レスポンスを解析して得られたHTML階層構造(図11)とを比較し、その差異部分を抽出する(ステップS6)。図12に、差異部分抽出のために生成された差異フラグテーブルを示す。CPU20は、図7の参照HTML階層構造36と、図11のHTML階層構造とを比較し、同一の部分を「0」、異なる部分を「1」として、差異フラグテーブルを生成する。
【0046】
図7の参照HTML階層構造36と、図11のHTML階層構造は、階層5の<form>と階層6の<br><input>における値が異なっており、あとは同一である。したがって、図12に示すような差異フラグテーブルが生成されることになる。
【0047】
次に、CPU20は、レスポンスの差異部分に対応する部分を特定する。ここでは、階層5の<form>と階層6の<br><input>が差異部分であるから、図10のレスポンス中のこれに対応する部分の内容を取り出す。階層5の<form>に対応するのは14行目から16行目であり、階層6の<input>に対応するのは15行目である。また、階層6の<br>には対応する</br>がないため、その内容部分はないものとして扱う。したがって、以下に示すように14行目から16行目が取り出されることになる。
<form action="logout.php" method="post">
<input type="submit" value="ログアウト">
</form>
【0048】
CPU20は、取り出した内容中に、ハードディスク24に記録されているキーワード38に合致するものがあるかどうかを判断する(ステップS7)。この実施形態では、キーワード38として、「ようこそ」「ログアウト」を記録している。ここでは、取り出した内容中に「ログアウト」が含まれている。したがって、CPU20は「ログイン有」と判断する(ステップS8)。
【0049】
また、正しくログインできていないレスポンスの場合には、図10のようなデータとはならず、「正しいユーザID、パスワードを入力してください」などのメッセージが追加された画面となる。この場合には、取り出した内容中にキーワード38が含まれない。CPU20は、キーワード38が含まれなければ、ログイン無と判断する(ステップS9)。
【0050】
上記のようにして、ログインの有無を判定することができる。なお、この実施形態では、HTML階層構造を比較して差異部分を抽出するようにしている。アクセスごとに、あるいは所定時間ごとに変化する広告部分や時計表示部分などは、表示内容は変化するもののHTML構造は、そのままである場合がほとんどである。したがって、この実施形態によれば、このような変化は無視し、目的とする変化が起こる可能性のある部分を取り出して判定を行うことができ、処理が迅速である。
【0051】
このようにログインの有無を判定した後、CSRFに対する脆弱性判定を行う。
【0052】
4.その他の実施形態
(1)上記実施形態では、CSRFに対する脆弱性判定の前提としてのログイン判定について説明した。しかし、ログイン有無の判定一般に適用することができる。
【0053】
(2)上記実施形態では、参照HTML階層構造36としてログイン前のHTMLデータの階層構造を記録している。しかし、参照HTML階層構造36としてログイン後のHTMLデータの階層構造を記録しておくようにしてもよい。この場合、レスポンスのHTMLデータの階層構造と参照HTML階層構造36を比較して異なる部分を抽出し、これに対応するレスポンスのHTMLデータの部分に、ログイン用の画面に特有のキーワード(たとえば、「ログイン」「新規登録」など)があれば、正しくログインがなされていないと判断する。
【0054】
(3)上記実施形態では、ログインの有無を判定するようにしている。しかし、比較すべき2つのページについて、アクセスごとにあるいは所定時間ごとに変化する広告部分や時計表示部分などの変化は無視し、注目すべき変化部分を検出するために用いることもできる。
【0055】
また、差異フラグテーブルに基づいて、両ページの類似度(差異度)を判断することもできる。差異フラグテーブルにおける「1」を全て見いだし、各「1」から右向きに最終階層のマスまでの矩形を描く。これら矩形の面積の和が大きいほど、両ページの類似度は低いと判断する。これは、階層が高い部分が異なるほど差異が大きいと考えられるからである。
【0056】
たとえば、図12に示す差異フラグテーブルでは、階層5のタグ種類<form>の「1」から最終階層までの矩形の面積(2マス)と、階層6のタグ種類<br><input>の「1」から最終階層までの矩形の面積(それぞれ、1マス)を合計した面積(4マス)となる。
【0057】
(4)上記実施形態では、HTMLデータを例として説明したが、他の階層構造を有する言語(たとえばXML)にも適用することができる。
【0058】
(5)上記実施形態では、ログイン判定プログラムが診断サーバ装置14に記録されている場合について説明した。しかし、ユーザ端末装置12にログイン判定プログラムを記録し、ユーザ端末装置12から直接診断対象サーバ装置16にアクセスして判定を行うようにしてもよい。
【0059】
(6)上記実施形態では、2つのページの比較を行う例を示した。しかし、ユーザの訪問したページのアクセスログの記録に用いることもできる。ユーザの訪問したページのHTMLデータの全てを記録するのは煩雑である。そこで、階層構造と注目すべきタグに関する内容のみを記録するようにすればよい。
【特許請求の範囲】
【請求項1】
ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部と、
判定対象である対象ページを取得する対象ページ取得手段と、
取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、
前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段と、
を備えたログイン判定装置。
【請求項2】
ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部にアクセス可能なコンピュータを用いたログイン判定プログラムであって、前記ログイン判定プログラムは、コンピュータを
判定対象である対象ページを取得する対象ページ取得手段と、
取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、
前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段と、
して機能させるためのログイン判定プログラム。
【請求項3】
請求項2のログイン判定プログラムにおいて、
前記対象ページはHTML言語にて記載されており、
前記階層構造解析手段は、取得した対象ページのHTMLタグのネスティング状態に応じて、階層構造の解析を行うことを特徴とするログイン判定プログラム。
【請求項4】
請求項2または3のログイン判定プログラムにおいて、
前記階層構造解析手段は、HTMLタグの各階層に含まれる各種類のタグの数を階層構造として解析し、
前記抽出手段は、前記構造記録部に記録された対象ページを構成するタグの各階層に含まれる各種類のタグの数と、前記階層構造解析手段によって解析された対象ページを構成するタグの各階層に含まれる各種類のタグの数とを比較し、対応するタグの数が異なる部分を階層構造の異なる部分として抽出することを特徴とするログイン判定プログラム。
【請求項5】
第1の対象ページを構成するタグの階層構造と、第2の対象ページを構成するタグの階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
第1の対象ページまたは第2の対象ページを構成するタグの前記階層構造の異なる部分に対応する部分に基づいて、第1の対象ページと第2の対象ページの変化内容を決定する変化内容決定手段と、
を備えたページ変化検出装置。
【請求項1】
ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部と、
判定対象である対象ページを取得する対象ページ取得手段と、
取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、
前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段と、
を備えたログイン判定装置。
【請求項2】
ログイン後またはログイン前であることが判明している対象ページを構成するタグの階層構造を参照階層構造として記録した参照階層構造記録部にアクセス可能なコンピュータを用いたログイン判定プログラムであって、前記ログイン判定プログラムは、コンピュータを
判定対象である対象ページを取得する対象ページ取得手段と、
取得した対象ページを構成するタグの階層構造を解析して解析階層構造を得る階層構造解析手段と、
前記解析階層構造と、参照階層構造記録部に記録されている参照階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
前記解析階層構造の異なる部分に対応する部分に、所定のキーワードが含まれるか否かによって、前記取得した対象ページがログイン後のものであるかログイン前のものであるかを判断するログイン判断手段と、
して機能させるためのログイン判定プログラム。
【請求項3】
請求項2のログイン判定プログラムにおいて、
前記対象ページはHTML言語にて記載されており、
前記階層構造解析手段は、取得した対象ページのHTMLタグのネスティング状態に応じて、階層構造の解析を行うことを特徴とするログイン判定プログラム。
【請求項4】
請求項2または3のログイン判定プログラムにおいて、
前記階層構造解析手段は、HTMLタグの各階層に含まれる各種類のタグの数を階層構造として解析し、
前記抽出手段は、前記構造記録部に記録された対象ページを構成するタグの各階層に含まれる各種類のタグの数と、前記階層構造解析手段によって解析された対象ページを構成するタグの各階層に含まれる各種類のタグの数とを比較し、対応するタグの数が異なる部分を階層構造の異なる部分として抽出することを特徴とするログイン判定プログラム。
【請求項5】
第1の対象ページを構成するタグの階層構造と、第2の対象ページを構成するタグの階層構造を比較して、階層構造の異なる部分を抽出する抽出手段と、
第1の対象ページまたは第2の対象ページを構成するタグの前記階層構造の異なる部分に対応する部分に基づいて、第1の対象ページと第2の対象ページの変化内容を決定する変化内容決定手段と、
を備えたページ変化検出装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−208743(P2012−208743A)
【公開日】平成24年10月25日(2012.10.25)
【国際特許分類】
【出願番号】特願2011−74077(P2011−74077)
【出願日】平成23年3月30日(2011.3.30)
【公序良俗違反の表示】
特許法第64条第2項第4号の規定により図面の一部または全部を不掲載とする。
【出願人】(596100812)京セラコミュニケーションシステム株式会社 (38)
【Fターム(参考)】
【公開日】平成24年10月25日(2012.10.25)
【国際特許分類】
【出願日】平成23年3月30日(2011.3.30)
【公序良俗違反の表示】
特許法第64条第2項第4号の規定により図面の一部または全部を不掲載とする。
【出願人】(596100812)京セラコミュニケーションシステム株式会社 (38)
【Fターム(参考)】
[ Back to top ]