(57)【要約】【課題】アプリケーションの動作履歴に拠ることなく、当該アプリケーションが必要とするアクセス権限をセキュリティポリシとして設定することのできる技術を提供する。【解決手段】本発明に係るセキュリティポリシ生成プログラムは、セキュアＯＳ上で動作するアプリケーションの実行ファイル、アプリケーションの設定ファイル、アプリケーションを構成するファイルリストのうち少なくともいずれかを読み込み、これらファイルに関連してセキュアＯＳ上のいずれのアクセス権限が必要となるかを解析する。また、その解析結果を、セキュアＯＳのセキュリティポリシ候補として出力する。【選択図】図１
2012048609.tif 000002
【特許請求の範囲】
【請求項１】
セキュアＯＳのセキュリティポリシを生成する処理をコンピュータに実行させるプログラムであって、前記コンピュータに、
前記セキュアＯＳ上で動作するアプリケーションの実行ファイル、前記アプリケーションの設定パラメータを記述した設定ファイル、前記アプリケーションを構成するファイルリストを記述した構成ファイルのうち少なくともいずれかを読み込む読込ステップと、
前記実行ファイルを実行するとき、前記実行ファイルが前記設定パラメータを用いるとき、前記実行ファイルが前記ファイルリスト内に記述されているファイルを使用するときの少なくともいずれかにおいて、前記セキュアＯＳ上のいずれのアクセス権限が必要となるかを解析するアクセス解析ステップと、
前記アクセス解析ステップの結果を前記セキュリティポリシの候補として出力するステップと、
を実行させることを特徴とするセキュリティポリシ生成プログラム。
【請求項２】
前記アクセス解析ステップでは、前記コンピュータに、
前記実行ファイルを逆アセンブルしてアセンブリ言語に変換するステップと、
前記アセンブリ言語から前記セキュアＯＳ上のネットワークリソースにアクセスする処理を抽出するステップと、
前記ネットワークリソースにアクセスするためのアクセス権限を、前記セキュアＯＳ上で必要となるアクセス権限として抽出するステップと、
を実行させることを特徴とする請求項１記載のセキュリティポリシ生成プログラム。
【請求項３】
前記アクセス解析ステップでは、前記コンピュータに、
前記実行ファイルに含まれるシンボルを抽出するシンボル抽出ステップと、
アプリケーションの実行ファイルに含まれるシンボルに対応する関数を実行する際に前記セキュアＯＳ上で必要となるアクセス権限を記述したシンボルパーミッション対応テーブルを読み込むステップと、
前記シンボルパーミッション対応テーブルが記述しているアクセス権限のうち前記シンボル抽出ステップで抽出したシンボルに対応するものを検索する検索ステップと、
前記検索ステップの結果得られたアクセス権限を、前記セキュアＯＳ上で必要となるアクセス権限として特定するステップと、
を実行させることを特徴とする請求項１または２記載のセキュリティポリシ生成プログラム。
【請求項４】
前記アクセス解析ステップでは、前記コンピュータに、
前記アプリケーションが使用するファイルとして前記設定ファイルが指定しているファイル、または前記構成ファイルが記述しているファイルリストが指定するファイルに対して、前記セキュアＯＳ上で読取アクセス権限が必要となるものと判定させる
ことを特徴とする請求項１から３のいずれか１項記載のセキュリティポリシ生成プログラム。
【請求項５】
請求項１から４のいずれか１項記載のセキュリティポリシ生成プログラムと、
前記セキュリティポリシ生成プログラムが生成するセキュリティポリシを用いるセキュアＯＳと、
を備えたことを特徴とするセキュアＯＳコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のセキュリティポリシを生成する技術に関するものである。
【背景技術】
【０００２】
一般に、コンピュータのＯＳ上のリソース（ファイル、ネットワークポートなど）に対するアクセス権限は、そのリソースの所有者が設定する。また、全ての権限をもつ特権ユーザが存在し、ＯＳ管理者がその特権ユーザとしてリソースのアクセス権限を設定することもできる。
【０００３】
これに対し、セキュアＯＳとは、全権を持つ特権ユーザを排除し、プロセス毎（例えばアプリケーションの実行ファイル毎）に最小限のアクセス権限を付与することができるようにしたＯＳである。プロセス毎にどんなアクセス権限を持つかについての設定は、セキュリティポリシファイルというファイルに記載されている。
【０００４】
セキュアＯＳでは、上記機能により、プロセスが必要なリソースにだけアクセスすることがＯＳによって保証されている。そのため、プロセスにセキュリティホールがあり、攻撃者に当該プロセスが乗っ取られたとしても、当該プロセスに起因するセキュリティ被害を最小限に留めることができる。
【０００５】
セキュアＯＳ上でプロセスに必要最小限の権限を割り当てるには、セキュリティポリシを適切に設定する必要がある。しかし、アクセス権限の設定項目が膨大になることが多く、その作業は煩雑である。そこで、セキュリティポリシを設定する作業をサポートする技術が研究されている。例えば、下記特許文献１および非特許文献１のような技術が提案されている。
【０００６】
特許文献１は、アプリケーションの動作ログからセキュリティポリシ設定を自動生成する技術を記載している。非特許文献１は、セキュリティポリシの記述を単純化する技術を記載している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−１２８６２３号公報
【非特許文献】
【０００８】
【非特許文献１】"SEEdit: SELinux Security Policy Configuration System with Higher Level Language"，Proc. of 23rd Large Installation System Administration Conference (LISA '09)，pp.107-117 (11, 2009)，ＵＲＬ：http://www.usenix.org/event/lisa09/tech/full_papers/nakamura.pdf（２０１０年８月１０日取得）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
セキュアＯＳのセキュリティポリシを適切に設定するためには、アプリケーションが使用する可能性のある全てのアクセス権限について、アクセス可否を設定する必要がある。
【００１０】
上記特許文献１に記載の技術では、アプリケーションを実際に動作させて動作履歴を監査ログなどの形態で取得し、その履歴を参考にしてアプリケーションが必要とするアクセス許可を設定する。この手法では、アプリケーションが使用する可能性のあるアクセス権限を網羅するためにアプリケーションを繰り返しテスト動作させる必要があり、動作履歴を取得するための作業工数が多大になる可能性がある。また、セキュアＯＳの仕様によっては、パフォーマンス劣化を防ぐため、監査ログを簡易記述することがあり、この場合は監査ログから完全な動作履歴を得ることが難しくなる。
【００１１】
本発明は、上記のような課題を解決するためになされたものであり、アプリケーションの動作履歴に拠ることなく、当該アプリケーションが必要とするアクセス権限をセキュリティポリシとして設定することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係るセキュリティポリシ生成プログラムは、セキュアＯＳ上で動作するアプリケーションの実行ファイル、アプリケーションの設定ファイル、アプリケーションを構成するファイルリストのうち少なくともいずれかを読み込み、これらファイルに関連してセキュアＯＳ上のいずれのアクセス権限が必要となるかを解析する。また、その解析結果を、セキュアＯＳのセキュリティポリシ候補として出力する。
【発明の効果】
【００１３】
本発明に係るセキュリティポリシ生成プログラムによれば、アプリケーションに関連するファイルを解析することにより、アプリケーションを実行するときにいずれのアクセス権限が必要となるかを把握することができる。これにより、アプリケーションを実行しなくとも、セキュアＯＳ上で必要となるアクセス権限が分かる。また、そのアクセス権限をセキュリティポリシの候補として提示するので、セキュリティポリシを設定する作業負担を軽減することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１に係るセキュアＯＳコンピュータ１００の構成図である。
【図２】セキュリティポリシファイル１２０の構成とデータ例を示す図である。
【図３】アプリケーションパッケージ１４０の構成図である。
【図４】アプリケーション設定ファイル１４２の記述例を示す図である。
【図５】アプリケーション構成ファイル１４３の記述例を示す図である。
【図６】セキュリティポリシ生成プログラム１３０の機能構成図である。
【図７】ネットワークパーミッションパターンファイル１３６の構成とデータ例を示す図である。
【図８】シンボルパーミッション対応テーブル１３７の構成とデータ例を示す。
【図９】逆アセンブラ部１３１がアプリケーションの実行ファイルを逆アセンブルしてアセンブリ命令に変換した結果の例を示す図である。
【図１０】逆アセンブラ部１３１がアプリケーションの実行ファイルを逆アセンブルしてシンボルを抽出した結果の例を示す図である。
【図１１】セキュリティポリシ生成プログラム１３０の全体動作フローである。
【図１２】ステップＳ１１０２の詳細フローを示す図である。
【図１３】ステップＳ１１０３の詳細フローを示す図である。
【図１４】ステップＳ１１０４の詳細フローを示す図である。
【図１５】ステップＳ１１０５において設定提示部１３５が画面表示するファイルアクセス制御ポリシ設定画面１５００の１例を示す図である。
【図１６】ステップＳ１１０５において設定提示部１３５が画面表示するネットワークアクセス制御ポリシ設定画面１６００の１例を示す図である。
【図１７】ステップＳ１１０５において設定提示部１３５が画面表示するＣａｐａｂｉｌｉｔｙアクセス制御ポリシ設定画面１７００の１例を示す図である。
【発明を実施するための形態】
【００１５】
＜実施の形態１＞
図１は、本発明の実施形態１に係るセキュアＯＳコンピュータ１００の構成図である。セキュアＯＳコンピュータ１００は、セキュアＯＳを搭載したコンピュータであり、セキュアＯＳ１１０、セキュリティポリシファイル１２０、セキュリティポリシ生成プログラム１３０を備える。必要に応じて、アプリケーションプログラムおよび必要な設定ファイルなどを格納したアプリケーションパッケージ１４０をインストールすることもできる。さらには、インストール済みのアプリケーションパッケージを管理するパッケージ管理プログラム１５０を備えていてもよい。
【００１６】
セキュアＯＳコンピュータ１００は、図１に示した構成の他、セキュアＯＳ１１０および上記各プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備える。また、セキュアＯＳ１１０、上記各プログラム、セキュリティポリシファイル１２０などのデータを格納するＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの記憶装置、メモリ、ネットワークインターフェースなどの構成を適宜備える。
【００１７】
以下では、説明の便宜上、セキュアＯＳ１１０、上記各プログラムなどのプログラムを動作主体として説明する場合があるが、これらのプログラムを実際に実行するのはＣＰＵなどの演算装置であることを付言しておく。
【００１８】
セキュアＯＳ１１０は、セキュアＯＳコンピュータ１００のＯＳである。セキュアＯＳ１１０は、セキュリティポリシファイル１２０の記述にしたがって、セキュアＯＳコンピュータ１００が備えるリソースに対するアクセスを制御する。セキュリティポリシファイル１２０の例については後述する。
【００１９】
セキュリティポリシ生成プログラム１３０は、アプリケーションパッケージ１４０に含まれているファイルを解析し、セキュリティポリシファイル１２０またはその雛形を生成する。詳細は後述する。
【００２０】
アプリケーションパッケージ１４０は、アプリケーション実行ファイル、アプリケーション設定ファイル、アプリケーション構成ファイルなどを一纏めにパッケージ化したファイルである。典型的には、インストーラパッケージの形態で構成されている。アプリケーションパッケージ１４０の内部的構成については後述する。
【００２１】
パッケージ管理プログラム１５０は、セキュアＯＳコンピュータ１００にインストールされているアプリケーションパッケージを管理し、設定変更、アンインストールなどの処理を実行する。
【００２２】
オペレータ２００は、セキュアＯＳコンピュータ１００が備えるキーボード、マウスなどを用いて、セキュリティポリシ生成プログラム１３０を実行するようにセキュアＯＳコンピュータ１００へ指示する。また、セキュリティポリシ生成プログラム１３０が提示するセキュリティポリシファイル１２０の雛形を修正するなどして、セキュリティポリシファイル１２０の内容を最終的に確定する。オペレータ２００が修正作業に用いる画面などについては後述する。
【００２３】
図２は、セキュリティポリシファイル１２０の構成とデータ例を示す図である。ここでは説明の便宜上、テーブル形式のデータ例を示したが、データ形式はこれに限られるものではない。
【００２４】
セキュリティポリシファイル１２０は、サブジェクトフィールド１２１、オブジェクトフィールド１２２、パーミッションフィールド１２３を有する。
【００２５】
サブジェクトフィールド１２１は、セキュアＯＳ１１０上のアクセス権限を用いて動作するプログラムの実行ファイル名を記述する。本フィールドの例として、アプリケーションパッケージ１４０内に含まれるアプリケーション実行ファイルのインストール先ファイルパスを記述したものが挙げられる。
【００２６】
オブジェクトフィールド１２２は、サブジェクトフィールド１２１が記述しているプログラムがアクセスする、セキュアＯＳ１１０上のリソースを記述する。ここでいうリソースとは、セキュアＯＳ１１０上のファイル、フォルダ、ネットワークポート、後述するＣａｐａｂｉｌｉｔｙと呼ばれる特殊なアクセス権限、などのことをいう。すなわち、アクセスするためにセキュアＯＳ１１０上のアクセス権限が必要となる対象を指す。
【００２７】
パーミッションフィールド１２３は、サブジェクトフィールド１２１が記述しているプログラムが、オブジェクトフィールド１２２が記述しているリソースに対して有するアクセス権限を記述する。本フィールドの例については以下で説明する。
【００２８】
１行目のデータ例は、プログラム「／ｓｂｉｎ／ｈｔｔｐｄ」がファイル「／ｖａｒ／ｗｗｗ／＊」に対して有するアクセス権限を記述している。本行はファイルに対するアクセス権限を記述しているため、アクセス権限の例として、「読込許可（ｒｅａｄ）」、「書込許可（ｗｒｉｔｅ）」などが考えられる。
【００２９】
２行目のデータ例は、プログラム「／ｓｂｉｎ／ｈｔｔｐｄ」がネットワークリソース「ＴＣＰ８０番ポート」に対して有するアクセス権限を記述している。ネットワークリソースに対するアクセス権限は、ファイルやフォルダに対するアクセス権限と類似しているが、呼称が異なる。ここでは、ＴＣＰ８０番ポートに対して「ｂｉｎｄ（外部からの接続リクエストを待機する）」することができる旨を例示した。
【００３０】
３行目のデータ例は、プログラム「／ｓｂｉｎ／ｆｔｐｄ」が、Ｃａｐａｂｉｌｉｔｙ「ｓｅｔｕｉｄ」を実行することができる旨を記述している。Ｃａｐａｂｉｌｉｔｙとは、セキュアＯＳ１１０が備えるカーネル機能（システムコール）をアプリケーションプログラムから直接呼び出すことのできる機能をいう。カーネル機能を直接呼び出すと、通常のアプリケーションが備えている機能を超えた動作を実行することができるため、Ｃａｐａｂｉｌｉｔｙに対するアクセス権限は慎重に設定する必要がある。Ｃａｐａｂｉｌｉｔｙの例として、以下が挙げられる。
【００３１】
（Ｃａｐａｂｉｌｉｔｙの例１：ｓｅｔｕｉｄ）
ｓｅｔｕｉｄは、アプリケーションを実行するユーザＩＤを一時的に他のユーザＩＤへ変更する機能である。ここでいう他のユーザＩＤには、特権ユーザＩＤが含まれる場合もある。
（Ｃａｐａｂｉｌｉｔｙの例２：ｃｈｒｏｏｔ）
ｃｈｒｏｏｔは、アプリケーションにとってのルートディレクトリを変更する機能である。ルートディレクトリを変更されたアプリケーションは、その範囲外のファイル等にはアクセスすることができなくなる。
【００３２】
図３は、アプリケーションパッケージ１４０の構成図である。アプリケーションパッケージ１４０は、セキュアＯＳ１１０上で動作するアプリケーションをセキュアＯＳコンピュータ１００にインストールするためのファイルであり、アプリケーション実行ファイル１４１、アプリケーション設定ファイル１４２、アプリケーション構成ファイル１４３を内部的に含む。
【００３３】
アプリケーション実行ファイル１４１は、当該アプリケーションの本体となる実行形式のファイルである。アプリケーション設定ファイル１４２は、アプリケーション実行ファイル１４１を実行する際に用いられる設定パラメータなどを記述している。アプリケーション構成ファイル１４３は、アプリケーション実行ファイル１４１をインストールするときにともにインストールするファイル、または改変を加えるファイルの一覧、当該アプリケーションの名称、当該アプリケーションのバージョン、などのアプリケーション全体に関する情報を記述している。アプリケーション設定ファイル１４２とアプリケーション構成ファイル１４３の例は、後述の図４〜図５で説明する。
【００３４】
図４は、アプリケーション設定ファイル１４２の記述例を示す図である。１行目は、当該アプリケーションがキャッシュファイルを格納するフォルダパスを記述している。２行目は、当該アプリケーションが接続を待ち受けるＴＣＰポート番号を記述している。
【００３５】
図５は、アプリケーション構成ファイル１４３の記述例を示す図である。１行目は、当該アプリケーションの名称を記述している。２行目は、当該アプリケーションのバージョン番号を記述している。３行目以降は、当該アプリケーションをインストールすることによって新たにインストールまたは改変等されるファイルのリストを記述している。パッケージ管理プログラム１５０は、これらファイルのインストール、アンインストール、内容改変などの処理を実施する。
【００３６】
以上、セキュアＯＳコンピュータ１００の構成について説明した。次に、セキュリティポリシ生成プログラム１３０の詳細構成について説明する。
【００３７】
図６は、セキュリティポリシ生成プログラム１３０の機能構成図である。セキュリティポリシ生成プログラム１３０は、逆アセンブラ部１３１、ファイルアクセス解析部１３２、ネットワークアクセス解析部１３３、Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４、設定提示部１３５、ネットワークパーミッションパターンファイル１３６、シンボルパーミッション対応テーブル１３７を有する。これらは同一のプログラムファイル内に構成してもよいし、個別のサブモジュールなどの形態で構成してもよい。
【００３８】
逆アセンブラ部１３１は、アプリケーションの実行ファイルをアセンブリ言語に変換する機能、アプリケーションの実行ファイルが内部的に使用するシンボルを抽出する機能を有する。シンボルとは、実行ファイルが関数を呼び出す際に内部的に使用する関数名などの識別子のことである。実行ファイルがどのシンボルを使用しているかを解析することにより、当該実行ファイルがどの関数を使用しているかが分かる。この関数のなかには、システムコールのようなＣａｐａｂｉｌｉｔｙアクセスに属する関数も含まれる。
【００３９】
ファイルアクセス解析部１３２は、アプリケーションパッケージ１４０に含まれるアプリケーション実行ファイル１４１が動作するとき、どのファイルにアクセスする可能性があるかを推測する。詳細は後述の図１２で説明する。
【００４０】
ネットワークアクセス解析部１３３は、アプリケーションパッケージ１４０に含まれるアプリケーション実行ファイル１４１が動作するとき、どのネットワークリソースにアクセスする可能性があるかを推測する。詳細は後述の図１３で説明する。
【００４１】
Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４は、プリケーションパッケージ１４０に含まれるアプリケーション実行ファイル１４１が動作するとき、どのＣａｐａｂｉｌｉｔｙアクセス権限を使用する可能性があるかを推測する。詳細は後述の図１４で説明する。
【００４２】
設定提示部１３５は、ファイルアクセス解析部１３２、ネットワークアクセス解析部１３３、Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４の解析結果を、セキュアＯＳコンピュータ１００が備えるディスプレイ上に画面表示する。画面イメージについては後述の図１５〜図１７で改めて説明する。
【００４３】
ネットワークパーミッションパターンファイル１３６は、アプリケーションの実行ファイルがネットワークリソースを使用する際に実施すると推測される動作パターンを記述している。ネットワークアクセス解析部１３３は、本ファイルが記述している動作パターンと、逆アセンブラ部１３１またはファイルアクセス解析部１３２の処理結果から得られる動作パターンとをマッチングさせ、該当するものを抽出する。詳細は後述の図７で説明する。
【００４４】
シンボルパーミッション対応テーブル１３７は、アプリケーションの実行ファイルが使用するシンボルと、当該シンボルを使用する際に必要となるＣａｐａｂｉｌｉｔｙアクセス権限との対応関係を記述するテーブルである。Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４は、逆アセンブラ部１３１の処理結果から得られるシンボルと、本テーブルが記述しているシンボルとをマッチングさせ、該当するものを抽出する。詳細は後述の図８で説明する。
【００４５】
図７は、ネットワークパーミッションパターンファイル１３６の構成とデータ例を示す図である。ネットワークパーミッションパターンファイル１３６は、パターンフィールド１３６１、パターン名フィールド１３６２を有する。
【００４６】
パターンフィールド１３６１は、アプリケーションの実行ファイルがネットワークリソースにアクセスする際に実行するアセンブリ命令のパターンを記述している。また、アプリケーション設定ファイル１４２に記述され得る設定パラメータのうち、実行ファイルがネットワークリソースにアクセスする際に用いるものを記述している。
【００４７】
パターン名フィールド１３６２は、各パターンを識別するために設けた名称を記述している。
【００４８】
以下、図７の各行に示す例について説明する。
（図７：１行目：ポート番号）
図７の１行目は、実行ファイルがＵＮＩＸ（登録商標）のｈｔｏｎｓ（ｈｏｓｔ  ｔｏ  ｎｅｔｗｏｒｋ  ｓｈｏｒｔ）関数を呼び出してポート番号を設定しているアセンブリ命令パターンを記述している。アプリケーションの実行ファイルがこれらアセンブリ命令を実行するときは、ネットワークリソース（ここではポート番号）にアクセスするものと判断することができる。なお、可変するパラメータは＜＞を用いて一般化することとした。本例ではポート番号は実行毎に可変であるため、＜数字＞と記述した。以下の例においても同様である。
【００４９】
（図７：２行目：ｂｉｎｄシステムコール）
図７の２行目は、実行ファイルがｂｉｎｄシステムコールを呼び出して、ネットワークからの接続を待ち受けるアセンブリ命令パターンを記述している。ネットワークからの接続を待ち受ける場合、ネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。したがって、実行ファイルに本パターンが含まれる場合、これを抽出することとした。
【００５０】
（図７：３行目：ｃｏｎｅｃｔシステムコール）
図７の３行目は、実行ファイルがｃｏｎｎｅｃｔシステムコールを呼び出して、外部ネットワークに接続するアセンブリ命令パターンを記述している。外部ネットワークに接続する場合、ネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。
【００５１】
（図７：４行目：ｓｏｃｋｅｔシステムコール）
図７の４行目は、実行ファイルがｓｏｃｋｅｔシステムコールを呼び出して、これから用いる通信プロトコルを設定するアセンブリ命令パターンを記述している。＜数字＞の部分がプロトコルを示す。ＯＳがＬｉｎｕｘである場合、＜数字＞の部分が１であればＴＣＰ、２であればＵＤＰを設定することを示す。通信プロトコルを設定する場合、ネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。
【００５２】
（図７：５行目：ポート待ち受け）
図７の５行目は、実行ファイルが所定のＴＣＰポートに外部端末から接続してくるのを待機するアプリケーション設定パラメータ例を記述している。本行は、アプリケーション設定ファイル１４２内に記述されるパターンを例示したものである。実行ファイルがポートを開いて接続を待ち受ける場合、そのネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。なお、本行はネットワークからの接続を待ち受けるパターンを記述する点で２行目と共通するが、２行目が実行ファイル内のアセンブリ命令パターンであるのに対し、本行はアプリケーション設定ファイル１４２内の記述パターンである点が異なる。
【００５３】
ネットワークアクセス解析部１３３は、本ファイルが記述している動作パターンと、逆アセンブラ部１３１の処理結果から得られるアセンブリ命令（またはアプリケーション設定ファイル１４２内の記述）とをマッチングし、両者が合致する部分を抽出する。両者が合致する部分が存在する場合、当該実行ファイルはネットワークリソースにアクセスすることが分かるので、後のステップでアクセス権限を設定するため、抽出しておくこととしたものである。
【００５４】
図８は、シンボルパーミッション対応テーブル１３７の構成とデータ例を示す。シンボルパーミッション対応テーブル１３７は、シンボルフィールド１３７１とパーミッションフィールド１３７２を有する。シンボルパーミッション対応テーブル１３７は、実行ファイル内に含まれるシンボルが指定する関数を実行する際に、どのＣａｐａｂｉｌｉｔｙアクセス権限が必要になるかを記述している。シンボル名は必ずしもＣａｐａｂｉｌｉｔｙアクセス権限そのものを示していないため、本テーブルを用いて両者の対応関係を明示することとした。
【００５５】
Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４は、本ファイルが記述している対応関係と、逆アセンブラ部１３１の処理結果から得られるアセンブリ命令とをマッチングし、両者が合致する部分を抽出する。両者が合致する部分が存在する場合、当該実行ファイルはＣａｐａｂｉｌｉｔｙアクセス権限を使用することが分かるので、後のステップでアクセス権限の使用可否を設定するため、抽出しておくこととしたものである。
【００５６】
なお、ここではシンボルとＣａｐａｂｉｌｉｔｙアクセス権限の対応関係のみを例示したが、シンボルに対応する関数を実行する際にセキュアＯＳ上のその他のアクセス権限が必要となる場合には、その対応関係を記述するようにしてもよい。
【００５７】
図９は、逆アセンブラ部１３１がアプリケーションの実行ファイルを逆アセンブルしてアセンブリ命令に変換した結果の例を示す図である。ネットワークアクセス解析部１３３は、本図に示すアセンブリ命令のうち、ネットワークパーミッションパターンファイル１３６が記述しているアセンブリ命令パターンに合致する部分を抽出する。
【００５８】
図１０は、逆アセンブラ部１３１がアプリケーションの実行ファイルを逆アセンブルしてシンボルを抽出した結果の例を示す図である。Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４は、本図に示すシンボルのうち、シンボルパーミッション対応テーブル１３７が記述しているシンボルパターンに合致する部分を抽出する。
【００５９】
以上、セキュリティポリシ生成プログラム１３０の詳細構成について説明した。次に、セキュリティポリシ生成プログラム１３０の動作について説明する。
【００６０】
図１１は、セキュリティポリシ生成プログラム１３０の全体動作フローである。以下、図１１の各ステップについて説明する。なおここでは、アプリケーションパッケージ１４０に含まれている各ファイルを解析対象とする場合を例示するが、いずれか１つまたは２つのみを解析対象とすることもできる。例えば、アプリケーション実行ファイル１４１単体を解析することもできる。
【００６１】
（図１１：ステップＳ１１０１）
セキュリティポリシ生成プログラム１３０の逆アセンブラ部１３１は、アプリケーションパッケージ１４０に含まれるアプリケーション実行ファイル１４１を逆アセンブルし、図９〜図１０で例示した解析結果を得る。
【００６２】
（図１１：ステップＳ１１０２）
セキュリティポリシ生成プログラム１３０のファイルアクセス解析部１３２は、アプリケーション設定ファイル１４２とアプリケーション構成ファイル１４３を解析する。本ステップの詳細は、後述の図１２で説明する。
【００６３】
（図１１：ステップＳ１１０３）
セキュリティポリシ生成プログラム１３０のネットワークアクセス解析部１３３は、ネットワークパーミッションパターンファイル１３６を用いて、ステップＳ１１０１の処理結果とアプリケーション構成ファイル１４３を解析する。本ステップの詳細は、後述の図１３で説明する。
【００６４】
（図１１：ステップＳ１１０４）
セキュリティポリシ生成プログラム１３０のＣａｐａｂｉｌｉｔｙアクセス解析部１３４は、シンボルパーミッション対応テーブル１３７を用いて、ステップＳ１１０１の処理結果を解析する。本ステップの詳細は、後述の図１４で説明する。
【００６５】
（図１１：ステップＳ１１０５）
セキュリティポリシ生成プログラム１３０の設定提示部１３５は、後述の図１５〜図１７で例示するように、セキュリティポリシファイル１２０を設定する画面を表示する。同画面には、ステップＳ１１０１〜Ｓ１１０４の結果を反映する。
【００６６】
図１２は、ステップＳ１１０２の詳細フローを示す図である。以下、図１２の各ステップについて説明する。
（図１２：ステップＳ１１０２＿０１）
ファイルアクセス解析部１３２は、アプリケーション設定ファイル１４２を解析し、アプリケーションがアクセスする可能性のあるファイルのリストを抽出する。例えば、「／」で始まる文字列はファイル名を記述しているものと判断し、抽出する。図４で示した記述例では、ファイル名として「／ｖａｒ／ｃａｈｃｅ／ｆｏｏ」が抽出される。
【００６７】
（図１２：ステップＳ１１０２＿０２）
ファイルアクセス解析部１３２は、アプリケーション構成ファイル１４３を解析し、アプリケーションをインストールした後に当該アプリケーションがアクセスする可能性のあるファイルのリストを抽出する。抽出基準はステップＳ１１０２＿０１と同じでよい。図５で示した記述例では、ファイル名として「／ｓｂｉｎ／ｆｏｏ」「／ｅｔｃ／ｆｏｏ／ｆｏｏ．ｃｏｎｆ」「／ｖａｒ／ｌｏｇ／ｆｏｏ」が抽出される。
【００６８】
図１３は、ステップＳ１１０３の詳細フローを示す図である。以下、図１３の各ステップについて説明する。
（図１３：ステップＳ１１０３＿０１）
ネットワークアクセス解析部１３３は、ステップＳ１１０１の解析結果と、ネットワークパーミッションパターンファイル１３６が記述しているアセンブリ命令パターンとが合致する部分を抽出する。図７に示したネットワークパーミッションパターンファイル１３６の例と、図９に示した逆アセンブル結果例とを比較すると、以下の結果が得られる。
【００６９】
（図１３：ステップＳ１１０３＿０１：抽出例）
図９の５〜６行目における「ｍｏｖｌ」「ｃａｌｌ」は、図７の４行目のｓｏｃｋｅｔ関数を呼び出すパターンに合致する。図９の７〜８行目における「ｍｏｖｌ」「ｃａｌｌ」は、図７の１行目のｈｔｏｎｓ関数を呼び出すパターンに合致する。図９の最終行における「ｃａｌｌ」は、図７の２行目のｂｉｎｄシステムコールを呼び出すパターンに合致する。
【００７０】
（図１３：ステップＳ１１０３＿０２）
ネットワークアクセス解析部１３３は、アプリケーション設定ファイル１４２と、ネットワークパーミッションパターンファイル１３６が記述している記述パターンとが合致する部分を抽出する。図７に示したネットワークパーミッションパターンファイル１３６の例と、図４に示したアプリケーション設定ファイル１４２記述例とを比較すると、以下の結果が得られる。
【００７１】
（図１３：ステップＳ１１０３＿０２：抽出例）
図４の２行目における「Ｌｉｓｔｅｎ  ｏｎ  ９９９９」は、図７の５行目に記述している、ネットワーク接続を待ち受けるパターン（ｂｉｎｄシステムコールを使用するパターン）に合致する。
【００７２】
図１４は、ステップＳ１１０４の詳細フローを示す図である。以下、図１４の各ステップについて説明する。
（図１４：ステップＳ１１０４＿０１）
Ｃａｐａｂｉｌｉｔｙアクセス解析部１３４は、ステップＳ１１０１の解析結果と、シンボルパーミッション対応テーブル１３７が記述しているシンボルパターンとが合致する部分を抽出する。図８に示したシンボルパーミッション対応テーブル１３７の例と、図１０に示した逆アセンブル結果例とを比較すると、以下の結果が得られる。
【００７３】
（図１４：ステップＳ１１０４＿０１：抽出例）
図１０の４行目における「ｃｈｒｏｏｔ」は、図８の１行目のｃｈｒｏｏｔシステムコールを呼び出すパターンに合致する。
【００７４】
図１５は、ステップＳ１１０５において設定提示部１３５が画面表示するファイルアクセス制御ポリシ設定画面１５００の１例を示す図である。ファイルアクセス制御ポリシ設定画面１５００は、ステップＳ１１０２における解析結果、すなわちアプリケーション設定ファイル１４２とアプリケーション構成ファイル１４３の解析結果を画面表示する。
【００７５】
ファイルアクセス制御ポリシ設定画面１５００は、チェックボックス１５０１、ファイルリスト１５０２、パーミッション選択ボックス１５０３、適用ボタン１５０４を有する。画面上部は、後述する図１６〜図１７に示す画面に切り替えるためのタブを有する。
【００７６】
チェックボックス１５０１は、ファイルリスト１５０２に表示されているファイルに対するパーミッション設定をセキュリティポリシファイル１２０に反映するか否かを選択する。反映する場合はチェックをＯＮにする。
【００７７】
ファイルリスト１５０２は、ファイルアクセス解析部１３２がアプリケーション設定ファイル１４２とアプリケーション構成ファイル１４３から抽出したファイルの一覧を表示する。ここに表示されているファイルリストは、図１１の動作フローで解析したアプリケーションがアクセスする可能性があるものである。
【００７８】
パーミッション選択ボックス１５０３は、ファイルリスト１５０２に表示されているファイルに対して、図１１の動作フローで解析したアプリケーションにどのアクセス権限を付与するかを選択するための選択肢を有する。アプリケーションは、ファイルリスト１５０２に表示されているファイルに対して少なくとも読込アクセスするであろうと想定されるので、デフォルト値は「Ｒｅａｄ」となっている。
【００７９】
アクセス権限適用ボタン１５０４は、ファイルアクセス制御ポリシ設定画面１５００上の設定をセキュリティポリシファイル１２０に反映するようセキュリティポリシ生成プログラム１３０に指示するボタンである。
【００８０】
図１６は、ステップＳ１１０５において設定提示部１３５が画面表示するネットワークアクセス制御ポリシ設定画面１６００の１例を示す図である。ネットワークアクセス制御ポリシ設定画面１６００は、ステップＳ１１０３における解析結果、すなわちアプリケーション実行ファイル１４１とアプリケーション設定ファイル１４２の解析結果を画面表示する。
【００８１】
ネットワークアクセス制御ポリシ設定画面１６００は、プロトコル表示部１６０１、ポート番号表示部１６０２、パーミッション表示部１６０３、チェックボックス１６０４、適用ボタン１６０５を有する。画面上部は、図１５または後述する図１７に示す画面に切り替えるためのタブを有する。
【００８２】
プロトコル表示部１６０１、ポート番号表示部１６０２、パーミッション表示部１６０３は、ステップＳ１１０３の解析結果として、図１１の動作フローで解析したアプリケーションがアクセスする可能性があるネットワークリソースの一覧を表示する。
【００８３】
設定者２００は、セキュリティポリシファイル１２０に反映するネットワークリソースをチェックボックス１６０４で選択し、適用ボタン１６０５を押下する。セキュリティポリシ生成プログラム１３０は、選択されているネットワークリソースに対するアクセスを許可する旨を、セキュリティポリシファイル１２０に反映する。
【００８４】
図１７は、ステップＳ１１０５において設定提示部１３５が画面表示するＣａｐａｂｉｌｉｔｙアクセス制御ポリシ設定画面１７００の１例を示す図である。Ｃａｐａｂｉｌｉｔｙアクセス制御ポリシ設定画面１７００は、ステップＳ１１０４における解析結果、すなわちアプリケーション実行ファイル１４１の解析結果を画面表示する。
【００８５】
Ｃａｐａｂｉｌｉｔｙアクセス制御ポリシ設定画面１７００は、チェックボックス１７０１、ｃａｐａｂｉｌｉｔｙ表示部１７０２、適用ボタン１７０３を有する。画面上部は、図１５〜図１６に示す画面に切り替えるためのタブを有する。
【００８６】
チェックボックス１７０１は、ｃａｐａｂｉｌｉｔｙ表示部１７０２に表示されているＣａｐａｂｉｌｉｔｙアクセスに対するパーミッション設定をセキュリティポリシファイル１２０に反映するか否かを選択する。反映する場合はチェックをＯＮにする。ｃａｐａｂｉｌｉｔｙ表示部１７０２は、ステップＳ１１０４で抽出したＣａｐａｂｉｌｉｔｙアクセスのリストを表示する。
【００８７】
設定者２００は、セキュリティポリシファイル１２０に反映するＣａｐａｂｉｌｉｔｙアクセス権限をチェックボックス１７０１で選択し、適用ボタン１７０３を押下する。セキュリティポリシ生成プログラム１３０は、選択されているネットワークリソースに対するアクセスを許可する旨を、セキュリティポリシファイル１２０に反映する。
【００８８】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係るセキュリティポリシ生成プログラム１３０は、アプリケーション実行ファイル１４１、アプリケーション設定ファイル１４２、アプリケーション構成ファイル１４３の少なくともいずれかを読み取り、アプリケーションが使用する可能性のあるアクセス権限を抽出する。これにより、アプリケーションを実行することなく、必要となるアクセス権限設定の候補を提示することができるので、セキュリティポリシファイル１２０の設定に係る作業負担を軽減することができる。
【００８９】
また、本実施形態１に係るセキュリティポリシ生成プログラム１３０は、アプリケーション実行ファイル１４１を逆アセンブルしてネットワークパーミッションパターンファイル１３６と比較し、ネットワークリソースにアクセスするアセンブリ命令パターンを抽出する。これにより、アプリケーションを実行することなく、ネットワークリソースに対して必要となるアクセス権限の候補を提示することができる。
【００９０】
また、本実施形態１に係るセキュリティポリシ生成プログラム１３０は、アプリケーション実行ファイル１４１に含まれるシンボルを抽出し、そのシンボルに対応する関数を実行する際に必要となるＣａｐａｂｉｌｉｔｙアクセス権限を、シンボルパーミッション対応テーブル１３７によって特定する。これにより、アプリケーションを実行することなく、必要となるＣａｐａｂｉｌｉｔｙアクセス権限の候補を提示することができる。
【００９１】
また、本実施形態１に係るセキュリティポリシ生成プログラム１３０は、アプリケーション設定ファイル１４２またはアプリケーション構成ファイル１４３内に記述されているファイル名を抽出し、アプリケーションはそのファイルに対するアクセス権限が必要になるものと仮定して提示する。これにより、アプリケーションを実行することなく、ファイルに対して必要となるアクセス権限の候補を提示することができる。
【００９２】
＜実施の形態２＞
実施形態１では、セキュアＯＳ１１０がＵＮＩＸベースのＯＳであることを想定し、ｃｈｒｏｏｔやｓｅｔｕｉｄなどのＵＮＩＸシステムコールを例に挙げて説明した。しかし本発明に係る手法は、任意のセキュアＯＳについて適用することができる。
【００９３】
ＯＳが異なれば、システムコールに相当するものは異なるし、シンボル名やネットワークリソースの表現形態も異なる可能性がある。しかし、アプリケーション実行ファイル１４１、アプリケーション設定ファイル１４２、アプリケーション構成ファイル１４３の少なくともいずれかを解析し、必要となるアクセス権限の候補を抽出する点は、いずれのＯＳについても応用することができる。
【００９４】
また、実施形態１では、アプリケーションパッケージ１４０またはその内部に含まれるファイルを解析する例を示したが、既にインストールされている実行ファイルなどについても同様の手法を用いて解析することができる。
【符号の説明】
【００９５】
１００：セキュアＯＳコンピュータ、１１０：セキュアＯＳ、１２０：セキュリティポリシファイル、１２１：サブジェクトフィールド、１２２：オブジェクトフィールド、１２３：パーミッションフィールド、１３０：セキュリティポリシ生成プログラム、１３１：逆アセンブラ部、１３２：ファイルアクセス解析部、１３３：ネットワークアクセス解析部、１３４：Ｃａｐａｂｉｌｉｔｙアクセス解析部、１３５：設定提示部、１３６：ネットワークパーミッションパターンファイル、１３６１：パターンフィールド、１３６２：パターン名フィールド、１３７：シンボルパーミッション対応テーブル、１３７１：シンボルフィールド、１３７２：パーミッションフィールド、１４０：アプリケーションパッケージ、１４１：アプリケーション実行ファイル、１４２：アプリケーション設定ファイル、１４３：アプリケーション構成ファイル、１５０：パッケージ管理プログラム、２００：設定者、１５００：ファイルアクセス制御ポリシ設定画面、１５０１：チェックボックス、１５０２：ファイルリスト、１５０３：パーミッション選択ボックス、１５０４：適用ボタン、１６００：ネットワークアクセス制御ポリシ設定画面、１６０１：プロトコル表示部、１６０２：ポート番号表示部、１６０３：パーミッション表示部、１６０４：チェックボックス、１６０５：適用ボタン、１７００：Ｃａｐａｂｉｌｉｔｙアクセス制御ポリシ設定画面、１７０１：チェックボックス、１７０２：ｃａｐａｂｉｌｉｔｙ表示部、１７０３：適用ボタン。
【図１】
2012048609.tif 000003
【図２】
2012048609.tif 000004
【図３】
2012048609.tif 000005
【図４】
2012048609.tif 000006
【図５】
2012048609.tif 000007
【図６】
2012048609.tif 000008
【図７】
2012048609.tif 000009
【図８】
2012048609.tif 000010
【図９】
2012048609.tif 000011
【図１０】
2012048609.tif 000012
【図１１】
2012048609.tif 000013
【図１２】
2012048609.tif 000014
【図１３】
2012048609.tif 000015
【図１４】
2012048609.tif 000016
【図１５】
2012048609.tif 000017
【図１６】
2012048609.tif 000018
【図１７】
2012048609.tif 000019