(57)【要約】【課題】ネットワークを介した攻撃に対する堅牢性を向上させることのできる情報処理装置、アクセス制御方法、及びプログラムの提供を目的とする。【解決手段】ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手段と、前記処理要求ごとに前記処理実行手段に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段と、前記処理実行手段によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手段と、前記処理実行手段によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手段による呼び出しに応じ、前記アクセスの内容と前記第一の定義情報とに基づいて前記アクセスの許否を判定する第一の判定手段とを有する。【選択図】図６
2010113566.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手段と、
前記処理要求ごとに前記処理実行手段に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段と、
前記処理実行手段によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手段と、
前記処理実行手段によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手段による呼び出しに応じ、前記アクセスの内容と前記第一の定義情報とに基づいて前記アクセスの許否を判定する第一の判定手段とを有する情報処理装置。
【請求項２】
前記処理要求ごとに過去に実行されている必要がある処理を示す情報が定義された第二の定義情報を管理する第二の定義情報管理手段と、
前記処理要求に応じた処理の終了の検知に基づく前記処理挿入制御手段による呼び出しに応じ、当該処理の識別情報を処理履歴管理手段に記録する処理履歴記録手段と、
前記処理要求に対する処理の開始の検知に基づく前記処理挿入制御手段による呼び出しに応じ、前記第二の定義情報と前記処理履歴管理手段に記録されている処理の識別情報とに基づいて、当該処理要求に応じた処理の実行の可否を判定する第二の判定手段とを有する請求項１記載の情報処理装置。
【請求項３】
前記処理実行手段は、前記処理要求に応じて状態を遷移させ、
前記第一の定義情報には、前記状態ごとに前記アクセス権限が定義されている請求項１又は２記載の情報処理装置。
【請求項４】
コンピュータが実行するアクセス制御方法であって、
ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手順と、
前記処理実行手順によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手順と、
前記処理実行手順によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手順による呼び出しに応じ、前記アクセスの内容と、前記処理要求ごとに前記処理実行手順に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段とに基づいて前記アクセスの許否を判定する第一の判定手順とを有するアクセス制御方法。
【請求項５】
コンピュータに、
ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手順と、
前記処理実行手順によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手順と、
前記処理実行手順によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手順による呼び出しに応じ、前記アクセスの内容と、前記処理要求ごとに前記処理実行手順に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段とに基づいて前記アクセスの許否を判定する第一の判定手順とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、アクセス制御方法、及びプログラムに関し、特にネットワークを介した要求に応じて処理を実行する情報処理装置、アクセス制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ネットワーク技術及びＷｅｂ技術等の発達により、オンラインショッピング等、ネットワークを介して様々なサービスの利用が可能とされている。斯かるサービスの提供形態は、サービスの提供者側のコスト削減等に寄与すると共に、サービスの利用者の利便性を著しく向上させている。
【特許文献１】特開２０００−２１５１６５号公報
【特許文献２】特開２００２−１４９４２２号公報
【特許文献３】特開平１０−２５４７８３号公報
【特許文献４】特開２０００−１９４６２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来、Ｗｅｂアプリケーション等、ネットワークを介して利用されるアプリケーションには、インジェクション攻撃やバッファーオーバーフロー攻撃に対する脆弱性が存在するといった問題がある。また、不正な状態遷移違反による攻撃（例えば、ＣＳＲＦ（Cross Site Request Forgeries））に対する脆弱性が存在するといった問題がある。
【０００４】
本発明は、上記の点に鑑みてなされたものであって、ネットワークを介した攻撃に対する堅牢性を向上させることのできる情報処理装置、アクセス制御方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００５】
そこで上記課題を解決するため、情報処理装置は、ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手段と、前記処理要求ごとに前記処理実行手段に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段と、前記処理実行手段によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手段と、前記処理実行手段によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手段による呼び出しに応じ、前記アクセスの内容と前記第一の定義情報とに基づいて前記アクセスの許否を判定する第一の判定手段とを有する。
【０００６】
このような情報処理装置では、ネットワークを介した攻撃に対する堅牢性を向上させることができる。
【発明の効果】
【０００７】
本発明によれば、ネットワークを介した攻撃に対する堅牢性を向上させることのできる情報処理装置、アクセス制御方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を示す図である。同図において、Ｗｅｂサーバ装置１０及びクライアント装置２０は、ＬＡＮ（Local Area Network）又はインターネット等のネットワーク３０（有線又は無線の別は問わない。）を介して接続されている。Ｗｅｂサーバ装置１０は、Ｗｅｂアプリケーションによって所定のサービスをネットワークを介して提供するコンピュータである。クライアント装置２０は、Ｗｅｂブラウザを有し、Ｗｅｂサーバ装置１０によって提供されるサービスをＷｅｂブラウザを介してユーザに利用させるコンピュータである。なお、Ｗｅｂサーバ装置１０によって提供されるサービスは、必ずしもＷｅｂアプリケーションによって実現されなくてもよい。一般的なクライアント・サーバシステムにおけるサーバプログラムであってもよい。
【０００９】
図２は、本発明の実施の形態におけるＷｅｂサーバ装置のハードウェア構成例を示す図である。図２のＷｅｂサーバ装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５とを有する。
【００１０】
Ｗｅｂサーバ装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１１】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってＷｅｂサーバ装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１２】
図３は、本実施の形態におけるＷｅｂアプリケーションの状態遷移を説明するための図である。本実施の形態において、Ｗｅｂアプリケーション１１は、オンラインショッピングサービスを提供するＷｅｂアプリケーションである。Ｗｅｂアプリケーション１１は、クライアント２０からの処理要求に応じて、クレジット与信、購入確認、購入の順で状態を遷移させる。具体的には、クレジットカードの与信を要求するＨＴＴＰリクエストをクライアント装置２０より受信すると（Ｓ１１）、Ｗｅｂアプリケーション１１は、クレジットの与信を実行し（Ｓ１２）、購入確認用のＷｅｂページ（購入確認ページ）をクライアント装置２０に返信する（Ｓ１３）。続いて、購入確認ページに基づいて購入確認を示すＨＴＴＰリクエストをクライアント装置２０より受信すると、Ｗｅｂアプリケーション１１は、購入確認処理を行い（Ｓ１５）、購入用のＷｅｂページ（購入ページ）を返信する（Ｓ１６）。続いて、購入ページに基づいて購入を確定するＨＴＴＰリクエストをクライアント装置２０より受信すると（Ｓ１７）、Ｗｅｂアプリケーション１１は、購入情報をデータベース１５に記録する（Ｓ１８）。
【００１３】
上記のような状態遷移（処理手順）に基づいて処理を実行するＷｅｂアプリケーション１１に対して、例えば、以下のような攻撃が予想される。
【００１４】
図４は、予想される攻撃の第一の例を示す図である。同図は、ＣＳＲＦ（Cross Site Request Forgeries）等、Ｗｅｂアプリケーション１１の状態遷移を無視した攻撃を示す。すなわち、クレジット与信（Ｓ１２）、及び購入確認（Ｓ１５）の状態（処理）を経ずに、いきなり購入（Ｓ１７）が実行される。この場合、不正なデータがデータベース１５に書き込まれてしまう可能性がある。
【００１５】
また、図５は、予想される攻撃の第二の例を示す図である。同図は、いわゆるインジェクション攻撃を示す。すなわち、本来、データベース１５への書き込みが行われない状態（購入確認（Ｓ１５））において、クライアント装置２０からの不正な処理要求（Ｓ１４）に応じてデータベース１５への不正な書き込みが行われてしまうというものである。
【００１６】
以上のような攻撃を防御すべく、本実施の形態のＷｅｂサーバ装置１０は以下のようなソフトウェア構成を有する。図６は、本実施の形態におけるＷｅｂサーバ装置のソフトウェア構成例を示す図である。同図において、Ｗｅｂサーバ装置１０は、Ｗｅｂアプリケーション１１、フック部１２、権限検査部１３、及び権限検査コード生成部１４等を有する。これら各部は、Ｗｅｂサーバ装置１０のＣＰＵ１０４に処理を実行させることによりその機能を実現する。
【００１７】
Ｗｅｂアプリケーション１１は、図３に示したＷｅｂアプリケーション１１と同じである。すなわち、図３において説明した状態遷移（クレジット与信→購入確認→購入）に基づいてクライアント装置２０より要求されるサービス（処理）を実行する。同図においてＷｅｂアプリケーション１１は、履歴管理部１１１を含む。履歴管理部１１１は、メモリ装置１０１を用いてＷｅｂアプリケーション１１の状態遷移の履歴情報（処理の実行履歴）をクライアント装置１０のユーザごと（セッションごと）に管理する。履歴管理部１１１は、例えば、Ｓｅｓｓｉｏｎオブジェクト（Ｊａｖａ（登録商標）の場合、ＨｔｔｐＳｅｓｓｉｏｎオブジェクト）を利用してもよい。
【００１８】
権限検査部１３は、クライアント装置２０からの処理要求に応じたＷｅｂアプリケーション１１による処理の実行の可否を判定する。具体的には、クライアント装置２０からの処理要求が上記したような攻撃に該当する可能性を判断する。同図において権限検査部１３は、履歴検証部１３１、アクセス権検証部１３２、及び履歴更新部１３３等を含む。履歴検証部１３１は、履歴管理部１１１に基づいて、過去の状態遷移の履歴を検証することによりＷｅｂアプリケーション１１による処理の実行の可否を判定する。アクセス権検証部１３２は、状態（処理要求）ごとに予め定義された各種リソース（例えば、ネットワーク、ファイルシステム上のファイル、データベース１５等）へのアクセス権限に基づいてＷｅｂアプリケーション１１による処理の実行の可否（リソースへのアクセスの許否）を判定する。履歴更新部１３３は、Ｗｅｂアプリケーション１１による処理が正常に実行されたときに、履歴管理部１１１における履歴情報を更新する。
【００１９】
フック部１２は、Ｗｅｂアプリケーション１１のソースコードを修正することなく、Ｗｅｂアプリケーション１１によって実行される処理手順の予め定められたタイミングを検知し（フックし）、予め定められた処理を挿入させる（割り込ませる）ための制御を行う。同図においてフック部１２は、メソッド開始点フック部１２１、リソースアクセスフック部１２２、及びメソッド終了点フック部１２３等を含む。メソッド開始点フック部１２１は、予め定められたメソッド（Ｗｅｂアプリケーション１１におけるメソッド又は関数。以下、メソッドで統一する。）の開始点（開始時）をフックし、履歴検証部１３１に処理を実行させる。リソースアクセスフック部１２２は、メソッド実行中におけるリソースへのアクセス要求をフックし、アクセス権検証部１３２に処理を実行させる。メソッド終了点フック部１２３は、予め定められたメソッドの終了点（終了時）をフックし、履歴更新部１３３に処理を実行させる。
【００２０】
なお、フック部１２は、例えば、アスペクト指向プログラミング（ＡＯＰ：Aspect Oriented Programming）によって実装することができる。アスペクト指向プログラミングによれば、Ｗｅｂアプリケーション１１のソースコードに影響を与えることなく、各タイミングをフックすることができる。アスペクト指向言語は、所定のものに限定されないが、例えば、ＡｓｐｅｃｔＪ、ＡｓｐｅｃｔＲ、ＪＢｏｓｓＡＯＰ等が挙げられる。
【００２１】
権限検査コード生成部１４は、フック部１２及び権限検査部１３のソースコードを自動生成する。したがって、権限検査コード生成部１４は、Ｗｅｂアプリケーション１１の実行環境の構築時に処理を実行する。
【００２２】
図７は、権限検査コード生成部を説明するための図である。同図に示されるように権限検査コード生成部１４は、状態定義一覧情報１４１及び権限検査コードテンプレート１４２を入力情報とし、当該入力情報に基づいて権限検査部１３のソースコードである権限検査コード１４３を生成する。なお、権限検査コード１４３は、Ｗｅｂアプリケーション１１の状態（クレジット与信、購入確認、購入）ごとに生成される。
【００２３】
図８は、状態定義一覧情報の構成例を示す図である。同図に示されるように、状態定義一覧情報１４１は、Ｗｅｂアプリケーション１１の状態ごとに、状態名、メソッド名、必須履歴、及び権限等が定義された情報であり、補助記憶装置１０２に記録されている。状態名は、各状態を識別するための名称である。同図では、図３に合わせて、クレジット与信、購入確認、及び購入の３つの状態の状態名が示されている。メソッド名は、Ｗｅｂアプリケーション１１が各状態に遷移するためのメソッドの名前である。各メソッドは、クライアント装置２０からの処理要求に応じて呼び出される。
【００２４】
必須履歴は、各状態へ遷移するために同一セッションにおいて過去に（既に）実行されている必要がある処理を示す情報（過去に遷移している必要がある状態を示す情報）である。同図では、過去に呼び出されているメソッド名によって必須履歴が定義されている。例えば、本実施の形態ではクレジット与信の前に状態は存在しないため、クレジット与信に対する必須履歴は無い。購入確認については、クレジット与信の実行が前提とされているため、クレジット与信に係るメソッド（＠ｃｒｅｄｉｔ）が必須履歴とされている。また、購入については、クレジット与信及び購入確認の実行が前提とされているため、それぞれに係るメソッド（＠ｃｒｅｄｉｔ、＠ｃｏｎｆｉｒｍ）が必須履歴とされている。
【００２５】
権限は、Ｗｅｂアプリケーション１１に対して許可するリソースへのアクセス権限であり、状態ごとに最低限必要なアクセス権限が定義される。例えば、クレジット与信であれば、カード会社との通信が必要であるため、ネット（ネットワーク）のｓｅｎｄ／ｒｅｃｖ（送受信）の権限が与えられ、ファイル及びＤＢ（データベース）へのアクセス権限は与えられていない。また、購入確認については、ネット、ファイル、及びＤＢの全てに対するアクセス権限が与えられていない。また、購入については、データベース１５へのアクセスが必要であるため、ＤＢに対するｒｅａｄ／ｗｒｉｔｅ（読み書き）権限が与えられている。
【００２６】
一方、権限検査コードテンプレート１４２は、権限検査コード１４３の雛形としてのソースコードであり、状態ごとに異なる部分が変数化又はパラメータ化された（すなわち、空白とされた）ものである。変数化された部分には、状態定義一覧情報１４１における定義が埋め込まれる。権限検査コードテンプレート１４２は、予め作成（コーディング）され、補助記憶装置１０２にファイルとして保存される。
【００２７】
図９は、権限検査コードテンプレートの処理手順を説明するためのフローチャートである。同図において、［］で囲まれた文字列は変数化された部分である。
【００２８】
ステップＳ１０１は、［メソッド名］に合致するメソッドの開始点をメソッド開始点フック部１２１にフックさせる。続いて、ステップＳ１０２は、履歴管理部１１１からの履歴情報の取得を履歴検証部１３１に実行させる。続いて、ステップＳ１０３は、取得された履歴情報が［必須履歴］に一致するか否かの判定を履歴検証部１３１に実行させる。両者が一致しない場合（Ｓ１０３でＮｏ）、例外の発生を履歴検証部１３１に実行させる。両者が一致した場合（Ｓ１０３でＹｅｓ）、処理の継続を許可する。
【００２９】
ステップＳ１０４は、［メソッド名］に合致するメソッドの実行中におけるリソースへのアクセス要求をリソースアクセスフック部１２２にフックさせる。続いて、ステップＳ１０５は、アクセスの内容（アクセス対象とされているリソースの種別（ネット、ファイル、ＤＢ）とアクセスするために要求されている権限）をアクセス権検証部１３２に取得させる。続いて、ステップＳ１０６は、取得されたアクセスの内容が［権限］を満たすか否かをアクセス権検証部１３２に判定させる。アクセスの内容が［権限］を満たさない場合、すなわち、［権限］において認められていないリソース又はアクセスが要求されている場合（Ｓ１０６でＮｏ）、例外の発生をアクセス権検証部１３２に実行させる。一方、アクセスの内容が［権限］を満たす場合（Ｓ１０６でＹｅｓ）、処理の継続を許可する。
【００３０】
ステップＳ１０７は、［メソッド名］に合致するメソッドの終了点をメソッド終了点フック部１２３にフックさせる。続いて、ステップＳ１０８は、［メソッド名］の履歴管理部１３１への登録を履歴更新部１３３に実行させる。
【００３１】
上記のような状態定義一覧情報１４１及び権限検査コードテンプレート１４２に基づいて権限検査コード生成部１４が実行する処理手順について説明する。図１０は、権限検査コード生成部による処理手順を説明するためのフローチャートである。同図の処理は、例えば、ユーザによる指示入力に応じて実行される。
【００３２】
ステップＳ２０１において、状態定義一覧情報１４１より１つの状態に関する定義（図８における１行分。以下、「カレント定義」という。）を取得する。続いて、権限検査コードテンプレート１４２を補助記憶装置１０２よりメモリ装置１０３に読み込む（Ｓ２０２）。続いて、読み込まれた権限検査コードテンプレート１４２における［メソッド名］の部分をカレント定義のメソッド名によって置換する（Ｓ２０３）。続いて、権限検査コードテンプレート１４２における［必須履歴］の部分をカレント定義の必須履歴によって置換する（Ｓ２０４）。続いて、権限検査コードテンプレート１４２における［権限］の部分をカレント定義の権限によって置換する（Ｓ２０４）。続いて、変数化された部分が置換された権限検査コード１４３を権限検査コードテンプレート１４２とは異なるファイル名によって補助記憶装置１０２に書き出す（Ｓ２０６）。ステップＳ２０１〜Ｓ２０６までの処理が状態定義一覧情報１４１に定義されている全ての状態に対して実行されると（Ｓ２０７でＹｅｓ）、処理を終了する。
【００３３】
以上の処理のよって状態ごとに権限検査コード１４３が生成される。例えば、図１１は、権限検査コードの一例を示す図である。同図に示される権限検査コード１４３は、購入状態に対応する権限検査コード１４３である。したがって、［メソッド名］は、「＠ｐｕｒｃａｈｓｅ」に置換されている。［必須履歴］は、「＠ｃｒｅｄｉｔ、＠ｃｏｎｆｉｒｍ」に置換されている。［権限］は、「ネット：ｓｅｎｄ／ｒｅｃｖ」に置換されている。
【００３４】
このように自動生成される権限検査コード１４３をコンパイル等することにより、フック部１２及び権限検査部１３を実現するバイナリコードが生成される。したがって、図３におけるステップＳ１１のクレジット与信要求に応じてＷｅｂアプリケーション１１の＠ｃｒｅｄｉｔが呼び出されたとき、ステップＳ１４の購入確認要求に応じてＷｅｂアプリケーション１１の＠ｃｏｎｆｉｒｍメソッドが呼び出されたとき、又はステップＳ１６の購入要求に応じてＷｅｂアプリケーション１１の＠ｐｕｒｃｈａｓｅメソッドが呼び出されたときに、それぞれの状態に対応する権限検査コード１４３に基づいて、フック部１２及び権限検査部１３によって各要求に対する処理の実行の可否が判定される。なお、コンパイル等によって状態定義一覧情報１４１は、フック部１２又は権限検査部１３のプログラムロジック内に組み込まれる。したがって、この場合、第一の定義情報管理手段及び第二の定義情報管理手段は権限検査部１３に含まれる。
【００３５】
以上のように生成されるフック部１２及び権限検査部１３によって、図４や図５に示されるような攻撃は以下のように防御される。
【００３６】
図１２は、第一の例の攻撃に対する防御の例を示す図である。同図は図４に示される攻撃、すなわち、クレジット与信、購入確認を経ずにいきなり購入要求がクライアント装置２０より受信された場合の処理手順を示す。この場合、購入状態に対応する権限検査コード１４３（すなわち、図１１に示した権限検査コード１４３）に基づいて処理が実行される。図１２において、太い実線で示される矢印は、実行されるパス（処理手順の経路）を示し、破線で示される矢印は実行されないパスを示す。
【００３７】
具体的には、購入要求の受信に応じＷｅｂアプリケーション１１の＠ｐｕｒｃｈａｓｅメソッドが呼び出されると、メソッド開始点フック部１２１が当該メソッドの呼び出しを検知し、履歴検証部１３１を呼び出す（Ｓ１０１ａ）。続いて、履歴検証部１３１は、履歴管理部１１１より履歴情報を取得する（Ｓ１０２ａ）。続いて履歴検証部１３１は、取得された履歴情報は「＠ｃｒｅｄｉｔ、＠ｃｏｎｆｉｒｍ」に一致するか否かを判定する（Ｓ１０３ａ）。ここでは、クレジット与信（＠ｃｒｅｄｉｔ）及び購入（＠ｃｒｅｄｉｔ）を経ていないという前提なので、取得された履歴情報は、「＠ｃｒｅｄｉｔ、＠ｃｏｎｆｉｒｍ」に一致しない（Ｓ１０３ａでＮｏ）。したがって、履歴検証部１３１は、例外を発生させる。Ｗｅｂアプリケーション１１は、当該例外をキャッチすると、＠ｐｕｒｃｃｈａｓｅメソッドの実行を中止する。その結果、図４に示される攻撃は防御される。
【００３８】
また、図１３は、第二の例の攻撃に対する防御の例を示す図である。同図は図５に示される攻撃、すなわち、クレジット与信の実行後、購入確認要求において不正なデータベース書き込みが指示されている場合の処理手順を示す。この場合、購入確認状態に対応する権限検査コード１４３に基づいて処理が実行される。
【００３９】
具体的には、購入確認要求の受信に応じＷｅｂアプリケーション１１の＠ｃｏｎｆｉｒｍメソッドが呼び出されると、メソッド開始点フック部１２１が当該メソッドの呼び出しを検知し、履歴検証部１３１を呼び出す（Ｓ１０１ｂ）。続いて、履歴検証部１３１は、履歴管理部１１１より履歴情報を取得する（Ｓ１０２ｂ）。続いて履歴検証部１３１は、取得された履歴情報は「＠ｃｒｅｄｉｔ」に一致するか否かを判定する（Ｓ１０３ｂ）。ここでは、クレジット与信は実行されているという前提なので、両者は一致する（Ｓ１０３ｂでＹｅｓ）。続いて、＠ｃｏｎｆｉｒｍメソッド内でＷｅｂアプリケーション１１によって実行される処理においてリソースへのアクセス要求が発生すると、リソースアクセスフック部１２２はアクセス権検証部１３２を呼び出す（Ｓ１０４ｂ）。続いて、アクセス権検証部１３２は、アクセスの内容を取得する（Ｓ１０５ｂ）。ここでは、データベース１５に対する書き込みであることが取得される。続いて、アクセス権検証部１３２は、データベース１５に対する書き込み権限と「−」（いずれのリソースにもアクセス権限無し）とを比較することにより、データベース１５に対する書き込み権限は認められないと判定する（Ｓ１０６ｂでＮｏ）。そこで、アクセス権検証部１３２は、例外を発生させる。Ｗｅｂアプリケーション１１は、当該例外をキャッチすると、＠ｃｏｎｆｉｒｍメソッドの実行を中止する。その結果、図５に示される攻撃は防御される。
【００４０】
上述したように、本実施の形態におけるＷｅｂサーバ装置１０によれば、ネットワークを介した攻撃を適切に防御することができる。具体的には、要求された処理が正当な状態遷移か否かを過去の状態遷移の履歴をチェックすることにより状態遷移に違反した処理要求を無視することができる。よって、クライアント装置２０による不正な状態遷移の操作を防止することができる。
【００４１】
また、Ｗｅｂアプリケーション１１の一つのプロセス（ＯＳによって起動されるプロセス）に対して、状態ごとにアクセス権限を変化させるため、常に必要最小限にアクセス権限を制限することができる。その結果、各状態では予定していないリソースへのアクセスを制限することができる。例えば、認証時においてユーザ情報データベースの参照のみを許可することで、全ユーザ情報の参照や削除等のＳＱＬ（Structured Query Language）インジェクション攻撃を防御することができる。
【００４２】
また、防御の仕組みを実現する実装（権限検査コード１４３）は、状態ごとに細分化されたアクセス制御情報を状態定義一覧情報１４１において定義することで自動的に生成される。したがって、既存のソースコードを修正する必要はなく、防御機構を簡便に実現することができる。
【００４３】
なお、本実施の形態では、権限検査コードテンプレート１４２における変数化された部分をＷｅｂアプリケーション１１の実行環境の構築時に解決する例について説明したが、当該部分を実行時に解決するようにしてもよい。具体的には、状態ごとに権限検査コード１４３を生成するのではなく、権限検査コードテンプレート１４２を共通の権限検査コード１４３として扱い、権限検査コード１４３に対してコンパイル等を行う。変数化された部分については、フック部１２又は権限検査部１３の処理の実行時において、フック部１２又は権限検査部１３が状態定義一覧情報１４１に定義された値に置換すればよい。そうすることにより、状態定義一覧情報１４１の編集に応じたコンパイル等の作業を不要とすることができる。なお、この場合、補助記憶装置１０２において状態定義一覧情報１４１を記録した部分が、第一の定義情報管理手段、第二の定義情報管理手段に相当する。
【００４４】
また、権限検査コード生成部１４は、Ｗｅｂアプリケーション１１の実行時には必要ではないため、Ｗｅｂサーバ装置１０以外のコンピュータに実装されてもよい。すなわち、権限検査コード１４３の生成は、Ｗｅｂサーバ装置１０以外のコンピュータに実行させてもよい。
【００４５】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００４６】
以上の説明に関し、更に以下の項を開示する。
（付記１）
ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手段と、
前記処理要求ごとに前記処理実行手段に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段と、
前記処理実行手段によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手段と、
前記処理実行手段によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手段による呼び出しに応じ、前記アクセスの内容と前記第一の定義情報とに基づいて前記アクセスの許否を判定する第一の判定手段とを有する情報処理装置。
（付記２）
前記処理要求ごとに過去に実行されている必要がある処理を示す情報が定義された第二の定義情報を管理する第二の定義情報管理手段と、
前記処理要求に応じた処理の終了の検知に基づく前記処理挿入制御手段による呼び出しに応じ、当該処理の識別情報を処理履歴管理手段に記録する処理履歴記録手段と、
前記処理要求に対する処理の開始の検知に基づく前記処理挿入制御手段による呼び出しに応じ、前記第二の定義情報と前記処理履歴管理手段に記録されている処理の識別情報とに基づいて、当該処理要求に応じた処理の実行の可否を判定する第二の判定手段とを有する付記１記載の情報処理装置。
（付記３）
前記処理実行手段は、前記処理要求に応じて状態を遷移させ、
前記第一の定義情報には、前記状態ごとに前記アクセス権限が定義されている付記１又は２記載の情報処理装置。
（付記４）
前記処理実行手段は、前記処理要求に応じて状態を遷移させ、
前記第二の定義情報には、前記状態ごとに過去に遷移している必要がある状態を示す情報が定義されている付記２記載の情報処理装置。
（付記５）
コンピュータが実行するアクセス制御方法であって、
ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手順と、
前記処理実行手順によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手順と、
前記処理実行手順によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手順による呼び出しに応じ、前記アクセスの内容と、前記処理要求ごとに前記処理実行手順に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段とに基づいて前記アクセスの許否を判定する第一の判定手順とを有するアクセス制御方法。
（付記６）
前記処理要求に応じた処理の終了の検知に基づく前記処理挿入制御手段による呼び出しに応じ、当該処理の識別情報を処理履歴管理手段に記録する処理履歴記録手順と、
前記処理要求に対する処理の開始の検知に基づく前記処理挿入制御手順による呼び出しに応じ、前記処理要求ごとに過去に実行されている必要がある処理を示す情報が定義された第二の定義情報を管理する第二の定義情報管理手段と、前記処理履歴管理手段に記録されている処理の識別情報とに基づいて、当該処理要求に応じた処理の実行の可否を判定する第二の判定手順とを有する付記５記載のアクセス制御方法。
（付記７）
前記処理実行手順は、前記処理要求に応じて状態を遷移させ、
前記第一の定義情報には、前記状態ごとに前記アクセス権限が定義されている付記５又は６記載のアクセス制御方法。
（付記８）
前記処理実行手順は、前記処理要求に応じて状態を遷移させ、
前記第二の定義情報には、前記状態ごとに過去に遷移している必要がある状態を示す情報が定義されている付記６記載のアクセス制御方法。
（付記９）
コンピュータに、
ネットワークを介して受信される処理要求に応じ要求された処理を実行する処理実行手順と、
前記処理実行手順によって実行される処理に対して予め定義されたタイミングを検知し、該タイミングにおいて所定の処理の挿入を制御する処理挿入制御手順と、
前記処理実行手順によるリソースに対するアクセス要求が発生の検知に基づく前記処理挿入制御手順による呼び出しに応じ、前記アクセスの内容と、前記処理要求ごとに前記処理実行手順に対するリソースへのアクセス権限が定義された第一の定義情報を管理する第一の定義情報管理手段とに基づいて前記アクセスの許否を判定する第一の判定手順とを実行させるためのプログラム。
（付記１０）
前記処理要求に応じた処理の終了の検知に基づく前記処理挿入制御手段による呼び出しに応じ、当該処理の識別情報を処理履歴管理手段に記録する処理履歴記録手順と、
前記処理要求に対する処理の開始の検知に基づく前記処理挿入制御手順による呼び出しに応じ、前記処理要求ごとに過去に実行されている必要がある処理を示す情報が定義された第二の定義情報を管理する第二の定義情報管理手段と、前記処理履歴管理手段に記録されている処理の識別情報とに基づいて、当該処理要求に応じた処理の実行の可否を判定する第二の判定手順とを有する付記９記載のプログラム。
（付記１１）
前記処理実行手順は、前記処理要求に応じて状態を遷移させ、
前記第一の定義情報には、前記状態ごとに前記アクセス権限が定義されている付記９又は１０記載のプログラム。
（付記１２）
前記処理実行手順は、前記処理要求に応じて状態を遷移させ、
前記第二の定義情報には、前記状態ごとに過去に遷移している必要がある状態を示す情報が定義されている付記１０記載のプログラム。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の形態におけるシステム構成例を示す図である。
【図２】本発明の実施の形態におけるＷｅｂサーバ装置のハードウェア構成例を示す図である。
【図３】本実施の形態におけるＷｅｂアプリケーションの状態遷移を説明するための図である。
【図４】予想される攻撃の第一の例を示す図である。
【図５】予想される攻撃の第二の例を示す図である。
【図６】本実施の形態におけるＷｅｂサーバ装置のソフトウェア構成例を示す図である。
【図７】権限検査コード生成部を説明するための図である。
【図８】状態定義一覧情報の構成例を示す図である。
【図９】権限検査コードテンプレートの処理手順を説明するためのフローチャートである。
【図１０】権限検査コード生成部による処理手順を説明するためのフローチャートである。
【図１１】権限検査コードの一例を示す図である。
【図１２】第一の例の攻撃に対する防御の例を示す図である。
【図１３】第二の例の攻撃に対する防御の例を示す図である。
【符号の説明】
【００４８】
１０      Ｗｅｂサーバ装置
１１      Ｗｅｂアプリケーション
１２      フック部
１３      権限検査部
１４      権限検査コード生成部
２０      クライアント装置
３０      ネットワーク
１００    ドライブ装置
１０１    記録媒体
１０２    補助記憶装置
１０３    メモリ装置
１０４    ＣＰＵ
１０５    インタフェース装置
１２１    メソッド開始点フック部
１２２    リソースアクセスフック部
１２３    メソッド終了点フック部
１３１    履歴検証部
１３２    アクセス権検証部
１３３    履歴更新部
Ｂ        バス
【図１】
2010113566.tif 000003
【図２】
2010113566.tif 000004
【図３】
2010113566.tif 000005
【図４】
2010113566.tif 000006
【図５】
2010113566.tif 000007
【図６】
2010113566.tif 000008
【図７】
2010113566.tif 000009
【図８】
2010113566.tif 000010
【図９】
2010113566.tif 000011
【図１０】
2010113566.tif 000012
【図１１】
2010113566.tif 000013
【図１２】
2010113566.tif 000014
【図１３】
2010113566.tif 000015