脆弱性診断装置
【課題】 所定条件により、リクエストに対するレスポンスの内容を変えるようなウエブサーバ装置についても、SQLインジェクションなどの脆弱性を診断する。
【手段】 正常レスポンス収集手段10は、登録されているユーザIDとパスワードを伴った正常リクエストREQNを複数回送信する。正常レスポンス収集手段10は、正常リクエストに対するウエブサーバからの複数のレスポンスRESN(正常レスポンスという)を受信する。複数の正常レスポンスについて、共通領域抽出手段12によって共通領域が抽出される。異常レスポンス収集手段18は、SQLインジェクションを、ウエブサーバに対して行い、レスポンスRESA(異常レスポンスという)を受信し、これを記録部16に記録する。判断手段14は、共通領域において、正常レスポンスと異常レスポンスが同一であれば、脆弱性があると判断する。
【手段】 正常レスポンス収集手段10は、登録されているユーザIDとパスワードを伴った正常リクエストREQNを複数回送信する。正常レスポンス収集手段10は、正常リクエストに対するウエブサーバからの複数のレスポンスRESN(正常レスポンスという)を受信する。複数の正常レスポンスについて、共通領域抽出手段12によって共通領域が抽出される。異常レスポンス収集手段18は、SQLインジェクションを、ウエブサーバに対して行い、レスポンスRESA(異常レスポンスという)を受信し、これを記録部16に記録する。判断手段14は、共通領域において、正常レスポンスと異常レスポンスが同一であれば、脆弱性があると判断する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ウエブサイトの脆弱性を診断する脆弱性診断装置に関するものである。
【背景技術】
【0002】
ウエブサーバに対する攻撃手法の一つとして、SQLインジェクションがある。これは、データベースを操作するSQL言語を用いて、不正にウエブサーバ上のデータベースを操作するものである。
【0003】
たとえば、図1のようなシステムを例として説明する。ウエブサーバ4が、図2に示すようなログイン画面を用意していたとする。端末PC2において、ユーザは、自らのユーザIDとパスワードを入力し、これをウエブサーバに送信する((1)参照)。ウエブサーバ4側では、予めユーザIDとパスワードの組み合わせをデータベース6に記録しており、端末PC2から送られてきたユーザIDとパスワードの組み合わせに合致するものが記録されていれば、アクセスを許可し、次の画面を送信する((3)〜(6)参照)。
【0004】
端末PC2から送られてきたユーザIDとパスワードの組み合わせに合致するものが記録されていなければ、アクセスを許可しない旨の画面を送信する((3)〜(6)参照)。
【0005】
以上のようにして、ユーザIDとパスワードを正しく入力しない限りアクセスを許可しないこととして、ウエブサーバに対するアクセス権限を管理することが行われている。
【0006】
上記処理において、ウエブサーバ4側においては、端末PC2から受け取ったユーザIDとパスワードに基づいて、データベースを検索するためのSQL文を作成している((2)参照)。たとえば、図2に示す画面に基づいてユーザが入力を行い、端末PC2から、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"として送られてきたとする。ウエブサーバ4は、ユーザID、パスワードを受けて、次のような規則にしたがって文字列を付加し、SQL文を作成する。
【0007】
SELECT * FROM user WHERE uid='ユーザID' AND pwd='パスワード'
この規則にしたがえば、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"である場合、次のようなSQL文が生成される。
【0008】
SELECT * FROM user WHERE uid='furutani' AND pwd='1cd45'
ウエブサーバ4は、このSQL文をデータベース6に与える((3)参照)、データベース6から、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"であるユーザが記録されているかどうかの判断結果を取得する((4)参照)。つまり、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"であるユーザが記録されていれば、「uid='furutani' AND pwd='1cd45'」の論理値が「1」となり、記録されていなければ論理値が「0」となる。
【0009】
ウエブサーバ4は、論理値「1」が返ってくれば、当該ユーザの権限を認めてアクセスを許可し、論理値「0」が返ってくれば、当該ユーザには権限がないとしてアクセスを許可しない((5)(6)参照)。
【0010】
ところが、上記のようなSQL文作成のアルゴリズムが推測されてしまうと、次のような攻撃(SQLインジェクション)がなされる可能性がある。
【0011】
攻撃を行う者は、端末PC2から、ユーザID(uid)として適当な名前を入力する。たとえば、"ueno"を入力する。パスワード(pwd)としては、次のような入力を行う。
【0012】
' OR 'A' = 'A
このような入力に対し、上記のアルゴリズムに基づくと、以下のようなSQL文が生成されることになる。
【0013】
SELECT * FROM user WHERE uid='ueno' AND pwd='' OR 'A' = 'A'
このSQL文において、「uid='ueno' AND pwd=''」の部分は、通常、論理値「0」となる(「pwd=''」は、パスワードが空白の文字列であることを意味する)。しかし、「OR 'A' = 'A'」があり、「'A' = 'A'」は常に論理値「1」であり、さらに「OR」によって結合されているので、全体として必ず論理値が「1」となる。
【0014】
したがって、上記のような入力がなされると、論理値が常に「1」となって、パスワードの与えられていないユーザであっても、不正にアクセスすることが可能となってしまう。
【0015】
そこで、このようなSQLインジェクションに対して、これを排除してアクセスを許容しないような対策を、ウエブサーバ4に施すことが行われている。SQLインジェクションには、いくつかの種類があり、これら全てのSQLインジェクションに対する対策をしなければ万全とはいえない。
【0016】
そこで、ウエブサーバ4が、このようなSQLインジェクションに対する脆弱性を有していないかどうかを診断することが行われている(非特許文献1参照)。この診断は、以下のような方法によって実現されている。
【0017】
まず、診断対象となるウエブサーバに対し、正しいユーザIDとパスワードを伴ったアクセスを行う。この正常なアクセスに対するウエブサーバからのレスポンスを、正常レスポンスとして記録する。この場合、正常レスポンスは、アクセスを許可した結果として表示される内容となる。
【0018】
次に、SQLインジェクションによるアクセス(異常アクセスと呼ぶ)を行う。この異常アクセスに対するウエブサーバからのレスポンスを、異常レスポンスとして記録する。ウエブサーバ装置が、SQLインジェクションによる攻撃に対して、アクセスを許可しなければ、この異常レスポンスは、アクセスを許可しなかった結果として表示される内容(たとえば、エラー画面など)となる。つまり、SQLインジェクションに対する脆弱性がない場合には、正常レスポンスと異常レスポンスが異なる内容となる。
【0019】
一方、ウエブサーバ装置が、SQLインジェクションによる攻撃に対しアクセスを許可してしまうという脆弱性があれば、この異常レスポンスは、正常レスポンスと同じになる。
【0020】
以上のように、正常アクセスに対するレスポンスと異常アクセスに対するレスポンスが同じであるか異なるかによって、SQLインジェクションに対する脆弱性を判断することができる。この方法によれば、レスポンスの内容を人間が判断しなくとも、正常レスポンスと異常レスポンスが同一であるかどうかを判断することで診断を行うことができるので、診断の自動化を実現することができる。
【先行技術文献】
【非特許文献】
【0021】
【非特許文献1】徳丸浩他「不正アクセスや情報漏洩を防ぐWebアプリケーションのセキュリティ完全対策」日経BP社、2004年11月
【発明の概要】
【発明が解決しようとする課題】
【0022】
しかしながら、上記のような診断技術においては次のような問題があった。上述のように、ウエブサーバがSQLインジェクションに対する脆弱性を有していれば、正常リクエストに対するレスポンスと異常リクエストに対するレスポンスが同一になることで、その脆弱性を見いだすようにしている。
【0023】
しかし、診断対象であるウエブサーバが、時間やアクセス回数とともに正常リクエストに対するレスポンスの内容を変える(アクセス毎に広告が変わる、時計の時分表示が変わるなど)ものであった場合、SQLインジェクションに対する脆弱性を有していたとしても、正常レスポンスと異常レスポンスが同一にならない。このため、このようなウエブサーバ装置に対しては、SQLインジェクションに対する脆弱性を正しく診断できないという問題があった。
【0024】
また、このような問題は、SQLインジェクションだけでなく、正常レスポンスと異常レスポンスの同一性によって診断を行うことのできる脆弱性に共通するものであった。
【0025】
そこで、この発明では、所定条件によって、正常リクエストに対するレスポンスの内容を変えるようなウエブサーバ装置についても、SQLインジェクションに対する脆弱性を正しく診断することのできる診断装置を提供することを目的とする。
【課題を解決するための手段】
【0026】
(1)(2)この発明に係る脆弱性診断装置は、ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置であって、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段とを備えている。
【0027】
したがって、リクエストのタイミングや回数などによってレスポンスの内容に変化する部分があるようなウエブサーバについても、異常リクエストに対する脆弱性診断を行うことができる。
【0028】
(3)この発明に係る脆弱性診断プログラムは、異常なリクエストは、SQLインジェクションを行うリクエストであることを特徴としている。
【0029】
したがって、SQLインジェクションに対する脆弱性診断を行うことができる。
【0030】
(4)この発明に係る脆弱性診断プログラムによって実現される脆弱性診断装置はサーバ装置として構築され、正常レスポンス収集手段は、端末装置から、ネットワークを介して送信されてきた診断対象ウエブサーバのURL、正常リクエストについての情報に基づいて、正常レスポンスを収集することを特徴としている。
【0031】
したがって、ユーザが脆弱性診断プログラムを有していなくとも、脆弱性診断を行うことができる。
【0032】
(5)この発明に係る脆弱性診断プログラムは、ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実行する脆弱性診断方法であって、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録し、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出し、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録し、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断することを特徴としている。
【0033】
したがって、リクエストのタイミングや回数などによってレスポンスの内容に変化する部分があるようなウエブサーバについても、異常リクエストに対する脆弱性診断を行うことができる。
【0034】
「正常レスポンス収集手段」は、実施形態においては、図6、図15のステップS14、S15やステップS16、S17やステップがこれに対応する。
【0035】
「共通領域抽出手段」は、実施形態においては、図7、図16のステップS20がこれに対応する。
【0036】
「異常レスポンス収集手段」は、実施形態においては、図7、図16のステップS18、S19がこれに対応する。
【0037】
「判断手段」は、図7、図16のステップS22、S23、S24がこれに対応する。
【0038】
「プログラム」とは、CPUにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【0039】
【図1】ウエブサーバ装置における認証の仕組みを模式的に示した図である。
【図2】認証におけるユーザIDとパスワードの入力画面を示す図である。
【図3】一実施形態による脆弱性診断装置の機能ブロック図である。
【図4】脆弱性診断サーバ20を用いたシステム構成を示す図である。
【図5】脆弱性診断サーバ20のハードウエア構成である。
【図6】脆弱性診断プログラム46のフローチャートである。
【図7】脆弱性診断プログラム46のフローチャートである。
【図8】脆弱性診断のための入力画面を示す図である。
【図9】正常レスポンスRESN1、RESN2のデータを示す図である。
【図10】図9の正常レスポンスRESN1、RESN2のデータに対応する画面表示である。
【図11】異常レスポンスRESAのデータを示す図である。
【図12】図11の異常レスポンスRESAのデータに対応する画面表示である。
【図13】共通領域を示す図である。
【図14】図14A、図14Bは、異常レスポンスについて共通領域における内容を抽出したデータを示すものである。
【図15】端末PC22に記録された脆弱性診断プログラムのフローチャートである。
【図16】端末PC22に記録された脆弱性診断プログラムのフローチャートである。
【発明を実施するための形態】
【0040】
1.脆弱性診断装置の概要
図3に、この発明の一実施形態による脆弱性診断装置の機能ブロック図を示す。正常レスポンス収集手段10は、診断対象となるウエブサイトに対し、システム上想定されている本来のリクエストREQN(正常リクエストという)を行う。たとえば、予め登録されているユーザIDとパスワードを伴った正常リクエストREQNを行う。正常レスポンス収集手段10は、この正常リクエストに対するウエブサーバからのレスポンスRESN(正常レスポンスという)を受信して、記録部16に記録する。
【0041】
この実施形態では、正常レスポンス収集手段10は、複数の正常リクエストREQN1〜REQNnを送信し、これらに対する複数の正常レスポンスRESN1〜RESNnを受信して記録する。
【0042】
異常レスポンス収集手段18は、SQLインジェクションのようなシステムが本来想定していない攻撃的なリクエストREQA(異常リクエストという)を、ウエブサーバに対して行う。この異常リクエストに対するレスポンスRESA(異常レスポンスという)を受信し、これを記録部16に記録する。
【0043】
共通領域抽出手段12は、記録部16に記録された正常レスポンスRESN1〜RESNnを比較し、これらにおいて内容の共通する領域を抽出する。
【0044】
判断手段14は、抽出された共通領域を対象として、正常レスポンスと異常レスポンスが同一であるかどうかを判断する。同一でなければ攻撃に対しての脆弱性がないと判断し、同一であれば攻撃に対する脆弱性があると判断する。このようにして、SQLインジェクションなどの攻撃に対する脆弱性を診断することができる。
【0045】
2.ハードウエア構成
図4に、脆弱性診断装置をサーバとして構築した場合のシステム構成図を示す。このシステムでは、脆弱性診断装置を脆弱性診断サーバ20として構築している。対象ウエブサーバ24は、脆弱性診断を行う対象であるウエブサーバである。端末PC22は、対象ウエブサーバ24の脆弱性診断を行うことを希望するユーザの操作する端末装置である。
【0046】
脆弱性診断サーバ20、端末PC22、対象ウエブサーバ24は、いずれも、インターネット26に接続されており互いに通信可能である。
【0047】
図5に、脆弱性診断サーバ20のハードウエア構成を示す。CPU30には、メモリ32、ディスプレイ34、ハードディスク36、CD−ROMドライブ38、通信回路40が接続されている。
【0048】
ハードディスク36には、オペレーティングシステム(たとえば、マイクロソフト社のWINDOWS(商標))44、脆弱性診断プログラム46、SQLインジェクション47が記録されている。脆弱性診断プログラム46は、オペレーティングシステム44と協働して、その機能を発揮するものである。SQLインジェクション47は、たとえば、上述のように適当なユーザIDと、パスワードの入力内容を「' OR 'A' = 'A」とした攻撃を予め作成して記録したものである。
【0049】
また、オペレーティングシステム44、脆弱性診断プログラム46は、CD−ROM42に記録されていたものを、CD−ROMドライブ38を介して、ハードディスク36にインストールしたものである。通信回路40は、インターネット26を介して他のコンピュータと通信するための回路である。
【0050】
3.脆弱性診断プログラムのフローチャート
図6に、脆弱性診断プログラム46のフローチャートを示す。あわせて、端末PC22のブラウザプログラム、対象ウエブサーバ24のサーバプログラムのフローチャートも示す。
【0051】
端末PC22は、脆弱性診断サーバ20にアクセスし、初期画面の要求を行う(ステップS1)。これを受けて、脆弱性診断サーバ20のCPU30は、初期画面を端末PC22に送信する(ステップS11)。たとえば、図8に示すような初期画面が端末PC22に送信され、端末PC22において表示される。
【0052】
この初期画面を見て、ユーザは、端末PC22を操作し、診断を希望する対象ウエブサーバ24のURLを入力する。また、正常なユーザIDおよびパスワードを入力する(ステップS2)。たとえば、管理者としてのユーザID、管理者としてのパスワードを入力し、脆弱性診断サーバ20に送信する。
【0053】
これを受けた脆弱性診断サーバ20のCPU30は、対象ウエブサーバ24のURL、正常なユーザID、パスワードを、ハードディスク36に記録する(ステップS12)。脆弱性診断サーバ20のCPU30は、記録した対象ウエブサーバ24のURLに基づいて、対象ウエブサーバにアクセスする(ステップS13)。
【0054】
対象ウエブサーバ24は、これに応答して、ユーザID、パスワードの入力を求める認証画面を返信する(ステップS51)。たとえば、図2に示すような画面が、脆弱性診断サーバ20に返信される。
【0055】
脆弱性診断サーバ20のCPU30は、これを受けて、記録している正常なユーザID、パスワードを対象ウエブサーバ24に送信する(ステップS14)。つまり、正常リクエストを対象ウエブサーバ24に送信する。
【0056】
これを受けて、対象ウエブサーバ24は、正常リクエストに対するレスポンス(正常レスポンス)RESN1を脆弱性診断サーバ20に返信する(ステップS52)。脆弱性診断サーバ20のCPU30は、この正常レスポンスRESN1のデータをハードディスク36に記録する(ステップS15)。図9に、正常レスポンスRESN1のデータを示す。また、図10にこの正常レスポンスRESN1を表示した場合の画面を示す。
【0057】
さらに、脆弱性診断サーバ20のCPU30は、記録している正常なユーザID、パスワードにより、2回目の正常リクエストを対象ウエブサーバ24に送信する(ステップS16)。
【0058】
これを受けて、対象ウエブサーバ24は、2回目の正常リクエストに対するレスポンス(正常レスポンス)RESN2を脆弱性診断サーバ20に返信する(ステップS53)。脆弱性診断サーバ20のCPU30は、この2回目の正常レスポンスRESN2のデータをハードディスク36に記録する(ステップS17)。図9に、正常レスポンスRESN2のデータを示す。また、図10にこの正常レスポンスRESN2を表示した場合の画面を示す。
【0059】
脆弱性診断サーバ20のCPU30は、上記ステップS14〜S15の処理を所定回数nだけ繰り返し、正常レスポンスRESN1〜RESNnを取得して記録する。図9には、正常レスポンスRESN1、RESN2のデータのみを示すが、RESN3以下も同様である。また、図10には、正常レスポンスRESN1、RESN2、RESNnの画面のみを示すが、他のレスポンスについても同様である。
【0060】
図10から明らかなように、この例における正常レスポンスには、ログイン時間としての時間表示、広告が含まれており、これらはリクエストを行う毎に変化する。
【0061】
次に、脆弱性診断サーバ20のCPU30は、予め用意してハードディスク36に記録しているSQLインジェクション47を読み出し、これを用いて診断対象ウエブサーバ24にリクエスト(異常リクエスト)を行う(ステップS18)。
【0062】
これを受けて、対象ウエブサーバ24は、異常リクエストに対するレスポンス(異常レスポンス)RESAを脆弱性診断サーバ20に返信する(ステップS54)。脆弱性診断サーバ20のCPU30は、この異常レスポンスRESAのデータをハードディスク36に記録する(ステップS19)。
【0063】
この際、対象ウエブサーバ24が、SQLインジェクション47の攻撃に対してアクセスを許可しなければ(つまり脆弱性を有していなければ)、図11Aに示すような異常レスポンスRESAを返信することになる。なお、図12Aに、この異常レスポンスRESAに対応する画面を示す。
【0064】
一方、対象ウエブサーバ24が、SQLインジェクション47の攻撃に対してアクセスを許可してしまうと(つまり脆弱性を有していると)、図11Bに示すような異常レスポンスRESAを返信することになる。なお、図12Bに、この異常レスポンスRESAに対応する画面を示す。
【0065】
次に、脆弱性診断サーバ20のCPU30は、ハードディスク36に記録した正常レスポンスRESN1、RESN2・・・RESNnのデータを比較して、内容が共通する領域を抽出する(ステップS20)。
【0066】
たとえば、図9に示すような正常レスポンスRESN1、RESN2・・・RESNnであれば、時計表示の部分TM1、TM2・・・が異なっている。アクセス時間に応じて、対象ウエブサーバ24から返送されてくる記述が変わるからである。また、広告表示部分AD1、AD2・・・が異なっている。アクセスする毎に、対象ウエブサーバ24から返送されてくる広告のリンク先が変わるからである。これは、図10でいうと、時間表示TM1、TM2・・・TMn、広告表示AD1、AD2・・・ADnの部分に対応する。
【0067】
したがって、脆弱性診断サーバ20のCPU30は、図9の正常レスポンスRESN1、RESN2・・・の時間表示TM1、TM2・・・、広告表示AD1、AD2・・・を除いた部分を、共通領域として抽出する。たとえば、図13に示すように、****印以外の領域(1〜9行目および12行目)が共通領域として抽出される。
【0068】
脆弱性診断サーバ20のCPU30は、共通領域が1〜9行目および12行目であること、およびその領域における正常レスポンスの内容が図13に示すものであることを、ハードディスク36に記録する。
【0069】
次に、ハードディスク36から、記録しておいた異常レスポンスRESAを読み出し、その共通領域を取り出す。ここでは、共通領域は1〜9行目および12行目であるから、たとえば、図11Aに示すような異常レスポンスRESA(脆弱性がない場合)であれば、図14Aに示すような内容が取り出される。
【0070】
続いて、脆弱性診断サーバ20のCPU30は、共通領域における正常レスポンス(図13)と異常レスポンス(図14A)を比較する(ステップS22)。ここでは、両者は一致しないので、ステップS24に進み、診断をしたSQLインジェクションの種類と「脆弱性がない旨」を端末PC22に送信する。
【0071】
一方、異常レスポンスRESAが11Bに示すようなものであった場合、その共通領域の内容は、図14Bに示すものとなる。共通領域における正常レスポンス(図13)と異常レスポンス(図14B)を比較すると(ステップS22)、両者は一致する。したがって、脆弱性診断サーバ20のCPU30は、ステップS23に進み、診断をしたSQLインジェクションの種類と「脆弱性がある旨」を端末PC22に送信する。
【0072】
端末PC22は、上記のようにして送信されてきた診断情報を、表示(印刷)する(ステップS3)。
【0073】
以上のようにして、アクセス時間や回数などによって表示内容が変化するウエブサーバに対しても、その脆弱性の診断を行うことができる。
【0074】
4.その他の実施形態
(1)上記実施形態では、ユーザID、パスワードによる認証画面に関するSQLインジェクションについての診断を行った。しかし、その他のSQLインジェクション、たとえば、検索のための入力画面に関するSQLインジェクションなどについて、アクセス時間や回数などによって表示内容が変化する場合であっても、同様に適切な診断を行うことができる。
【0075】
(2)なお、上記実施形態では、1種類のSQLインジェクションについてのみ診断を行う例を示したが、複数種類のSQLインジェクションについて診断を行い、診断情報を端末PC22に送信するようにしてもよい。
【0076】
(3)また、上記実施形態では、SQLインジェクションによる攻撃について診断を行うようにしている。しかし、その他の攻撃についても、本発明を適用することができる。
【0077】
(4)上記実施形態では、ユーザの操作する端末PC22から脆弱性診断サーバ20にアクセスし、対象ウエブサーバ24の診断を行うようにしている。しかし、端末PC22に脆弱性診断プログラム46をインストールし、端末PC22から対象ウエブサーバ24の診断を行うようにしてもよい。この場合の、脆弱性診断プログラム46のフローチャートを図15、図16に示す。
【技術分野】
【0001】
この発明は、ウエブサイトの脆弱性を診断する脆弱性診断装置に関するものである。
【背景技術】
【0002】
ウエブサーバに対する攻撃手法の一つとして、SQLインジェクションがある。これは、データベースを操作するSQL言語を用いて、不正にウエブサーバ上のデータベースを操作するものである。
【0003】
たとえば、図1のようなシステムを例として説明する。ウエブサーバ4が、図2に示すようなログイン画面を用意していたとする。端末PC2において、ユーザは、自らのユーザIDとパスワードを入力し、これをウエブサーバに送信する((1)参照)。ウエブサーバ4側では、予めユーザIDとパスワードの組み合わせをデータベース6に記録しており、端末PC2から送られてきたユーザIDとパスワードの組み合わせに合致するものが記録されていれば、アクセスを許可し、次の画面を送信する((3)〜(6)参照)。
【0004】
端末PC2から送られてきたユーザIDとパスワードの組み合わせに合致するものが記録されていなければ、アクセスを許可しない旨の画面を送信する((3)〜(6)参照)。
【0005】
以上のようにして、ユーザIDとパスワードを正しく入力しない限りアクセスを許可しないこととして、ウエブサーバに対するアクセス権限を管理することが行われている。
【0006】
上記処理において、ウエブサーバ4側においては、端末PC2から受け取ったユーザIDとパスワードに基づいて、データベースを検索するためのSQL文を作成している((2)参照)。たとえば、図2に示す画面に基づいてユーザが入力を行い、端末PC2から、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"として送られてきたとする。ウエブサーバ4は、ユーザID、パスワードを受けて、次のような規則にしたがって文字列を付加し、SQL文を作成する。
【0007】
SELECT * FROM user WHERE uid='ユーザID' AND pwd='パスワード'
この規則にしたがえば、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"である場合、次のようなSQL文が生成される。
【0008】
SELECT * FROM user WHERE uid='furutani' AND pwd='1cd45'
ウエブサーバ4は、このSQL文をデータベース6に与える((3)参照)、データベース6から、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"であるユーザが記録されているかどうかの判断結果を取得する((4)参照)。つまり、ユーザID(uid)が"furutani"、パスワード(pwd)が"1cd45"であるユーザが記録されていれば、「uid='furutani' AND pwd='1cd45'」の論理値が「1」となり、記録されていなければ論理値が「0」となる。
【0009】
ウエブサーバ4は、論理値「1」が返ってくれば、当該ユーザの権限を認めてアクセスを許可し、論理値「0」が返ってくれば、当該ユーザには権限がないとしてアクセスを許可しない((5)(6)参照)。
【0010】
ところが、上記のようなSQL文作成のアルゴリズムが推測されてしまうと、次のような攻撃(SQLインジェクション)がなされる可能性がある。
【0011】
攻撃を行う者は、端末PC2から、ユーザID(uid)として適当な名前を入力する。たとえば、"ueno"を入力する。パスワード(pwd)としては、次のような入力を行う。
【0012】
' OR 'A' = 'A
このような入力に対し、上記のアルゴリズムに基づくと、以下のようなSQL文が生成されることになる。
【0013】
SELECT * FROM user WHERE uid='ueno' AND pwd='' OR 'A' = 'A'
このSQL文において、「uid='ueno' AND pwd=''」の部分は、通常、論理値「0」となる(「pwd=''」は、パスワードが空白の文字列であることを意味する)。しかし、「OR 'A' = 'A'」があり、「'A' = 'A'」は常に論理値「1」であり、さらに「OR」によって結合されているので、全体として必ず論理値が「1」となる。
【0014】
したがって、上記のような入力がなされると、論理値が常に「1」となって、パスワードの与えられていないユーザであっても、不正にアクセスすることが可能となってしまう。
【0015】
そこで、このようなSQLインジェクションに対して、これを排除してアクセスを許容しないような対策を、ウエブサーバ4に施すことが行われている。SQLインジェクションには、いくつかの種類があり、これら全てのSQLインジェクションに対する対策をしなければ万全とはいえない。
【0016】
そこで、ウエブサーバ4が、このようなSQLインジェクションに対する脆弱性を有していないかどうかを診断することが行われている(非特許文献1参照)。この診断は、以下のような方法によって実現されている。
【0017】
まず、診断対象となるウエブサーバに対し、正しいユーザIDとパスワードを伴ったアクセスを行う。この正常なアクセスに対するウエブサーバからのレスポンスを、正常レスポンスとして記録する。この場合、正常レスポンスは、アクセスを許可した結果として表示される内容となる。
【0018】
次に、SQLインジェクションによるアクセス(異常アクセスと呼ぶ)を行う。この異常アクセスに対するウエブサーバからのレスポンスを、異常レスポンスとして記録する。ウエブサーバ装置が、SQLインジェクションによる攻撃に対して、アクセスを許可しなければ、この異常レスポンスは、アクセスを許可しなかった結果として表示される内容(たとえば、エラー画面など)となる。つまり、SQLインジェクションに対する脆弱性がない場合には、正常レスポンスと異常レスポンスが異なる内容となる。
【0019】
一方、ウエブサーバ装置が、SQLインジェクションによる攻撃に対しアクセスを許可してしまうという脆弱性があれば、この異常レスポンスは、正常レスポンスと同じになる。
【0020】
以上のように、正常アクセスに対するレスポンスと異常アクセスに対するレスポンスが同じであるか異なるかによって、SQLインジェクションに対する脆弱性を判断することができる。この方法によれば、レスポンスの内容を人間が判断しなくとも、正常レスポンスと異常レスポンスが同一であるかどうかを判断することで診断を行うことができるので、診断の自動化を実現することができる。
【先行技術文献】
【非特許文献】
【0021】
【非特許文献1】徳丸浩他「不正アクセスや情報漏洩を防ぐWebアプリケーションのセキュリティ完全対策」日経BP社、2004年11月
【発明の概要】
【発明が解決しようとする課題】
【0022】
しかしながら、上記のような診断技術においては次のような問題があった。上述のように、ウエブサーバがSQLインジェクションに対する脆弱性を有していれば、正常リクエストに対するレスポンスと異常リクエストに対するレスポンスが同一になることで、その脆弱性を見いだすようにしている。
【0023】
しかし、診断対象であるウエブサーバが、時間やアクセス回数とともに正常リクエストに対するレスポンスの内容を変える(アクセス毎に広告が変わる、時計の時分表示が変わるなど)ものであった場合、SQLインジェクションに対する脆弱性を有していたとしても、正常レスポンスと異常レスポンスが同一にならない。このため、このようなウエブサーバ装置に対しては、SQLインジェクションに対する脆弱性を正しく診断できないという問題があった。
【0024】
また、このような問題は、SQLインジェクションだけでなく、正常レスポンスと異常レスポンスの同一性によって診断を行うことのできる脆弱性に共通するものであった。
【0025】
そこで、この発明では、所定条件によって、正常リクエストに対するレスポンスの内容を変えるようなウエブサーバ装置についても、SQLインジェクションに対する脆弱性を正しく診断することのできる診断装置を提供することを目的とする。
【課題を解決するための手段】
【0026】
(1)(2)この発明に係る脆弱性診断装置は、ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置であって、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段とを備えている。
【0027】
したがって、リクエストのタイミングや回数などによってレスポンスの内容に変化する部分があるようなウエブサーバについても、異常リクエストに対する脆弱性診断を行うことができる。
【0028】
(3)この発明に係る脆弱性診断プログラムは、異常なリクエストは、SQLインジェクションを行うリクエストであることを特徴としている。
【0029】
したがって、SQLインジェクションに対する脆弱性診断を行うことができる。
【0030】
(4)この発明に係る脆弱性診断プログラムによって実現される脆弱性診断装置はサーバ装置として構築され、正常レスポンス収集手段は、端末装置から、ネットワークを介して送信されてきた診断対象ウエブサーバのURL、正常リクエストについての情報に基づいて、正常レスポンスを収集することを特徴としている。
【0031】
したがって、ユーザが脆弱性診断プログラムを有していなくとも、脆弱性診断を行うことができる。
【0032】
(5)この発明に係る脆弱性診断プログラムは、ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実行する脆弱性診断方法であって、診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録し、記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出し、診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録し、前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断することを特徴としている。
【0033】
したがって、リクエストのタイミングや回数などによってレスポンスの内容に変化する部分があるようなウエブサーバについても、異常リクエストに対する脆弱性診断を行うことができる。
【0034】
「正常レスポンス収集手段」は、実施形態においては、図6、図15のステップS14、S15やステップS16、S17やステップがこれに対応する。
【0035】
「共通領域抽出手段」は、実施形態においては、図7、図16のステップS20がこれに対応する。
【0036】
「異常レスポンス収集手段」は、実施形態においては、図7、図16のステップS18、S19がこれに対応する。
【0037】
「判断手段」は、図7、図16のステップS22、S23、S24がこれに対応する。
【0038】
「プログラム」とは、CPUにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【0039】
【図1】ウエブサーバ装置における認証の仕組みを模式的に示した図である。
【図2】認証におけるユーザIDとパスワードの入力画面を示す図である。
【図3】一実施形態による脆弱性診断装置の機能ブロック図である。
【図4】脆弱性診断サーバ20を用いたシステム構成を示す図である。
【図5】脆弱性診断サーバ20のハードウエア構成である。
【図6】脆弱性診断プログラム46のフローチャートである。
【図7】脆弱性診断プログラム46のフローチャートである。
【図8】脆弱性診断のための入力画面を示す図である。
【図9】正常レスポンスRESN1、RESN2のデータを示す図である。
【図10】図9の正常レスポンスRESN1、RESN2のデータに対応する画面表示である。
【図11】異常レスポンスRESAのデータを示す図である。
【図12】図11の異常レスポンスRESAのデータに対応する画面表示である。
【図13】共通領域を示す図である。
【図14】図14A、図14Bは、異常レスポンスについて共通領域における内容を抽出したデータを示すものである。
【図15】端末PC22に記録された脆弱性診断プログラムのフローチャートである。
【図16】端末PC22に記録された脆弱性診断プログラムのフローチャートである。
【発明を実施するための形態】
【0040】
1.脆弱性診断装置の概要
図3に、この発明の一実施形態による脆弱性診断装置の機能ブロック図を示す。正常レスポンス収集手段10は、診断対象となるウエブサイトに対し、システム上想定されている本来のリクエストREQN(正常リクエストという)を行う。たとえば、予め登録されているユーザIDとパスワードを伴った正常リクエストREQNを行う。正常レスポンス収集手段10は、この正常リクエストに対するウエブサーバからのレスポンスRESN(正常レスポンスという)を受信して、記録部16に記録する。
【0041】
この実施形態では、正常レスポンス収集手段10は、複数の正常リクエストREQN1〜REQNnを送信し、これらに対する複数の正常レスポンスRESN1〜RESNnを受信して記録する。
【0042】
異常レスポンス収集手段18は、SQLインジェクションのようなシステムが本来想定していない攻撃的なリクエストREQA(異常リクエストという)を、ウエブサーバに対して行う。この異常リクエストに対するレスポンスRESA(異常レスポンスという)を受信し、これを記録部16に記録する。
【0043】
共通領域抽出手段12は、記録部16に記録された正常レスポンスRESN1〜RESNnを比較し、これらにおいて内容の共通する領域を抽出する。
【0044】
判断手段14は、抽出された共通領域を対象として、正常レスポンスと異常レスポンスが同一であるかどうかを判断する。同一でなければ攻撃に対しての脆弱性がないと判断し、同一であれば攻撃に対する脆弱性があると判断する。このようにして、SQLインジェクションなどの攻撃に対する脆弱性を診断することができる。
【0045】
2.ハードウエア構成
図4に、脆弱性診断装置をサーバとして構築した場合のシステム構成図を示す。このシステムでは、脆弱性診断装置を脆弱性診断サーバ20として構築している。対象ウエブサーバ24は、脆弱性診断を行う対象であるウエブサーバである。端末PC22は、対象ウエブサーバ24の脆弱性診断を行うことを希望するユーザの操作する端末装置である。
【0046】
脆弱性診断サーバ20、端末PC22、対象ウエブサーバ24は、いずれも、インターネット26に接続されており互いに通信可能である。
【0047】
図5に、脆弱性診断サーバ20のハードウエア構成を示す。CPU30には、メモリ32、ディスプレイ34、ハードディスク36、CD−ROMドライブ38、通信回路40が接続されている。
【0048】
ハードディスク36には、オペレーティングシステム(たとえば、マイクロソフト社のWINDOWS(商標))44、脆弱性診断プログラム46、SQLインジェクション47が記録されている。脆弱性診断プログラム46は、オペレーティングシステム44と協働して、その機能を発揮するものである。SQLインジェクション47は、たとえば、上述のように適当なユーザIDと、パスワードの入力内容を「' OR 'A' = 'A」とした攻撃を予め作成して記録したものである。
【0049】
また、オペレーティングシステム44、脆弱性診断プログラム46は、CD−ROM42に記録されていたものを、CD−ROMドライブ38を介して、ハードディスク36にインストールしたものである。通信回路40は、インターネット26を介して他のコンピュータと通信するための回路である。
【0050】
3.脆弱性診断プログラムのフローチャート
図6に、脆弱性診断プログラム46のフローチャートを示す。あわせて、端末PC22のブラウザプログラム、対象ウエブサーバ24のサーバプログラムのフローチャートも示す。
【0051】
端末PC22は、脆弱性診断サーバ20にアクセスし、初期画面の要求を行う(ステップS1)。これを受けて、脆弱性診断サーバ20のCPU30は、初期画面を端末PC22に送信する(ステップS11)。たとえば、図8に示すような初期画面が端末PC22に送信され、端末PC22において表示される。
【0052】
この初期画面を見て、ユーザは、端末PC22を操作し、診断を希望する対象ウエブサーバ24のURLを入力する。また、正常なユーザIDおよびパスワードを入力する(ステップS2)。たとえば、管理者としてのユーザID、管理者としてのパスワードを入力し、脆弱性診断サーバ20に送信する。
【0053】
これを受けた脆弱性診断サーバ20のCPU30は、対象ウエブサーバ24のURL、正常なユーザID、パスワードを、ハードディスク36に記録する(ステップS12)。脆弱性診断サーバ20のCPU30は、記録した対象ウエブサーバ24のURLに基づいて、対象ウエブサーバにアクセスする(ステップS13)。
【0054】
対象ウエブサーバ24は、これに応答して、ユーザID、パスワードの入力を求める認証画面を返信する(ステップS51)。たとえば、図2に示すような画面が、脆弱性診断サーバ20に返信される。
【0055】
脆弱性診断サーバ20のCPU30は、これを受けて、記録している正常なユーザID、パスワードを対象ウエブサーバ24に送信する(ステップS14)。つまり、正常リクエストを対象ウエブサーバ24に送信する。
【0056】
これを受けて、対象ウエブサーバ24は、正常リクエストに対するレスポンス(正常レスポンス)RESN1を脆弱性診断サーバ20に返信する(ステップS52)。脆弱性診断サーバ20のCPU30は、この正常レスポンスRESN1のデータをハードディスク36に記録する(ステップS15)。図9に、正常レスポンスRESN1のデータを示す。また、図10にこの正常レスポンスRESN1を表示した場合の画面を示す。
【0057】
さらに、脆弱性診断サーバ20のCPU30は、記録している正常なユーザID、パスワードにより、2回目の正常リクエストを対象ウエブサーバ24に送信する(ステップS16)。
【0058】
これを受けて、対象ウエブサーバ24は、2回目の正常リクエストに対するレスポンス(正常レスポンス)RESN2を脆弱性診断サーバ20に返信する(ステップS53)。脆弱性診断サーバ20のCPU30は、この2回目の正常レスポンスRESN2のデータをハードディスク36に記録する(ステップS17)。図9に、正常レスポンスRESN2のデータを示す。また、図10にこの正常レスポンスRESN2を表示した場合の画面を示す。
【0059】
脆弱性診断サーバ20のCPU30は、上記ステップS14〜S15の処理を所定回数nだけ繰り返し、正常レスポンスRESN1〜RESNnを取得して記録する。図9には、正常レスポンスRESN1、RESN2のデータのみを示すが、RESN3以下も同様である。また、図10には、正常レスポンスRESN1、RESN2、RESNnの画面のみを示すが、他のレスポンスについても同様である。
【0060】
図10から明らかなように、この例における正常レスポンスには、ログイン時間としての時間表示、広告が含まれており、これらはリクエストを行う毎に変化する。
【0061】
次に、脆弱性診断サーバ20のCPU30は、予め用意してハードディスク36に記録しているSQLインジェクション47を読み出し、これを用いて診断対象ウエブサーバ24にリクエスト(異常リクエスト)を行う(ステップS18)。
【0062】
これを受けて、対象ウエブサーバ24は、異常リクエストに対するレスポンス(異常レスポンス)RESAを脆弱性診断サーバ20に返信する(ステップS54)。脆弱性診断サーバ20のCPU30は、この異常レスポンスRESAのデータをハードディスク36に記録する(ステップS19)。
【0063】
この際、対象ウエブサーバ24が、SQLインジェクション47の攻撃に対してアクセスを許可しなければ(つまり脆弱性を有していなければ)、図11Aに示すような異常レスポンスRESAを返信することになる。なお、図12Aに、この異常レスポンスRESAに対応する画面を示す。
【0064】
一方、対象ウエブサーバ24が、SQLインジェクション47の攻撃に対してアクセスを許可してしまうと(つまり脆弱性を有していると)、図11Bに示すような異常レスポンスRESAを返信することになる。なお、図12Bに、この異常レスポンスRESAに対応する画面を示す。
【0065】
次に、脆弱性診断サーバ20のCPU30は、ハードディスク36に記録した正常レスポンスRESN1、RESN2・・・RESNnのデータを比較して、内容が共通する領域を抽出する(ステップS20)。
【0066】
たとえば、図9に示すような正常レスポンスRESN1、RESN2・・・RESNnであれば、時計表示の部分TM1、TM2・・・が異なっている。アクセス時間に応じて、対象ウエブサーバ24から返送されてくる記述が変わるからである。また、広告表示部分AD1、AD2・・・が異なっている。アクセスする毎に、対象ウエブサーバ24から返送されてくる広告のリンク先が変わるからである。これは、図10でいうと、時間表示TM1、TM2・・・TMn、広告表示AD1、AD2・・・ADnの部分に対応する。
【0067】
したがって、脆弱性診断サーバ20のCPU30は、図9の正常レスポンスRESN1、RESN2・・・の時間表示TM1、TM2・・・、広告表示AD1、AD2・・・を除いた部分を、共通領域として抽出する。たとえば、図13に示すように、****印以外の領域(1〜9行目および12行目)が共通領域として抽出される。
【0068】
脆弱性診断サーバ20のCPU30は、共通領域が1〜9行目および12行目であること、およびその領域における正常レスポンスの内容が図13に示すものであることを、ハードディスク36に記録する。
【0069】
次に、ハードディスク36から、記録しておいた異常レスポンスRESAを読み出し、その共通領域を取り出す。ここでは、共通領域は1〜9行目および12行目であるから、たとえば、図11Aに示すような異常レスポンスRESA(脆弱性がない場合)であれば、図14Aに示すような内容が取り出される。
【0070】
続いて、脆弱性診断サーバ20のCPU30は、共通領域における正常レスポンス(図13)と異常レスポンス(図14A)を比較する(ステップS22)。ここでは、両者は一致しないので、ステップS24に進み、診断をしたSQLインジェクションの種類と「脆弱性がない旨」を端末PC22に送信する。
【0071】
一方、異常レスポンスRESAが11Bに示すようなものであった場合、その共通領域の内容は、図14Bに示すものとなる。共通領域における正常レスポンス(図13)と異常レスポンス(図14B)を比較すると(ステップS22)、両者は一致する。したがって、脆弱性診断サーバ20のCPU30は、ステップS23に進み、診断をしたSQLインジェクションの種類と「脆弱性がある旨」を端末PC22に送信する。
【0072】
端末PC22は、上記のようにして送信されてきた診断情報を、表示(印刷)する(ステップS3)。
【0073】
以上のようにして、アクセス時間や回数などによって表示内容が変化するウエブサーバに対しても、その脆弱性の診断を行うことができる。
【0074】
4.その他の実施形態
(1)上記実施形態では、ユーザID、パスワードによる認証画面に関するSQLインジェクションについての診断を行った。しかし、その他のSQLインジェクション、たとえば、検索のための入力画面に関するSQLインジェクションなどについて、アクセス時間や回数などによって表示内容が変化する場合であっても、同様に適切な診断を行うことができる。
【0075】
(2)なお、上記実施形態では、1種類のSQLインジェクションについてのみ診断を行う例を示したが、複数種類のSQLインジェクションについて診断を行い、診断情報を端末PC22に送信するようにしてもよい。
【0076】
(3)また、上記実施形態では、SQLインジェクションによる攻撃について診断を行うようにしている。しかし、その他の攻撃についても、本発明を適用することができる。
【0077】
(4)上記実施形態では、ユーザの操作する端末PC22から脆弱性診断サーバ20にアクセスし、対象ウエブサーバ24の診断を行うようにしている。しかし、端末PC22に脆弱性診断プログラム46をインストールし、端末PC22から対象ウエブサーバ24の診断を行うようにしてもよい。この場合の、脆弱性診断プログラム46のフローチャートを図15、図16に示す。
【特許請求の範囲】
【請求項1】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置であって、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段と、
を備えた脆弱性診断装置。
【請求項2】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実現するための脆弱性診断プログラムであって、
前記コンピュータを、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段と、
して機能させることを特徴とする脆弱性診断プログラム。
【請求項3】
請求項2の脆弱性診断プログラムにおいて、
前記異常なリクエストは、SQLインジェクションを行うリクエストであることを特徴とする脆弱性診断プログラム。
【請求項4】
請求項2または3の脆弱性診断プログラムによって実現される脆弱性診断装置は、サーバ装置として構築され、
前記正常レスポンス収集手段は、端末装置から、ネットワークを介して送信されてきた診断対象ウエブサーバのURL、正常リクエストについての情報に基づいて、正常レスポンスを収集することを特徴とする脆弱性診断プログラム。
【請求項5】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実行する脆弱性診断方法であって、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録し、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出し、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録し、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断することを特徴とする脆弱性診断方法。
【請求項1】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置であって、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段と、
を備えた脆弱性診断装置。
【請求項2】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実現するための脆弱性診断プログラムであって、
前記コンピュータを、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録する正常レスポンス収集手段と、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出する共通領域抽出手段と、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録する異常レスポンス収集手段と、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断する判断手段と、
して機能させることを特徴とする脆弱性診断プログラム。
【請求項3】
請求項2の脆弱性診断プログラムにおいて、
前記異常なリクエストは、SQLインジェクションを行うリクエストであることを特徴とする脆弱性診断プログラム。
【請求項4】
請求項2または3の脆弱性診断プログラムによって実現される脆弱性診断装置は、サーバ装置として構築され、
前記正常レスポンス収集手段は、端末装置から、ネットワークを介して送信されてきた診断対象ウエブサーバのURL、正常リクエストについての情報に基づいて、正常レスポンスを収集することを特徴とする脆弱性診断プログラム。
【請求項5】
ウエブサーバへの攻撃に対する脆弱性を有するかどうかを診断する脆弱性診断装置をコンピュータによって実行する脆弱性診断方法であって、
診断対象ウエブサーバに対し、正常なリクエストを複数回送信し、各正常リクエストに対応する複数回の正常レスポンスを受信して記録部に記録し、
記録部に記録された複数の正常レスポンスに基づいて、複数の正常レスポンス間において内容に変化のない共通領域を抽出し、
診断対象ウエブサーバに対し、異常なリクエストを送信し、当該異常リクエストに対応する異常レスポンスを受信して記録部に記録し、
前記共通領域における、正常レスポンスの内容と異常レスポンスの内容とを比較して、両者に相違があるかどうかを判断し、相違があれば脆弱性なし、相違がなければ脆弱性ありと判断することを特徴とする脆弱性診断方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2012−133406(P2012−133406A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−251423(P2010−251423)
【出願日】平成22年11月10日(2010.11.10)
【出願人】(596100812)京セラコミュニケーションシステム株式会社 (38)
【Fターム(参考)】
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願日】平成22年11月10日(2010.11.10)
【出願人】(596100812)京セラコミュニケーションシステム株式会社 (38)
【Fターム(参考)】
[ Back to top ]