(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-26
(45)【発行日】2023-02-03
(54)【発明の名称】ウェブサイトの脆弱性診断装置、診断システム、診断方法および診断プログラム
(51)【国際特許分類】
G06F 21/57 20130101AFI20230127BHJP
【FI】
G06F21/57 370
(21)【出願番号】P 2018204831
(22)【出願日】2018-10-31
【審査請求日】2021-10-11
(73)【特許権者】
【識別番号】522064812
【氏名又は名称】GMOサイバーセキュリティbyイエラエ株式会社
(73)【特許権者】
【識別番号】518386575
【氏名又は名称】株式会社Archaic
(74)【代理人】
【識別番号】100098497
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】横山 淳
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2017/0149782(US,A1)
【文献】特開2012-133406(JP,A)
【文献】特開2006-338246(JP,A)
【文献】特開2005-250945(JP,A)
【文献】国際公開第2019/026172(WO,A1)
【文献】河内清人他,統合セキュリティ診断ツールに対するWeb診断機能の拡張,情報処理学会第66回(平成16年)全国大会講演論文集(1),社団法人情報処理学会,2004年03月09日,第1-45~1-46頁,6D-3
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
対象ウェブサイトの認可制御の脆弱性を診断する脆弱性診断装置であって、
ウェブサイトを巡回する巡回手段であって、当該巡回手段は、予め用意された複数のユーザーのそれぞれのログイン情報を用いて対象ウェブサイトへのリクエストを作成し、当該リクエストを対象ウェブサイトに送信し、対象ウェブサイトからレスポンス情報を受信することで対象ウェブサイトを巡回する、前記巡回手段と、
前記巡回手段によって対象ウェブサイトの巡回が行われたとき、対象ウェブサイトとの通信内容から対象ウェブサイトへの複数のユーザーのそれぞれのリクエストを取得する第1の取得手段と、
前記第1の取得手段によって取得されたリクエストを比較し、相互にないURLを含むリクエストを抽出し、抽出したリクエストに対応する診断用リクエストと、エラーページを取得するための診断用リクエストと、他人に成りすますための診断用リクエストとを含む複数の診断用リクエストを生成する生成手段と、
前記複数の診断用リクエストに対する複数のユーザーのレスポンス情報を対象ウェブサイトから取得する第2の取得手段と、
対象ウェブサイトの各ユーザーの認可制御の脆弱性を診断するため、異なるユーザー間の診断用リクエストの組合せを生成し、当該組合せに対応するレスポンス情報の類似度を算出する算出手段と、
前記算出手段により算出された類似度に基づき対象ウェブサイトの認可制御の脆弱性を診断する診断手段と、
を有する脆弱性診断装置。
【請求項2】
前記生成手段は、
ログインしているユーザーの
セッションIDまたはクッキーを他のユーザーの
セッションIDまたはクッキーに置き換えることによって、前記他人に成りすますための診断用リクエストを生成する、請求項1に記載の脆弱性診断装置。
【請求項3】
前記生成手段は、URLに含まれる特定のパラメータに基づき抽出されたリクエストの名から特定のリクエストを選択し、選択したリクエストに基づき診断用リクエストを生成する、請求項1に記載の脆弱性診断装置。
【請求項4】
前記算出手段は、レスポンス情報に含まれるHTMLから文字列を抽出し、抽出された文字列の類似度を算出する、請求項1に記載の脆弱性診断装置。
【請求項5】
前記算出手段は、診断用リクエストのURLの特定の階層と共通する階層を有する別のユーザーの診断用リクエスト
の組合せを生成する、請求項1に記載の脆弱性診断装置。
【請求項6】
前記診断手段は、他人に成りすました診断用リクエストに対応するレスポンスと当該他人の診断用リクエストに対応するレスポンスとが類似している場合、対象ウェブサイトの認可制御に脆弱性があると判定し、類似していない場合、対象ウェブサイトの認可制御に脆弱性がないと判定する、請求項1に記載の脆弱性診断装置。
【請求項7】
前記診断手段は、ユーザーBに成りすましたユーザーAの診断用リクエストに対応する第1のレスポンスとエラーページのための診断用リクエストに対応する第2のレスポンスとを比較し、両者が類似している場合には、認可制御の脆弱性がないと判定し、両者が類似していない場合には、さらに第1のレスポンスとユーザーBの診断用リクエストに対応する第3のレスポンスとを比較し、両者が類似している場合には、認可制御の脆弱性がないと判定し、類似していない場合には、さらに第1のレスポンスとユーザーAの診断用リクエストに対応する第4のレスポンスとを比較し、両者が類似している場合には、認可制御の脆弱性があると判定し、類似していない場合には、認可制御の脆弱性がないと判定する、請求項1に記載の脆弱性診断装置。
【請求項8】
請求項1ないし
7いずれか1つに記載の脆弱性診断装置と、当該脆弱性診断装置とネットワークを介して接続されたサーバーとを含む脆弱性診断システムであって、
前記脆弱性診断装置は、ネットワークを介して前記サーバーの対象ウェブサイトをアクセスする、脆弱性診断システム。
【請求項9】
対象ウェブサイトの認可制御の脆弱性を診断する脆弱性診断装置における診断方法であって、
前記脆弱性診断装置は、予め用意された複数のユーザーのそれぞれのログイン情報を用いて対象ウェブサイトへのリクエストを作成し、当該リクエストを対象ウェブサイトに送信し、対象ウェブサイトからレスポンス情報を受信することで対象ウェブサイトを巡回し、
前記脆弱性診断装置は、対象ウェブサイトが自動的に巡回されるときに、対象ウェブサイトとの通信内容から対象ウェブサイトへの複数のユーザーのそれぞれのリクエストを取得し、
前記脆弱性診断装置は、取得されたリクエストを比較し、相互にないURLを含むリクエストを抽出し、抽出したリクエストに対応する診断用リクエストと、エラーページを取得するための診断用リクエストと、他人に成りすますための診断用リクエストとを含む複数の診断用リクエストを生成し、
前記脆弱性診断装置は、前記複数の診断用リクエストに対する複数のユーザーのレスポンスを対象ウェブサイトから取得し、
前記脆弱性診断装置は、対象ウェブサイトの各ユーザーの認可制御の脆弱性を診断するため、異なるユーザー間の診断用リクエストの組合せを生成し、当該組合せに対応するレスポンス情報の類似度を算出し、
前記脆弱性診断装置は、算出された類似度に基づき対象ウェブサイトの認可制御の脆弱性を診断する、
脆弱性を診断する方法。
【請求項10】
対象ウェブサイトの認可制御の脆弱性を診断する脆弱性診断装置が実行する診断プログラムであって、
予め用意された複数のユーザーのそれぞれのログイン情報を用いて対象ウェブサイトへのリクエストを作成し、当該リクエストを対象ウェブサイトに送信し、対象ウェブサイトからレスポンス情報を受信することで対象ウェブサイトを巡回し、
対象ウェブサイトが自動的に巡回されるときに、対象ウェブサイトとの通信内容から対象ウェブサイトへの複数のユーザーのそれぞれのリクエストを取得し、
取得されたリクエストを比較し、相互にないURLを含むリクエストを抽出し、抽出したリクエストに対応する診断用リクエストと、エラーページを取得するための診断用リクエストと、他人に成りすますための診断用リクエストとを含む複数の診断用リクエストを生成し、
前記複数の診断用リクエストに対する複数のユーザーのレスポンスを対象ウェブサイトから取得し、
対象ウェブサイトの各ユーザーの認可制御の脆弱性を診断するため、異なるユーザー間の診断用リクエストの組合せを生成し、当該組合せに対応するレスポンス情報の類似度を算出し、
算出された類似度に基づき対象ウェブサイトの認可制御の脆弱性を診断する、
診断プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ウェブサイトの脆弱性を診断する脆弱性診断装置に関し、特に、対象ウェブサイトの脆弱性を自動的に診断する方法に関する。
【背景技術】
【0002】
近年、ウェブサイトを活用したサービスが増加しているが、その反面、ウェブサイトから個人情報等が漏洩する問題が生じている。ウェブサイトは、個人情報が漏洩しないようにセキュリティを考慮して設計されているが、それでも、ハッカー等がウェブサイトの欠陥を探し出し、そこから個人情報等を盗用することが行われている。
【0003】
個人情報の漏洩を防止する技術として、特許文献1は、既知の攻撃パターンを検査対象のウェブサイトに対してテスト目的で仕掛けることで脆弱性の有無を検出する方法を開示している。また、特許文献2のウェブサイトの検査装置は、ウェブサイトとクライアントとの通信内容を取得し、通信内容に含まれるセッションを特定するセッション追跡パラメータを推定し、推定されたセッション追跡パラメータに基づきウェブサイトに内在する脆弱性を分析している。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許第6311278号公報
【文献】特開2004-310267号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般的なウェブサイトでは、どの利用者にどの操作を許可するかを管理する、いわゆる認可制御が行われている。ある認可制御されたウェブサイトでは、管理者は、メインコンテンツと管理ページの双方にアクセスし、それらの情報を閲覧することが可能であり、一般のユーザーは、メインコンテンツにのみアクセスが許可される。また、ある認可制御されたウェブサイトでは、ユーザーAは、ユーザーBの個人的な情報コンテンツにアクセスし、その情報を閲覧することができず、同様に、ユーザーBは、ユーザーAの個人的な情報コンテンツにアクセスし、その情報を閲覧することができない。
【0006】
例えば、ショッピングサイトまたは電子商取引サイトにおいて、ユーザーAは、ユーザーBとして商品を購入することはできないし、ユーザーBの商品購入履歴を閲覧することはできない。あるいは、コミュニティサイトであれば、ユーザーAは、ユーザーBとしてメッセージやコメントを送信できないし、ユーザーBのプロフィールを変更することはできない。このように、ウェブサイトでは、どの利用者にどの操作を許可するかを管理する認可制御が行われている。
【0007】
ウェブサイトは、適切に認可制御される必要があり、そのためにウェブサイトの脆弱性を防御する方法が講じられている。
図11(A)は、サーバーにおいて、アクセス権の管理テーブルを用い、どの利用者/管理者等がどのページにアクセスすることが認可されるのかを定義している。例えば、管理者であれば、管理ページ、商品管理ページ、商品閲覧ページの全てにアクセスすることが許され、販売業者であれば、管理ページへのアクセスが禁止され、それ以外のページへのアクセスが許可され、一般ユーザーであれば、商品閲覧ページのみのアクセスが許される。
【0008】
また、
図11(B)に示す防御方法は、ログインセッションと、表示するユーザー情報とが等しいか否かをチェックし、一致しない場合には、そのアクセスを拒否するものである。サーバーは、ウェブサイトにユーザーからのHTTPリクエストがあると(S10)、アクセス先のページのユーザーのログインIDを取得する(S20)。ログインIDは、例えば、ログインIDが紐つけられたURLやパラメータ等から取得される。次に、ユーザーがウェブサイトにアクセスしたときに、ユーザーのアクセスを管理するセッションに割り当てられたユーザーIDが取得され(S30)、ログインIDとユーザーIDが等しいか否かが確認される(S40)。双方のIDが等しくない場合には、ユーザーになりすましたハッカーやクラッカー等による不正アクセスと判定し、ウェブサイトへのアクセスが拒否される。
【0009】
認可制御の脆弱性とは、第1に、設定の間違いにより、想定していない利用者により一定の操作が行われてしまうことである。例えば、一般ユーザーが管理ページを閲覧し、その管理項目を操作してしまう。第2に、悪意のあるユーザーからのクラッキングにより予期していない操作が行われてしまうことである。例えば、他人のショッピングサイトでの購買履歴にアクセスできるように、URLや各パラメータの数字が操作されてしまう。
【0010】
このような認可制御の脆弱性は、セキュリティエンジニアによって診断されてきたが、ウェブサイトの増加に伴い、セキュリティエンジニアの数も不足し、脆弱性の診断に膨大なコストと時間がかかってしまうという課題がある。
【0011】
本発明は、上記従来の課題を解決するものであり、ウェブサイトの認可制御の脆弱性を自動的に診断可能な脆弱性の診断装置、診断システム、診断方法および診断プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明に係る脆弱性診断装置は、対象ウェブサイトの脆弱性を診断するものであって、対象ウェブサイトとの通信内容から対象ウェブサイトへの複数のユーザーのリクエスト情報を取得する第1の取得手段と、複数のユーザーのリクエスト情報に基づき複数の診断用リクエストを生成する生成手段と、複数の診断用リクエストに対する複数のユーザーのレスポンス情報を対象ウェブサイトから取得する第2の取得手段と、異なるユーザー間のレスポンス情報を比較する比較手段と、前記比較手段の比較結果に基づき対象ウェブサイトの複数のユーザーの認可制御の脆弱性を診断する診断手段とを有する。
【0013】
ある実施態様では、前記生成手段は、複数のリクエスト情報の差分を抽出し、当該差分に基づき診断用リクエストを生成する。ある実施態様では、前記診断用リクエストは、ユーザーの個人情報が含まれるページを取得するためのリクエストを含む。ある実施態様では、前記生成手段は、前記リクエスト情報に含まれる予め決められた情報に基づき診断用リクエストを生成する。ある実施態様では、前記比較手段は、レスポンス情報に含まれるHTMLから文字列を抽出し、抽出された文字列の類似度を算出する。ある実施態様では、複数のユーザーのリクエストは、対象ウェブサイトの管理者のリクエストを含む。ある実施態様では、脆弱性診断装置は、ウェブサイトを巡回する巡回手段を含み、前記第1の取得手段は、前記巡回手段により対象ウェブサイトが巡回されたときの通信内容からユーザーのリクエスト情報を取得する。ある実施態様では、前記第2の取得手段は、他人のユーザーのレスポンス情報を取得するとき、他人になりすましたリクエストを送信する。ある実施態様では、
【0014】
本発明に係る脆弱性診断システムは、上記構成の脆弱性診断装置と、当該脆弱性診断装置とネットワークを介して接続されたサーバーとを含むものであって、前記脆弱性診断装置は、ネットワークを介して前記サーバーの対象ウェブサイトをアクセスする。
【0015】
本発明に係る対象ウェブサイトの脆弱性を診断する方法は、ウェブサイトが自動的に巡回されるときに、対象ウェブサイトとの通信内容から対象ウェブサイトへの複数のユーザーのリクエスト情報を取得し、複数のユーザーのリクエスト情報に基づき複数の診断用リクエストを生成し、前記複数の診断用リクエストに対する複数のユーザーのレスポンスを対象ウェブサイトから取得し、異なるユーザー間のレスポンス情報を比較し、比較結果に基づき対象ウェブサイトの複数のユーザーの認可制御の脆弱性を診断する。
【0016】
本発明に係る診断プログラムは、対象ウェブサイトの脆弱性を診断する脆弱性診断装置が実行するものであって、ウェブサイトが自動的に巡回されるときに、対象ウェブサイトとの通信内容から対象ウェブサイトへの複数のユーザーのリクエスト情報を取得し、複数のユーザーのリクエスト情報に基づき複数の診断用リクエストを生成し、前記複数の診断用リクエストに対する複数のユーザーのレスポンスを対象ウェブサイトから取得し、異なるユーザー間のレスポンス情報を比較し、比較結果に基づき対象ウェブサイトの複数のユーザーの認可制御の脆弱性を診断する。
【発明の効果】
【0017】
本発明によれば、対象ウェブサイトの通信内容からリクエスト情報を取得し、リクエスト情報に基づき診断用リクエストを生成し、診断用リクエストにより得られたレスポンス情報により認可制御の脆弱性を診断するようにしたので、ウェブサイトの脆弱性の診断を自動で行うことが可能になる。また、指数関数的に増加するウェブサイトの脆弱性を自動化することで、診断に要する時間的コストおよび作業コストを大幅に低減することができる。
【図面の簡単な説明】
【0018】
【
図1】本発明の実施例に係る脆弱性診断システムの全体構成を示す図である。
【
図2】本発明の実施例に係る脆弱性診断システムの概要を説明する図である。
【
図3】本発明の実施例に係る脆弱性診断装置の機能的な構成を示すブロック図である。
【
図4】本発明の実施例に係る脆弱性診断装置による認証制御のフローを示す図である。
【
図5】本発明の実施例に係る脆弱性診断装置の診断動作を示すフロー図である。
【
図6】本発明の実施例に係るHTTP取得動作を示すフロー図である。
【
図7】HTTPリクエストの差分URLの例を示す図である。
【
図8】診断用リクエストの組合せ例を示す図である。
【
図9】本発明の実施例に係るレスポンス間距離計測部の計測例を示すフロー図である。
【
図10】本発明の実施例に係る脆弱性判定部の診断例を示すフロー図である。
【
図11】従来の脆弱性を防御する方法を説明する図である。
【発明を実施するための形態】
【0019】
本発明の1つの実施態様では、脆弱性診断装置がインターネットを介してサーバーに接続され、脆弱性診断装置は、サーバー上のウェブサイトの脆弱性を自動的に診断する機能を備えている。1つの実施態様では、本発明の脆弱性診断装置は、1つまたは複数のコンピュータ装置により実施され、その診断機能は、コンピュータ装置に搭載されたプログラムまたはソフトウエアを利用して実行される。
【実施例】
【0020】
次に、本発明の実施例について図面を参照して詳細に説明する。
図1は、本発明の実施例に係るウェブサイトの脆弱性診断システムの一例を示す図である。同図に示すように、本実施例の脆弱性診断システム100は、ウェブサイトの認可制御の脆弱性を診断する機能を備えた脆弱性診断装置200と、脆弱性診断装置200とネットワーク300を介して接続された対象ウェブサイト400とを含む。
【0021】
対象ウェブサイト400は、単一または複数のコンピュータ装置により構成され、例えば、対象ウェブサイト400は、HTTPに準じてコンテンツを提供する1つまたは複数のウェブサーバーである。ウェブサーバーは、HTML形式のコンテンツを格納し、例えば、ショッピングサイト、SNSサイト、掲示板サイト、広告サイトなど多様のウェブサイトを提供する。個人情報を取り扱うウェブサイトは、ユーザー毎にウェブページを提供し、ユーザー毎のアクセスを管理するために、クッキー等のセッションIDを用いる。
【0022】
ネットワーク300は、HTTPに準じた通信(例えば、インターネット)であり、ウェブサイト400は、ネットワーク300を介してユーザーまたはクライアントからのリクエストに応答してコンテンツを提供する。
【0023】
脆弱性診断装置200は、対象ウェブサイト400とHTTPに準じた通信を行うことができる1つまたは複数のコンピュータ装置により構成される。脆弱性診断装置200は、例えば、対象ウェブサイト400から提供されたコンテンツを閲覧、およびJavaScript(登録商標)等クライアントサイドのプログラムを実行するブラウザ機能と、ブラウザと対象ウェブサイト400との間の通信を中継し、かつその通信内容を取得するプロキシ機能と、取得された通信内容に基づき対象ウェブサイトの脆弱性を自動診断する診断機能とを含む。さらに脆弱性診断装置200は、ネットワーク上に接続されたサーバー上の複数のウェブサイトを自動的に巡回する巡回機能を含み、ウェブサイトを自動的に巡回したときの通信内容を利用して対象ウェブサイトの脆弱性の自動診断を行うことも可能である。
【0024】
HTTPによる通信では、ブラウザからウェブサイトに対してHTTPリクエストが送信され、ウェブサイトは、このHTTPリクエストに応答してレスポンスをブラウザに送信する。HTTPリクエストは、リクエストヘッダとリクエストボディとを含み、HTTPリクエストには、ウェブサイトのURLや、ウェブサイトの個人のページにアクセスする際に必要となる、ログインID、ユーザーID、パスワード、クッキー、セッションID等が含まれる。レスポンスは、レスポンスヘッダとレスポンスボディとを含み、レスポンスボディは、HTMLコンテンツを含む。
【0025】
ここで、本実施例による脆弱性診断装置200の診断内容の概略について、
図2に示すショッピングサイトを例に説明する。脆弱性診断装置200は、複数のウェブサイトを一定の時間間隔または決められた時間で巡回するクローラを含む。クローラは、脆弱性診断装置200にプログラムとして実装される。クローラによりウェブサイトの巡回が行われるとき、その通信内容を利用して、ショッピングサイトの脆弱性が診断される。本例では、ショッピングサイトとして、2名のユーザーA、ユーザーBを例示し、ショッピングサイトは、ユーザーA、ユーザーBについて認可制御されているものとする。つまり、ユーザーAおよびユーザーBがアクセスし、そのコンテンツを閲覧することができる共通のページと、ユーザーAのみが閲覧を許可される個人用のページA1と、ユーザーBのみが閲覧を許可される個人用のページB1とを含む。ページA1は、例えば、ユーザーAの購買履歴であり、そのURLは、http://example.jp/history/1001であり、ページB2は、ユーザーBの購買履歴であり、そのURLは、http:// example.jp/history/1002である。認可制御が正しく設定されていれば、ユーザーAは、ユーザーBの購買履歴のページB2を閲覧することはできないし、ユーザーBは、ユーザーAの購買履歴のページA1を閲覧することはできない。そのような不適切なリクエストがあった場合には、例えば、エラーページがレスポンスとして送信される。例えば、ユーザーBのリクエストが不適切であれば、エラーページが脆弱性診断装置200に送信され、それがブラウザに表示される。
【0026】
クローラによりアクセスできるページは、閲覧されても良いページであり、クローラによりアクセスできないページは脆弱性を有するページ候補と仮定する。
図2の例では、共通のページは、閲覧されても良いページであり、ユーザーIDあるいはセッションIDを必要とする個人のページA1、A2、B1、B2は、脆弱性を有するページ候補である。
【0027】
脆弱性診断装置200は、次のような手順で、認可制御の脆弱性を診断する。
手順1.クローラによりウェブサイトの巡回が行われるとき、クローラは、ブラウザ等に予め準備されたURLやログイン情報を利用してウェブサイトを巡回する。この巡回中に、クローラは、ユーザーAのログインID、ユーザーBのログインID等を用いてショッピングサイトをアクセスする。
図2には、ユーザーAについては、共通ページとページA1が巡回され、ページA2が非巡回であり、ユーザーBについては、共通ページとページB2が巡回であり、ページB1が非巡回であることが示されている。
【0028】
手順2.クローラによりショッピングサイトが巡回されたときの通信内容から、ユーザーA、ユーザーBのHTTPリクエストを取得し、ユーザーA、ユーザーBのHTTPリクエストに記載されているURLを比較し、差分URLを抽出する。URLが一致するページは、ユーザーA、ユーザーBの共通ページであり、相互に一致しないURLは、ユーザーA、ユーザーBの個人情報が記載されたページである。
図2の例で言えば、ユーザーAの購入履歴のページA1と、ユーザーBの購入履歴のページB2のURLが差分として抽出される。また、差分は、URLに対してのみ取られるのではなく、GETパラメータやPOSTパラメータに対しても取得される。
【0029】
手順3.差分URLから診断用リクエストを生成する。図の例で言えば、診断用リクエストは、「http://example.jp/history/1001」を含むHTTPリクエストと「http://example.jp/history/1002」を含むHTTPリクエストとを含む。脆弱性診断装置200は、クローラがユーザーAの非巡回ページA2をアクセスするとき、診断用リクエストに含まれるセッションID(クッキー)をユーザーAからユーザーBに変更し、ユーザーBの個人ページB2へのアクセスを試みる。また、クローラがユーザーBの非巡回ページB1をアクセスする、診断用リクエストのセッションID(クッキー)をユーザーBからユーザーAに変更し、ユーザーAの個人ページA1のアクセスを試みる。
【0030】
手順4.巡回したときのページと、診断用リクエストにより他人の個人ページをアクセスして取得されたページとの距離を計測する。本例では、クローラがページB1を巡回したときに、診断用リクエストのセッションIDをユーザーBからユーザーAに変更し、ユーザーAのページA1をアクセスしたときに取得されたページと、ページB1との距離を計測する。
・診断用リクエストにより取得されたページがエラーページに近いとき、認可制御ができていると判定する(脆弱性診断装置200には、エラーページが表示されているため)。
・診断用リクエストにより取得されたページがユーザーBの購買履歴のページB2に近いとき、認可制御ができていると判定する(ユーザーBのページが表示されているため)。
・診断用リクエストにより取得されたページがユーザーAの購買履歴のページA1に近いとき、認可制御ができていないと判定する(ユーザーAの個人情報のページが閲覧されているため)。
このような判定に基づく診断結果が脆弱性診断装置200に出力される。
【0031】
次に、本実施例の脆弱性診断装置200の詳細について説明する。
図3に、本実施例の脆弱性診断装置200の機能的な構成を示す。脆弱性診断装置200は、装置全体の機能を制御するメイン部210、ウェブサイトの巡回を制御するクローラ部212、ブラウザを制御するブラウザ制御部214、ウェブサイトから送信されるコンテンツを表示したり、ウェブサイトを検索するブラウザ部216、ブラウザ部216とウェブサイトの通信を中継するサーバーとして機能し、かつウェブサイトとの間の通信内容を取得する機能を備えたプロキシ部218を含む。
【0032】
クロ―ラ部212は、ウェブサイトの巡回を行うとき、ブラウザ制御部214に格納されているユーザーURL、ユーザーID、ログインID、パスワード等を読出し、プロキシ部218を介してウェブサイトをアクセスする。巡回の目的は、任意であるが、例えば、ウェブサイトから最新の情報を取得し、これをブラウザ制御部214に格納する。ブラウザ制御部214は、ブラウザ部216が起動されたとき、最新の情報を閲覧できるようにする。ブラウザ制御部214はさらに、例えば、JavaScript(登録商標)が動作するブラウザ部216を制御することで、JavaScript(登録商標)の動作にも対応する。プロキシ部218は、ウェブサイトにHTTPリクエストを傍受したり、同様にウェブサイトからのレスポンスを傍受し、これらの通信内容をメイン部210へ提供する。
【0033】
本実施例では、メイン部210はさらに、ウェブサイトの脆弱性を診断する機能を備える。具体的には、メイン部210は、クローラ部212によりウェブサイトの巡回が行われるとき、プロキシ部218によって取得された通信内容に基づき対象ウェブサイト400へ送信されたHTTPリクエストを取得するHTTPリクエスト取得部220と、HTTPリクエスト取得部220で取得された各リクエストを比較し、そこに含まれる差分URLを抽出するリクエスト比較部222と、リクエスト比較部222により抽出された差分URLに基づき診断用リクエストを生成する診断HTTPリクエスト生成部224と、診断用リクエストに応答して各ウェブサイト400から送信されたレスポンスをプロキシ部218の傍受した内容から取得するレスポンス取得部226と、診断HTTPリクエスト生成部224で生成されたリクエストの組合せを生成するリクエスト組合せ生成部228と、リクエスト組合せ生成部228で生成されたリクエストの組合せに対応するレスポンス間の類似度を算出するレスポンス間類似度算出部230と、レスポンス間類似度算出部230の算出結果に基づきページの脆弱性を判定する脆弱性判定部232と、脆弱性判定部232の判定結果に基づきウェブサイトの認可制御の脆弱性診断結果を出力する診断結果出力部234とを有する。
【0034】
脆弱性診断装置200は、対象ウェブサイト400を診断するとき、
図4に示すような認証制御を行う。すなわち、クローラ部212は、ウェブサイトを巡回するとき、ブラウザ制御部214の一例であるSeleniumに格納されたユーザーのログイン情報(例えば、ログインURL、アカウント、パスワードなど)を参照してHTTPリクエストを作成し、プロキシ部218を介してHTTPリクエストを対象ウェブサイトに送信させる。メイン部210は、対象ウェブサイト400の脆弱性を診断するとき、ログインしているユーザーのセッションIDを変更することで、他人に成りすました変更したHTTPリクエストを診断HTTPリクエスト生成部224から送信させる。
【0035】
次に、本実施例の対象ウェブサイトの診断方法を
図5のフローチャートを参照して説明する。ここでは、
図2に示すようなショッピングサイトを診断する例を説明する。先ず、クローラ部212によりウェブサイトの巡回が行われるとき、HTTPリクエスト取得部220は、プロキシ部218を介して取得された対象ウェブサイトとの通信内容からユーザーAのHTTPリクエストおよびユーザーBのHTTPリクエストを取得する(S100、S110)。
【0036】
図6に、HTTPリクエストを取得するときの一例を示す。クロ―ラ部212は、ウェブサイトを巡回するとき、ブラウザ制御部214のSeleniumに格納されたログイン情報(ログインURL、アカウント、パスワード等)に基づきHTTPリクエストを作成し、プロキシ部218を介して対象ユーザーにてウェブサイトにログインする(S200)。
【0037】
ウェブサイトの1回目の巡回では(S210)、クロ―ラ部212は、プロキシ部216を介してリンク、ボタンクリック、ランダムのフォーム入力などを行い、自動で網羅的にウェブサイトを巡回する。また、1回目の巡回において、
図2に示すようなユーザーA、ユーザーBの購買処理を自動で行い、ユーザーA、ユーザーBの個人ページを新たに作り込んだり、あるいはウェブサイトのコンテンツを増加させることができる。
【0038】
ウェブサイトの2回目の巡回では(S220)、クロ―ラ部212により、購買履歴や個人ページなど脆弱性候補のページが巡回される。HTTPリクエスト取得部220は、2回目の巡回において、プロキシ部218で取得された通信内容からユーザーA、ユーザーBのHTTPリクエストを取得する(S230)。このHTTPリクエストは、ユーザーA、ユーザーBの個人情報をアクセスするためのURLを含む。
【0039】
再び、
図5に戻り、リクエスト比較部222は、取得されたユーザーA、ユーザーBのHTTPリクエストを比較し、相互にないHTTPリクエストを抽出する(S120)。具体的には、HTTPリクエストを比較し、相互にないURLを含むHTTPリクエストを抽出する。相互にないHTTPリクエストは、
図2の例で言えば、ユーザーAのページA1を表すURLやユーザーBのページB2を表すURLである。また、共通するHTTPリクエストは、共通のURLを含み、
図2の例で言えば、ユーザーAとユーザーBの共通のページを表すURLである。
図7に、ユーザーAのHTTPリクエストとユーザーBのHTTPリクエストとを比較したときに抽出された差分URLの一例を示す。
【0040】
次に、診断HTTPリクエスト生成部224は、リクエスト比較部222により抽出された相互にないHTTPリクエストに基づき診断用リクエストを生成する(S130)。1つの態様では、診断用リクエストは、リクエスト比較部222によって抽出された相互にないURLを含むものであり、例えば、
図7に示すユーザーAの差分URLのそれぞれに対応する診断用リクエストと、ユーザーBの差分URLのそれぞれに対応する診断用リクエストである。これらの診断用リクエストは、ユーザーA、ユーザーBのそれぞれの個人ページをアクセスするためのリクエストとなる。
【0041】
さらに診断HTTPリクエスト生成部224は、エラーページを取得するための診断用リクエストと、セッションIDまたはクッキーを他人のIDに置き換えた成りすましのための診断用リクエストとを生成する。成りすましのための診断用リクエストは、
図7の例で言えば、HTTPリクエストのセッションIDまたはクッキーをユーザーAからユーザーBに置き換えたもの、あるいはユーザーBのHTTPリクエストにおいて、セッションIDまたはクッキーをユーザーBからユーザーAに置き換えたものである。
【0042】
また、他の態様では、診断HTTPリクエスト生成部224は、差分URLの特定の階層(ディレクトリ)または差分URLに含まれる特定のパラメータに着目し、着目された情報が含まれた差分URLに絞って診断用リクエストを生成してもよい。例えば、診断HTTPリクエスト生成部224は、method、URL、getパラメータ、postパラメータの差分に着目し、その際に、get/postパラメータから下記を削除する。
・Email、ID、パスワードなど各ユーザーのアカウント情報
・ワンタイムトークン
Email、ID、パスワードは、プログラムに入力されているため、それに該当する場合には、パラメータを削除する。ワンタイムトークンは、keyに”tkn”、“token”を含むパラメータを削除する。
【0043】
診断HTTPリクエスト生成部224は、診断用リクエストを生成すると、これをプロキシ部218に提供し、プロキシ部218は、対象ウェブサイトに診断用リクエストを送信する。診断用リクエストの各々は、差分URLに基づくものであるから、対象ウェブサイト400から複数のユーザーのレスポンスを取得することになる。例えば、ユーザーAの診断用リクエストを送信し、次いで、ユーザーBに成りすましのための診断用リクエストを送信し、対象ウェブサイトは、これらの診断用リクエストに対応するレスポンスを脆弱性診断装置200へ送信する。プロキシ部218は、対象ウェブサイトからレスポンスを取得し(S140)、これをレスポンス取得部226へ提供する。
【0044】
次に、リクエスト組合せ生成部228は、診断用リクエストの組合せを作成する(S150)。対象ウェブサイトの複数のユーザー間の認可制御の脆弱性を診断するため、リクエスト組合せ生成部228は、異なるユーザー間での診断用リクエストの組合せを生成する。例えば、ユーザーAの診断用リクエストに対するユーザーBの診断用リクエストの組合せを生成する。複数の診断用リクエストの全ての組合せを生成してもよいし、予め決められたルールに従い特定の診断用リクエストの組合せを生成してもよい。例えば、ユーザーAの診断用リクエストのURLの特定の階層と共通する階層を有するユーザーBの診断用リクエストの組合せが生成される。
図8に、診断用リクエストの組合せの一例を示す。例えば、同図に示すように、ユーザーAのURLの2番目までの階層と等しいユーザーBの診断用リクエストの組合せが生成される。
【0045】
次に、レスポンス間類似度算出部230は、診断用リクエストの組合せに対応するレスポンスの類似度を算出する。対象ウェブサイトからのレスポンスは、HTMLコンテンツを含むものであり、HTMLコンテンツの類似度または距離が算出される。類似度の算出方法は、特に限定されないが、1つの例では、HTMLコンテンツからタグを除去し、文字列を抽出し、抽出された文字列の重複度合が算出される。
【0046】
図9に、HTMLコンテンツ間の距離(類似度)の計測方法の一例を示す。ユーザーAのHTMLコンテンツが取得され(S300)、HTMLコンテンツからタグが除去され、文字列が抽出され(S310)、抽出された文字列について形態素解析が行われる(S320)。ユーザーBのHTMLコンテンツについても同様の処理が行われる。次に、形態素解析が行われた単語の“bag-of-words”が作成され(S330)、次いで2つのHTMLコンテンツの距離が計算される(S340)。距離の計算は、例えば、距離=共通ワード数/全体のワード数によって算出される。
【0047】
次に、脆弱性診断部232は、レスポンス間類似度(距離)に基づき認可制御の脆弱性を判定する(S170)。1つの態様では、他人に成りすましたリクエストに対応するレスポンスが、当該他人のリクエストに対応するレスポンスに類似している場合には、認可制御の脆弱性の疑いがあると判定される。つまり、認可制御が正しく設定されていない可能性がある。他方、他人になりすましたリクエストに対応するレスポンスが、当該他人のリクエストに類似していない場合、あるいはエラーページに類似している場合には、脆弱性なしと判定される。
【0048】
図10に、脆弱性の判定フローの一例を示す。
1は、ユーザーAへのリクエストを表し、例えば、
図2のユーザーAのページA1にアクセスするためのリクエストである。
2は、ユーザーBへのリクエストを表し、例えば、
図2のユーザーBのページB2にアクセスするためのリクエストである。
3は、エラーページへのリクエストを表し、例えば、
図2のエラーページにアクセスするためのリクエストである。
4は、ユーザーBのページB1へのアクセスにおいて、そのCookieをユーザーAに置き換えたユーザーAに成りすましたリクエストである。
【0049】
図10に示す1~4のリクエストは、診断HTTPリクエスト生成部224によって生成されたリクエストであり、4と3の比較、4と2の比較、4と1との比較は、リクエスト組合せ生成部228によって生成された組合せであり、これらのリクエストの組合せに応じたレスポンス間の類似度(距離)は、レスポンス間類似度算出部230によって算出される。
【0050】
先ず、4と3との比較により(S400)、両者のレスポンス(HTMLコンテンツ)が類似している場合には、脆弱性なしと判定される(S410)。これは、他人の成りすましにリクエストに対して適切にエラーメッセージが返信されているためであり、認可制御が正しく機能している。類似か否かは、例えば、
図9に示す距離の計算結果が予め設定された閾値以上であれば類似、閾値未満であれば非類似とされる。
【0051】
次に、4と3との比較により、両者のレスポンスが非類似の場合、4と2との比較が行われ(S420)、両者が類似している場合には、脆弱性なしと判定される(S430)。ユーザーAになりすましたリクエストのレスポンスが、ユーザーBのレスポンスに類似しているのであれば、ユーザーAの個人情報は閲覧されていないので、認可制御が正しく機能していると考えられる。
【0052】
4と2の比較により、両者のレスポンスが非類似の場合、4と1の比較が行われ(S440)、両者が類似している場合には、脆弱性の疑いがあると判定される(S450)。ユーザーAになりすましたリクエストのレスポンスが、ユーザーAのレスポンスに類似しているのであれば、ユーザーAの個人情報が閲覧されることになるので、認可制御が正しく機能していないと考えられる。他方、4と1の比較により、両者のレスポンスが非類似であれば、脆弱性なしと判定される(S460)。
【0053】
図5に戻り、診断結果出力部234は、脆弱性判定部232の判定結果に基づき診断結果を出力する。診断結果は、例えば、脆弱性診断装置200の表示部等に出力される。診断結果は、例えば、
図10に示すようなリクエストの比較結果の詳細を含むものであってもよい。
【0054】
このように本実施例によれば、ウェブサイトを巡回するときに、同時にウェブサイトの認可制御の脆弱性を自動的に診断するようにしたので、膨大なウェブサイトの脆弱性の診断を短時間で効果的に行うことができる。
【0055】
上記実施例では、ユーザーAとユーザーBの認可制御を例示したが、一般ユーザーと管理ユーザーの権限をチェックすることも可能である。すなわち、以下のようにユーザーを割り当てることで、管理者と一般ユーザー間の認可制御を確認することが可能である。
ユーザーA=一般ユーザー、ユーザーB=管理ユーザー
【0056】
また、ログインユーザーと非ログインユーザーの権限をチェックすることも可能である。すなわち、以下のようにユーザーを割り当てることで、ログインユーザーと非ログインユーザー間の認可制御を確認することが可能である。
ユーザーA=非ログインユーザー、ユーザーB=ログインユーザー
【0057】
さらに上記実施例では、ユーザーA、ユーザーBの認可制御を例示したが、これは一例であり、本発明は、3人以上の複数のユーザー間の認可制御の脆弱性診断にも適用することが可能である。
【0058】
上記実施例では、HTMLコンテンツの類似度(距離)を全ワード数に対する共通ワード数により算出したが、これは一例であり、他の算出方法を用いることも可能である。HTML構造非依存のものには、bag-of-words、N-gram、潜在意味解析等の順序非依存や、WMD、str2vec、編集距離(str)、構文を意味解析したときのノード間の編集距離(意味木構造編集距離)等の順序依存のものがある。また、HTML構造依存のものには、編集距離(tag)、木構造編集距離(tag)などがある。勿論、これらの方法を組み合わせることも可能である。
【0059】
以上、本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲において、種々の変形、変更が可能である。
【符号の説明】
【0060】
100:脆弱性診断システム 200:脆弱性診断装置
210:メイン部 212:クロ―ラ部
214:ブラウザ制御部 216:ブラウザ部
218:プロキシ部 220:HTTPリクエスト取得部
222:リクエスト比較部 224:診断HTTPリクエスト生成部
226:レスポンス取得部 228:リクエスト組合せ生成部
230:レスポンス間類似度算出部 232:脆弱性判定部
234:診断結果出力部 300:ネットワーク
400:対象ウェブサイト