(57)【特許請求の範囲】
【請求項１】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置であって、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段と、
を備えた脆弱性診断装置。
【請求項２】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実現するための脆弱性診断プログラムであって、
前記コンピュータを、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段と、
して機能させることを特徴とする脆弱性診断プログラム。
【請求項３】
請求項２の脆弱性診断プログラムにおいて、
前記異常なリクエストは、ＳＱＬインジェクションを行うリクエストであることを特徴とする脆弱性診断プログラム。
【請求項４】
請求項２または３の脆弱性診断プログラムによって実現される脆弱性診断装置は、サーバ装置として構築され、
前記正常レスポンス収集手段は、端末装置から、ネットワークを介して送信されてきた診断対象ウエブサーバのＵＲＬ、正常リクエストについての情報に基づいて、正常レスポンスを収集することを特徴とする脆弱性診断プログラム。
【請求項５】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実行する脆弱性診断方法であって、
前記コンピュータが、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録し、
前記コンピュータが、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出し、
前記コンピュータが、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録し、
前記コンピュータが、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断することを特徴とする脆弱性診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ウエブサイトの脆弱性を診断する脆弱性診断装置に関するものである。
【背景技術】
【０００２】
ウエブサーバに対する攻撃手法の一つとして、ＳＱＬインジェクションがある。これは、データベースを操作するＳＱＬ言語を用いて、不正にウエブサーバ上のデータベースを操作するものである。
【０００３】
たとえば、図１のようなシステムを例として説明する。ウエブサーバ４が、図２に示すようなログイン画面を用意していたとする。端末ＰＣ２において、ユーザは、自らのユーザＩＤとパスワードを入力し、これをウエブサーバに送信する（(1)参照）。ウエブサーバ４側では、予めユーザＩＤとパスワードの組み合わせをデータベース６に記録しており、端末ＰＣ２から送られてきたユーザＩＤとパスワードの組み合わせに合致するものが記録されていれば、アクセスを許可し、次の画面を送信する（(3)〜(6)参照）。
【０００４】
端末ＰＣ２から送られてきたユーザＩＤとパスワードの組み合わせに合致するものが記録されていなければ、アクセスを許可しない旨の画面を送信する（(3)〜(6)参照）。
【０００５】
以上のようにして、ユーザＩＤとパスワードを正しく入力しない限りアクセスを許可しないこととして、ウエブサーバに対するアクセス権限を管理することが行われている。
【０００６】
上記処理において、ウエブサーバ４側においては、端末ＰＣ２から受け取ったユーザＩＤとパスワードに基づいて、データベースを検索するためのＳＱＬ文を作成している（(2)参照）。たとえば、図２に示す画面に基づいてユーザが入力を行い、端末ＰＣ２から、ユーザＩＤ(uid)が"furutani"、パスワード(pwd)が"1cd45"として送られてきたとする。ウエブサーバ４は、ユーザＩＤ、パスワードを受けて、次のような規則にしたがって文字列を付加し、ＳＱＬ文を作成する。
【０００７】
SELECT * FROM user WHERE uid='ユーザＩＤ' AND pwd='パスワード'
この規則にしたがえば、ユーザＩＤ(uid)が"furutani"、パスワード(pwd)が"1cd45"である場合、次のようなＳＱＬ文が生成される。
【０００８】
SELECT * FROM user WHERE uid='furutani' AND pwd='1cd45'
ウエブサーバ４は、このＳＱＬ文をデータベース６に与える（(3)参照）、データベース６から、ユーザＩＤ(uid)が"furutani"、パスワード(pwd)が"1cd45"であるユーザが記録されているかどうかの判断結果を取得する（(4)参照）。つまり、ユーザＩＤ(uid)が"furutani"、パスワード(pwd)が"1cd45"であるユーザが記録されていれば、「uid='furutani' AND pwd='1cd45'」の論理値が「１」となり、記録されていなければ論理値が「０」となる。
【０００９】
ウエブサーバ４は、論理値「１」が返ってくれば、当該ユーザの権限を認めてアクセスを許可し、論理値「０」が返ってくれば、当該ユーザには権限がないとしてアクセスを許可しない（(5)(6)参照）。
【００１０】
ところが、上記のようなＳＱＬ文作成のアルゴリズムが推測されてしまうと、次のような攻撃（ＳＱＬインジェクション）がなされる可能性がある。
【００１１】
攻撃を行う者は、端末ＰＣ２から、ユーザＩＤ(uid)として適当な名前を入力する。たとえば、"ueno"を入力する。パスワード(pwd)としては、次のような入力を行う。
【００１２】
' OR 'A' = 'A
このような入力に対し、上記のアルゴリズムに基づくと、以下のようなＳＱＬ文が生成されることになる。
【００１３】
SELECT * FROM user WHERE uid='ueno' AND pwd='' OR 'A' = 'A'
このＳＱＬ文において、「uid='ueno' AND pwd=''」の部分は、通常、論理値「０」となる（「pwd=''」は、パスワードが空白の文字列であることを意味する）。しかし、「OR 'A' = 'A'」があり、「'A' = 'A'」は常に論理値「１」であり、さらに「OR」によって結合されているので、全体として必ず論理値が「１」となる。
【００１４】
したがって、上記のような入力がなされると、論理値が常に「１」となって、パスワードの与えられていないユーザであっても、不正にアクセスすることが可能となってしまう。
【００１５】
そこで、このようなＳＱＬインジェクションに対して、これを排除してアクセスを許容しないような対策を、ウエブサーバ４に施すことが行われている。ＳＱＬインジェクションには、いくつかの種類があり、これら全てのＳＱＬインジェクションに対する対策をしなければ万全とはいえない。
【００１６】
そこで、ウエブサーバ４が、このようなＳＱＬインジェクションに対する脆弱性を有していないかどうかを診断することが行われている（非特許文献１参照）。この診断は、以下のような方法によって実現されている。
【００１７】
まず、診断対象となるウエブサーバに対し、正しいユーザＩＤとパスワードを伴ったアクセスを行う。この正常なアクセスに対するウエブサーバからのレスポンスを、正常レスポンスとして記録する。この場合、正常レスポンスは、アクセスを許可した結果として表示される内容となる。
【００１８】
次に、ＳＱＬインジェクションによるアクセス（異常アクセスと呼ぶ）を行う。この異常アクセスに対するウエブサーバからのレスポンスを、異常レスポンスとして記録する。ウエブサーバ装置が、ＳＱＬインジェクションによる攻撃に対して、アクセスを許可しなければ、この異常レスポンスは、アクセスを許可しなかった結果として表示される内容（たとえば、エラー画面など）となる。つまり、ＳＱＬインジェクションに対する脆弱性がない場合には、正常レスポンスと異常レスポンスが異なる内容となる。
【００１９】
一方、ウエブサーバ装置が、ＳＱＬインジェクションによる攻撃に対しアクセスを許可してしまうという脆弱性があれば、この異常レスポンスは、正常レスポンスと同じになる。
【００２０】
以上のように、正常アクセスに対するレスポンスと異常アクセスに対するレスポンスが同じであるか異なるかによって、ＳＱＬインジェクションに対する脆弱性を判断することができる。この方法によれば、レスポンスの内容を人間が判断しなくとも、正常レスポンスと異常レスポンスが同一であるかどうかを判断することで診断を行うことができるので、診断の自動化を実現することができる。
【先行技術文献】
【非特許文献】
【００２１】
【非特許文献１】徳丸浩他「不正アクセスや情報漏洩を防ぐＷｅｂアプリケーションのセキュリティ完全対策」日経ＢＰ社、２００４年１１月
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかしながら、上記のような診断技術においては次のような問題があった。上述のように、ウエブサーバがＳＱＬインジェクションに対する脆弱性を有していれば、正常リクエストに対するレスポンスと異常リクエストに対するレスポンスが同一になることで、その脆弱性を見いだすようにしている。
【００２３】
しかし、診断対象であるウエブサーバが、時間やアクセス回数とともに正常リクエストに対するレスポンスの内容を変える（アクセス毎に広告が変わる、時計の時分表示が変わるなど）ものであった場合、ＳＱＬインジェクションに対する脆弱性を有していたとしても、正常レスポンスと異常レスポンスが同一にならない。このため、このようなウエブサーバ装置に対しては、ＳＱＬインジェクションに対する脆弱性を正しく診断できないという問題があった。
【００２４】
また、このような問題は、ＳＱＬインジェクションだけでなく、正常レスポンスと異常レスポンスの同一性によって診断を行うことのできる脆弱性に共通するものであった。
【００２５】
そこで、この発明では、所定条件によって、正常リクエストに対するレスポンスの内容を変えるようなウエブサーバ装置についても、ＳＱＬインジェクションに対する脆弱性を正しく診断することのできる診断装置を提供することを目的とする。
【課題を解決するための手段】
【００２６】
(1)(2)この発明に係る脆弱性診断装置は、ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置であって、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段とを備えている。
【００２７】
したがって、リクエストのタイミングや回数などによってレスポンスの内容に変化する部分があるようなウエブサーバについても、異常リクエストに対する脆弱性診断を行うことができる。
【００２８】
(3)この発明に係る脆弱性診断プログラムは、異常なリクエストは、ＳＱＬインジェクションを行うリクエストであることを特徴としている。
【００２９】
したがって、ＳＱＬインジェクションに対する脆弱性診断を行うことができる。
【００３０】
(4)この発明に係る脆弱性診断プログラムによって実現される脆弱性診断装置はサーバ装置として構築され、正常レスポンス収集手段は、端末装置から、ネットワークを介して送信されてきた診断対象ウエブサーバのＵＲＬ、正常リクエストについての情報に基づいて、正常レスポンスを収集することを特徴としている。
【００３１】
したがって、ユーザが脆弱性診断プログラムを有していなくとも、脆弱性診断を行うことができる。
【００３２】
(5)この発明に係る脆弱性診断プログラムは、ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実行する脆弱性診断方法であって、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録し、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出し、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録し、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断することを特徴としている。
【００３３】
したがって、リクエストのタイミングや回数などによってレスポンスの内容に変化する部分があるようなウエブサーバについても、異常リクエストに対する脆弱性診断を行うことができる。
【００３４】
「正常レスポンス収集手段」は、実施形態においては、図６、図１５のステップＳ１４、Ｓ１５やステップＳ１６、Ｓ１７がこれに対応する。
【００３５】
「共通領域抽出手段」は、実施形態においては、図７、図１６のステップＳ２０がこれに対応する。
【００３６】
「異常レスポンス収集手段」は、実施形態においては、図７、図１６のステップＳ１８、Ｓ１９がこれに対応する。
【００３７】
「判断手段」は、図７、図１６のステップＳ２２、Ｓ２３、Ｓ２４がこれに対応する。
【００３８】
「プログラム」とは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【００３９】
【図１】ウエブサーバ装置における認証の仕組みを模式的に示した図である。
【図２】認証におけるユーザＩＤとパスワードの入力画面を示す図である。
【図３】一実施形態による脆弱性診断装置の機能ブロック図である。
【図４】脆弱性診断サーバ２０を用いたシステム構成を示す図である。
【図５】脆弱性診断サーバ２０のハードウエア構成である。
【図６】脆弱性診断プログラム４６のフローチャートである。
【図７】脆弱性診断プログラム４６のフローチャートである。
【図８】脆弱性診断のための入力画面を示す図である。
【図９】正常レスポンスＲＥＳＮ1、ＲＥＳＮ2のデータを示す図である。
【図１０】図９の正常レスポンスＲＥＳＮ1、ＲＥＳＮ2のデータに対応する画面表示である。
【図１１】異常レスポンスＲＥＳＡのデータを示す図である。
【図１２】図１１の異常レスポンスＲＥＳＡのデータに対応する画面表示である。
【図１３】共通領域を示す図である。
【図１４】図１４Ａ、図１４Ｂは、異常レスポンスについて共通領域における内容を抽出したデータを示すものである。
【図１５】端末ＰＣ２２に記録された脆弱性診断プログラムのフローチャートである。
【図１６】端末ＰＣ２２に記録された脆弱性診断プログラムのフローチャートである。
【発明を実施するための形態】
【００４０】
１．脆弱性診断装置の概要
図３に、この発明の一実施形態による脆弱性診断装置の機能ブロック図を示す。正常レスポンス収集手段１０は、診断対象となるウエブサイトに対し、システム上想定されている本来のリクエストＲＥＱＮ（正常リクエストという）を行う。たとえば、予め登録されているユーザＩＤとパスワードを伴った正常リクエストＲＥＱＮを行う。正常レスポンス収集手段１０は、この正常リクエストに対するウエブサーバからのレスポンスＲＥＳＮ（正常レスポンスという）を受信して、記録部１６に記録する。
【００４１】
この実施形態では、正常レスポンス収集手段１０は、複数の正常リクエストＲＥＱＮ1〜ＲＥＱＮnを送信し、これらに対する複数の正常レスポンスＲＥＳＮ1〜ＲＥＳＮnを受信して記録する。
【００４２】
異常レスポンス収集手段１８は、ＳＱＬインジェクションのようなシステムが本来想定していない攻撃的なリクエストＲＥＱＡ（異常リクエストという）を、ウエブサーバに対して行う。この異常リクエストに対するレスポンスＲＥＳＡ（異常レスポンスという）を受信し、これを記録部１６に記録する。
【００４３】
共通領域抽出手段１２は、記録部１６に記録された正常レスポンスＲＥＳＮ1〜ＲＥＳＮnを比較し、これらにおいて内容の共通する領域を抽出する。
【００４４】
判断手段１４は、抽出された共通領域を対象として、正常レスポンスと異常レスポンスが同一であるかどうかを判断する。同一でなければ攻撃に対しての脆弱性がないと判断し、同一であれば攻撃に対する脆弱性があると判断する。このようにして、ＳＱＬインジェクションなどの攻撃に対する脆弱性を診断することができる。
【００４５】
２．ハードウエア構成
図４に、脆弱性診断装置をサーバとして構築した場合のシステム構成図を示す。このシステムでは、脆弱性診断装置を脆弱性診断サーバ２０として構築している。対象ウエブサーバ２４は、脆弱性診断を行う対象であるウエブサーバである。端末ＰＣ２２は、対象ウエブサーバ２４の脆弱性診断を行うことを希望するユーザの操作する端末装置である。
【００４６】
脆弱性診断サーバ２０、端末ＰＣ２２、対象ウエブサーバ２４は、いずれも、インターネット２６に接続されており互いに通信可能である。
【００４７】
図５に、脆弱性診断サーバ２０のハードウエア構成を示す。ＣＰＵ３０には、メモリ３２、ディスプレイ３４、ハードディスク３６、ＣＤ−ＲＯＭドライブ３８、通信回路４０が接続されている。
【００４８】
ハードディスク３６には、オペレーティングシステム（たとえば、マイクロソフト社のWINDOWS（商標））４４、脆弱性診断プログラム４６、ＳＱＬインジェクション４７が記録されている。脆弱性診断プログラム４６は、オペレーティングシステム４４と協働して、その機能を発揮するものである。ＳＱＬインジェクション４７は、たとえば、上述のように適当なユーザＩＤと、パスワードの入力内容を「' OR 'A' = 'A」とした攻撃を予め作成して記録したものである。
【００４９】
また、オペレーティングシステム４４、脆弱性診断プログラム４６は、ＣＤ−ＲＯＭ４２に記録されていたものを、ＣＤ−ＲＯＭドライブ３８を介して、ハードディスク３６にインストールしたものである。通信回路４０は、インターネット２６を介して他のコンピュータと通信するための回路である。
【００５０】
３．脆弱性診断プログラムのフローチャート
図６に、脆弱性診断プログラム４６のフローチャートを示す。あわせて、端末ＰＣ２２のブラウザプログラム、対象ウエブサーバ２４のサーバプログラムのフローチャートも示す。
【００５１】
端末ＰＣ２２は、脆弱性診断サーバ２０にアクセスし、初期画面の要求を行う（ステップＳ１）。これを受けて、脆弱性診断サーバ２０のＣＰＵ３０は、初期画面を端末ＰＣ２２に送信する（ステップＳ１１）。たとえば、図８に示すような初期画面が端末ＰＣ２２に送信され、端末ＰＣ２２において表示される。
【００５２】
この初期画面を見て、ユーザは、端末ＰＣ２２を操作し、診断を希望する対象ウエブサーバ２４のＵＲＬを入力する。また、正常なユーザＩＤおよびパスワードを入力する（ステップＳ２）。たとえば、管理者としてのユーザＩＤ、管理者としてのパスワードを入力し、脆弱性診断サーバ２０に送信する。
【００５３】
これを受けた脆弱性診断サーバ２０のＣＰＵ３０は、対象ウエブサーバ２４のＵＲＬ、正常なユーザＩＤ、パスワードを、ハードディスク３６に記録する（ステップＳ１２）。脆弱性診断サーバ２０のＣＰＵ３０は、記録した対象ウエブサーバ２４のＵＲＬに基づいて、対象ウエブサーバにアクセスする（ステップＳ１３）。
【００５４】
対象ウエブサーバ２４は、これに応答して、ユーザＩＤ、パスワードの入力を求める認証画面を返信する（ステップＳ５１）。たとえば、図２に示すような画面が、脆弱性診断サーバ２０に返信される。
【００５５】
脆弱性診断サーバ２０のＣＰＵ３０は、これを受けて、記録している正常なユーザＩＤ、パスワードを対象ウエブサーバ２４に送信する（ステップＳ１４）。つまり、正常リクエストを対象ウエブサーバ２４に送信する。
【００５６】
これを受けて、対象ウエブサーバ２４は、正常リクエストに対するレスポンス（正常レスポンス）ＲＥＳＮ1を脆弱性診断サーバ２０に返信する(ステップＳ５２）。脆弱性診断サーバ２０のＣＰＵ３０は、この正常レスポンスＲＥＳＮ1のデータをハードディスク３６に記録する（ステップＳ１５）。図９に、正常レスポンスＲＥＳＮ1のデータを示す。また、図１０にこの正常レスポンスＲＥＳＮ1を表示した場合の画面を示す。
【００５７】
さらに、脆弱性診断サーバ２０のＣＰＵ３０は、記録している正常なユーザＩＤ、パスワードにより、２回目の正常リクエストを対象ウエブサーバ２４に送信する（ステップＳ１６）。
【００５８】
これを受けて、対象ウエブサーバ２４は、２回目の正常リクエストに対するレスポンス（正常レスポンス）ＲＥＳＮ2を脆弱性診断サーバ２０に返信する(ステップＳ５３）。脆弱性診断サーバ２０のＣＰＵ３０は、この２回目の正常レスポンスＲＥＳＮ2のデータをハードディスク３６に記録する（ステップＳ１７）。図９に、正常レスポンスＲＥＳＮ2のデータを示す。また、図１０にこの正常レスポンスＲＥＳＮ2を表示した場合の画面を示す。
【００５９】
脆弱性診断サーバ２０のＣＰＵ３０は、上記ステップＳ１４〜Ｓ１５の処理を所定回数ｎだけ繰り返し、正常レスポンスＲＥＳＮ1〜ＲＥＳＮnを取得して記録する。図９には、正常レスポンスＲＥＳＮ1、ＲＥＳＮ2のデータのみを示すが、ＲＥＳＮ3以下も同様である。また、図１０には、正常レスポンスＲＥＳＮ1、ＲＥＳＮ2、ＲＥＳＮnの画面のみを示すが、他のレスポンスについても同様である。
【００６０】
図１０から明らかなように、この例における正常レスポンスには、ログイン時間としての時間表示、広告が含まれており、これらはリクエストを行う毎に変化する。
【００６１】
次に、脆弱性診断サーバ２０のＣＰＵ３０は、予め用意してハードディスク３６に記録しているＳＱＬインジェクション４７を読み出し、これを用いて診断対象ウエブサーバ２４にリクエスト（異常リクエスト）を行う（ステップＳ１８）。
【００６２】
これを受けて、対象ウエブサーバ２４は、異常リクエストに対するレスポンス（異常レスポンス）ＲＥＳＡを脆弱性診断サーバ２０に返信する（ステップＳ５４）。脆弱性診断サーバ２０のＣＰＵ３０は、この異常レスポンスＲＥＳＡのデータをハードディスク３６に記録する（ステップＳ１９）。
【００６３】
この際、対象ウエブサーバ２４が、ＳＱＬインジェクション４７の攻撃に対してアクセスを許可しなければ（つまり脆弱性を有していなければ）、図１１Ａに示すような異常レスポンスＲＥＳＡを返信することになる。なお、図１２Ａに、この異常レスポンスＲＥＳＡに対応する画面を示す。
【００６４】
一方、対象ウエブサーバ２４が、ＳＱＬインジェクション４７の攻撃に対してアクセスを許可してしまうと（つまり脆弱性を有していると）、図１１Ｂに示すような異常レスポンスＲＥＳＡを返信することになる。なお、図１２Ｂに、この異常レスポンスＲＥＳＡに対応する画面を示す。
【００６５】
次に、脆弱性診断サーバ２０のＣＰＵ３０は、ハードディスク３６に記録した正常レスポンスＲＥＳＮ1、ＲＥＳＮ2・・・ＲＥＳＮnのデータを比較して、内容が共通する領域を抽出する（ステップＳ２０）。
【００６６】
たとえば、図９に示すような正常レスポンスＲＥＳＮ1、ＲＥＳＮ2・・・ＲＥＳＮnであれば、時計表示の部分ＴＭ1、ＴＭ2・・・が異なっている。アクセス時間に応じて、対象ウエブサーバ２４から返送されてくる記述が変わるからである。また、広告表示部分ＡＤ1、ＡＤ2・・・が異なっている。アクセスする毎に、対象ウエブサーバ２４から返送されてくる広告のリンク先が変わるからである。これは、図１０でいうと、時間表示ＴＭ1、ＴＭ2・・・ＴＭn、広告表示ＡＤ1、ＡＤ2・・・ＡＤnの部分に対応する。
【００６７】
したがって、脆弱性診断サーバ２０のＣＰＵ３０は、図９の正常レスポンスＲＥＳＮ1、ＲＥＳＮ2・・・の時間表示ＴＭ1、ＴＭ2・・・、広告表示ＡＤ1、ＡＤ2・・・を除いた部分を、共通領域として抽出する。たとえば、図１３に示すように、＊＊＊＊印以外の領域（１〜９行目および１２行目）が共通領域として抽出される。
【００６８】
脆弱性診断サーバ２０のＣＰＵ３０は、共通領域が１〜９行目および１２行目であること、およびその領域における正常レスポンスの内容が図１３に示すものであることを、ハードディスク３６に記録する。
【００６９】
次に、ハードディスク３６から、記録しておいた異常レスポンスＲＥＳＡを読み出し、その共通領域を取り出す。ここでは、共通領域は１〜９行目および１２行目であるから、たとえば、図１１Ａに示すような異常レスポンスＲＥＳＡ（脆弱性がない場合）であれば、図１４Ａに示すような内容が取り出される。
【００７０】
続いて、脆弱性診断サーバ２０のＣＰＵ３０は、共通領域における正常レスポンス（図１３）と異常レスポンス（図１４Ａ）を比較する（ステップＳ２２）。ここでは、両者は一致しないので、ステップＳ２４に進み、診断をしたＳＱＬインジェクションの種類と「脆弱性がない旨」を端末ＰＣ２２に送信する。
【００７１】
一方、異常レスポンスＲＥＳＡが１１Ｂに示すようなものであった場合、その共通領域の内容は、図１４Ｂに示すものとなる。共通領域における正常レスポンス（図１３）と異常レスポンス（図１４Ｂ）を比較すると（ステップＳ２２）、両者は一致する。したがって、脆弱性診断サーバ２０のＣＰＵ３０は、ステップＳ２３に進み、診断をしたＳＱＬインジェクションの種類と「脆弱性がある旨」を端末ＰＣ２２に送信する。
【００７２】
端末ＰＣ２２は、上記のようにして送信されてきた診断情報を、表示（印刷）する（ステップＳ３）。
【００７３】
以上のようにして、アクセス時間や回数などによって表示内容が変化するウエブサーバに対しても、その脆弱性の診断を行うことができる。
【００７４】
４．その他の実施形態
(1)上記実施形態では、ユーザＩＤ、パスワードによる認証画面に関するＳＱＬインジェクションについての診断を行った。しかし、その他のＳＱＬインジェクション、たとえば、検索のための入力画面に関するＳＱＬインジェクションなどについて、アクセス時間や回数などによって表示内容が変化する場合であっても、同様に適切な診断を行うことができる。
【００７５】
(2)なお、上記実施形態では、１種類のＳＱＬインジェクションについてのみ診断を行う例を示したが、複数種類のＳＱＬインジェクションについて診断を行い、診断情報を端末ＰＣ２２に送信するようにしてもよい。
【００７６】
(3)また、上記実施形態では、ＳＱＬインジェクションによる攻撃について診断を行うようにしている。しかし、その他の攻撃についても、本発明を適用することができる。
【００７７】
(4)上記実施形態では、ユーザの操作する端末ＰＣ２２から脆弱性診断サーバ２０にアクセスし、対象ウエブサーバ２４の診断を行うようにしている。しかし、端末ＰＣ２２に脆弱性診断プログラム４６をインストールし、端末ＰＣ２２から対象ウエブサーバ２４の診断を行うようにしてもよい。この場合の、脆弱性診断プログラム４６のフローチャートを図１５、図１６に示す。
【図１】
0005522850.tif 000002
【図２】
0005522850.tif 000003
【図３】
0005522850.tif 000004
【図４】
0005522850.tif 000005
【図５】
0005522850.tif 000006
【図６】
0005522850.tif 000007
【図７】
0005522850.tif 000008
【図８】
0005522850.tif 000009
【図９】
0005522850.tif 000010
【図１０】
0005522850.tif 000011
【図１１】
0005522850.tif 000012
【図１２】
0005522850.tif 000013
【図１３】
0005522850.tif 000014
【図１４】
0005522850.tif 000015
【図１５】
0005522850.tif 000016
【図１６】
0005522850.tif 000017