JP2023154573A - 情報処理装置、セキュリティ管理方法およびプログラム - Google Patents
情報処理装置、セキュリティ管理方法およびプログラム Download PDFInfo
- Publication number
- JP2023154573A JP2023154573A JP2022063987A JP2022063987A JP2023154573A JP 2023154573 A JP2023154573 A JP 2023154573A JP 2022063987 A JP2022063987 A JP 2022063987A JP 2022063987 A JP2022063987 A JP 2022063987A JP 2023154573 A JP2023154573 A JP 2023154573A
- Authority
- JP
- Japan
- Prior art keywords
- class
- information
- application
- library
- information processing
- 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.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 42
- 238000007726 management method Methods 0.000 title claims description 10
- 230000002542 deteriorative effect Effects 0.000 abstract 1
- 238000000034 method Methods 0.000 description 55
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 15
- 230000001010 compromised effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Images
Abstract
【課題】アプリに権限を付与しなくてはならないことでシステムの安定を損なう処理が実行可能になる。【解決手段】情報処理装置が、アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、クラス情報記憶手段に記憶されたクラスの情報に相当する第1のクラスを特定し、呼び出し系列情報に含まれた第1のクラスから呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成し、その権限情報に基づいてセキュリティチェックを行う。【選択図】図2
Description
本発明は例えばアプリの実行時のセキュリティ管理に関し、特に情報処理装置、セキュリティ管理方法およびプログラムに関するものである。
JAVA(登録商標)等のプラットフォームにインストールしたアプリケーション(アプリと呼ぶ)を実行するアプリ実行環境が、たとえば多機能複写機(MFP)等のデバイスにも搭載されている。アプリ実行環境はアプリの動作がシステムの安定性を損なわないよう、アプリが実行できるシステムの機能を制限する機能をもつ。アプリ実行環境はアプリおよびアプリが使用するライブラリのクラスにPermissionと呼ばれる権限情報を付与している。そしてアプリが実行されるときのクラスの呼び出しスタックに含まれるクラスのPermissionのANDをとった権限をチェックし呼び出されたシステムの機能が実行可能か判断する仕組みを持っている(特許文献1参照)。
アプリが使用するライブラリの中には、システムの安定性を損なう可能性のあるPermissionを必要とするが、ライブラリで実装されている処理から呼び出すのであればシステムの安定性は損なわれないライブラリがある。
アプリからシステムの機能が実行可能か判断するときにはメソッド呼び出しのスタックに含まれるアプリおよびライブラリのクラスに付与されたPermissionのAND(論理積)をとった権限が必要になる。そのため、アプリのクラスにもシステムの安定性を損なう可能性のあるPermissionを付与しなくてはならない。そのため、悪意をもつアプリやアプリのバグにより、アプリからシステムの安定性を損なう可能性のあるPermissionが必要な処理を実行され、システムの安定性を損なわれる、という課題がある。
また、クラスの呼び出しスタックに含まれるクラスのうちシステム~ある特定のクラスまでのPermissionのANDをとるようその特定のクラスのソースコードを記載することが可能なアプリ実行環境もある。しかし、バイナリで提供されたライブラリに適用できないという課題がある。さらにソースコードが存在するライブラリにおいてもライブラリのコードを一つ一つ修正しなくてはならないという課題がある。
本発明は上記従来例に鑑みて成されたもので、システムの安定性を損なうことなく、またソースコードを改変することなく必要なPermissionをライブラリに付与することを可能ならしめることを目的とする。
上記目的を達成するために本発明は以下の構成を有する。本発明の一側面によれば、アプリケーションから呼び出されるライブラリに含まれるクラスの情報を記憶するクラス情報記憶手段と、
前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定する特定手段と、
前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成する生成手段と、
前記権限情報に基づいてセキュリティチェックを行うセキュリティチェック手段と、を有する
ことを特徴とする情報処理装置が提供される。
前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定する特定手段と、
前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成する生成手段と、
前記権限情報に基づいてセキュリティチェックを行うセキュリティチェック手段と、を有する
ことを特徴とする情報処理装置が提供される。
本発明によれば、システムの安定性を損なうことなく、またソースコードを改変することなく必要なPermissionをライブラリに付与することが可能になる。
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[実施形態1]
図1は本発明のセキュリティ管理方法を実現する画像処理装置100の構成を示す図である。画像処理装置100は具体的には印刷機能と画像読み込み機能とを有する多機能複写機(MFP)などであってよい。なお画像処理装置100の情報処理機能に着目してこれを情報処理装置と呼ぶこともある。ただし本発明のセキュリティ管理方法が動作するのは画像処理装置に限定するものではない。
図1は本発明のセキュリティ管理方法を実現する画像処理装置100の構成を示す図である。画像処理装置100は具体的には印刷機能と画像読み込み機能とを有する多機能複写機(MFP)などであってよい。なお画像処理装置100の情報処理機能に着目してこれを情報処理装置と呼ぶこともある。ただし本発明のセキュリティ管理方法が動作するのは画像処理装置に限定するものではない。
画像処理装置100は本発明を実現するソフトウェアを実行するCPU101、本発明を実現するソフトウェアを保存しているROM102、本発明を実現するソフトウェアを実行するRAM103を含む。さらに画像処理装置100は、本発明を実現するソフトウェアがデータを保存する外部記憶装置104、ユーザが操作をおこなうUI105、印刷をおこなう印刷エンジン107、ネットワークインターフェース制御部108を含む。
ネットワークインターフェース制御部108は例えば有線LANである。ユーザインターフェイス(UI)105は液晶タッチパネルや液晶パネルとハードキー組み合わせたものとして実現されている。上記モジュールはバス106によって相互に接続されておりデータのやり取りをおこなう。画像処理装置100はネットワークインターフェース制御部108によってネットワーク110に接続されている。
図2は本発明のセキュリティ管理方法を実現するアプリ実行環境を示す図である。仮想マシン201は、アプリケーション(アプリ)やライブラリ等のプログラムを実行する。SecurityManager202は、本発明の権限チェックをおこなう。システムライブラリ203は、システムの機能を提供するクラスライブラリである。ライブラリB205、及びライブラリA204は、アプリから呼び出されて使用されるクラスライブラリである。アプリ206は、画像処理装置100にインストールされて実行されるアプリケーションプログラムである。これら各要素からアプリ実行環境は構成されている。なおSecurityManager202は、セキュリティマネージャ202或いはセキュリティ管理部202などとも呼ぶ。
図3はアプリ206が動作するときのクラスの呼び出しスタック308および、各クラスに付与されたPermissionの一例を示す図である。各クラスへのPermission(パーミッション)は、たとえばコーディングにより予め付与されていてよい。あるいは、動的に付与されてもよい。パーミッションは例えばファイル等へのアクセス権限であるが、パーミッションの対象はファイルに限らず、他のリソースを含んでいてよい。図3ではアプリ206のクラス301からライブラリA205のクラス302を呼び出している。さらにライブラリA205のクラス302からシステムライブラリ203のクラス303を呼び出している。なおクラスの呼び出しはクラスとメソッドとを指定して行われるが、ここでは単にクラスの呼び出しと呼んでいる。パーミッションはクラスに付与される。
Permission304はアプリ206のクラス301に設定されているPermissionである。例えばアプリからアクセス可能なファイルは「/App/app01」であるというPermissionである。Permissionとは例えば、パーミッションや許可、許諾、承認と言い換えることもできる。
Permission305はライブラリA205のクラス302に設定されているPermissionである。例えばライブラリAからアクセス可能なファイルは「/App」であるというPermissionである。Permission306はシステムライブラリ203のクラス303に設定されているPermissionである。例えばシステムライブラリ203からすべてのファイル(*)にアクセスできるというPermissionである。
Permissionはクラスの保存場所や仮想マシン201が保持する設定データによって仮想マシン201により設定される。本実施形態では説明を簡単にするためにアプリ206、ライブラリA205、システムライブラリ203だけで説明しているが実際のアプリの実行時にはさらに複雑な呼び出しスタックとなる。
従来、図3に示すクラスの呼び出しが行われた場合、アプリ206、ライブラリA205、システムライブラリの各クラス303に設定されているPermissionのANDをとった値がクラス呼び出しの権限情報307である。また本実施形態においても、クラスリストに含まれたクラスが呼び出されていない場合には、図3に示したように権限情報が決定される。なおその条件については図7等を参照して後で説明する。
●権限チェック処理
図4はアプリ206が動作するときのクラス呼び出し処理と、SecurityManager202での権限チェック処理を示すシーケンス図である。図4では説明を簡単にするためにシステムライブラリのクラスでセキュリティチェックが要求される場合のみを記載している。ライブラリAのクラスでセキュリティチェックが要求されることもあるが、処理としては同様に実行される。
図4はアプリ206が動作するときのクラス呼び出し処理と、SecurityManager202での権限チェック処理を示すシーケンス図である。図4では説明を簡単にするためにシステムライブラリのクラスでセキュリティチェックが要求される場合のみを記載している。ライブラリAのクラスでセキュリティチェックが要求されることもあるが、処理としては同様に実行される。
まずアプリのクラス301からライブラリAのクラス302のメソッドを呼び出す(S401)。次にライブラリAのクラス302はシステムライブラリのクラス303のメソッドを呼び出す(S402)。システムライブラリのクラス303呼び出されたメソッドの処理のなかで権限確認のためSecurityManager302のcheckPermissionを呼び出す(S403)。
SecurityManager302は権限のチェックをおこない(S404)、権限チェックに成功すればメソッドをreturnする(S405)。権限チェックに成功した場合には呼び出されたクラスのメソッドは順次実行されてリターンする(S406-S407)。ここで権限チェックは図7の手順で実行される。一方権限チェックに失敗すればセキュリティ例外(SecurityException)を返す(S408)。権限チェックに失敗した場合には呼び出されたクラスのメソッドは順次セキュリティ例外(SecurityException)を返す(S409-S410)。
図5はライブラリに含まれるクラスの一例を示すリスト501である。リスト501には「ライブラリAのクラス全て」という項目502や「ライブラリBに含まれるClass01」というクラスごとの項目503を含んでいる。クラスのリスト501は、例えばライブラリが更新される都度、ライブラリに合わせて更新され、セキュリティマネージャ202によりアクセス可能に外部記憶装置104等に保存される。クラスのリスト501は、ユーザが人手で作成してもよいが、ライブラリを走査してリスト501を作成するプログラムにより自動で作成してもよい。リスト501には、インストールされたアプリから呼び出され得るすべてのライブラリのクラスが登録されていてもよいし、セキュリティチェックの対象となり得るクラスに限って登録されてもよい。
図6は本発明の画像処理装置100の起動処理のフローチャートである。画像処理装置100はユーザによって起動されるとROM102から仮想マシン201をRAM(103)にロードし、CPU101にて仮想マシン201の実行をおこない、起動処理を開始する(S601)。
仮想マシン201はROM102からRAM103にSecurityManager202のプログラムをロードし、SecurityManager202を生成する(S602)。
S602で生成されたSecurityManager202は外部記憶装置104に保存されているクラスのリスト501を読み込む(S603)。仮想マシン201は外部記憶装置104からアプリ206を読み込み起動し(S604)、起動処理を終了する(S605)。起動されたアプリ202は、ユーザなどにより選択され実行されてよい。その実行は図4で説明した要領で行われる。
●セキュリティチェック処理
図7は図4のS404の処理の詳細をしめすフローチャートである。システムライブラリのクラス303からcheckPermissionの呼び出しがあると(S403)、SecurityManager302はcheckPermission処理を開始する(S701)。
図7は図4のS404の処理の詳細をしめすフローチャートである。システムライブラリのクラス303からcheckPermissionの呼び出しがあると(S403)、SecurityManager302はcheckPermission処理を開始する(S701)。
まず、SecurityManager302はクラスの呼び出しスタック308を取得する(S702)。たとえば、JAVA(登録商標)では、SecurityManager.getClassContext()といったメソッドにより呼び出しスタック308を取得できる。呼び出しスタックのことを、アプリから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報と呼ぶこともできる。そしてS702で取得したスタックの初めから呼び出されたクラスに順次着目する。次にSecurityManager302は、S702で取得したスタックの最後であるかを調べる(S703)。最後であるとは、呼び出しスタック即ち呼び出し系列に含まれたクラスすべてについて着目して処理を終えたことを意味する。最後であればS710に遷移する。最後でなければ、すなわち未処理のクラスが残っていればS704に遷移する。
ステップS704では、SecurityManager302は呼び出しスタックから着目クラスを取得する。SecurityManager302は、クラスリスト501を検索し、S704で取得したクラスが含まれるかを調べる(S705)。SecurityManager302は、S706ではS704で取得したクラスがクラスリスト501に存在していればS707に遷移する。存在していなければスタックに含まれた次のクラスに着目してS703に遷移する(S706)。
SecurityManager302はS707では権限情報を生成する。図8はアプリ206が動作するときのクラスの呼び出しスタック308および、各クラスに付与されたPermissionから権限情報801を生成する例を示す図である。図8のように、呼び出しスタックの先頭のクラスから、S706でクラスリストに含まれていると判定したクラスまでのPermissionのANDをとった権限情報801を生成する。なおスタックの先頭とは呼び出しのネストが最も深い部分であり、呼び出し系列の末尾に相当する。図8の例では、呼び出しスタックの先頭のクラス、すなわち呼び出し系列の末尾はシステムライブラリのクラス303である。またステップS706でクラスリストに含まれていると判定したクラスは、図5に示したようにライブラリAのクラスである。そのため、ここではそれら2つのクラスのパーミッションの論理積すなわち共通部分である"/App"が権限情報として得られる。すなわちアプリAには呼び出すライブラリのパーミションが付与されている必要はない。なお上記例では2つのクラスのパーミッション論理積を求めているが、それらの間に更に呼び出されたクラスが介在していれば、そのクラスのパーミッションも論理積の対象となる。
SecurityManager302は、S710では図3の権限情報307のようなスタックのすべてのクラスのPermissionのANDをとった権限情報を生成する。
SecurityManager302はS708では、ステップS707またはS710で生成した権限情報をもちいてセキュリティチェックをおこない(S708)、checkPermission処理を終了する(S709)。S708でセキュリティチェックが成功すればメソッド呼び出しの処理が実施されreturnする(S405~S407)。S708でセキュリティチェックが失敗すればセキュリティ例外(SecurityException)を返す(S408~S410)。
本実施形態の例では、図5に示すようにライブラリAのクラス302はクラスリスト501に含まれているため、図8の権限情報801でセキュリティチェックが実施される。権限情報801は、クラスリスト501に含まれたライブラリAのクラスのパーミッション(/App)と、そのクラスから呼び出されたシステムライブラリのクラスのパーミション(*)との合成すなわち論理積により得られている。記号*はすべてのファイルに対してアクセス可能であることを示すので、合成語のパーミッションは「/App」、すなわち、/Appに対してアクセスが許可される。そして本例では、/Appに対してアクセス可能というパーミションであれば、セキュリティチェックが成功する。なお論理積を求めることは、対象となるクラスそれぞれの共通のパーミッションを決定することともいえる。
よってライブラリAが動作するために「/App」へのファイルアクセスが必要であっても、アプリのクラス301に「/App」へのファイルアクセスを許可するPermissionを付与する必要はない。
またこのようにパーミッションを管理することで、アプリからは「/App」へのファイルアクセスを許可するPermissionを持つライブラリを経由しなければ/Appへのアクセスはできない。すなわち本例ではアプリからはライブラリA経由以外での「/App」へのファイルアクセスはできないため、システムの安定性をそこなうことはなくなる。
[実施形態2]
本実施形態では、アプリが呼び出すクラスのライブラリクラスローダを作成し、実施形態1において参照したクラスリストに代えてそのライブラリクラスローダ参照して、アプリから呼び出されるクラスのパーミッションを特定する。そして、それに基づいて権限情報を作成する。
本実施形態では、アプリが呼び出すクラスのライブラリクラスローダを作成し、実施形態1において参照したクラスリストに代えてそのライブラリクラスローダ参照して、アプリから呼び出されるクラスのパーミッションを特定する。そして、それに基づいて権限情報を作成する。
図9は実施形態2のアプリ実行環境でのクラスロード処理を示すシーケンス図である。アプリ206がアプリの実行に必要なクラスをロードするとき、まずアプリ用クラスローダ901に対してクラス要求をおこなう(S904)。アプリ用クラスローダ901は本実施形態のLibraryClassLoader902に対してクラス要求をおこなう(S905)。本実施形態のLibraryClassLoader902はシステムクラスローダ903に対してクラス要求をおこなう(S906)。それに応じてシステムクラスローダ903は自身のクラス保存場所から指定されたクラスをロードする(S907)。
システムクラスローダ903がクラスのロードに成功したら(908)、システムクラスローダ903は、ロードしたクラスにはそれをロードしたクラスローダ情報としてシステムクラスローダ903の情報を付与する(S925)。
さらに、システムクラスローダ903はロードしたクラスをLibraryClassLoader902、アプリ用クラスローダ901を経てアプリ206に返す(S909~S911)。
一方システムクラスローダ903がクラスのロードに失敗したら(912)、システムクラスローダ903はLibraryClassLoader902に「クラス無し」を返す(S913)。「クラス無し」は該当するクラスがなかったことを示す情報である。「クラス無し」の応答を受けたLibraryClassLoader(902)は、それ自身のクラス保存場所から指定されたクラスをロードする(S914)。
ステップS914でクラスのロードに成功したら(915)、LibraryClassLoader902は、ロードしたクラスに、それをロードしたクラスローダ情報としてLibraryClassLoader902の情報を付与する(S926)。さらに、LibraryClassLoader902は、ロードしたクラスを、アプリ用クラスローダ901を経てアプリ206に返す(S916~S917)。
一方、Library ClassLoader902がクラスのロードに失敗したら(918)、LibraryClassLoader902はアプリ用クラスローダ901に「クラス無し」を返す(S919)。これに応じてアプリ用クラスローダ901は自身のクラス保存場所から指定されたクラスをロードする(S920)。
アプリ用クラスローダ901がS920でクラスのロードに成功したら(921)、アプリ用クラスローダ901はロードしたクラスにロードしたクラスローダ情報としてアプリ用クラスローダ901の情報を付与する(S922)。さらにアプリ用クラスローダ901はロードしたクラスをアプリ206に返す(S923)。
一方アプリ用クラスローダ901がS920でクラスのロードに失敗したら(924)、アプリ用クラスローダ901は「クラス無し例外」をアプリ206に返す(S925)。クラス無し例外は、どのクラスローダによっても所望のクラスをロードできなかったことを示すので、クラス無し例外を受信したアプリ206はその状況に応じた所定の処理を実行する。
図10は実施形態2の画像処理装置100のアプリリスト1001の一例である。アプリリストはインストールされたアプリのアプリ情報1002のリストから構成されている。各アプリのアプリ情報はアプリのプログラムのパス情報1003とアプリが使用するライブラリのパス情報1004とを含む。ライブラリを使用しないアプリのパス情報1005は空である。アプリリスト1001は、図11で説明する画像処理装置100の起動処理において参照される。
図14は実施形態2のセキュリティ管理方法を実現するアプリ実行環境を示す図である。SecurityManager202はLibraryClassLoader記憶部1401をもつ。この実行環境で図11の手順が実行される。
図11は実施形態2の画像処理装置100の起動処理のフローチャートである。画像処理装置100はユーザによって起動されるとROM102から仮想マシン201をRAM103にロードし、CPU101にて仮想マシン201の実行をおこない、起動処理の開始する(S1101)。仮想マシン201はROM102からRAM103にSecurityManager202のプログラムをロードし、SecurityManager202を生成する(S1102)。仮想マシン201は外部記憶装置104からアプリリスト1001を読み込む(S1103)。読み込んだアプリリストの先頭のアプリ情報に着目する。仮想マシン201は着目したアプリ情報がアプリリスト1001の末尾に達したかを調べる(S1104)。末尾まで達していればS1110に遷移する。達していなければS1105に遷移する。末尾まで、とはアプリリストに含まれた全アプリのアプリ情報についてS1105~S1109の処理を完了したことを意味している。
S1105では仮想マシン201はアプリリスト1001から着目したアプリ情報を取得する(S1105)。次に仮想マシン201は取得したアプリ情報にライブラリ情報が含まれているかを調べる(S1106)。アプリ情報にライブラリ情報が含まれていればS1107に遷移する。含まれていなければS1109に遷移する。
S1107で仮想マシン201はライブラリ情報に含まれているパスからクラスをロードするLibraryClassLoader902を生成する。LibraryClassLoader902は、セキュリティチェック対象となるライブラリのクラスをロードするクラスローダである。このLibraryClassLoader902を用いて図10のクラスロード処理が実行される。次に仮想マシン201はS1107で生成したLibraryClassLoader902をSecurityManager202のLibraryClassLoader記憶部1401に保存する(S1108)。S1109で仮想マシン201は外部記憶装置104からアプリ206を読み込み起動し(S1109)、S1104に遷移する。このときアプリリストの着目アプリを次のアプリに移動する。
アプリリストに含まれた全アプリについて着目して処理を終了したなら、S1110で仮想マシン201は起動処理を終了する。このようにして画像処理装置100の起動時にアプリリストに登録されたアプリを順次起動し、またライブラリ情報が登録されたアプリについては、そのライブラリクラスローダを生成してセキュリティマネージャ202に登録しておく。
●権限情報の生成処理
実施形態2でも図4のようにPermissoinのチェックがおこなわれる。図12は実施形態2における図4のS404の処理の詳細をしめすフローチャートである。
実施形態2でも図4のようにPermissoinのチェックがおこなわれる。図12は実施形態2における図4のS404の処理の詳細をしめすフローチャートである。
システムライブラリのクラス303からcheckPermissionの呼び出しがあると(S403)、SecurityManager302はcheckPermission処理を開始する(S1201)。まず、SecurityManager302はクラスの呼び出しスタック308を取得する(S1202)。呼び出しスタックのことを呼び出し経路とも呼ぶ。たとえば、JAVA(登録商標)では、SecurityManager.getClassContext()といったメソッドにより呼び出しスタック308を取得できる。そしてS702で取得したスタックの初めから呼び出されたクラスに順次着目する。次にSecurityManager302はS1203で取得したスタックの最後であるかを調べる(S1203)。最後であるとは、スタックに含まれたクラスすべてについて着目して処理を終えたことを意味する。最後であればS1210に遷移する。最後でなければ、すなわち未処理のクラスが残っていればS1204に遷移する。
ステップS1204で、SecurityManager302は呼び出しスタックから着目クラスを取得する。SecurityManager302は取得したクラスのクラスローダを取得する(1205)。次にSecurityManager302はLibraryClassLoader記憶部1401に保存されているクラスローダに、S1205で取得したクラスローダが含まれているかを調べる(S1206)。SecurityManager302は、保存されているクラスローダにS1205で取得したクラスローダが含まれていればS1207に遷移する。含まれていなければスタックに含まれた次のクラスに着目してS1203に遷移する(S1206)。
SecurityManager302は、S1207では、実施形態1と同様に権限情報801を生成する。生成は、図8のスタックの先頭のクラスから、S1206でLIbraryClassLoader記憶部1401に記憶されていると判定したクラスまでのPermissionのANDをとることで行う。なおスタックの先頭とは呼び出しのネストが最も深い部分であり、図8の例では、呼び出しスタックの先頭のクラスはシステムライブラリのクラス303である。
SecurityManager302はS1210では、図3の権限情報307のようなスタックのすべてのクラスのPermissionのANDをとった権限情報を生成する。
SecurityManager302はS1208では、ステップS1207またはS1201で生成した権限情報をもちいてセキュリティチェックをおこない(S1208)、checkPermission処理を終了する(S1209)。S1208でセキュリティチェックが成功すればメソッド呼び出しの処理が実施されreturnする(S405~S407)。S1208でセキュリティチェックが失敗すればセキュリティ例外(SecurityException)を返す(S408~S410)。
本実施形態の例では、図10に示すようにアプリA205はライブラリAと関連付けてアプリリスト1001に登録されているため、図11の手順でライブラリAのライブラリクラスローダがLibraryClassLoader1401に登録される。こうしてライブラリAのクラス302をロードしたLibraryClassLoaderはSecurityManager302に登録されているため、図8の権限情報801が生成されてそれを用いてセキュリティチェックを実施する。
よってライブラリAが動作するために「/App」へのファイルアクセスが必要であっても、アプリのクラス301に「/App」へのファイルアクセスを許可するPermissionを付与する必要はない。それによりアプリからはライブラリA経由以外での「/App」へのファイルアクセスはできないため、システムの安定性をそこなうことはなくなる。さらに実施形態1と比べるとクラスローダを使用して判定をおこなうため対象となるクラスの数が多くなってもSecurityManagerの処理時間が大きくならない。
[実施形態3]
図13は実施形態3における図4のS404の処理の詳細をしめすフローチャートである。本実施形態では、実施形態2の図12に示したセキュリティチェックの手順を、デフォルト設定のセキュリティチェックで失敗した(不許可となった)後で実行する。
図13は実施形態3における図4のS404の処理の詳細をしめすフローチャートである。本実施形態では、実施形態2の図12に示したセキュリティチェックの手順を、デフォルト設定のセキュリティチェックで失敗した(不許可となった)後で実行する。
図13において、checkPermissionの呼び出しがあると(S403)、SecurityManager302はcheckPermission処理を開始する(S1201)。
まず、SecurityManager302はセキュリティのチェックをおこなう(S1301)。次にS1301のセキュリティチェックが成功したか判定し(S1302)、成功すればS1208に遷移しcheckPermission処理を終了する(S1208)。ステップS1301のセキュリティチェックは、例えばステップS1210と同様の権限情報を生成して実行してよい。その場合には、図13のステップS1203でスタックの最後と判定したなら、ステップS1209へと分岐してよい。これにより同じチェックの繰り返しを避けることができる。
S1301のセキュリティチェックが失敗すればS1202に遷移し、例えば実施形態2のcheckPermission処理を行う。この処理により、ライブラリを使用しない処理の場合は高速にcheckPermission処理を行うことができる。なお、実施形態2の図12に示したセキュリティチェックの手順に代えて、実施形態1の図7に示したセキュリティチェックの手順を行ってもよい。
以上説明したように、実施形態1乃至3の構成及び処理手順によって、システムライブラリのクラスを利用するために必要なパーミッション(許諾)をアプリに付与することなく、当該クラスを利用することが可能となった。また実施形態1乃至3によれば、そのためにライブラリのコードを修正する必要もない。この結果、ライブラリのクラスの許諾を付与されたアプリが、その許諾を利用してセキュリティチェックを通すことを防止でき、システムの安全性や安定性を損なうことを防止できる。またライブラリのコードを修正する必要がなく、そのための工数が不要となる。
また実施形態2では、アプリから呼び出されるクラスをライブラリクラスローダでロードすることにより、アプリのライブラリのクラス経由の呼び出しにのみアプリのパーミッションをチェックせずに実行可能となる。また、ライブラリの修正なしにライブラリを使用することができる。さらに実施形態2では、アプリから呼び出されるライブラリクラスのクラスローダの情報で判断するために、ライブラリ含まれたクラスの数が増加してもチェック対象のクラスの数は限られ、パーミッションのチェックに要する時間が増えることがない。
また実施形態3では、まず従来のセキュリティマネージャによる手順でセキュリティチェックが行われるため、パーミッションが付与されたアプリについては、起動の所要時間に影響を与えずにセキュリティチェックが可能となる。また従来の手順でセキュリティチェックに失敗すると、実施形態1または実施形態2の手順でセキュリティチェックを行うために、
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
●実施形態のまとめ
本実施形態の開示は、以下の構成および方法を含む。
(構成1)アプリケーションから呼び出されるライブラリに含まれるクラスの情報を記憶するクラス情報記憶手段と、
前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定する特定手段と、
前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成する生成手段と、
前記権限情報に基づいてセキュリティチェックを行うセキュリティチェック手段と、を有することを特徴とする情報処理装置。
本実施形態の開示は、以下の構成および方法を含む。
(構成1)アプリケーションから呼び出されるライブラリに含まれるクラスの情報を記憶するクラス情報記憶手段と、
前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定する特定手段と、
前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成する生成手段と、
前記権限情報に基づいてセキュリティチェックを行うセキュリティチェック手段と、を有することを特徴とする情報処理装置。
(構成2)
構成1に記載の情報処理装置であって、
前記クラス情報記憶手段は、アプリケーションから呼び出され得るライブラリに含まれるすべてのクラスの情報を記憶する
ことを特徴とする情報処理装置。
構成1に記載の情報処理装置であって、
前記クラス情報記憶手段は、アプリケーションから呼び出され得るライブラリに含まれるすべてのクラスの情報を記憶する
ことを特徴とする情報処理装置。
(構成3)
構成1に記載の情報処理装置であって、
前記クラス情報記憶手段は、前記クラスの情報として、前記情報処理装置にインストールされたアプリケーションが使用するライブラリのクラスローダを記憶する
ことを特徴とする情報処理装置。
構成1に記載の情報処理装置であって、
前記クラス情報記憶手段は、前記クラスの情報として、前記情報処理装置にインストールされたアプリケーションが使用するライブラリのクラスローダを記憶する
ことを特徴とする情報処理装置。
(構成4)
構成3に記載の情報処理装置であって、
前記情報処理装置にインストールされた前記アプリケーションのパス情報と当該アプリケーションが使用するライブラリのパス情報とを含むリストを記憶するリスト記憶手段を更に有し、
前記情報処理装置の起動時に、前記リストに含まれた前記ライブラリのパス情報に基づいて前記クラスローダを生成し、前記クラス情報記憶手段に記憶する
ことを特徴とする情報処理装置。
構成3に記載の情報処理装置であって、
前記情報処理装置にインストールされた前記アプリケーションのパス情報と当該アプリケーションが使用するライブラリのパス情報とを含むリストを記憶するリスト記憶手段を更に有し、
前記情報処理装置の起動時に、前記リストに含まれた前記ライブラリのパス情報に基づいて前記クラスローダを生成し、前記クラス情報記憶手段に記憶する
ことを特徴とする情報処理装置。
(構成5)
構成1乃至4のいずれかに記載の情報処理装置であって、
前記特定手段により前記第1のクラスを特定できない場合には、前記生成手段は、前記呼び出し系列情報に含まれたすべてのクラスのパーミッションの共通部分を含む権限情報を生成する
ことを特徴とする情報処理装置。
構成1乃至4のいずれかに記載の情報処理装置であって、
前記特定手段により前記第1のクラスを特定できない場合には、前記生成手段は、前記呼び出し系列情報に含まれたすべてのクラスのパーミッションの共通部分を含む権限情報を生成する
ことを特徴とする情報処理装置。
(構成6)
構成1乃至5のいずれかに記載の情報処理装置であって、
前記呼び出し系列情報に含まれたすべてのクラスのパーミッションの共通部分を含む権限情報を生成して前記権限情報で前記セキュリティチェック手段によるセキュリティチェックを行うチェック手段を更に有し、
前記チェック手段によるセキュリティチェックが失敗した場合に、前記特定手段と前記生成手段と前記セキュリティチェック手段とによるセキュリティチェックを行う
ことを特徴とする情報処理装置。
構成1乃至5のいずれかに記載の情報処理装置であって、
前記呼び出し系列情報に含まれたすべてのクラスのパーミッションの共通部分を含む権限情報を生成して前記権限情報で前記セキュリティチェック手段によるセキュリティチェックを行うチェック手段を更に有し、
前記チェック手段によるセキュリティチェックが失敗した場合に、前記特定手段と前記生成手段と前記セキュリティチェック手段とによるセキュリティチェックを行う
ことを特徴とする情報処理装置。
(構成7)
構成1に記載の情報処理装置であって、
前記パーミッションには、アクセスが許可されたファイルの情報を含む
ことを特徴とする情報処理装置。
構成1に記載の情報処理装置であって、
前記パーミッションには、アクセスが許可されたファイルの情報を含む
ことを特徴とする情報処理装置。
(構成8)
構成1に記載の情報処理装置であって、
前記アプリケーションから始まる一連のクラスの呼び出し系列は、前記アプリケーションから要求されたクラスがロードされるまでの呼び出し系列を含む
ことを特徴とする情報処理装置。
構成1に記載の情報処理装置であって、
前記アプリケーションから始まる一連のクラスの呼び出し系列は、前記アプリケーションから要求されたクラスがロードされるまでの呼び出し系列を含む
ことを特徴とする情報処理装置。
(構成9)
構成1乃至8のいずれかに記載の情報処理装置としてコンピュータを機能させるためのプログラム。
構成1乃至8のいずれかに記載の情報処理装置としてコンピュータを機能させるためのプログラム。
201 仮想マシン、202 SecurityManager、203 システムライブラリ、204 ライブラリB、205 ライブラリA、206 アプリ
Claims (10)
- アプリケーションから呼び出されるライブラリに含まれるクラスの情報を記憶するクラス情報記憶手段と、
前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定する特定手段と、
前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成する生成手段と、
前記権限情報に基づいてセキュリティチェックを行うセキュリティチェック手段と、を有する
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記クラス情報記憶手段は、アプリケーションから呼び出され得るライブラリに含まれるすべてのクラスの情報を記憶する
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記クラス情報記憶手段は、前記クラスの情報として、前記情報処理装置にインストールされたアプリケーションが使用するライブラリのクラスローダを記憶する
ことを特徴とする情報処理装置。 - 請求項3に記載の情報処理装置であって、
前記情報処理装置にインストールされた前記アプリケーションのパス情報と当該アプリケーションが使用するライブラリのパス情報とを含むリストを記憶するリスト記憶手段を更に有し、
前記情報処理装置の起動時に、前記リストに含まれた前記ライブラリのパス情報に基づいて前記クラスローダを生成し、前記クラス情報記憶手段に記憶する
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記特定手段により前記第1のクラスを特定できない場合には、前記生成手段は、前記呼び出し系列情報に含まれたすべてのクラスのパーミッションの共通部分を含む権限情報を生成する
ことを特徴とする情報処理装置。 - 請求項1乃至5のいずれか一項に記載の情報処理装置であって、
前記呼び出し系列情報に含まれたすべてのクラスのパーミッションの共通部分を含む権限情報を生成して前記権限情報で前記セキュリティチェック手段によるセキュリティチェックを行うチェック手段を更に有し、
前記チェック手段によるセキュリティチェックが失敗した場合に、前記特定手段と前記生成手段と前記セキュリティチェック手段とによるセキュリティチェックを行う
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記パーミッションには、アクセスが許可されたファイルの情報を含む
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記アプリケーションから始まる一連のクラスの呼び出し系列は、前記アプリケーションから要求されたクラスがロードされるまでの呼び出し系列を含む
ことを特徴とする情報処理装置。 - アプリケーションから呼び出されるライブラリに含まれるクラスの情報を記憶するクラス情報記憶手段と、
前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定する特定手段と、
前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成する生成手段と、
前記権限情報に基づいてセキュリティチェックを行うセキュリティチェック手段と、してコンピュータを機能させるためのプログラム。 - アプリケーションから呼び出されるライブラリに含まれるクラスの情報を記憶するクラス情報記憶手段と、特定手段と、生成手段と、セキュリティチェック手段とを有する情報処理装置によるセキュリティ管理方法であって
前記特定手段が、前記アプリケーションから始まる一連のクラスの呼び出し系列を示す呼び出し系列情報から、前記クラス情報記憶手段に記憶された前記クラスの情報に相当する第1のクラスを特定し、
前記生成手段が、前記呼び出し系列情報に含まれた前記第1のクラスから前記呼び出し系列情報の末尾の第2のクラスまでのそれぞれのクラスのパーミッションの共通部分を含む権限情報を生成し、
前記セキュリティチェック手段が、前記権限情報に基づいてセキュリティチェックを行う
ことを特徴とするセキュリティ管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022063987A JP2023154573A (ja) | 2022-04-07 | 2022-04-07 | 情報処理装置、セキュリティ管理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022063987A JP2023154573A (ja) | 2022-04-07 | 2022-04-07 | 情報処理装置、セキュリティ管理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023154573A true JP2023154573A (ja) | 2023-10-20 |
Family
ID=88373500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022063987A Pending JP2023154573A (ja) | 2022-04-07 | 2022-04-07 | 情報処理装置、セキュリティ管理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023154573A (ja) |
-
2022
- 2022-04-07 JP JP2022063987A patent/JP2023154573A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4827523B2 (ja) | 情報処理装置、情報処理方法、ならびに制御プログラム | |
KR100751159B1 (ko) | 소프트웨어 인증 시스템, 소프트웨어 인증 방법 및소프트웨어 인증 프로그램을 기록한 컴퓨터 판독 가능한기록 매체 | |
US11176633B2 (en) | Image processing apparatus, method for controlling the same, and non-transitory computer-readable storage medium | |
JP5037422B2 (ja) | 画像形成装置、アクセス制御方法、及びアクセス制御プログラム | |
US9411945B2 (en) | Image processing apparatus that performs user authentication, authentication method therefor, and storage medium | |
JP5069794B2 (ja) | アプリケーション開発支援装置、プログラム及び記録媒体 | |
US20170201651A1 (en) | Information processing apparatus, control method in information processing apparatus, and image processing apparatus | |
US20080229327A1 (en) | Information processing apparatus, information processing mehtod and computer program product | |
US10958803B2 (en) | Information processing apparatus, information processing system, and non-transitory computer readable medium | |
US10996998B2 (en) | Information processing apparatus and control method thereof | |
EP2306309B1 (en) | Method and apparatus for simulating image processing apparatus | |
JP2023154573A (ja) | 情報処理装置、セキュリティ管理方法およびプログラム | |
JP5482781B2 (ja) | 情報処理システム及び情報処理システムの動作方法 | |
US10791228B2 (en) | Image processing apparatus with malicious code detection processing and control program | |
US11010346B2 (en) | Methods and apparatus for managing access to file content | |
US20150089573A1 (en) | Information processing apparatus and method for controlling the same, and non-transitory computer-readable medium | |
JP6440099B2 (ja) | 電子機器 | |
JP7262269B2 (ja) | 情報処理装置、及び情報処理装置の制御方法、プログラム | |
CN117807039B (zh) | 一种容器处理方法、装置、设备、介质及程序产品 | |
US20220253521A1 (en) | Image forming apparatus capable of executing application programs, control method therefor, and storage medium | |
US20220318421A1 (en) | Protecting Data Based on Context of Data Movement Operation | |
JP2017167781A (ja) | 情報処理装置及び情報処理方法 | |
JP6440100B2 (ja) | 電子機器 | |
JP2022129830A (ja) | 電子機器、ライブラリ、処理方法 | |
JP2022146426A (ja) | 情報処理装置及び情報処理プログラム |