説明

セキュリティポリシ生成プログラム、セキュアOSコンピュータシステム

【課題】アプリケーションの動作履歴に拠ることなく、当該アプリケーションが必要とするアクセス権限をセキュリティポリシとして設定することのできる技術を提供する。
【解決手段】本発明に係るセキュリティポリシ生成プログラムは、セキュアOS上で動作するアプリケーションの実行ファイル、アプリケーションの設定ファイル、アプリケーションを構成するファイルリストのうち少なくともいずれかを読み込み、これらファイルに関連してセキュアOS上のいずれのアクセス権限が必要となるかを解析する。また、その解析結果を、セキュアOSのセキュリティポリシ候補として出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアOS(Operating System)のセキュリティポリシを生成する技術に関するものである。
【背景技術】
【0002】
一般に、コンピュータのOS上のリソース(ファイル、ネットワークポートなど)に対するアクセス権限は、そのリソースの所有者が設定する。また、全ての権限をもつ特権ユーザが存在し、OS管理者がその特権ユーザとしてリソースのアクセス権限を設定することもできる。
【0003】
これに対し、セキュアOSとは、全権を持つ特権ユーザを排除し、プロセス毎(例えばアプリケーションの実行ファイル毎)に最小限のアクセス権限を付与することができるようにしたOSである。プロセス毎にどんなアクセス権限を持つかについての設定は、セキュリティポリシファイルというファイルに記載されている。
【0004】
セキュアOSでは、上記機能により、プロセスが必要なリソースにだけアクセスすることがOSによって保証されている。そのため、プロセスにセキュリティホールがあり、攻撃者に当該プロセスが乗っ取られたとしても、当該プロセスに起因するセキュリティ被害を最小限に留めることができる。
【0005】
セキュアOS上でプロセスに必要最小限の権限を割り当てるには、セキュリティポリシを適切に設定する必要がある。しかし、アクセス権限の設定項目が膨大になることが多く、その作業は煩雑である。そこで、セキュリティポリシを設定する作業をサポートする技術が研究されている。例えば、下記特許文献1および非特許文献1のような技術が提案されている。
【0006】
特許文献1は、アプリケーションの動作ログからセキュリティポリシ設定を自動生成する技術を記載している。非特許文献1は、セキュリティポリシの記述を単純化する技術を記載している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2005−128623号公報
【非特許文献】
【0008】
【非特許文献1】"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),URL:http://www.usenix.org/event/lisa09/tech/full_papers/nakamura.pdf(2010年8月10日取得)
【発明の概要】
【発明が解決しようとする課題】
【0009】
セキュアOSのセキュリティポリシを適切に設定するためには、アプリケーションが使用する可能性のある全てのアクセス権限について、アクセス可否を設定する必要がある。
【0010】
上記特許文献1に記載の技術では、アプリケーションを実際に動作させて動作履歴を監査ログなどの形態で取得し、その履歴を参考にしてアプリケーションが必要とするアクセス許可を設定する。この手法では、アプリケーションが使用する可能性のあるアクセス権限を網羅するためにアプリケーションを繰り返しテスト動作させる必要があり、動作履歴を取得するための作業工数が多大になる可能性がある。また、セキュアOSの仕様によっては、パフォーマンス劣化を防ぐため、監査ログを簡易記述することがあり、この場合は監査ログから完全な動作履歴を得ることが難しくなる。
【0011】
本発明は、上記のような課題を解決するためになされたものであり、アプリケーションの動作履歴に拠ることなく、当該アプリケーションが必要とするアクセス権限をセキュリティポリシとして設定することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明に係るセキュリティポリシ生成プログラムは、セキュアOS上で動作するアプリケーションの実行ファイル、アプリケーションの設定ファイル、アプリケーションを構成するファイルリストのうち少なくともいずれかを読み込み、これらファイルに関連してセキュアOS上のいずれのアクセス権限が必要となるかを解析する。また、その解析結果を、セキュアOSのセキュリティポリシ候補として出力する。
【発明の効果】
【0013】
本発明に係るセキュリティポリシ生成プログラムによれば、アプリケーションに関連するファイルを解析することにより、アプリケーションを実行するときにいずれのアクセス権限が必要となるかを把握することができる。これにより、アプリケーションを実行しなくとも、セキュアOS上で必要となるアクセス権限が分かる。また、そのアクセス権限をセキュリティポリシの候補として提示するので、セキュリティポリシを設定する作業負担を軽減することができる。
【図面の簡単な説明】
【0014】
【図1】実施形態1に係るセキュアOSコンピュータ100の構成図である。
【図2】セキュリティポリシファイル120の構成とデータ例を示す図である。
【図3】アプリケーションパッケージ140の構成図である。
【図4】アプリケーション設定ファイル142の記述例を示す図である。
【図5】アプリケーション構成ファイル143の記述例を示す図である。
【図6】セキュリティポリシ生成プログラム130の機能構成図である。
【図7】ネットワークパーミッションパターンファイル136の構成とデータ例を示す図である。
【図8】シンボルパーミッション対応テーブル137の構成とデータ例を示す。
【図9】逆アセンブラ部131がアプリケーションの実行ファイルを逆アセンブルしてアセンブリ命令に変換した結果の例を示す図である。
【図10】逆アセンブラ部131がアプリケーションの実行ファイルを逆アセンブルしてシンボルを抽出した結果の例を示す図である。
【図11】セキュリティポリシ生成プログラム130の全体動作フローである。
【図12】ステップS1102の詳細フローを示す図である。
【図13】ステップS1103の詳細フローを示す図である。
【図14】ステップS1104の詳細フローを示す図である。
【図15】ステップS1105において設定提示部135が画面表示するファイルアクセス制御ポリシ設定画面1500の1例を示す図である。
【図16】ステップS1105において設定提示部135が画面表示するネットワークアクセス制御ポリシ設定画面1600の1例を示す図である。
【図17】ステップS1105において設定提示部135が画面表示するCapabilityアクセス制御ポリシ設定画面1700の1例を示す図である。
【発明を実施するための形態】
【0015】
<実施の形態1>
図1は、本発明の実施形態1に係るセキュアOSコンピュータ100の構成図である。セキュアOSコンピュータ100は、セキュアOSを搭載したコンピュータであり、セキュアOS110、セキュリティポリシファイル120、セキュリティポリシ生成プログラム130を備える。必要に応じて、アプリケーションプログラムおよび必要な設定ファイルなどを格納したアプリケーションパッケージ140をインストールすることもできる。さらには、インストール済みのアプリケーションパッケージを管理するパッケージ管理プログラム150を備えていてもよい。
【0016】
セキュアOSコンピュータ100は、図1に示した構成の他、セキュアOS110および上記各プログラムを実行するCPU(Central Processing Unit)を備える。また、セキュアOS110、上記各プログラム、セキュリティポリシファイル120などのデータを格納するHDD(Hard Disk Drive)などの記憶装置、メモリ、ネットワークインターフェースなどの構成を適宜備える。
【0017】
以下では、説明の便宜上、セキュアOS110、上記各プログラムなどのプログラムを動作主体として説明する場合があるが、これらのプログラムを実際に実行するのはCPUなどの演算装置であることを付言しておく。
【0018】
セキュアOS110は、セキュアOSコンピュータ100のOSである。セキュアOS110は、セキュリティポリシファイル120の記述にしたがって、セキュアOSコンピュータ100が備えるリソースに対するアクセスを制御する。セキュリティポリシファイル120の例については後述する。
【0019】
セキュリティポリシ生成プログラム130は、アプリケーションパッケージ140に含まれているファイルを解析し、セキュリティポリシファイル120またはその雛形を生成する。詳細は後述する。
【0020】
アプリケーションパッケージ140は、アプリケーション実行ファイル、アプリケーション設定ファイル、アプリケーション構成ファイルなどを一纏めにパッケージ化したファイルである。典型的には、インストーラパッケージの形態で構成されている。アプリケーションパッケージ140の内部的構成については後述する。
【0021】
パッケージ管理プログラム150は、セキュアOSコンピュータ100にインストールされているアプリケーションパッケージを管理し、設定変更、アンインストールなどの処理を実行する。
【0022】
オペレータ200は、セキュアOSコンピュータ100が備えるキーボード、マウスなどを用いて、セキュリティポリシ生成プログラム130を実行するようにセキュアOSコンピュータ100へ指示する。また、セキュリティポリシ生成プログラム130が提示するセキュリティポリシファイル120の雛形を修正するなどして、セキュリティポリシファイル120の内容を最終的に確定する。オペレータ200が修正作業に用いる画面などについては後述する。
【0023】
図2は、セキュリティポリシファイル120の構成とデータ例を示す図である。ここでは説明の便宜上、テーブル形式のデータ例を示したが、データ形式はこれに限られるものではない。
【0024】
セキュリティポリシファイル120は、サブジェクトフィールド121、オブジェクトフィールド122、パーミッションフィールド123を有する。
【0025】
サブジェクトフィールド121は、セキュアOS110上のアクセス権限を用いて動作するプログラムの実行ファイル名を記述する。本フィールドの例として、アプリケーションパッケージ140内に含まれるアプリケーション実行ファイルのインストール先ファイルパスを記述したものが挙げられる。
【0026】
オブジェクトフィールド122は、サブジェクトフィールド121が記述しているプログラムがアクセスする、セキュアOS110上のリソースを記述する。ここでいうリソースとは、セキュアOS110上のファイル、フォルダ、ネットワークポート、後述するCapabilityと呼ばれる特殊なアクセス権限、などのことをいう。すなわち、アクセスするためにセキュアOS110上のアクセス権限が必要となる対象を指す。
【0027】
パーミッションフィールド123は、サブジェクトフィールド121が記述しているプログラムが、オブジェクトフィールド122が記述しているリソースに対して有するアクセス権限を記述する。本フィールドの例については以下で説明する。
【0028】
1行目のデータ例は、プログラム「/sbin/httpd」がファイル「/var/www/*」に対して有するアクセス権限を記述している。本行はファイルに対するアクセス権限を記述しているため、アクセス権限の例として、「読込許可(read)」、「書込許可(write)」などが考えられる。
【0029】
2行目のデータ例は、プログラム「/sbin/httpd」がネットワークリソース「TCP80番ポート」に対して有するアクセス権限を記述している。ネットワークリソースに対するアクセス権限は、ファイルやフォルダに対するアクセス権限と類似しているが、呼称が異なる。ここでは、TCP80番ポートに対して「bind(外部からの接続リクエストを待機する)」することができる旨を例示した。
【0030】
3行目のデータ例は、プログラム「/sbin/ftpd」が、Capability「setuid」を実行することができる旨を記述している。Capabilityとは、セキュアOS110が備えるカーネル機能(システムコール)をアプリケーションプログラムから直接呼び出すことのできる機能をいう。カーネル機能を直接呼び出すと、通常のアプリケーションが備えている機能を超えた動作を実行することができるため、Capabilityに対するアクセス権限は慎重に設定する必要がある。Capabilityの例として、以下が挙げられる。
【0031】
(Capabilityの例1:setuid)
setuidは、アプリケーションを実行するユーザIDを一時的に他のユーザIDへ変更する機能である。ここでいう他のユーザIDには、特権ユーザIDが含まれる場合もある。
(Capabilityの例2:chroot)
chrootは、アプリケーションにとってのルートディレクトリを変更する機能である。ルートディレクトリを変更されたアプリケーションは、その範囲外のファイル等にはアクセスすることができなくなる。
【0032】
図3は、アプリケーションパッケージ140の構成図である。アプリケーションパッケージ140は、セキュアOS110上で動作するアプリケーションをセキュアOSコンピュータ100にインストールするためのファイルであり、アプリケーション実行ファイル141、アプリケーション設定ファイル142、アプリケーション構成ファイル143を内部的に含む。
【0033】
アプリケーション実行ファイル141は、当該アプリケーションの本体となる実行形式のファイルである。アプリケーション設定ファイル142は、アプリケーション実行ファイル141を実行する際に用いられる設定パラメータなどを記述している。アプリケーション構成ファイル143は、アプリケーション実行ファイル141をインストールするときにともにインストールするファイル、または改変を加えるファイルの一覧、当該アプリケーションの名称、当該アプリケーションのバージョン、などのアプリケーション全体に関する情報を記述している。アプリケーション設定ファイル142とアプリケーション構成ファイル143の例は、後述の図4〜図5で説明する。
【0034】
図4は、アプリケーション設定ファイル142の記述例を示す図である。1行目は、当該アプリケーションがキャッシュファイルを格納するフォルダパスを記述している。2行目は、当該アプリケーションが接続を待ち受けるTCPポート番号を記述している。
【0035】
図5は、アプリケーション構成ファイル143の記述例を示す図である。1行目は、当該アプリケーションの名称を記述している。2行目は、当該アプリケーションのバージョン番号を記述している。3行目以降は、当該アプリケーションをインストールすることによって新たにインストールまたは改変等されるファイルのリストを記述している。パッケージ管理プログラム150は、これらファイルのインストール、アンインストール、内容改変などの処理を実施する。
【0036】
以上、セキュアOSコンピュータ100の構成について説明した。次に、セキュリティポリシ生成プログラム130の詳細構成について説明する。
【0037】
図6は、セキュリティポリシ生成プログラム130の機能構成図である。セキュリティポリシ生成プログラム130は、逆アセンブラ部131、ファイルアクセス解析部132、ネットワークアクセス解析部133、Capabilityアクセス解析部134、設定提示部135、ネットワークパーミッションパターンファイル136、シンボルパーミッション対応テーブル137を有する。これらは同一のプログラムファイル内に構成してもよいし、個別のサブモジュールなどの形態で構成してもよい。
【0038】
逆アセンブラ部131は、アプリケーションの実行ファイルをアセンブリ言語に変換する機能、アプリケーションの実行ファイルが内部的に使用するシンボルを抽出する機能を有する。シンボルとは、実行ファイルが関数を呼び出す際に内部的に使用する関数名などの識別子のことである。実行ファイルがどのシンボルを使用しているかを解析することにより、当該実行ファイルがどの関数を使用しているかが分かる。この関数のなかには、システムコールのようなCapabilityアクセスに属する関数も含まれる。
【0039】
ファイルアクセス解析部132は、アプリケーションパッケージ140に含まれるアプリケーション実行ファイル141が動作するとき、どのファイルにアクセスする可能性があるかを推測する。詳細は後述の図12で説明する。
【0040】
ネットワークアクセス解析部133は、アプリケーションパッケージ140に含まれるアプリケーション実行ファイル141が動作するとき、どのネットワークリソースにアクセスする可能性があるかを推測する。詳細は後述の図13で説明する。
【0041】
Capabilityアクセス解析部134は、プリケーションパッケージ140に含まれるアプリケーション実行ファイル141が動作するとき、どのCapabilityアクセス権限を使用する可能性があるかを推測する。詳細は後述の図14で説明する。
【0042】
設定提示部135は、ファイルアクセス解析部132、ネットワークアクセス解析部133、Capabilityアクセス解析部134の解析結果を、セキュアOSコンピュータ100が備えるディスプレイ上に画面表示する。画面イメージについては後述の図15〜図17で改めて説明する。
【0043】
ネットワークパーミッションパターンファイル136は、アプリケーションの実行ファイルがネットワークリソースを使用する際に実施すると推測される動作パターンを記述している。ネットワークアクセス解析部133は、本ファイルが記述している動作パターンと、逆アセンブラ部131またはファイルアクセス解析部132の処理結果から得られる動作パターンとをマッチングさせ、該当するものを抽出する。詳細は後述の図7で説明する。
【0044】
シンボルパーミッション対応テーブル137は、アプリケーションの実行ファイルが使用するシンボルと、当該シンボルを使用する際に必要となるCapabilityアクセス権限との対応関係を記述するテーブルである。Capabilityアクセス解析部134は、逆アセンブラ部131の処理結果から得られるシンボルと、本テーブルが記述しているシンボルとをマッチングさせ、該当するものを抽出する。詳細は後述の図8で説明する。
【0045】
図7は、ネットワークパーミッションパターンファイル136の構成とデータ例を示す図である。ネットワークパーミッションパターンファイル136は、パターンフィールド1361、パターン名フィールド1362を有する。
【0046】
パターンフィールド1361は、アプリケーションの実行ファイルがネットワークリソースにアクセスする際に実行するアセンブリ命令のパターンを記述している。また、アプリケーション設定ファイル142に記述され得る設定パラメータのうち、実行ファイルがネットワークリソースにアクセスする際に用いるものを記述している。
【0047】
パターン名フィールド1362は、各パターンを識別するために設けた名称を記述している。
【0048】
以下、図7の各行に示す例について説明する。
(図7:1行目:ポート番号)
図7の1行目は、実行ファイルがUNIX(登録商標)のhtons(host to network short)関数を呼び出してポート番号を設定しているアセンブリ命令パターンを記述している。アプリケーションの実行ファイルがこれらアセンブリ命令を実行するときは、ネットワークリソース(ここではポート番号)にアクセスするものと判断することができる。なお、可変するパラメータは<>を用いて一般化することとした。本例ではポート番号は実行毎に可変であるため、<数字>と記述した。以下の例においても同様である。
【0049】
(図7:2行目:bindシステムコール)
図7の2行目は、実行ファイルがbindシステムコールを呼び出して、ネットワークからの接続を待ち受けるアセンブリ命令パターンを記述している。ネットワークからの接続を待ち受ける場合、ネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。したがって、実行ファイルに本パターンが含まれる場合、これを抽出することとした。
【0050】
(図7:3行目:conectシステムコール)
図7の3行目は、実行ファイルがconnectシステムコールを呼び出して、外部ネットワークに接続するアセンブリ命令パターンを記述している。外部ネットワークに接続する場合、ネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。
【0051】
(図7:4行目:socketシステムコール)
図7の4行目は、実行ファイルがsocketシステムコールを呼び出して、これから用いる通信プロトコルを設定するアセンブリ命令パターンを記述している。<数字>の部分がプロトコルを示す。OSがLinuxである場合、<数字>の部分が1であればTCP、2であればUDPを設定することを示す。通信プロトコルを設定する場合、ネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。
【0052】
(図7:5行目:ポート待ち受け)
図7の5行目は、実行ファイルが所定のTCPポートに外部端末から接続してくるのを待機するアプリケーション設定パラメータ例を記述している。本行は、アプリケーション設定ファイル142内に記述されるパターンを例示したものである。実行ファイルがポートを開いて接続を待ち受ける場合、そのネットワークリソースを使用するため、リソースに対するアクセス権限が適正であるか否かを判断する必要がある。なお、本行はネットワークからの接続を待ち受けるパターンを記述する点で2行目と共通するが、2行目が実行ファイル内のアセンブリ命令パターンであるのに対し、本行はアプリケーション設定ファイル142内の記述パターンである点が異なる。
【0053】
ネットワークアクセス解析部133は、本ファイルが記述している動作パターンと、逆アセンブラ部131の処理結果から得られるアセンブリ命令(またはアプリケーション設定ファイル142内の記述)とをマッチングし、両者が合致する部分を抽出する。両者が合致する部分が存在する場合、当該実行ファイルはネットワークリソースにアクセスすることが分かるので、後のステップでアクセス権限を設定するため、抽出しておくこととしたものである。
【0054】
図8は、シンボルパーミッション対応テーブル137の構成とデータ例を示す。シンボルパーミッション対応テーブル137は、シンボルフィールド1371とパーミッションフィールド1372を有する。シンボルパーミッション対応テーブル137は、実行ファイル内に含まれるシンボルが指定する関数を実行する際に、どのCapabilityアクセス権限が必要になるかを記述している。シンボル名は必ずしもCapabilityアクセス権限そのものを示していないため、本テーブルを用いて両者の対応関係を明示することとした。
【0055】
Capabilityアクセス解析部134は、本ファイルが記述している対応関係と、逆アセンブラ部131の処理結果から得られるアセンブリ命令とをマッチングし、両者が合致する部分を抽出する。両者が合致する部分が存在する場合、当該実行ファイルはCapabilityアクセス権限を使用することが分かるので、後のステップでアクセス権限の使用可否を設定するため、抽出しておくこととしたものである。
【0056】
なお、ここではシンボルとCapabilityアクセス権限の対応関係のみを例示したが、シンボルに対応する関数を実行する際にセキュアOS上のその他のアクセス権限が必要となる場合には、その対応関係を記述するようにしてもよい。
【0057】
図9は、逆アセンブラ部131がアプリケーションの実行ファイルを逆アセンブルしてアセンブリ命令に変換した結果の例を示す図である。ネットワークアクセス解析部133は、本図に示すアセンブリ命令のうち、ネットワークパーミッションパターンファイル136が記述しているアセンブリ命令パターンに合致する部分を抽出する。
【0058】
図10は、逆アセンブラ部131がアプリケーションの実行ファイルを逆アセンブルしてシンボルを抽出した結果の例を示す図である。Capabilityアクセス解析部134は、本図に示すシンボルのうち、シンボルパーミッション対応テーブル137が記述しているシンボルパターンに合致する部分を抽出する。
【0059】
以上、セキュリティポリシ生成プログラム130の詳細構成について説明した。次に、セキュリティポリシ生成プログラム130の動作について説明する。
【0060】
図11は、セキュリティポリシ生成プログラム130の全体動作フローである。以下、図11の各ステップについて説明する。なおここでは、アプリケーションパッケージ140に含まれている各ファイルを解析対象とする場合を例示するが、いずれか1つまたは2つのみを解析対象とすることもできる。例えば、アプリケーション実行ファイル141単体を解析することもできる。
【0061】
(図11:ステップS1101)
セキュリティポリシ生成プログラム130の逆アセンブラ部131は、アプリケーションパッケージ140に含まれるアプリケーション実行ファイル141を逆アセンブルし、図9〜図10で例示した解析結果を得る。
【0062】
(図11:ステップS1102)
セキュリティポリシ生成プログラム130のファイルアクセス解析部132は、アプリケーション設定ファイル142とアプリケーション構成ファイル143を解析する。本ステップの詳細は、後述の図12で説明する。
【0063】
(図11:ステップS1103)
セキュリティポリシ生成プログラム130のネットワークアクセス解析部133は、ネットワークパーミッションパターンファイル136を用いて、ステップS1101の処理結果とアプリケーション構成ファイル143を解析する。本ステップの詳細は、後述の図13で説明する。
【0064】
(図11:ステップS1104)
セキュリティポリシ生成プログラム130のCapabilityアクセス解析部134は、シンボルパーミッション対応テーブル137を用いて、ステップS1101の処理結果を解析する。本ステップの詳細は、後述の図14で説明する。
【0065】
(図11:ステップS1105)
セキュリティポリシ生成プログラム130の設定提示部135は、後述の図15〜図17で例示するように、セキュリティポリシファイル120を設定する画面を表示する。同画面には、ステップS1101〜S1104の結果を反映する。
【0066】
図12は、ステップS1102の詳細フローを示す図である。以下、図12の各ステップについて説明する。
(図12:ステップS1102_01)
ファイルアクセス解析部132は、アプリケーション設定ファイル142を解析し、アプリケーションがアクセスする可能性のあるファイルのリストを抽出する。例えば、「/」で始まる文字列はファイル名を記述しているものと判断し、抽出する。図4で示した記述例では、ファイル名として「/var/cahce/foo」が抽出される。
【0067】
(図12:ステップS1102_02)
ファイルアクセス解析部132は、アプリケーション構成ファイル143を解析し、アプリケーションをインストールした後に当該アプリケーションがアクセスする可能性のあるファイルのリストを抽出する。抽出基準はステップS1102_01と同じでよい。図5で示した記述例では、ファイル名として「/sbin/foo」「/etc/foo/foo.conf」「/var/log/foo」が抽出される。
【0068】
図13は、ステップS1103の詳細フローを示す図である。以下、図13の各ステップについて説明する。
(図13:ステップS1103_01)
ネットワークアクセス解析部133は、ステップS1101の解析結果と、ネットワークパーミッションパターンファイル136が記述しているアセンブリ命令パターンとが合致する部分を抽出する。図7に示したネットワークパーミッションパターンファイル136の例と、図9に示した逆アセンブル結果例とを比較すると、以下の結果が得られる。
【0069】
(図13:ステップS1103_01:抽出例)
図9の5〜6行目における「movl」「call」は、図7の4行目のsocket関数を呼び出すパターンに合致する。図9の7〜8行目における「movl」「call」は、図7の1行目のhtons関数を呼び出すパターンに合致する。図9の最終行における「call」は、図7の2行目のbindシステムコールを呼び出すパターンに合致する。
【0070】
(図13:ステップS1103_02)
ネットワークアクセス解析部133は、アプリケーション設定ファイル142と、ネットワークパーミッションパターンファイル136が記述している記述パターンとが合致する部分を抽出する。図7に示したネットワークパーミッションパターンファイル136の例と、図4に示したアプリケーション設定ファイル142記述例とを比較すると、以下の結果が得られる。
【0071】
(図13:ステップS1103_02:抽出例)
図4の2行目における「Listen on 9999」は、図7の5行目に記述している、ネットワーク接続を待ち受けるパターン(bindシステムコールを使用するパターン)に合致する。
【0072】
図14は、ステップS1104の詳細フローを示す図である。以下、図14の各ステップについて説明する。
(図14:ステップS1104_01)
Capabilityアクセス解析部134は、ステップS1101の解析結果と、シンボルパーミッション対応テーブル137が記述しているシンボルパターンとが合致する部分を抽出する。図8に示したシンボルパーミッション対応テーブル137の例と、図10に示した逆アセンブル結果例とを比較すると、以下の結果が得られる。
【0073】
(図14:ステップS1104_01:抽出例)
図10の4行目における「chroot」は、図8の1行目のchrootシステムコールを呼び出すパターンに合致する。
【0074】
図15は、ステップS1105において設定提示部135が画面表示するファイルアクセス制御ポリシ設定画面1500の1例を示す図である。ファイルアクセス制御ポリシ設定画面1500は、ステップS1102における解析結果、すなわちアプリケーション設定ファイル142とアプリケーション構成ファイル143の解析結果を画面表示する。
【0075】
ファイルアクセス制御ポリシ設定画面1500は、チェックボックス1501、ファイルリスト1502、パーミッション選択ボックス1503、適用ボタン1504を有する。画面上部は、後述する図16〜図17に示す画面に切り替えるためのタブを有する。
【0076】
チェックボックス1501は、ファイルリスト1502に表示されているファイルに対するパーミッション設定をセキュリティポリシファイル120に反映するか否かを選択する。反映する場合はチェックをONにする。
【0077】
ファイルリスト1502は、ファイルアクセス解析部132がアプリケーション設定ファイル142とアプリケーション構成ファイル143から抽出したファイルの一覧を表示する。ここに表示されているファイルリストは、図11の動作フローで解析したアプリケーションがアクセスする可能性があるものである。
【0078】
パーミッション選択ボックス1503は、ファイルリスト1502に表示されているファイルに対して、図11の動作フローで解析したアプリケーションにどのアクセス権限を付与するかを選択するための選択肢を有する。アプリケーションは、ファイルリスト1502に表示されているファイルに対して少なくとも読込アクセスするであろうと想定されるので、デフォルト値は「Read」となっている。
【0079】
アクセス権限適用ボタン1504は、ファイルアクセス制御ポリシ設定画面1500上の設定をセキュリティポリシファイル120に反映するようセキュリティポリシ生成プログラム130に指示するボタンである。
【0080】
図16は、ステップS1105において設定提示部135が画面表示するネットワークアクセス制御ポリシ設定画面1600の1例を示す図である。ネットワークアクセス制御ポリシ設定画面1600は、ステップS1103における解析結果、すなわちアプリケーション実行ファイル141とアプリケーション設定ファイル142の解析結果を画面表示する。
【0081】
ネットワークアクセス制御ポリシ設定画面1600は、プロトコル表示部1601、ポート番号表示部1602、パーミッション表示部1603、チェックボックス1604、適用ボタン1605を有する。画面上部は、図15または後述する図17に示す画面に切り替えるためのタブを有する。
【0082】
プロトコル表示部1601、ポート番号表示部1602、パーミッション表示部1603は、ステップS1103の解析結果として、図11の動作フローで解析したアプリケーションがアクセスする可能性があるネットワークリソースの一覧を表示する。
【0083】
設定者200は、セキュリティポリシファイル120に反映するネットワークリソースをチェックボックス1604で選択し、適用ボタン1605を押下する。セキュリティポリシ生成プログラム130は、選択されているネットワークリソースに対するアクセスを許可する旨を、セキュリティポリシファイル120に反映する。
【0084】
図17は、ステップS1105において設定提示部135が画面表示するCapabilityアクセス制御ポリシ設定画面1700の1例を示す図である。Capabilityアクセス制御ポリシ設定画面1700は、ステップS1104における解析結果、すなわちアプリケーション実行ファイル141の解析結果を画面表示する。
【0085】
Capabilityアクセス制御ポリシ設定画面1700は、チェックボックス1701、capability表示部1702、適用ボタン1703を有する。画面上部は、図15〜図16に示す画面に切り替えるためのタブを有する。
【0086】
チェックボックス1701は、capability表示部1702に表示されているCapabilityアクセスに対するパーミッション設定をセキュリティポリシファイル120に反映するか否かを選択する。反映する場合はチェックをONにする。capability表示部1702は、ステップS1104で抽出したCapabilityアクセスのリストを表示する。
【0087】
設定者200は、セキュリティポリシファイル120に反映するCapabilityアクセス権限をチェックボックス1701で選択し、適用ボタン1703を押下する。セキュリティポリシ生成プログラム130は、選択されているネットワークリソースに対するアクセスを許可する旨を、セキュリティポリシファイル120に反映する。
【0088】
<実施の形態1:まとめ>
以上のように、本実施形態1に係るセキュリティポリシ生成プログラム130は、アプリケーション実行ファイル141、アプリケーション設定ファイル142、アプリケーション構成ファイル143の少なくともいずれかを読み取り、アプリケーションが使用する可能性のあるアクセス権限を抽出する。これにより、アプリケーションを実行することなく、必要となるアクセス権限設定の候補を提示することができるので、セキュリティポリシファイル120の設定に係る作業負担を軽減することができる。
【0089】
また、本実施形態1に係るセキュリティポリシ生成プログラム130は、アプリケーション実行ファイル141を逆アセンブルしてネットワークパーミッションパターンファイル136と比較し、ネットワークリソースにアクセスするアセンブリ命令パターンを抽出する。これにより、アプリケーションを実行することなく、ネットワークリソースに対して必要となるアクセス権限の候補を提示することができる。
【0090】
また、本実施形態1に係るセキュリティポリシ生成プログラム130は、アプリケーション実行ファイル141に含まれるシンボルを抽出し、そのシンボルに対応する関数を実行する際に必要となるCapabilityアクセス権限を、シンボルパーミッション対応テーブル137によって特定する。これにより、アプリケーションを実行することなく、必要となるCapabilityアクセス権限の候補を提示することができる。
【0091】
また、本実施形態1に係るセキュリティポリシ生成プログラム130は、アプリケーション設定ファイル142またはアプリケーション構成ファイル143内に記述されているファイル名を抽出し、アプリケーションはそのファイルに対するアクセス権限が必要になるものと仮定して提示する。これにより、アプリケーションを実行することなく、ファイルに対して必要となるアクセス権限の候補を提示することができる。
【0092】
<実施の形態2>
実施形態1では、セキュアOS110がUNIXベースのOSであることを想定し、chrootやsetuidなどのUNIXシステムコールを例に挙げて説明した。しかし本発明に係る手法は、任意のセキュアOSについて適用することができる。
【0093】
OSが異なれば、システムコールに相当するものは異なるし、シンボル名やネットワークリソースの表現形態も異なる可能性がある。しかし、アプリケーション実行ファイル141、アプリケーション設定ファイル142、アプリケーション構成ファイル143の少なくともいずれかを解析し、必要となるアクセス権限の候補を抽出する点は、いずれのOSについても応用することができる。
【0094】
また、実施形態1では、アプリケーションパッケージ140またはその内部に含まれるファイルを解析する例を示したが、既にインストールされている実行ファイルなどについても同様の手法を用いて解析することができる。
【符号の説明】
【0095】
100:セキュアOSコンピュータ、110:セキュアOS、120:セキュリティポリシファイル、121:サブジェクトフィールド、122:オブジェクトフィールド、123:パーミッションフィールド、130:セキュリティポリシ生成プログラム、131:逆アセンブラ部、132:ファイルアクセス解析部、133:ネットワークアクセス解析部、134:Capabilityアクセス解析部、135:設定提示部、136:ネットワークパーミッションパターンファイル、1361:パターンフィールド、1362:パターン名フィールド、137:シンボルパーミッション対応テーブル、1371:シンボルフィールド、1372:パーミッションフィールド、140:アプリケーションパッケージ、141:アプリケーション実行ファイル、142:アプリケーション設定ファイル、143:アプリケーション構成ファイル、150:パッケージ管理プログラム、200:設定者、1500:ファイルアクセス制御ポリシ設定画面、1501:チェックボックス、1502:ファイルリスト、1503:パーミッション選択ボックス、1504:適用ボタン、1600:ネットワークアクセス制御ポリシ設定画面、1601:プロトコル表示部、1602:ポート番号表示部、1603:パーミッション表示部、1604:チェックボックス、1605:適用ボタン、1700:Capabilityアクセス制御ポリシ設定画面、1701:チェックボックス、1702:capability表示部、1703:適用ボタン。

【特許請求の範囲】
【請求項1】
セキュアOSのセキュリティポリシを生成する処理をコンピュータに実行させるプログラムであって、前記コンピュータに、
前記セキュアOS上で動作するアプリケーションの実行ファイル、前記アプリケーションの設定パラメータを記述した設定ファイル、前記アプリケーションを構成するファイルリストを記述した構成ファイルのうち少なくともいずれかを読み込む読込ステップと、
前記実行ファイルを実行するとき、前記実行ファイルが前記設定パラメータを用いるとき、前記実行ファイルが前記ファイルリスト内に記述されているファイルを使用するときの少なくともいずれかにおいて、前記セキュアOS上のいずれのアクセス権限が必要となるかを解析するアクセス解析ステップと、
前記アクセス解析ステップの結果を前記セキュリティポリシの候補として出力するステップと、
を実行させることを特徴とするセキュリティポリシ生成プログラム。
【請求項2】
前記アクセス解析ステップでは、前記コンピュータに、
前記実行ファイルを逆アセンブルしてアセンブリ言語に変換するステップと、
前記アセンブリ言語から前記セキュアOS上のネットワークリソースにアクセスする処理を抽出するステップと、
前記ネットワークリソースにアクセスするためのアクセス権限を、前記セキュアOS上で必要となるアクセス権限として抽出するステップと、
を実行させることを特徴とする請求項1記載のセキュリティポリシ生成プログラム。
【請求項3】
前記アクセス解析ステップでは、前記コンピュータに、
前記実行ファイルに含まれるシンボルを抽出するシンボル抽出ステップと、
アプリケーションの実行ファイルに含まれるシンボルに対応する関数を実行する際に前記セキュアOS上で必要となるアクセス権限を記述したシンボルパーミッション対応テーブルを読み込むステップと、
前記シンボルパーミッション対応テーブルが記述しているアクセス権限のうち前記シンボル抽出ステップで抽出したシンボルに対応するものを検索する検索ステップと、
前記検索ステップの結果得られたアクセス権限を、前記セキュアOS上で必要となるアクセス権限として特定するステップと、
を実行させることを特徴とする請求項1または2記載のセキュリティポリシ生成プログラム。
【請求項4】
前記アクセス解析ステップでは、前記コンピュータに、
前記アプリケーションが使用するファイルとして前記設定ファイルが指定しているファイル、または前記構成ファイルが記述しているファイルリストが指定するファイルに対して、前記セキュアOS上で読取アクセス権限が必要となるものと判定させる
ことを特徴とする請求項1から3のいずれか1項記載のセキュリティポリシ生成プログラム。
【請求項5】
請求項1から4のいずれか1項記載のセキュリティポリシ生成プログラムと、
前記セキュリティポリシ生成プログラムが生成するセキュリティポリシを用いるセキュアOSと、
を備えたことを特徴とするセキュアOSコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2012−48609(P2012−48609A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−191948(P2010−191948)
【出願日】平成22年8月30日(2010.8.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【Fターム(参考)】