(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-04-01
(45)【発行日】2024-04-09
(54)【発明の名称】セキュリティテストシステム
(51)【国際特許分類】
G06F 21/57 20130101AFI20240402BHJP
【FI】
G06F21/57 370
(21)【出願番号】P 2024001934
(22)【出願日】2024-01-10
【審査請求日】2024-01-11
【早期審査対象出願】
(73)【特許権者】
【識別番号】308020663
【氏名又は名称】株式会社ユービーセキュア
(74)【代理人】
【識別番号】100216677
【氏名又は名称】坂次 哲也
(72)【発明者】
【氏名】岡島 未来
(72)【発明者】
【氏名】筧 賢太
【審査官】金沢 史明
(56)【参考文献】
【文献】国際公開第2022/059146(WO,A1)
【文献】中国特許出願公開第114491560(CN,A)
【文献】特開2020-038690(JP,A)
【文献】中国特許出願公開第113282849(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F21/57
(57)【特許請求の範囲】
【請求項1】
Webアプリケーションにおけるセキュリティの脆弱性の有無を検査するセキュリティテストシステムであって、
検査対象の前記Webアプリケーション内のページを巡回して取得し、取得した前記ページ内のリンクに係る1つ以上の第1のURLを取得して、予め設定された同一判定ルールにより前記各第1のURLに係るページが前記Webアプリケーション内の他のページと同一であるか否かを判定して、同一ではないと判定した場合に前記第1のURLを巡回対象ページリストに登録し、
前記巡回対象ページリストに新たに登録された第2のURLをプロンプトに設定してLLM(大規模言語モデル)に入力してグルーピングさせ、前記グルーピングの結果に基づいて、同じグループに含まれるURLを特定するためのルールを生成して前記同一判定ルールの内容を更新する、セキュリティテストシステム。
【請求項2】
請求項1に記載のセキュリティテストシステムにおいて、
更新された前記同一判定ルールにより前記巡回対象ページリストに登録されているURLに係るページが前記Webアプリケーション内の他のページと同一であるか否かを判定する、セキュリティテストシステム。
【請求項3】
請求項1に記載のセキュリティテストシステムにおいて、
前記巡回対象ページリストに登録されている各第3のURLには、前記第3のURLに係るページが前記Webアプリケーション内の他のページと同一であるか否かの判定結果に基づいて設定された、巡回の優先度が併せて登録されている、セキュリティテストシステム。
【請求項4】
請求項1に記載のセキュリティテストシステムにおいて、
前記LLMによる前記グルーピングの結果において同一のグループに含まれる第4のURLのペアについて、前記第4のURLのペアそれぞれのHTMLの全部もしくは一部をプロンプトに設定して前記LLMに入力して、前記第4のURLのペアのコンテンツが同一であるか否かを判定させ、判定結果に基づいて前記グルーピングの結果を更新する、セキュリティテストシステム。
【請求項5】
請求項1に記載のセキュリティテストシステムにおいて、
前記巡回対象ページリスト内の各URLについて前記同一判定ルールにより同一であると判定された各URL群に係る情報をプロンプトに設定して前記LLMに入力して、前記URL群を識別可能な自然言語によるラベルを設定させる、セキュリティテストシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションのテスト技術に関し、特に、Webアプリケーションの脆弱性の有無を検査するセキュリティテストシステムに適用して有効な技術に関するものである。
【背景技術】
【0002】
Webアプリケーションはネットワークの利用が前提であり、セキュリティの観点から脆弱性の有無を検査・テストすることは非常に重要である。Webアプリケーションの脆弱性の有無を検査するツールやサービスは各種のものが利用可能であり、検討・開発も日々に行われている。
【0003】
Webアプリケーションのセキュリティテストの手法としては、大きくSAST(Static Application Security Testing)と、DAST(Dynamic Application Security Testing)に分けられる。ソースコード等を静的に分析するSASTに対して、DASTでは、稼働しているアプリケーションに対して、攻撃者の視点を踏まえて疑似的な攻撃(検査)リクエストを送信し、アプリケーションの挙動の変化から脆弱性があるかどうかを判定する。したがって、DASTによるセキュリティテストの仕組みでは、Webアプリケーションにおいて攻撃(検査)の対象とするページを特定する必要があり、そのために対象のWebアプリケーション(Webサイト)を自動もしくは手動により巡回してリンク等の構成を解析して、ページの情報を収集することが行われる。
【0004】
このようなWebサイトの自動巡回に関する技術として、例えば、特許第7320211号公報(特許文献1)には、Webサイトの脆弱性検査において、Webサイトを自動巡回する際に、AI(Artificial Intelligence)を利用し、脆弱性の検査が必要な検査必要機能を判定し、Webページにおいて実行可能な複数の実行可能操作と検査必要機能との関連度を判定して、関連度が高いものとして特定された操作を優先して実行することが記載されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記の従来技術によれば、Webサイトの自動巡回の際、各Webページにおいて実行可能な複数の操作のうち、優先度の高い操作から実行して巡回することができるため、例えば、自動巡回するWebページの数や階層数、経過時間等により上限が設定されているような場合でも、重要な機能の検査漏れを抑制することができるとされている。
【0007】
ここで、例えば、EC(Electronic Commerce)サイトのように膨大な商品に対応した多数のページを有するWebサイトでは、異なる商品であっても同じコード(プログラム)やテンプレートにより生成されたページが数千件など多数あることも多い。この場合、これらすべてのページを巡回する必要はなく、1ページ巡回すれば十分である。しかしながら、上記の従来技術によれば、当該コードにより生成されたページに検査必要機能と関連度が高い操作が含まれていると、当該コードにより生成された多数のページすべてが巡回対象となってしまい、巡回規模が膨大となる上に、巡回に制限が設定されている場合には巡回し切れないという場合も生じ得る。
【0008】
そこで本発明の目的は、Webサイト内の各Webページのコンテンツが実質的に同一か否かを判定し、実質的に同一であるWebページを特定してグルーピングすることで効率的・効果的に自動巡回を行うセキュリティテストシステムを提供することにある。
【0009】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0010】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【0011】
本発明の代表的な実施の形態であるセキュリティテストシステムは、Webアプリケーションにおけるセキュリティの脆弱性の有無を検査するセキュリティテストシステムであって、検査対象の前記Webアプリケーション内のページを巡回して取得し、取得した前記ページ内のリンクに係る1つ以上の第1のURLを取得して、予め設定された同一判定ルールにより前記各第1のURLに係るページが前記Webアプリケーション内の他のページと同一であるか否かを判定して、同一ではないと判定した場合に前記第1のURLを巡回対象ページリストに登録し、前記巡回対象ページリストに新たに登録された第2のURLをプロンプトに設定してLLM(大規模言語モデル)に入力してグルーピングさせ、前記グルーピングの結果に基づいて、同じグループに含まれるURLを特定するためのルールを生成して前記同一判定ルールの内容を更新するものである。
【発明の効果】
【0012】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【0013】
すなわち、本発明の代表的な実施の形態によれば、Webサイトの脆弱性の検査の仕組みにおいて、Webサイト内の各Webページのコンテンツが実質的に同一か否かを判定し、実質的に同一であるWebページを特定してグルーピングすることで効率的・効果的に自動巡回を行うことが可能となる。
【図面の簡単な説明】
【0014】
【
図1】本発明の一実施の形態であるセキュリティテストシステムの構成例について概要を示した図である。
【
図2】本発明の一実施の形態における自動巡回処理の流れの例について概要を示したフローチャートである。
【
図3】本発明の一実施の形態におけるリンク先のURLの抽出の例について概要を示した図である。
【
図4】本発明の一実施の形態における新規URLの抽出の例について概要を示した図である。
【
図5】本発明の一実施の形態におけるページの仮グルーピングの例について概要を示した図である。
【
図6】本発明の一実施の形態におけるコンテンツの内容の比較による同一性の判定の例について概要を示した図である。
【
図7】本発明の一実施の形態における同一判定ルールの生成の例について概要を示した図である。
【
図8】本発明の一実施の形態におけるURLのラベリングの処理の流れの例について概要を示したフローチャートである。
【
図9】本発明の一実施の形態におけるURL群のラベリングの例について概要を示した図である。
【
図10】本発明の一実施の形態における巡回対象ページリストのデータ構成の例について概要を示した図である。
【
図11】本発明の一実施の形態における同一判定ルールのデータ構成の例について概要を示した図である。
【
図12】本発明の一実施の形態におけるページリストのデータ構成の例について概要を示した図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。一方で、ある図において符号を付して説明した部位について、他の図の説明の際に再度の図示はしないが同一の符号を付して言及する場合がある。
【0016】
<概要>
上述したように、DASTによるWebサイトのセキュリティテストでは、対象Webサイトの巡回により検査対象とする各Webページの情報を収集、特定する。Webサイトによっては、例えば、別のページではあるが内容、コンテンツが実質的に同一であるページが多数存在する場合がある。このようなWebサイトを自動巡回する場合、これらのページをそれぞれ巡回対象することで巡回時間が大幅に伸び、自動巡回にページ数や経過時間等の制限が設定されている場合、他のページが巡回できない場合が生じ得る。
【0017】
しかし、脆弱性の検査においては、検査対象のWebサイト内のすべてのページを網羅することではなく、各ページを生成したコード(プログラム)等を網羅することが求められる。例えば、ECサイトにおいて販売する商品のページが数千件あり、これら各ページは同じコードやテンプレートにより生成されていた場合、まとめて1件巡回すれば検査としては十分であるが、数千件すべて巡回しようとして膨大な時間を要してしまうということが生じる。しかし、自動巡回中に各Webページがどのコードから生成されたのかを知ることはできないため、結局は総当たりで各ページを巡回せざるを得ないことになる。
【0018】
そこで本発明の一実施の形態であるセキュリティテストシステムでは、各ページのURL(Uniform Resource Locator)やページの内容等の情報に基づいて実質的に同一のページ(同一のコード等から生成されたページ)であるか否かを判定し、実質的に同一のページをグルーピングして優先度を設定可能とする。これにより巡回対象のページを実質的に削減し、効率的・効果的な自動巡回を実現する。
【0019】
一方で、上記の自動巡回により取得・収集した検査対象のページについては、その網羅性なども含めて巡回が十分であるか否かをユーザが確認できるよう、URLの一覧や画面遷移図等の形式によりユーザに提示することになる。しかし、ユーザとしては、URLのパスを見てもそれがどのような画面のページなのか容易に理解することができない上に、Webサイトによっては対象ページが数百件にもなる場合があり、いずれの形式で提示しても自動巡回が十分であるかを確認することは困難である。
【0020】
そこで本実施の形態であるセキュリティテストシステムでは、自動巡回により取得した検査対象の各Webページに適切な名称を付してラベリングすることで、ユーザによる識別性を向上させ、効率的・効果的な自動巡回を実現する。
【0021】
<システム構成>
図1は、本発明の一実施の形態であるセキュリティテストシステムの構成例について概要を示した図である。セキュリティテストシステム1は、例えば、サーバ機器やクラウドコンピューティングサービス上に構築された仮想サーバ等により構成され、これにユーザが使用するPC(Personal Computer)等のユーザ端末2が、図示しないインターネットやVPN(Virtual Private Network)、LAN(Local Area Network)などのネットワークを介して、図示しないWebブラウザや専用のアプリケーション等を利用してアクセスする構成を有する。
【0022】
セキュリティテストシステム1は、例えば、図示しないCPU(Central Processing Unit)により、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の記録装置からメモリ上に展開したOS(Operating System)やDBMS(DataBase Management System)、Webサーバプログラム等のミドルウェアや、その上で稼働するソフトウェアを実行することで、セキュリティテストの実施に係る各種機能を実現する。このセキュリティテストシステム1は、例えば、ソフトウェアにより実装された検査管理部11、巡回処理部12、および検査実施部13などの各部を有する。また、データベースやファイルテーブル等により実装された巡回対象ページリスト14、同一判定ルール15、ページリスト16、検査結果17などの各データストアを有する。
【0023】
検査管理部11は、例えば、ユーザ端末2を介して検査対象となる対象Webサイト3に係る情報の入力や設定をユーザから受け付けたり、検査の実施に係る各種の設定や指示等の入力を受け付けたり、検査の実施結果である検査結果17に基づいてレポートを作成してユーザ端末2を介してユーザに提示したり等、脆弱性検査に係る管理機能やユーザインタフェースの機能を有する。
【0024】
巡回処理部12は、例えば、ユーザから指定された対象Webサイト3について自動で巡回し、検出したWebページについて同一判定ルール15に基づいて実質的に同一のページ(コンテンツ)か否かを判定して、判定結果に応じてグルーピングして巡回の優先度を設定した上で巡回対象ページリスト14に登録する機能を有する。また、グルーピングされたWebページ群について適切な名称を付してラベリングし、ページリスト16として出力する機能も有する。なお、グルーピングやラベリングの処理に際しては、ChatGPT(登録商標)等の外部もしくは内部のLLM(Large language Models:大規模言語モデル)4を利用する。巡回処理部12の処理内容の詳細については後述する。
【0025】
検査実施部13は、例えば、ページリスト16に登録されている各Webページについて、DASTの手法による脆弱性の検査を実施する機能を有する。すなわち、対象の各Webページについて、対象Webサイト3にリクエストを送信する際にフォームに不正な値を入力する等により擬似的な攻撃リクエストとして送信する。そして、対象Webサイト3からのレスポンスについて通常と異なる応答であるか否かを解析して脆弱性の有無を判定するとともに、判定結果を検査結果17に記録する。
【0026】
<処理の流れ>
図2は、本発明の一実施の形態における巡回処理部12による自動巡回処理の流れの例について概要を示したフローチャートである。自動巡回処理を開始すると、巡回処理部12では、まず、ユーザから指定された対象Webサイト3の開始ページを取得して巡回対象ページリスト14に登録する(S01)。そして、自動巡回の終了条件に該当するか否かを判定する(S02)。例えば、巡回対象ページリスト14が空であるか、もしくは巡回したページ数が予め設定された上限値に到達したか、もしくは巡回開始からの経過時間が予め設定されたタイムアウト時間に到達したかのいずれかに該当した場合に、終了条件に該当したものと判定し(ステップS02でYes)、自動巡回処理を終了する。
【0027】
終了条件に該当していない場合(ステップS02でNo)、巡回対象ページリスト14から巡回対象のページの情報を取得して(S03)、対象Webサイト3の当該ページにアクセスし、当該ページを解析することでリンク先のURLの情報を抽出する(S04)。
【0028】
図3は、本発明の一実施の形態におけるリンク先のURLの抽出の例について概要を示した図である。ここでは、対象Webサイト3における対象ページのHTML(Hyper Text Markup Language)データを取得して、これを公知の手法により解析して下段の図に示すようなリンク先のURLのリストを得たことを示している。なお、対象ページ内には図中の例のように複数のリンクが含まれている場合があるが、これらのリンクの中には、それぞれURLは異なるものの、実質的には同一であるとみなしたい(リンク先の各ページは同一のコード等により生成されている)URL群がある場合がある。
【0029】
図2に戻り、対象ページから
図3の例に示すようなリンク先のURLのリストを取得(ステップS04)した後、これらの各URLについて他のURLと実質的に同一のコンテンツであるかを判定し、同一ではない新規URLを抽出する(S05)。そして、新規URLについては巡回の優先度を高く設定するとともに、同一であると判定されたURLについては巡回の優先度を下げ(S06)、新規URLを巡回対象ページリスト14に登録する(S07)。これにより、以後の自動巡回において、巡回対象ページリスト14に登録されたURLを総当りするのに代えて、新規URLを優先的に巡回するように制御することができる。
【0030】
図4は、本発明の一実施の形態における新規URLの抽出の例について概要を示した図である。ここでは、上段の図に示した、対象ページの解析により取得したリンク先のURLのリストに対して、同一判定ルール15を適用したルールベースでの判定により、下段の図に示した、同一ではない新規URLのリストを抽出したことを示している。なお、同一判定ルール15には、後述するように、これと合致するものは実質的に同一であるとみなすURLを正規表現により表したリストが登録されている。図中の同一判定ルール15の先頭行のURLの末尾における”${id}”のようにプレースホルダーを用いて可変の文字列・数字を扱えるようにしてもよい。これにより、例えば、上段の図のURLリストにおける3行目~5行目のURLは、いずれも図中の同一判定ルール15の先頭行のURLと合致するとしてすべて実質的に同一であると判定することができる。
【0031】
図2に戻り、新規URLを巡回対象ページリスト14に登録(ステップS07)した後、巡回対象ページリスト14に新たに登録されたURLが所定の数以上蓄積されたか否かを判定する(S08)。ここでは、例えば、後述するステップS09以降の処理により同一判定ルール15が直近で生成・更新されて以降に巡回対象ページリスト14に新たに登録されたURLの数を対象とする。この数が例えば20件未満の場合にはまだ新規ページ(URL)が蓄積されていないとして(ステップS08でNo)、ステップS02に戻って以降の処理を繰り返す。なお、繰り返しの処理では、ステップS05で実質的に同一のコンテンツであるかを判定する対象となるURLとして、これまでに同一のコンテンツではない新規URLであると判定されてグルーピングされていないURLを含むようにしてもよい。
【0032】
一方、新たに登録されたURLの数が例えば20件以上となった場合は、新規ページが一定程度蓄積されたとして(ステップS08でYes)、以降の処理により、蓄積されたページの内容に基づいて同一判定ルール15を更新する。まず、巡回対象ページリスト14中の各ページについて、LLM4を利用して実質的に同一と推測されるページ(URL)を仮グルーピングし(S09)、さらに、仮グルーピングされたリストからグループを選択して、その中のURLの各ペアについて、LLM4を利用してページの内容を比較・検証して実質的に同一のコンテンツか否かを判定し(S10)、判定結果に基づいてグルーピングを調整・確定する。なお、
図2および後述する
図8において、LLM4を利用したAIでの処理が行われるステップは理解の便宜のため網掛けにより示している。
【0033】
このステップS10の処理、すなわちページのコンテンツの内容を比較して同一性を判定する処理は、処理コストが高く、すべてのURLの組み合わせに対して比較・検証することは時間的制約からも困難な場合がある。そこで本実施の形態では、事前にステップS09において、URLの外形から同じと思われるURLを仮グルーピングすることで、ページのコンテンツの内容を比較する対象の組み合わせを絞り込む。なお、より一層の高速化を図るため、ステップS10でのコンテンツの内容の比較処理を行わず、ステップS09で得られた仮グルーピングされたリストをそのまま採用して後続の処理を行うようにしてもよい。
【0034】
図5は、本発明の一実施の形態におけるページの仮グルーピング(
図2のステップS09)の例について概要を示した図である。ここでは、例えば、巡回対象ページリスト14に登録されているURLでまだ巡回していないもののうち、巡回の優先度が高いものから順に一定数(例えば、20件)のURLを抽出して、LLM4に入力するプロンプトのテンプレートに設定することで、上段の図に示すような、LLM4にURLのグルーピングをさせるためのプロンプトを得る。これをLLM4に入力することで、下段の図に示すような配列の配列(入れ子)の形で仮グルーピングの出力を得ることができる。なお、本実施の形態では、上述したようにプロンプトにはURLのリストを設定しているが、グルーピングの精度を向上させるため、例えば、対象URLに対するリクエストとレスポンスの一部など、他の情報を追加で設定するようにしてもよい。
【0035】
図6は、本発明の一実施の形態におけるコンテンツの内容の比較による同一性の判定(
図2のステップS10)の例について概要を示した図である。ここでは、上述の
図5の下段の図に示したような仮グルーピングリストの中からグループ(上位の配列における各要素)を選択し、さらにそこに含まれるURL(下位の配列における各要素)のペア(すなわち、仮グルーピングによって同一のページであると判定されたURLのペア)を選択して、ペア中の各URLのHTMLの内容をプロンプトのテンプレートに設定することで、
図6の上段の図に示すような、LLM4にコンテンツの同一性を判定させるためのプロンプトを得る。これをLLM4に入力することで、下段の図に示すような判定結果の出力(”true”、同一)を得ることができる。
【0036】
なお、比較対象の各ページについてプロンプトに設定するHTMLは、全体をそのまま設定してもよいし、LLM4が解釈できるプロンプトのトークン数の上限も考慮して、一部を抽出・省略等して設定してもよい。例えば、コンテンツの特徴が出そうな重要な要素だけにフィルタリングして設定する(例えば、HTMLのテキストは省略してタグの構造のみとする)など、有効な比較が可能となるように適宜加工して設定することができる。レスポンスボディがHTMLではない場合(JSON(JavaScript Object Notation)やtextなど)にこれらをプロンプトに設定してもよいし、レスポンスボディ以外にレスポンスヘッダやリクエストを設定してもよい。
【0037】
図2に戻り、実質的に同一のコンテンツを判定して(ステップS10)グルーピングを確定させた後、その内容に基づいて同一判定ルール15を生成もしくは更新する(S11)。
【0038】
図7は、本発明の一実施の形態における同一判定ルール15の生成の例について概要を示した図である。上段の図は、
図2のステップS09の処理により得られた仮グルーピングリストの例である。そして、左側の中段の図は、仮グルーピングリスト内の各グループの中で、
図2のステップS10の処理によりコンテンツの比較によって実質的に同一であると判断されたURLを示し、左側の下段の図は、これらのURLを特定する(すなわち同一のものと判断する)ためのルール(正規表現)を示している。このルールは同一判定ルール15に追加される。なお、上述したように、可変の文字列や数字に対応する”${id}”のようなプレースホルダーを用いて表現するようにしてもよい。
【0039】
一方、右側の中段の図は、仮グルーピングリスト内の各グループの中で、コンテンツの比較によって相違すると判断されたURLを示し、右側の下段の図は、これらのURLを相違するものと判断する(それぞれ別のURLとして識別する)ためのルール(正規表現)を示している。このルールも同様に同一判定ルール15に追加される。
【0040】
図2に戻り、同一判定ルール15を生成・更新(ステップS11)した後、この同一判定ルール15を使用して、巡回対象ページリスト14に新たに蓄積されているページについてルールベースで同一のコンテンツであるか否かを判定する(S12)。ここでの処理の内容は、上述の
図4の例で示した処理(
図2のステップS05)と同様であるため、再度の説明は省略する。ステップS12において新たに同一であると判定されたURLについては、巡回の優先度を下げて巡回対象ページリスト14を更新する(S13)。その後、ステップS02に戻って、自動巡回の終了条件に達するまで以降の処理を繰り返す。
【0041】
図8は、本発明の一実施の形態におけるURLのラベリングの処理の流れの例について概要を示したフローチャートである。ここでは、上述の
図2に示した自動巡回処理が終了した後、実質的に同一であると判定されてグルーピングされた巡回対象ページリスト14内のURL群毎に対して、LLM4を利用して、ユーザによる識別が容易となるような名称を付してラベリングする(S21)。
【0042】
図9は、本発明の一実施の形態におけるURL群のラベリングの例について概要を示した図である。ここでは、実質的に同一であると判定されグルーピングされたURLのリスト(正規表現で表された同一判定ルール15でもよい)を、LLM4に入力するプロンプトのテンプレートに設定することで、上段の図に示すような、LLM4にラベリングをさせるためのプロンプトを得る。これをLLM4に入力することで、下段の図に示すような形でURL毎に自然言語によるラベル(図中の例では”トップページ”や”ファッションカテゴリ”)が設定された形の出力を得ることができる。なお、本実施の形態では、上述したようにプロンプトにはURLのリストを設定しているが、ラベリングの精度を向上させるため、例えば、対象URLのページタイトルや、対象URLに対するリクエストとレスポンスの一部など、他の情報を追加で入力するようにしてもよい。
【0043】
図8に戻り、実質的に同一と判定されたURL群に対してLLM4を利用してラベリング(ステップS21)した後、巡回対象(巡回結果)のページの一覧にラベルを付した状態でページリスト16として出力し(S22)、処理を終了する。ページリスト16は、例えば、検査管理部11によりユーザ端末2を介してユーザに提示され、ユーザは各ページ(URL)がどのようなページか容易に把握することができる。
【0044】
<データ構成>
図10は、本発明の一実施の形態における巡回対象ページリスト14のデータ構成の例について概要を示した図である。巡回対象ページリスト14は、自動巡回の対象となる(もしくは巡回した)ページ(URL)のリストを保持するテーブルであり、例えば、巡回対象ページID、巡回リクエストID、URL、メソッド、リクエスト、レスポンス、キャプチャ、ページ巡回ステータス、およびページ巡回優先度などの各項目を有する。
【0045】
巡回対象ページIDの項目は、巡回対象のページを一意に特定するIDの情報を保持する。また、巡回リクエストIDの項目は、対象のページが含まれる対象Webサイト3に対する巡回のリクエストを一意に特定するIDの情報を保持する。巡回のリクエスト毎に個別に特定可能とすることで、例えば、巡回毎にそれぞれの全体としてのステータス(巡回待ち、巡回中、巡回完了等)の情報を図示しない管理テーブル等により別途管理することができる。
【0046】
URLの項目は、対象のページのURLの情報を保持する。また、メソッド、リクエスト、レスポンス、キャプチャの各項目は、それぞれ、対象のページのメソッド(GET、POST、PUT等)、対象のページに対するリクエストとこれに対するレスポンスの情報、対象のページをキャプチャした情報を保持する。また、ページ巡回ステータスの項目は、対象のページに対する巡回のステータス(巡回待ち、巡回中、巡回完了等)の情報を保持する。また、ページ巡回優先度の項目は、対象のページの巡回の優先度の情報を保持する。この優先度が高いページを優先して巡回することで、自動巡回にページ数や時間等の制限がある場合でも効率的・効果的に巡回することができる。
【0047】
図11は、本発明の一実施の形態における同一判定ルール15のデータ構成の例について概要を示した図である。同一判定ルール15は、実質的に同一であるとみなすURLを判定するための正規表現等からなるルールのリストを保持するテーブルであり、例えば、ルールID、巡回リクエストID、判定ルール、およびコンテンツ巡回優先度などの各項目を有する。
【0048】
ルールIDの項目は、各判定ルールを一意に特定するIDの情報を保持する。また、巡回リクエストIDの項目は、対象の判定ルールが適用される(適用された)巡回のリクエストを一意に特定するIDの情報を保持する。また、判定ルールの項目は、実質的に同一のコンテンツであるURLを特定する正規表現等からなるルールを保持する。この正規表現にマッチするURLは同一のコンテンツであると判定する。また、コンテンツ巡回優先度の項目は、対象のルールにより同一であると判定されたページにおけるコンテンツの巡回の優先度の情報を保持する。例えば、ECサイトにおける決済機能など、優先して検査すべきコンテンツの優先度を高く設定する。
【0049】
図12は、本発明の一実施の形態におけるページリスト16のデータ構成の例について概要を示した図である。ページリスト16は、自動巡回の結果得られたページについて実質的に同一のコンテンツをグルーピングしたリストを保持するテーブルであり、例えば、ページID、URL、およびラベルなどの各項目を有する。
【0050】
ページIDの項目は、対象のページを一意に特定するIDの情報を保持する。また、URLの項目は、対象のページのURLの情報を保持する。また、ラベルの項目は、対象のページに対して付された名称等の自然言語のラベルの情報を保持する。ユーザはこのラベルを参照することにより対象のURLがどのようなページやコンテンツに係るものであるかを容易に把握することができ、ページのリストの識別性を向上させることができる。
【0051】
以上に説明したように、本発明の一実施の形態であるセキュリティテストシステム1によれば、対象Webサイト3の各ページのURLやページの内容等の情報に基づいて実質的に同一のページ(同一のコードやテンプレート等から生成されたページ)であるか否かを判定し、実質的に同一のページをグルーピングする。これにより自動巡回の対象のページを実質的に削減し、効率的・効果的な自動巡回を実現することができる。さらに、自動巡回により取得した検査対象の各Webページに適切な名称を付してラベリングすることで、ユーザによる識別性を向上させ、効率的・効果的な自動巡回を実現することができる。
【0052】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0053】
例えば、上記の実施の形態では、実質的に同一のページをグルーピングする際、同一判定ルール15を適用したルールベースでの判定を行い(
図2のステップS05)、この同一性判定ルール15について、LLM4による仮グルーピングとコンテンツの同一性の判定(
図2のステップS09、S10)の結果に基づいて更新する(ステップS11)という構成としているが、ルールベースの判定を用いず、LLM4による仮グルーピングとコンテンツの同一性の判定の結果をもって実質的に同一のページをグルーピングする構成としてもよい。
【0054】
また、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記の実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0055】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD等の記録装置、またはICカード、SDカード、DVD等の記録媒体に置くことができる。
【0056】
また、上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【産業上の利用可能性】
【0057】
本発明は、Webアプリケーションの脆弱性の有無を検査するセキュリティテストシステムに利用可能である。
【符号の説明】
【0058】
1…セキュリティテストシステム、2…ユーザ端末、3…対象Webサイト、4…LLM、
11…検査管理部、12…巡回処理部、13…検査実施部、14…巡回対象ページリスト、15…同一判定ルール、16…ページリスト、17…検査結果
【要約】
【課題】Webサイト内の各Webページのコンテンツが実質的に同一か否かを判定し、実質的に同一であるWebページを特定してグルーピングすることで効率的・効果的に自動巡回を行う。
【解決手段】対象Webサイト3内のページを巡回して取得し、取得したページ内のリンクに係るURLを取得して、同一判定ルール15により他のページと同一であるか否かを判定して、同一ではないと判定した場合にURLを巡回対象ページリスト14に登録し、新たに登録されたURLが所定の数に達した場合に、各URLをプロンプトに設定してLLM4に入力してグルーピングさせ、グルーピングの結果に基づいて、同じグループに含まれるURLを特定するためのルールを生成して同一判定ルール15の内容を更新する。
【選択図】
図1