JP5418135B2 - テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置 - Google Patents

テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置 Download PDF

Info

Publication number
JP5418135B2
JP5418135B2 JP2009239751A JP2009239751A JP5418135B2 JP 5418135 B2 JP5418135 B2 JP 5418135B2 JP 2009239751 A JP2009239751 A JP 2009239751A JP 2009239751 A JP2009239751 A JP 2009239751A JP 5418135 B2 JP5418135 B2 JP 5418135B2
Authority
JP
Japan
Prior art keywords
test
program
target
information
template
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009239751A
Other languages
English (en)
Other versions
JP2011086201A (ja
Inventor
隆夫 大久保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009239751A priority Critical patent/JP5418135B2/ja
Publication of JP2011086201A publication Critical patent/JP2011086201A/ja
Application granted granted Critical
Publication of JP5418135B2 publication Critical patent/JP5418135B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、テストを実行するテストプログラム、テスト方法、およびテスト装置に関する。
近年、システム開発やアプリケーション開発において、システム・アプリケーションが複雑化・多機能化するにつれ、開発に対するテスト工程も複雑化している。複雑化するテスト工程を効率よく消化するために、システム等を構成している機能を実行するテストプログラムを生成し、対象システムを実行する装置がテストプログラムを実行することでテスト工程を行う、というテスト工程の自動化が行われている。装置がテスト工程を実行することにより、テスト工程を短縮できる。特に、システムの修正に伴う、他の機能が動作することを確認するために行う回帰テストでは、過去のテストを繰り返し行うため、テスト工程の自動化の恩恵を受ける。
テストプログラムの生成方法に関しては、対象システムを構成する機能の組み合わせによって、テスト手順を生成し、予想される結果かどうかで正常系か異常系であるかを分類するという技術が開示されている(たとえば、下記特許文献1を参照。)。
また、テスト工程のうち、セキュリティに関するテストは、外部からのセキュリティ攻撃を受けやすいWebアプリケーションやネットワークシステムの開発において、重要な位置を占める。近年、情報処理装置の役割が増大しており、装置が保持する情報の漏えいを防ぐために、セキュリティテストを強化し、事前にぜい弱性を発見し修正する必要がある。セキュリティテストに関しては、ネットワークシステムのセキュリティ評価を行うために、能動的にテストを行うという技術が開示されている(たとえば、下記特許文献2を参照。)。
特開平6−12285号公報 特表2005−503053号公報
しかしながら、上述した従来技術において、セキュリティに関するテストプログラムを行った場合に、ぜい弱性は要件や設計仕様に依存するため、要件や設計仕様上除外できるぜい弱性という誤検出を発生させてしまう。また、誤検出が多く発生した場合、誤検出の排除が困難であるという問題があった。
たとえば、セキュリティ攻撃のひとつとして、強制ブラウジングがあるが、ユーザが直接URL(Uniform Resource Locator)を入力することがない設計仕様を持つシステムの場合には、強制ブラウジングの対処を行う必要がない。しかし、従来技術におけるテストプログラムでは、ぜい弱性として誤検出してしまうという問題があった。また、必要のない検査を行うため、検査内容が冗長であるという問題があった。これらの問題は、テストの実行に際し、テスト対象であるアプリケーションの要件および設計仕様が考慮されないことに起因していた。
本発明は、上述した従来技術による問題点を解消するため、テストの誤検出を低下させることができるテストプログラム、テスト方法、およびテスト装置を提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のテスト装置は、セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテストの手順を定義した情報であるテスト手順情報と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースから、セキュリティ攻撃種別と攻撃対象との指定を受け付け、前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定し、前記特定したテスト手順情報に基づいて、前記受け付けた攻撃対象に対してテストを実行し、前記受け付けたセキュリティ攻撃種別に対応する成功条件情報に基づきテストの成否を判定することを要件とする。
上記構成によれば、入力されたセキュリティ攻撃と攻撃対象とに基づき、テストを行うことができる。セキュリティ攻撃と攻撃対象は、テスト対象であるアプリケーションの要件および設計仕様に基づいて、人手による脅威分析によって得られる。したがって、上記構成によれば、アプリケーションの要件および設計仕様に基づいたテストが可能となる。これにより、本テストプログラム、テスト方法、およびテスト装置によれば、テストの誤検出の低下を図ることができるという効果を奏する。
本実施の形態にかかる本システムの利用方法を示す説明図である。 テストプログラム生成装置104のハードウェア構成を示すブロック図である。 脅威一覧テーブル105の記憶内容の一例を示す説明図である。 脅威パターンライブラリテーブル106−1の記憶内容の一例を示す説明図である。 脅威パターン成功条件テーブル106−2の記憶内容の一例を示す説明図である。 プログラムコード雛形一覧テーブル107の記憶内容の一例を示す説明図である。 テストプログラム生成装置104の機能的構成を示すブロック図である。 機能単位テンプレート一覧テーブル801の記憶内容の一例を示す説明図である。 機能単位のプログラムコードの一覧901の記憶内容の一例を示す説明図である。 アカウント情報テーブル108の出力後と各項目の入力後を示す説明図である。 テストプログラム生成の様子を示す説明図(その1)である。 テストプログラム生成の様子を示す説明図(その2)である。 テストプログラム生成の様子を示す説明図(その3)である。 テストプログラム生成処理のフローチャートである。 機能単位テンプレート一覧テーブルへの追加処理のフローチャートである。 機能単位のプログラムコード生成処理(事前準備、テスト手順)のフローチャートである。 機能単位のプログラムコード生成処理(成功条件)のフローチャートである。
以下に添付図面を参照して、本発明にかかるテストプログラム、テスト方法、およびテスト装置の好適な実施の形態を詳細に説明するため、本発明にかかるテストプログラムを生成するためのテストプログラム生成プログラムについて詳細に説明する。本発明にかかるテストプログラム、テスト方法、およびテスト装置については、以下のテストプログラム生成プログラムにおいてテストプログラムの生成を行うことなく、テストを実行することによって実現可能である。
図1は、本実施の形態にかかる本システムの利用方法を示す説明図である。本システムは、システム開発やアプリケーション開発を行う際に構築する。本システムは、分析端末101、設計・実装端末102、テスト端末103、およびテストプログラム生成装置104の端末で構成される。また、本システムは、脅威一覧テーブル105、脅威パターンライブラリテーブル106−1、脅威パターン成功条件テーブル106−2、プログラムコード雛形一覧テーブル107、およびアカウント情報テーブル108の各テーブルにアクセスする。
各端末101〜103とテストプログラム生成装置104と各テーブルを使用して、本システムは、対象システム109、およびテストプログラム110を生成する。各端末は、各テーブル、対象システム109、およびテストプログラム110に対して、脅威分析111、設計・実装112、テスト113、アカウント情報入力114を行う。
初めに、各端末101〜103とテストプログラム生成装置104の説明を行う。分析端末101は、分析端末101を操作する分析担当者によって、対象システム109に対する脅威分析111を行う。具体的には、たとえば、分析担当者は、ユースケース図を用いて、対象システム109を構成する各機能をユースケースとして表現する。分析担当者は、特定のユースケースu0に対して、特定のアクタa0が攻撃者となり強制ブラウジングを行うセキュリティ攻撃が存在することを解析し、脅威情報として脅威一覧テーブル105に登録する。脅威情報は、セキュリティ攻撃の種別を示すセキュリティ攻撃種別と、攻撃対象、攻撃者で構成する。また、ユースケースu0に対して、アクタa0と異なるアクタa1が強制ブラウジングを行うセキュリティ攻撃が存在する場合、分析担当者は、異なる脅威情報として脅威一覧テーブル105に登録する。
設計・実装端末102は、設計・実装端末102を操作する設計・実装担当者によって、対象システム109、プログラムコード雛形一覧テーブル107に対して設計・実装112を行う。具体的には、たとえば、設計・実装担当者は、対象システム109を構成する機能に対するプログラムコードの雛形を生成し、プログラムコード雛形一覧テーブル107に登録する。また、設計・実装担当者は、プログラムコード雛形一覧テーブル107からプログラムコードの雛形を抽出し、抽出したプログラムコードを元にして対象システム109の実装を行う。
テスト端末103は、テスト端末103を操作するテスト担当者によって、テストプログラム110を使用して、対象システム109に対してテスト113を行う。具体的には、たとえば、テスト端末103は、テストプログラム生成装置104によって生成されたテストプログラム110を実行することにより、対象システム109の機能、たとえば、ユースケースu0のテストを行う。
また、テスト端末103は、テスト担当者によって、テストプログラム生成装置104によって作成されたアカウント情報テーブル108に対して、アカウント情報入力114を行う。具体的には、たとえば、テスト担当者は、テストプログラム生成装置104が作成したアカウント情報テーブル108にアカウントID(Identification)、パスワードという認証情報を入力する。入力後、テストプログラム生成装置104は、プログラムコード雛形一覧テーブル107に登録されているプログラムコードのうち、アクタに対応するアカウントID、パスワードを設定する箇所を検索する。設定する箇所がある場合、テストプログラム生成装置104は、アカウント情報テーブル108から取得し、テストプログラム110内に設定される。また、認証情報は、後述する脅威パターンライブラリテーブル106−1の試験パターンを構成する機能単位テンプレートのうち、認証を行う機能、たとえば、“認証”にて使用される。
テストプログラム生成装置104は、脅威一覧テーブル105、脅威パターンライブラリテーブル106−1、脅威パターン成功条件テーブル106−2、プログラムコード雛形一覧テーブル107にアクセスしてテストプログラム110を実行する。また、テストプログラム生成装置104は、アカウント情報テーブル108にアクセスしてテストプログラム110を実行してもよい。また、テストプログラム生成装置104は、テストプログラム110を生成し、他の装置、たとえば、テスト端末103がテストプログラム110を実行してもよい。テストプログラム生成装置104の機能的構成は、図7にて後述する。
次に各テーブルの説明を行う。脅威一覧テーブル105は、分析端末101によって分析された、脅威情報を管理する。脅威一覧テーブル105の各フィールドに関しては、図3にて後述する。脅威パターンライブラリテーブル106−1は、脅威情報のセキュリティ攻撃を実行する試験パターンを管理する。脅威パターンライブラリテーブル106−1の各フィールドに関しては、図4にて後述する。脅威パターン成功条件テーブル106−2は、脅威パターンライブラリテーブル106−1の試験パターンの成功条件を管理する。脅威パターン成功条件テーブル106−2の各フィールドに関しては、図5にて後述する。
プログラムコード雛形一覧テーブル107は、設計・実装端末102によって設計されたプログラムコードの雛形を管理する。プログラムコード雛形一覧テーブル107の各フィールドに関しては、図6にて後述する。アカウント情報テーブル108は、テストプログラム生成装置104によって作成され、アクタのアカウントID、パスワードを管理する。アカウント情報テーブル108の各フィールドに関しては、図10にて後述する。
脅威一覧テーブル105、または、アカウント情報テーブル108は、テストプログラム生成装置104の外部に存在するが、内部に存在してもよい。同様に、脅威パターンライブラリテーブル106−1、脅威パターン成功条件テーブル106−2、プログラムコード雛形一覧テーブル107も、テストプログラム生成装置104の内部に存在するが、外部に存在してもよい。
(テストプログラム生成装置104のハードウェア構成)
図2は、テストプログラム生成装置104のハードウェア構成を示すブロック図である。図2において、テストプログラム生成装置104は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を備えている。また、記憶装置として、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、を備えている。また、ユーザやその他の機器との入出力装置として、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、テストプログラム生成装置の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、テストプログラム生成装置内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
図3は、脅威一覧テーブル105の記憶内容の一例を示す説明図である。脅威一覧テーブル105は、脅威情報である、セキュリティ攻撃の種別を示すセキュリティ攻撃種別と、攻撃対象、攻撃者を管理する。脅威一覧テーブル105は、脅威ID、脅威名、対象アクタID、対象ユースケースIDの各フィールドで構成する。脅威IDは脅威名、対象アクタID、対象ユースケースIDを一意に特定するキーである。脅威名はセキュリティ攻撃の種別名を示しており、たとえば、強制ブラウジングやCSRF(Cross−Site Request Forgeries)である。対象アクタIDは、試験対象となる対象ユースケースIDに接続する攻撃者である。対象ユースケースは、試験対象であるユースケースIDを示している。
図4は、脅威パターンライブラリテーブル106−1の記憶内容の一例を示す説明図である。脅威パターンライブラリテーブル106−1は、セキュリティ攻撃種別に対応する、テストの手順を定義した情報であるテスト手順情報を管理する。脅威パターンライブラリテーブル106−1は、脅威名、事前準備、テスト手順の各フィールドで構成する。脅威名は、セキュリティ攻撃の攻撃名を示している。事前準備は、テスト手順を行う前に行う機能を示しており、テスト手順は試験対象に対する機能を示している。事前準備、テスト手順がテスト手順情報となる。事前準備、テスト手順の各機能は機能単位テンプレートと表現し、後述するプログラムコード雛形一覧テーブル107の機能単位テンプレート名と一致する。
具体的には、たとえば、強制ブラウジングは、本来直接アクセスできない対象に、攻撃者が、URLを直接指定するセキュリティ攻撃を示している。脅威名が強制ブラウジングのレコードは、事前準備フィールドに、“認証(target_actor)”、テスト手順フィールドに、“アクセス(target_usecase)”が設定されている。したがって、強制ブラウジングを試験するプログラムは、事前準備として、攻撃者を認証し、テスト手順として、試験対象に対してアクセスするという動作をする。
同様に、CSRFは、異なるサイトからの偽装されたリクエストを行うセキュリティ攻撃を示している。攻撃者は、試験対象に対するリクエスト内容が推測可能である場合に、偽装されたリクエストを送信し、試験対象は、偽装されたリクエストを受け付けてしまう。
脅威名がCSRFのレコードは、事前準備フィールドに、下記5つの機能単位テンプレートが設定されている。5つの機能単位テンプレートは、“認証(target_actor(1))”、“アクセス(target_usecase)”、“セッション取得(s)”、“ログアウト()”、“認証(target_actor(2))”である。また、テスト手順フィールドは、“指定したセッションでアクセス(target_usecase,s)”が設定されている。
したがって、CSRFを試験するプログラムは、事前準備として、攻撃者を認証し、試験対象にアクセスし、セッション情報を取得し、ログアウトをする。後に、攻撃者のアクタを再び認証し、テスト手順として、試験対象に対して取得したセッション情報でアクセスするという動作をする。
また、機能単位テンプレートは、引数を取ることができる。たとえば、“認証(target_actor)”では、target_actorが引数となり、脅威一覧テーブル105の対象アクタIDと置き換えることで、アクタIDに対応したテストプログラムを生成する。同様に、target_usecaseは、対象ユースケースIDと置き換える。置き換えの様子は、図8に示す、機能単位テンプレート一覧テーブル801にて後述する。
図5は、脅威パターン成功条件テーブル106−2の記憶内容の一例を示す説明図である。脅威パターン成功条件テーブル106−2は、テスト手順に対応するテスト成功条件を定義した成功条件情報を管理する。脅威パターン成功条件テーブル106−2は、脅威名、成功条件の各フィールドで構成する。脅威名は、セキュリティ攻撃の攻撃名を示している。成功条件は、脅威パターンライブラリテーブル106−1のテスト手順にて成功したか否かを判断する条件である。また、成功条件も機能単位テンプレートである。具体的には、強制ブラウジングでは、アクセスを行い、アクセス例外が発生した場合に、テストが成功となる。
図6は、プログラムコード雛形一覧テーブル107の記憶内容の一例を示す説明図である。プログラムコード雛形一覧テーブル107は、機能単位テンプレート名、プログラムコードの各フィールドで構成する。機能単位テンプレート名は、機能を表す名称である。たとえば、“認証()”は攻撃者を認証する機能を示している。プログラムコードは、機能単位テンプレート名に対応した実コードである。図6の例ではJava(登録商標)コードである。
また、機能単位テンプレート名フィールドの値には引数を含んでもよい。具体的には、“アクセス(u1)”であり、“u1”の部分が引数となる。引数部分は、プログラムコードフィールドの実コード部分に置き換えられる。たとえば、“u1”はプログラムコードの“U1.access()”の“U1”が置き換えられる。図6では、引数の置き換えとしてユースケースIDの置き換えが示されているが、アクタIDを置き換える機能単位テンプレートであってもよい。たとえば、“アカウント情報(a0)”という機能単位テンプレート名に対応する“A0.info()”というプログラムコードである。この場合、“A0”が置き換えられる。
(テストプログラム生成装置104の機能的構成)
次に、テストプログラム生成装置104の機能的構成について説明する。図7は、テストプログラム生成装置104の機能的構成を示すブロック図である。テストプログラム生成装置104は、指定部701と、特定部702と、設定部705と、生成部706と、実行部707と、を含む構成である。また、作成部703と、取得部704とを含めてもよい。制御部となる機能(指定部701〜実行部706)は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201が実行することにより、その機能を実現する。または、I/F209を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、テストプログラム生成装置104は、脅威一覧テーブル105、脅威パターンライブラリテーブル106−1、脅威パターン成功条件テーブル106−2、プログラムコード雛形一覧テーブル107をデータベースとしてアクセスする。テストプログラム生成装置104は、さらに、アカウント情報テーブル108にアクセスしてもよい。
指定部701は、任意のセキュリティ攻撃を指定する機能を有する。具体的には、たとえば、脅威一覧テーブル105からセキュリティ攻撃として脅威ID“t1”のレコードを指定する。脅威ID“t1”のレコードを指定したことにより、セキュリティ攻撃種別として“強制ブラウジング”、攻撃対象として“u0”が指定される。なお、指定されたデータは、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
特定部702は、データベースの中から指定部701によって指定されたセキュリティ攻撃を実行する試験パターンを構成する機能ごとに、攻撃対象を特定する機能を有する。また、攻撃対象へ接続する攻撃者を併せて特定してもよい。
具体的には、たとえば、指定部701によって脅威ID“t1”のレコードが指定された場合、脅威名フィールドは“強制ブラウジング”となり、セキュリティ攻撃は強制ブラウジングとなる。また、攻撃者となる対象アクタIDは、“a2”、攻撃対象となる対象ユースケースIDは、“u0”となる。そして、脅威パターンライブラリテーブル106−1の脅威名フィールドから“強制ブラウジング”であるレコードを選択し、事前準備、テスト手順の両フィールドから、機能単位テンプレートを抽出する。
抽出すると、特定部702は、“認証(target_actor)”、“アクセス(target_usecase)”を得る。“target_actor”は攻撃者と、“target_actor”は攻撃対象をそれぞれ特定する。したがって、“アクセス(target_usecase)”に対して“u0”を特定し、“認証(target_actor)”に対して“a0”を特定する。なお、特定されたデータは、RAM203、磁気ディスク205、光ディスク207などの記憶領域に存在する機能単位テンプレート一覧テーブル801に記憶される。
作成部703は、特定部702によって特定された攻撃者ごとに、攻撃者と識別情報と識別情報に対応するパスワードとを項目とする一覧を作成する機能を有する。攻撃者はアクタIDであり、識別情報とはアカウントIDであり、一覧とはアカウント情報テーブル108である。
具体的には、たとえば、アクタID“a0”とアクタIDに対応するアカウントIDとパスワードとを項目とする。図4で示したCSRFのように1度のセキュリティ攻撃に対して複数の接続者が存在する場合もあるため、“a0(0)”、“a0(1)”、・・・、のように枝番を設定し、それぞれの識別情報を区別する。アカウント情報テーブル108への出力の様子は、図10にて示す出力後のアカウント情報テーブル1001である。なお、作成された一覧は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に存在するアカウント情報テーブル108に記憶される。
取得部704は、作成部703によって作成された一覧を出力した結果、項目が書き込まれた一覧を取得する機能を有する。具体的には、たとえば、アカウント情報テーブル108に対して、テスト端末103が、各項目を書き込み、書き込まれたアカウント情報テーブル108を取得する。書き込まれた様子は、図10に示す書き込み後のアカウント情報テーブル1002である。なお、取得された一覧は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
設定部705は、データベースを参照することにより、機能に対するプログラムコードの雛形を抽出する。そして、特定部702によって特定された攻撃対象を抽出された雛形に定義されている試験対象に設定することにより、機能単位のプログラムコードを生成する機能を有する。特定部702によって攻撃者が特定されている場合、抽出された雛形に定義されている試験者に設定してもよい。また、取得部704によって取得された一覧から、攻撃者に対応する識別情報とパスワードを雛形に定義された識別情報とパスワードに設定してもよい。
また、攻撃者を雛形へコメントとして設定してもよい。コメントとは、プログラムの動作に影響を与えない記述であり、Java(登録商標)の場合、コンパイラは、プログラム内の“//”文字列が出現した行は、“//”文字列以降の文字列を無視して実行コードを作成する。
具体的には、たとえば、設定部705は、プログラムコード雛形一覧テーブル107を参照し、プログラムコードの雛形を抽出する。続けて、特定部702によって機能単位テンプレート一覧テーブル801の引数フィールドに設定した攻撃対象を、プログラムコードの雛形に定義されている試験対象に設定する。雛形には“u1”と定義されており、“u1”を引数フィールドの内容に設定する。また、引数フィールドに設定した攻撃者を試験者に設定する場合、雛形には、“a1”と定義されており、“a1”を引数フィールドの内容に設定する。
また、雛形に攻撃者に対応するアカウントID、パスワードが定義されている場合、取得したアカウント情報テーブル108から対応するアカウントID、パスワードを設定する。また、攻撃者を雛形へコメントとして設定する場合、たとえば、“//actor:a0(0)”として雛形に設定する。なお、設定された機能単位のプログラムコードは、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
生成部706は、試験パターンと試験パターンに対応する成功条件と設定部705によって設定された機能単位のプログラムコードとに基づいて、設計対象に関するプログラムをテストするテストプログラム110を生成する機能を有する。設計対象には試験パターンを構成する機能が含まれている。
具体的には、たとえば、設定部705によって機能単位のプログラムコードを、テストプログラム110の雛形にある、試験パターンの事前準備、テスト手順の位置に設定し、また試験パターンの成功条件に設定する。テストプログラム110の雛形には、たとえば、テスト手順であれば、“//テスト手順”というコメントが記述されており、記述位置に、テスト手順の機能単位のプログラムコードを設定する。
実行部707は、特定された試験パターンに基づいて、攻撃対象に対してテストを実行し、試験パターンに対応する成功条件情報に基づいてテストの成否を判定する機能を有する。また、生成部706によって生成されたテストプログラム110を実行し、成否の判定を行ってもよい。具体的には、たとえば、テストプログラム生成装置104は、後述する図13の矩形1303で示されたプログラムを実行する。なお、実行されたテストプログラム110の結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
図8は、機能単位テンプレート一覧テーブル801の記憶内容の一例を示す説明図である。機能単位テンプレート一覧テーブル801は、機能単位テンプレート名と、引数というフィールドで構成される。機能単位テンプレート名フィールドには、プログラムコード雛形一覧テーブル107の機能単位テンプレート名と等しい値が設定される。引数フィールドには脅威パターンライブラリテーブル106−1の機能単位テンプレートの引数が、脅威一覧テーブル105の対象アクタID、対象ユースケースIDと置き換わった値が設定される。
図9は、機能単位のプログラムコードの一覧901の記憶内容の一例を示す説明図である。機能単位のプログラムコードの一覧901は、機能単位テンプレート名、引数、プログラムコードという3つのフィールドを持つ。機能単位のプログラムコードの一覧901は、作成されたプログラムコードを格納しておくために使用される。機能単位テンプレート名フィールドは、機能単位テンプレート一覧テーブル801の機能単位テンプレート名フィールドと等しい値が設定される。引数フィールドは、機能単位テンプレート一覧テーブル801の引数フィールドと等しい値が設定される。プログラムコードフィールドは、プログラムコード雛形一覧テーブル107のプログラムコードを雛形として、引数フィールドの値が設定される。
具体的には、たとえば、機能単位テンプレート名フィールドが“認証()”のレコードでは、プログラムコードフィールドの値に、引数フィールドに設定されている“a0(0)”が使用されている。
図10は、アカウント情報テーブル108の出力後と各項目の入力後を示す説明図である。アカウント情報テーブル108は、アクタID、アカウントID、パスワードという3つのフィールドで構成される。出力後のアカウント情報テーブル1001は、テストプログラム生成装置104が、アクタIDを出力した状態を示している。アクタIDフィールドに値が設定されており、アカウントID、パスワードフィールドには値が設定されていない。
書き込み後のアカウント情報テーブル1002は、テスト端末103によって、アカウントID、パスワードフィールドが設定されたアカウント情報テーブル108の状態を示している。すべて異なるアカウントID、パスワードが設定されているが、同じアカウントIDに対するテストプログラムを生成したい場合は、同じ値を設定してもよい。
図11〜図13は、テストプログラム生成の様子を示す説明図である。図11は、テストプログラム生成の様子を示す説明図(その1)である。矩形1101で示されるプログラムは、テストプログラムの雛形であり、初期状態を示している。また、テストプログラムの生成には、プログラムコード雛形一覧テーブル107と、機能単位テンプレート一覧テーブル801を使用する。
図12は、テストプログラム生成の様子を示す説明図(その2)である。図12では、機能単位のプログラムを生成する。テーブル1201は、テストプログラムの生成には、プログラムコード雛形一覧テーブル107と、機能単位テンプレート一覧テーブル801を組み合わせた状態を示している。さらに、テーブル1202では、引数フィールドをプログラムコードフィールドに設定した状態を示している。具体的には、破線による矩形1203にてアクタIDが、破線による矩形1204にてユースケースIDが設定されている。
図13は、テストプログラム生成の様子を示す説明図(その3)である。図13では、矩形1101で示されるプログラムと、図12にて生成された機能単位のプログラムを使用して、テストプログラムを生成する。矩形1301で示されるプログラムは、矩形1101で示されるプログラムに、機能単位のプログラムを設定した状態である。破線による矩形1304にて“認証()”のプログラムコードが、破線による矩形1305にて“アクセス()”のプログラムコードがそれぞれ設定されていることを示す。
次に、矩形1302で示されるプログラムは、アカウントIDとパスワードを設定している。“//actor:a2(0)”から、アカウント情報テーブル108から値を取得し、設定する。破線による矩形1306が、アカウントIDの設定を示し、破線による矩形1307が、パスワードの設定を示す。
最後に、矩形1303で示されるプログラムは、成功条件を設定した状態を示している。破線による矩形1308は、図11で示したプログラムコード雛形一覧テーブル107の“アクセス例外”のプログラムコードが設定されている状態を示す。“@Test(expected=…)”に関して、“@Test”は、Java(登録商標)で使用されるテストツールであるJUnitにて、テストメソッドを示すアノテーションである。また、引数の“expected”は、テストメソッドがどんな例外がスローされるのかを期待するのかを指定した属性である。
図14は、テストプログラム生成処理のフローチャートである。テストプログラム生成装置104は、脅威一覧テーブル105から1つレコードを選択し、脅威名フィールドから脅威名を取得する(ステップS1401)。たとえば、テストプログラム生成装置104は、脅威一覧テーブル105の脅威IDがt0のレコードを選択し、脅威名として“強制ブラウジング”を取得する。次に、テストプログラム生成装置104は、取得した脅威名と脅威パターンライブラリテーブル106−1の脅威名フィールドが一致するレコードを選択する(ステップS1402)。
続けて、テストプログラム生成装置104は、選択したレコードに対して、事前準備、テスト手順の機能単位テンプレートを抽出する(ステップS1403)。たとえば、脅威名フィールドが“強制ブラウジング”のレコードの場合、テストプログラム生成装置104は、事前準備として“認証(target_actor)”、テスト手順として、“アクセス(target_usecase)”を抽出する。抽出した機能単位テンプレートに対して、テストプログラム生成装置104は、機能単位テンプレート一覧テーブル801への追加処理を行う(ステップS1404)。機能単位テンプレート一覧テーブル801への追加処理に関しては、図15にて後述する。
機能単位テンプレート一覧テーブル801への追加が終了した後に、テストプログラム生成装置104は、機能単位テンプレートごとに機能単位のプログラムコードの生成を行う。初めに、テストプログラム生成装置104は、脅威パターンライブラリテーブル106−1の選択したレコードの事前準備フィールドの先頭にある機能単位テンプレートを取得する(ステップS1405)。続けて、取得した機能単位テンプレートに対して、テストプログラム生成装置104は、機能単位のプログラムコード生成処理を行う(ステップS1406)。ステップS1406での機能単位のプログラムコード生成処理は、事前準備、テスト手順用の処理を使用する。詳細は図16にて後述する。
テストプログラム生成装置104は、生成された機能単位のプログラムコードを、テストプログラム雛形の事前準備もしくはテスト手順の位置に設定する(ステップS1407)。テストプログラム雛形の事前準備の位置、テスト手順の位置とは、たとえば、矩形1101にて示したテストプログラムの雛形の文字列にて、“//事前準備”文字列、“//テスト手順”文字列の次の行の位置である。事前準備の位置に関しては、“public void testT1() {”文字列の次の行の位置であってもよい。
設定後、テストプログラム生成装置104は、次の機能単位テンプレートが存在するかを確認する(ステップS1408)。存在する場合(ステップS1408:Yes)、テストプログラム生成装置104は、次の機能単位テンプレートを取得し(ステップS1409)、ステップS1406の処理に移行する。存在しない場合(ステップS1408:No)、テストプログラム生成装置104は、現在取得中の機能単位テンプレートは、事前準備フィールドの末尾かを確認する(ステップS1410)。事前準備フィールドの末尾である場合(ステップS1410:Yes)、テストプログラム生成装置104は、テスト手順フィールドの先頭の機能単位テンプレートを取得し(ステップS1411)、ステップS1406の処理に移行する。
事前準備フィールドの末尾でない場合(ステップS1410:No)、テスト手順フィールドの末尾であることを示している。前述の場合、テストプログラム生成装置104は、テストプログラム雛形にて、コメントとして記述されているアクタIDから、アカウント情報テーブル108の対応するアカウントID、パスワードを取得し、設定する(ステップS1412)。
次に、成功条件について設定するため、テストプログラム生成装置104は、ステップS1401にて取得した脅威名と脅威パターン成功条件テーブル106−2の脅威名フィールドが一致するレコードを選択する(ステップS1413)。続けて、テストプログラム生成装置104は、選択した機能単位テンプレートに対して、機能単位のプログラムコード生成処理を行う(ステップS1414)。ステップS1414での機能単位のプログラムコード生成処理は、成功条件用の処理を使用する。詳細は図17にて後述する。
テストプログラム生成装置104は、生成された成功条件の機能単位のプログラムコードを、テストプログラム雛形の成功条件の位置に設定する(ステップS1415)。テストプログラム雛形の成功条件の位置とは、たとえば、矩形1101にて示したテストプログラムの雛形の文字列にて、“//成功条件”文字列、“//テスト手順”文字列の次の行の位置である。または、“public void testT1() {”文字列の前の行の位置であってもよい。
図15は、機能単位テンプレート一覧テーブルへの追加処理のフローチャートである。テストプログラム生成装置104は、機能単位テンプレート一覧テーブル801にレコードを追加し、機能単位テンプレート名フィールドに選択した機能単位テンプレート名を、引数フィールドに引数部分を設定する(ステップS1501)。たとえば、脅威パターンライブラリテーブル106−1にて“認証(target_actor)”が選択された場合、テストプログラム生成装置104は、機能単位テンプレート名フィールドに“認証()”を設定する。また、テストプログラム生成装置104は、引数フィールドに“target_actor”を設定する。
レコードの追加後、テストプログラム生成装置104は、追加したレコードの引数フィールドに“target_actor”が含まれるかを確認する(ステップS1502)。含まれる場合(ステップS1502:Yes)、アクタに対する処理を行う。テストプログラム生成装置104は、“target_actor”を、脅威一覧テーブル105で選択したレコードの、対象アクタIDフィールドのアクタIDに設定する(ステップS1503)。
なお、脅威パターンライブラリテーブル106−1での“認証(target_actor(1))”のように、“target_actor”の後ろに引数“(i)”が付属するときは、引数部分は変換せず、“target_actor”の部分のみ設定する。
テストプログラム生成装置104は、設定したアクタIDが機能単位テンプレート一覧テーブル801に存在する総数を算出し(ステップS1504)、算出した総数から、追加したレコードの引数フィールドに“アクタID(総数−1)”を設定する(ステップS1505)。具体的には、アクタIDとして“a1”が設定された場合、機能単位テンプレート一覧テーブルの引数に“a1”が含まれる総数を算出し、たとえば、総数が1つであれば、“a1(0)”と設定する。
ステップS1503〜ステップS1505によって、テストプログラム生成装置104は、機能単位テンプレートごとに、攻撃者となるアクタIDを特定する。また、テストプログラム生成装置104は、アカウント情報テーブル108に、アクタIDフィールドに“アクタID(総数−1)”を設定したレコードを作成する(ステップS1506)。
ステップS1502にて、引数フィールドに“target_actor”が含まれない場合(ステップS1502:No)、テストプログラム生成装置104は、引数フィールドに“target_usecase”が含まれるかを確認する(ステップS1507)。含まれる場合(ステップS1507:Yes)、“target_usecase”を、脅威一覧テーブル105で選択したレコードの、対象ユースケースIDフィールドのユースケースIDに設定する(ステップS1508)。
設定後、テストプログラム生成装置104は、特定したユースケースIDを追加したレコードの引数フィールドに設定する(ステップS1509)。ステップS1507〜ステップS1509によって、テストプログラム生成装置104は、機能単位テンプレートごとに、攻撃者となるアクタIDを特定する。
引数フィールドに“target_usecase”が含まれない場合(ステップS1507:No)、テストプログラム生成装置104は、引数の設定を行わず、処理を終了する。ステップS1508:Noのルートは、たとえば、引数がセッション情報を示す“s”である場合である。
図16は、機能単位のプログラムコード生成処理(事前準備、テスト手順)のフローチャートである。テストプログラム生成装置104は、取得した機能単位テンプレートに対応する機能単位テンプレート一覧テーブル801のレコードを取得する(ステップS1601)。続けて、テストプログラム生成装置104は、取得したレコードの機能単位テンプレート名から、プログラムコード雛形一覧テーブル107のプログラムコードを取得する(ステップS1602)。
次に引数フィールドの反映を行う。テストプログラム生成装置104は、取得した機能単位テンプレート一覧テーブルの引数フィールドがアクタIDかを確認する(ステップS1603)。アクタIDである場合(ステップS1603:Yes)、テストプログラム生成装置104は、取得したプログラムコードに、引数をコメントとして設定する(ステップS1604)。
ステップS1604の終了後、もしくは、アクタIDでない場合(ステップS1603:No)、テストプログラム生成装置104は、取得した機能単位テンプレート一覧テーブル801の引数フィールドがユースケースIDかを確認する(ステップS1605)。ユースケースIDである場合(ステップS1605:Yes)、テストプログラム生成装置104は、取得したプログラムコード内の、アクセス対象のクラス名をユースケースIDから生成し、設定する(ステップS1606)。
ステップS1606の終了後、もしくは、ユースケースIDでない場合(ステップS1605:No)、テストプログラム生成装置104は、ステップS1604やステップS1606で設定されたプログラムコードを出力する(ステップS1607)。出力される具体例としては、機能単位のプログラムコードの一覧901でのプログラムコードとなる。
図17は、機能単位のプログラムコード生成処理(成功条件)のフローチャートである。テストプログラム生成装置104は、選択した機能単位テンプレート名から、プログラムコード雛形一覧テーブル107のプログラムコードを取得する(ステップS1701)。取得後、テストプログラム生成装置104は、取得されたプログラムコードを出力する(ステップS1702)。
以上説明したように、テストプログラム生成装置104によれば、要件・仕様に基づいた脅威情報を指定し、脅威を実行する試験パターンと試験対象を特定する。そして、試験パターンに対応した機能に、特定した試験対象を設定し、試験パターンに沿った試験の生成を行うことにより、試験の誤検出を低下させることができる。また、要件・仕様外の冗長な試験を省くことができる。また、脅威分析で抽出した脅威のパターンごとにシナリオを生成するので、分析した内容に関してはすべてテストを網羅することができる。
また、脅威を実行する試験パターンと試験対象と試験対象へ接続する攻撃者を特定し、試験パターンに対応した機能に、特定した試験対象と攻撃者を設定してもよい。これにより、攻撃者の違いに対する試験の誤検出を低下させることができる。具体的には、たとえば、セキュリティ攻撃が強制ブラウジングである場合、一般ユーザに対してシステムは、強制ブラウジングを許可しない。しかし、システム管理者に対しては、システム不具合の確認等のため、システムは強制ブラウジングを許可する仕様である場合を想定する。このような仕様の場合、システム管理者による強制ブラウジングの試験を行わないことで、試験の誤検出を低下させることができる。
また、特定された攻撃者に対し、攻撃者と攻撃者のアカウントIDとパスワードを一覧に作成する。作成した一覧を出力した結果、外部によって書き込まれた一覧を取得し、取得された一覧から攻撃者に対応するアカウントIDとパスワードを試験パターンに対応した機能に設定してもよい。これにより、アクタがアカウントIDとパスワードを変更しても、テストプログラムを容易に変更することができ、テストプログラムのメンテナンスにかかる工数を減らすことができる。
また、特定した攻撃者を、試験パターンに対応した機能に、コメントとして設定してもよい。これにより、攻撃者のアクタIDがプログラムコードに存在しない場合でも、テストプログラムを確認した際に、どのアクタIDであるかが容易にわかるため、試験結果に対する攻撃者をキーとした解析も行いやすくなる。特定の攻撃者に対してぜい弱性の検出が他の攻撃者より多く、特定の攻撃者が仕様によりぜい弱性を認められていることが後からわかった場合に、その特定の攻撃者を試験から取り除くことで、試験の誤検出を低下させることができる。
なお、本実施の形態で説明したテスト方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本テストプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本テストプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、セキュリティテストを実行させるテストプログラムであって、
セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテストの手順を定義した情報であるテスト手順情報と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースにアクセス可能なコンピュータを、
セキュリティ攻撃種別と攻撃対象との指定を受け付ける指定手段、
前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定する特定手段、
前記特定したテスト手順情報に基づいて、前記受け付けた攻撃対象に対してテストを実行し、前記受け付けたセキュリティ攻撃種別に対応する成功条件情報に基づきテストの成否を判定する実行手段
として機能させることを特徴とするテストプログラム。
(付記2)コンピュータを、
認証情報を受け付けて取得する取得手段
としてさらに機能させ、
前記実行手段は、前記特定したテスト手順情報における認証に係る手順において前記受け付けた認証情報を用いる
ことを特徴とする付記1記載のテストプログラム。
(付記3)コンピュータに、
前記テストプログラムを生成させるテストプログラム生成プログラム。
(付記4)コンピュータに、セキュリティテストを実行させるテスト方法であって、
セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテストの手順を定義した情報であるテスト手順情報と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースにアクセス可能なコンピュータが、
セキュリティ攻撃種別と攻撃対象との指定を受け付ける指定工程、
前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定する特定工程、
前記特定したテスト手順情報に基づいて、前記受け付けた攻撃対象に対してテストを実行し、前記受け付けたセキュリティ攻撃種別に対応する成功条件情報に基づきテストの成否を判定する実行工程
を実行することを特徴とするテストプログラム。
(付記5)セキュリティテストを実行するテスト装置であって、
セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテストの手順を定義した情報であるテスト手順情報と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースにアクセス可能であり、
セキュリティ攻撃種別と攻撃対象との指定を受け付ける指定手段、
前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定する特定手段、
前記特定したテスト手順情報に基づいて、前記受け付けた攻撃対象に対してテストを実行し、前記受け付けたセキュリティ攻撃種別に対応する成功条件情報に基づきテストの成否を判定する実行手段
を備えることを特徴とするテスト装置。
(付記6)セキュリティ攻撃ごとに前記セキュリティ攻撃を実行する試験パターンおよび当該試験パターンに対応する成功条件と、前記試験パターンおよび前記成功条件を構成する機能を表現するプログラムコードの雛形と、前記セキュリティ攻撃の設計対象内での攻撃対象と、を格納するデータベースにアクセス可能なコンピュータを、
任意のセキュリティ攻撃を指定する指定手段、
前記データベースの中から前記指定手段によって指定されたセキュリティ攻撃を実行する試験パターンを構成する機能ごとに、前記攻撃対象を特定する特定手段、
前記データベースを参照することにより、前記機能に対するプログラムコードの雛形を抽出し、前記特定手段によって特定された攻撃対象を前記抽出された雛形に定義されている試験対象に設定することにより、機能単位のプログラムコードを生成する設定手段、
前記試験パターンと当該試験パターンに対応する成功条件と前記設定手段によって設定された機能単位のプログラムコードとに基づいて、前記試験パターンを構成する機能が含まれている前記設計対象に関するプログラムをテストするテストプログラムを生成する生成手段、
として機能させることを特徴とするテスト生成プログラム。
(付記7)セキュリティ攻撃ごとに前記セキュリティ攻撃を実行する試験パターンおよび当該試験パターンに対応する成功条件と、前記試験パターンおよび前記成功条件を構成する機能を表現するプログラムコードの雛形と、前記セキュリティ攻撃の設計対象内での攻撃対象および当該攻撃対象へ接続する攻撃者と、を格納するデータベースにアクセス可能なコンピュータを、
任意のセキュリティ攻撃を指定する指定手段、
前記データベースの中から前記指定手段によって指定されたセキュリティ攻撃を実行する試験パターンを構成する機能ごとに、前記攻撃対象と前記攻撃者を特定する特定手段、
前記データベースを参照することにより、前記機能に対するプログラムコードの雛形を抽出し、前記特定手段によって特定された攻撃対象と攻撃者とを前記抽出された雛形に定義されている試験対象と試験者とに設定することにより、機能単位のプログラムコードを生成する設定手段、
前記試験パターンと当該試験パターンに対応する成功条件と前記設定手段によって設定された機能単位のプログラムコードとに基づいて、前記試験パターンを構成する機能が含まれている前記設計対象に関するプログラムをテストするテストプログラムを生成する生成手段、
として機能させることを特徴とするテスト生成プログラム。
(付記8)前記コンピュータを、
前記特定手段によって特定された攻撃者ごとに、当該攻撃者と当該攻撃者の識別情報と当該識別情報に対応するパスワードとを項目とする一覧を作成する作成手段、
前記作成手段によって作成された一覧を出力した結果、前記項目が書き込まれた一覧を取得する取得手段として機能させ、
前記設定手段は、
前記データベースを参照することにより、前記機能に対するプログラムコードの雛形を抽出し、前記特定手段によって特定された攻撃対象と攻撃者とを前記抽出された雛形に定義されている試験対象と試験者とに設定し、前記取得手段によって取得された一覧から前記攻撃者に対応する識別情報とパスワードとを前記雛形に定義された識別情報とパスワードとに設定することにより、機能単位のプログラムコードを生成することを特徴とする付記7に記載のテスト生成プログラム。
(付記9)前記設定手段は、
前記データベースを参照することにより、前記機能に対するプログラムコードの雛形を抽出し、前記特定手段によって特定された攻撃対象を前記抽出された雛形に定義されている試験対象に設定し、前記特定手段によって特定された攻撃者を前記抽出された雛形へコメントとして設定することにより、機能単位のプログラムコードを生成することを特徴とする付記7または8に記載のテスト生成プログラム。
(付記10)セキュリティ攻撃ごとに前記セキュリティ攻撃を実行する試験パターンおよび当該試験パターンに対応する成功条件と、前記試験パターンおよび前記成功条件を構成する機能を表現するプログラムコードの雛形と、前記セキュリティ攻撃の設計対象内での攻撃対象と、を格納するデータベースにアクセス可能であり、指定手段と特定手段と設定手段と生成手段とを備えるコンピュータが、
前記指定手段により、任意のセキュリティ攻撃を指定する指定工程、
前記特定手段により、前記データベースの中から前記指定工程によって指定されたセキュリティ攻撃を実行する試験パターンを構成する機能ごとに、前記攻撃対象を特定する特定工程、
前記設定手段により、前記データベースを参照することにより、前記機能に対するプログラムコードの雛形を抽出し、前記特定工程によって特定された攻撃対象を前記抽出された雛形に定義されている試験対象に設定することにより、機能単位のプログラムコードを生成する設定工程、
前記生成手段により、前記試験パターンと当該試験パターンに対応する成功条件と前記設定工程によって設定された機能単位のプログラムコードとに基づいて、前記試験パターンを構成する機能が含まれている前記設計対象に関するプログラムをテストするテストプログラムを生成する生成工程、
を実行することを特徴とするテスト生成方法。
(付記11)セキュリティ攻撃ごとに前記セキュリティ攻撃を実行する試験パターンおよび当該試験パターンに対応する成功条件と、前記試験パターンおよび前記成功条件を構成する機能を表現するプログラムコードの雛形と、前記セキュリティ攻撃の設計対象内での攻撃対象と、を格納するデータベースにアクセス可能であり、
任意のセキュリティ攻撃を指定する指定手段と、
前記データベースの中から前記指定手段によって指定されたセキュリティ攻撃を実行する試験パターンを構成する機能ごとに、前記攻撃対象を特定する特定手段と、
前記データベースを参照することにより、前記機能に対するプログラムコードの雛形を抽出し、前記特定手段によって特定された攻撃対象を前記抽出された雛形に定義されている試験対象に設定することにより、機能単位のプログラムコードを生成する設定手段と、
前記試験パターンと当該試験パターンに対応する成功条件と前記設定手段によって設定された機能単位のプログラムコードとに基づいて、前記試験パターンを構成する機能が含まれている前記設計対象に関するプログラムをテストするテストプログラムを生成する生成手段と、
を備えることを特徴とするテスト生成装置。
104 テストプログラム生成装置
105 脅威一覧テーブル
106−1 脅威パターンライブラリテーブル
106−2 脅威パターン成功条件テーブル
107 プログラムコード雛形一覧テーブル
108 アカウント情報テーブル
701 指定部
702 特定部
703 作成部
704 取得部
705 設定部
706 生成部
707 実行部

Claims (4)

  1. コンピュータに、セキュリティテストを実行させるテストプログラム実行プログラムであって、
    セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテスト順を定義した情報であるテスト手順情報と、試験対象が定義された該テスト手順情報に対応するテストプログラムのプログラムコードの雛形と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースにアクセス可能なコンピュータを、
    セキュリティ攻撃種別と攻撃対象との指定を受け付ける指定手段、
    前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定する特定手段、
    前記データベースを参照し、前記特定したテスト手順情報に対応するテストプログラムのプログラムコードの雛形を抽出し、前記受け付けた攻撃対象を抽出した雛形に定義された試験対象に設定する設定手段、
    前記特定したテスト手順情報と、前記特定したテスト手順情報に定義されたテスト手順に対応する成功条件情報と、前記受け付けた攻撃対象を前記試験対象に設定した雛形と、に基づいて、テストプログラムを生成する生成手段、
    前記生成したテストプログラムを実行することにより前記受け付けた攻撃対象に対してテストを実行し、ストの成否を判定する実行手段
    として機能させることを特徴とするテストプログラム実行プログラム
  2. 前記コンピュータを、
    認証情報を受け付けて取得する取得手段
    としてさらに機能させ、
    前記実行手段は、前記特定したテスト手順情報における認証に係る手順において前記受け付けた認証情報を用いる
    ことを特徴とする請求項1記載のテストプログラム実行プログラム
  3. コンピュータに、セキュリティテストを実行させるテストプログラム実行方法であって、セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテスト手順を定義した情報であるテスト手順情報と、試験対象が定義された該テスト手順情報に対応するテストプログラムのプログラムコードの雛形と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースにアクセス可能なコンピュータが、
    セキュリティ攻撃種別と攻撃対象との指定を受け付ける指定工程、
    前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定する特定工程、
    前記データベースを参照し、前記特定したテスト手順情報に対応するテストプログラムのプログラムコードの雛形を抽出し、前記受け付けた攻撃対象を抽出した雛形に定義された試験対象に設定する設定工程、
    前記特定したテスト手順情報と、前記特定したテスト手順情報に定義されたテスト手順に対応する成功条件情報と、前記受け付けた攻撃対象を前記試験対象に設定した雛形と、に基づいて、テストプログラムを生成する生成工程、
    前記生成したテストプログラムを実行することにより前記受け付けた攻撃対象に対してテストを実行し、テストの成否を判定する実行工程
    を実行することを特徴とするテストプログラム実行方法。
  4. セキュリティテストを実行するテストプログラム実行装置であって、
    セキュリティ攻撃種別と、セキュリティ攻撃種別に対応するテスト手順を定義した情報であるテスト手順情報と、試験対象が定義された該テスト手順情報に対応するテストプログラムのプログラムコードの雛形と、該テスト手順に対応するテスト成功条件を定義した情報である成功条件情報とを対応付けて格納するデータベースにアクセス可能であり、
    セキュリティ攻撃種別と攻撃対象との指定を受け付ける指定手段、
    前記データベースを参照し、前記受け付けたセキュリティ攻撃種別に対応するテスト手順情報を特定する特定手段、
    前記データベースを参照し、前記特定したテスト手順情報に対応するテストプログラムのプログラムコードの雛形を抽出し、前記受け付けた攻撃対象を抽出した雛形に定義された試験対象に設定する設定手段、
    前記特定したテスト手順情報と、前記特定したテスト手順情報に定義されたテスト手順に対応する成功条件情報と、前記受け付けた攻撃対象を前記試験対象に設定した雛形と、に基づいて、テストプログラムを生成する生成手段、
    前記生成したテストプログラムを実行することにより前記受け付けた攻撃対象に対してテストを実行し、テストの成否を判定する実行手段
    を備えることを特徴とするテストプログラム実行装置。
JP2009239751A 2009-10-16 2009-10-16 テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置 Expired - Fee Related JP5418135B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009239751A JP5418135B2 (ja) 2009-10-16 2009-10-16 テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009239751A JP5418135B2 (ja) 2009-10-16 2009-10-16 テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置

Publications (2)

Publication Number Publication Date
JP2011086201A JP2011086201A (ja) 2011-04-28
JP5418135B2 true JP5418135B2 (ja) 2014-02-19

Family

ID=44079082

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009239751A Expired - Fee Related JP5418135B2 (ja) 2009-10-16 2009-10-16 テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置

Country Status (1)

Country Link
JP (1) JP5418135B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5702265B2 (ja) * 2011-11-11 2015-04-15 株式会社日立製作所 プログラム自動生成装置およびプログラム自動生成方法
JP6656107B2 (ja) * 2016-07-25 2020-03-04 三菱電機ビルテクノサービス株式会社 監視装置用の試験装置及び試験プログラム
WO2020105156A1 (ja) 2018-11-21 2020-05-28 三菱電機株式会社 シナリオ生成装置、シナリオ生成方法およびシナリオ生成プログラム
JP2020160611A (ja) 2019-03-25 2020-10-01 クラリオン株式会社 テストシナリオ生成装置、テストシナリオ生成方法、テストシナリオ生成プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002229946A (ja) * 2001-01-30 2002-08-16 Yokogawa Electric Corp 脆弱性検査システム
JP2006031354A (ja) * 2004-07-15 2006-02-02 Renesas Technology Corp テストプログラム生成装置及びテストプログラム生成システム
US20060178858A1 (en) * 2005-02-07 2006-08-10 Microsoft Corporation Baseline architecture monitor application for distributed systems
JP2008234409A (ja) * 2007-03-22 2008-10-02 Toshiba Corp セキュリティ脅威分析支援システムおよびその方法、ならびにセキュリティ脅威分析支援プログラム
JP5082555B2 (ja) * 2007-04-11 2012-11-28 富士通株式会社 セキュリティ検査用モデル生成装置,セキュリティ検査用モデル検査装置,およびセキュリティ検査用モデル生成プログラム

Also Published As

Publication number Publication date
JP2011086201A (ja) 2011-04-28

Similar Documents

Publication Publication Date Title
Bisht et al. Waptec: whitebox analysis of web applications for parameter tampering exploit construction
CN106170793B (zh) 用于安全登录的系统、方法和设备
Yu et al. Deescvhunter: A deep learning-based framework for smart contract vulnerability detection
US20180198773A1 (en) Systems and methods for automated detection of login sequence for web form-based authentication
Pan et al. Gui-guided test script repair for mobile apps
CN103455749B (zh) 协作系统、其协作方法以及信息处理系统
CN101242279A (zh) 用于web系统的自动化渗透性测试系统和方法
JP2008257701A (ja) 認証システム
CN101268468A (zh) 认证脚本代码源的方法和设备
KR101780764B1 (ko) 서버 보안 강화를 위한 접근통제 시스템의 비인가 명령어 통제 방법
JP5418135B2 (ja) テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置
Xu et al. Guider: Gui structure and vision co-guided test script repair for android apps
US20060089809A1 (en) Data processing apparatus
Noseevich et al. Detecting insufficient access control in web applications
KR20200082932A (ko) 광학 문자 판독 장치를 포함하는 로봇 프로세스 자동화 시스템
JP2008210043A (ja) サーバ装置及び変換ルール作成プログラム
Okun et al. The second static analysis tool exposition (SATE) 2009
JP2018054503A (ja) 情報処理装置、情報処理プログラム、情報処理システム及び情報処理方法
Sinigaglia et al. Mufasa: A tool for high-level specification and analysis of multi-factor authentication protocols
JP2011154445A (ja) 認証装置、認証方法、および認証プログラム
JP5534514B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP2013030017A (ja) テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム
Alvi et al. Security Pattern Detection Through Diagonally Distributed Matrix Matching
Ghorbanzadeh et al. Detecting application logic vulnerabilities via finding incompatibility between application design and implementation
Cheh et al. Design and user study of a constraint-based framework for business logic flaw discovery

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130930

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131022

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131104

LAPS Cancellation because of no payment of annual fees