説明

改ざん検出装置、監視システム、改ざん検出方法、およびプログラム

【課題】監視対象となるソフトウェアプログラムを加工することなく、当該ソフトウェアプログラムにおける改ざんを確実に検出し得る、改ざん検出装置、監視システム、改ざん検出方法、およびプログラムを提供する。
【解決手段】ソフトウェアプログラムを実行する端末装置100における改ざんを検出する改ざん検出装置20は、ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、端末装置100の記憶装置10のスタック領域に格納されているアドレスが、記憶装置10の動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、記憶領域に格納されているデータに対する改ざんを検出する、改ざん検出部25を備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータなどの端末装置におけるプログラム実行時の改ざんを防止するための、改ざん検出装置、それを用いた監視システム、更には、改ざん検出方法、およびこれらを実現するためのプログラムに関する。
【背景技術】
【0002】
従来から、ソフトウェアの改ざんなどの不正使用を防止する方法(以下、「不正使用防止方法」という。)が提案されている。不正使用防止方法の一つとしては、ソフトウェアの契約管理と利用者管理とを対応付け、正規の使用者を特定することによって、ソフトウェアの使用を管理する方法が知られている。
【0003】
また、ソフトウェアのインストール時等にパスワードの入力を要求して権限のない者による使用を防止する不正使用防止方法は、現在、最も一般的に用いられている方法である。但し、この不正使用防止方法には、パスワードが非正規のソフトウェア使用者に対して流出した場合に、不正使用を防ぐことができないという問題がある。
【0004】
また、不正使用防止方法としては、パーソナルコンピュータ(以下「PC」とする。)にインストールした監視プログラムまたはPCに設置した監視装置を用いて、PCのメインメモリを監視することにより、ソフトウェアの改ざんを検出する方法も知られている。
【0005】
但し、改ざんの防止対象であるソフトウェアプログラムがPCで実行されている場合に、記録装置(メインメモリ)に動的に確保されるデータ領域を監視することは、困難である。これは、監視対象となるデータ領域を認知することが難しいためである。従って、このような場合には、静的に割り当てられたプログラム領域または共有使用領域にあるプログラムコードおよびデータのみが監視対象となる。この問題について具体例を挙げて説明する。
【0006】
例えば、特許文献1は、このようなソフトウェアの改ざんを検出する検出装置を開示している。特許文献1に開示の検出装置では、プログラムコードなどを記憶する静的記憶領域と、プログラムコードに係る処理の実行に伴って変更される情報を記憶する動的記憶領域とが、記憶装置の記憶領域に構築されている。
【0007】
そして、検出装置は、動的記憶領域に記憶され、且つ静的記憶領域の範囲を示すアドレス情報を参照して、静的記憶領域に記憶された情報に基づく処理が実行される場合に、動的記憶領域から参照したアドレス情報が静的記憶領域の範囲内を指定するものであるか否かを判定する。その後、検出装置は、判定の結果、アドレス情報が静的記憶領域の範囲内を指定するものでない場合は、動的記憶領域に記憶された情報を改ざんされた情報として検出する。
【0008】
このように、特許文献1に開示の検出装置では、静的なプログラムコードと静的なデータとを監視しているだけであり、その監視しているプログラムコードまたはデータが実際にPCで実行されているコードまたはデータであることを判別することは、困難である。即ち、特許文献1に開示の検出装置では、動的に確保されるデータ領域を監視することは、困難である。
【0009】
また、動的記憶領域から参照したアドレス情報が、静的記憶領域の範囲内を指定する場合であっても、その範囲内のアドレス情報が改ざんされていないという確証はなく、場合によっては、処理は正常でも、不正な処理が実行されている場合が想定される。よって、特許文献1に開示の検出装置では、改ざんの検出は不十分である。
【0010】
また、特許文献1に開示された検出装置は、ソースコード上で分岐および復帰の場所に、マクロなどによって不正コード検出機構を挿入して、改ざんの有無を検出する。しかし、ソースコードに分岐および復帰の箇所が多い場合、すべての分岐および復帰の箇所において改ざんの有無を検出しようとすると、その分、主となるプログラムの実行に要する時間が増えてしまうことになる。上記特許文献1に開示された検出装置には、ソフトウェアの処理性能の低下を招くという問題もある。
【0011】
特許文献1の問題を解決するため、例えば、特許文献2は、PC等に接続され、これを監視する監視装置を開示している。特許文献2に開示された監視装置は、監視対象であるプログラムコードに1つ以上のチェッカコードを挿入して、ソフトウェアコードを作成し、PC等がそのソフトウェアコードを実行している最中に、チェッカコードを活性化させる。
【0012】
このため、特許文献2に開示された監視装置は、ソフトウェアコードを実行中のPC等が、活性化されたチェッカコードにより指定された処理を実行すると、そのチェッカコードによって、指定された処理が実行されたことを確認することができる。そして、この結果、特許文献2に開示された監視装置は、PC等で実際に実行中のプログラムコードを監視することができる。このように、特許文献2に開示された監視装置によれば、記録装置(メインメモリ)に動的に確保されるデータ領域を監視することができ、プログラムコードの一部または全部について、改ざんの有無を検出できる。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2006−106956号公報
【特許文献2】特開2008−84275号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、特許文献2に開示された監視装置を用いる場合は、不正使用の監視対象となるソフトウェアプログラムに対して、事前にチェッカコードを挿入することが必要になる。特許文献2に開示された監視装置には、不正使用の監視対象が限定されるという問題点がある。
【0015】
本発明の目的の一例は、上記問題を解消し、監視対象となるソフトウェアプログラムを加工することなく、当該ソフトウェアプログラムにおける改ざんを確実に検出し得る、改ざん検出装置、監視システム、改ざん検出方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0016】
上記目的を達成するため、本発明の一側面における改ざん検出装置は、ソフトウェアプログラムを実行する端末装置における改ざんを検出する改ざん検出装置であって、
前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、改ざん検出部を備えている、ことを特徴とする。
【0017】
上記目的を達成するため、本発明の一側面における監視システムは、改ざん検出装置を有する端末装置と、監視装置とを備え、
前記改ざん検出装置は、
前記端末装置で実行されるソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出し、
更に、検出した前記改ざんを特定する改ざん情報を前記監視装置に送信し、
前記監視装置は、前記改ざん検出装置から送信されてきた前記改ざん情報を用いて、前記端末装置を監視する、ことを特徴とする。
【0018】
また、上記目的を達成するため、本発明の一側面における改ざん検出方法は、ソフトウェアプログラムを実行する端末装置における改ざんを検出するための方法であって、
(a)前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、ステップを有している、
ことを特徴とする。
【0019】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータがソフトウェアプログラムを実行している場合における改ざんの検出を、前記コンピュータによって行うためのプログラムであって、
前記コンピュータに、
(a)前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記コンピュータのメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、ステップを実行させる、ことを特徴とする。
【発明の効果】
【0020】
以上のように、本発明によれば、監視対象となるソフトウェアプログラムを加工することなく、当該ソフトウェアプログラムにおける改ざんを確実に検出することができる。
【図面の簡単な説明】
【0021】
【図1】図1は、本発明の実施形態における監視システムの全体構成を示す図である。
【図2】図2は、本発明の実施の形態における改ざん検出装置の構成を示すブロック図である。
【図3】図3は、本実施の形態で用いられる端末装置の記憶装置におけるメモリマップの一例を示す図である。
【図4】図4は、本実施の形態で用いられる端末装置の記憶装置におけるメモリマップの他の例を示す図である。
【図5】図5は、本実施の形態において、環境情報として利用される、利用者管理情報、装置識別情報、契約情報、および製品情報の一例を示す図である。
【図6】図6は、本実施の形態において、環境情報として利用される、利用者管理情報およびアクセス管理情報の一例を示す図である。
【図7】図7は、ソフトウェアプログラムによる分岐処理または復帰処理によって改ざんが行われていない場合を説明する図である。
【図8】図8は、ソフトウェアプログラムによる分岐処理または復帰処理によって改ざんが行われている場合を説明する図である。
【図9】図9は、本発明の実施の形態における改ざん検出装置の動作を示すフロー図である。
【図10】図10は、本発明の実施の形態で利用される端末装置の具体例を示すブロック図である。
【発明を実施するための形態】
【0022】
(実施の形態)
以下、本発明の実施の形態における、改ざん検出装置、監視システム、改ざん検出方法、およびプログラムについて、図1〜図10を参照しながら説明する。
【0023】
[システム構成]
最初に、図1を用いて、本発明の実施の形態における監視システムの全体構成を説明する。図1は、本発明の実施の形態における監視システムの全体構成を示す図である。図1に示すように、本実施の形態における監視システム300は、端末装置100と、これらを監視する監視装置200とを備えている。端末装置100と監視装置200とは、イントラネット、インターネットといったネットワーク80を介して接続されている。
【0024】
また、図1に示すように、端末装置100は、その内部において、改ざん検出装置20を備えている。改ざん検出装置20は、ソフトウェアプログラムを実行する際の端末100での改ざんを検出し、検出した改ざんを特定する改ざん情報を監視装置200に送信する。なお、図1の例では、単一の端末装置100のみが図示されているが、実際には、複数個の端末装置100が監視装置200に接続されていても良い。本実施の形態において、端末装置100の数は特に限定されるものではない。
【0025】
更に、図1に示すように、監視装置200は、監視部70と、格納部71とを備えている。このうち、監視部70は、端末装置100から送信されてきた改ざん情報61を用いて、端末装置100を監視する。格納部71は、送信されてきた改ざん情報61を、監視情報60として格納する。
【0026】
また、本実施の形態では、改ざん検出装置20は、更に、利用者管理情報41、装置識別情報42、およびアクセス管理情報45も、監視装置200に送信する。このため、格納部71は、これらの情報も監視情報60として格納する。更に、監視部70は、端末装置100の監視に、利用者管理情報41、装置識別情報42、およびアクセス管理情報45も利用する。なお、利用者管理情報41、装置識別情報42、およびアクセス管理情報45の内容については、後述する。
【0027】
また、監視装置200において、監視部70は、予め設定された時間間隔をおいて、監視対象となる端末装置100の監視を行うことができる。なお、不定期で監視が実行されていても良く、例えば、監視装置200の管理者が、監視装置200を起動させたタイミングで、監視部70が監視を行っていても良い。
【0028】
[端末装置の構成]
ここで、本実施の形態において監視対象となる端末装置の構成について説明する。図2は、本発明の実施の形態における改ざん検出装置の構成を示すブロック図である。図2に示すように、本実施の形態における改ざん検出装置20は、端末装置100に備えられている。具体的には、改ざん検出装置20は、端末装置100のOS上で動作する改ざん検出プログラムによって構築される。なお、改ざん検出プログラムについては後述する。
【0029】
また、図2に示すように、端末装置100は、改ざん検出装置20以外に、記憶装置10と、CPU(Central Processing Unit)11とを備えている。このうち、記憶装置10は、主記憶装置(メインメモリ)であり、端末装置100が、ソフトウェアプログラムを実行する際に必要となる情報(図2において図示せず)を記憶している。更に、記憶装置10は、端末装置100で実行するソフトウェアプログラムでの改ざん検出、および当該ソフトウェアプログラムの不正利用の判定を行うために必要な情報として、記憶領域管理情報30、環境情報40、状態情報50も記憶している。
【0030】
また、ソフトウェアプログラムは、CPU11によって、ハードディスクドライブ等の二次記憶装置から読み出され、記憶装置10に書き込まれてから、実行される。よって、端末装置100が実行するソフトウェアプログラムが、その実行時に改ざんされているかどうかは、記憶装置10の記憶領域において判断される。記憶装置10は、改ざん検出の対象となる装置である。
【0031】
図2に示すように、改ざん検出装置20は、主に、改ざん検出部25を備えている。改ざん検出部25は、ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、端末装置100の記憶装置10のスタック領域に格納されているアドレスが、記憶装置10の動的領域及び静的領域のいずれのアドレスであるかを判定する。そして、改ざん検出部25は、判定結果に基づいて、記憶領域に格納されているデータに対する改ざんを検出する。
【0032】
このように、本実施の形態では、ソフトウェアプログラムの実行時に利用される記憶領域を調べることによって、改ざんの検出が行われている。よって、本実施の形態によれば、監視対象となるソフトウェアプログラムに、チェッカコード、関数などを埋め込むといった加工を行う必要がなく、このような加工を行わなくても、ソフトウェアプログラムにおける改ざんが確実に検出される。
【0033】
ここで、記憶装置10に格納されている情報と、改ざん検出装置20の構成および機能について図3〜図6を用いて更に具体的に説明する。
【0034】
[記憶領域管理情報]
記憶領域管理情報30は、記憶装置10の記憶領域を管理するために設定された開始アドレス及び終了アドレスを含む情報である。また、記憶領域は、静的に確保されているメモリ領域(静的領域)、即ち、プログラム領域、共有ライブラリとして活用される領域、または共有メモリとして活用される領域を含み、開始アドレス及び終了アドレスは、これら静的領域に設定されている。具体的には、図2に示すように、記憶領域管理情報30は、Static-area-pointer 31と、共有ライブラリpointer32とを含む。
【0035】
ここで、図3および図4を用いて、記憶装置10の記憶領域について具体的に説明する。図3は、本実施の形態で用いられる端末装置の記憶装置におけるメモリマップの一例を示す図である。図4は、本実施の形態で用いられる端末装置の記憶装置におけるメモリマップの他の例を示す図である。
【0036】
具体的には、図3は、端末装置100が32ビットマシンである場合のメモリマップを示し、図4は、端末装置100が64ビットマシンである場合のメモリマップを示している。オペレーティングシステムの違いによってメモリマップは変わるが、一般的な仕様においては、動的に確保されるメモリ領域(動的領域)は高位の位置にアロケーションされる。一方、上述したように、プログラム領域、共通して使用される領域は、ソフトウェアプログラムの実行前にアロケーションされ、且つ、終了まで位置が変わらない、静的領域として確保される。そして、図3および図4に示すように、記憶領域管理情報30、即ち、Static-area-pointer31と共有ライブラリpointer32とは、メモリ領域における静的領域の開始アドレスと終了アドレスとを規定している。
【0037】
[環境情報]
環境情報40は、利用者を特定するために必要となる利用者管理情報41、装置識別情報42、使用する製品のライセンス契約に関する契約情報43、製品情報44、及びアクセス管理情報45を含む。図5および図6を用いて、これらについて説明する。
【0038】
図5は、本実施の形態において、環境情報として利用される、利用者管理情報、装置識別情報、契約情報、および製品情報の一例を示す図であり、これらの互いの関連性についても示している。図6は、本実施の形態において、環境情報として利用される、利用者管理情報およびアクセス管理情報の一例を示す図であり、両者の関連性についても示している。
【0039】
[環境情報:利用者管理情報]
図5に示すように、利用者管理情報41は、端末装置100の使用が許可される利用者を管理するための情報であり、不正な利用者の排除に活用される。そして、利用者管理情報41は、当該利用者が利用できる端末装置に関する情報として端末装置のコンピュータIDを登録しており、コンピュータIDによって、装置識別情報42と対応付けられている。これにより、利用者は複数の装置を使用することができる。また、同様に、利用者管理情報41は、当該利用者が使用できるソフトウェアプログラムに関する情報としてプロダクトIDも登録している。
【0040】
[環境情報:装置識別情報]
図5に示すように、装置識別情報42は、端末装置100を一意に識別するための情報である。端末装置100は、装置識別情報が含むコンピュータIDによって管理されている。また、装置識別情報42は、コンピュータIDに加え、管理部門、使用者、コンピュータ資源情報、ハードウェア情報、契約情報(契約)なども含んでいる。装置識別情報42は、コンピュータIDと契約IDとによって、端末装置100に使用できるソフトウェアプログラムを特定する契約情報43に対応付けられている。
【0041】
[環境情報:契約情報]
図5に示すように、契約情報43は、インストールされている各ソフトウェアプログラムの、ライセンス契約に関する情報である。契約情報43は、ライセンス契約により使用が認められている装置、すなわちソフトウェアプログラムをインストールできる装置のID(コンピュータID)によって、装置識別情報42に対応付けられている。また、契約情報43は、ライセンス契約されているソフトウェアプログラム(製品)のプロダクトIDおよびライセンスコードによって、後述する製品情報44にも対応づけられている。
【0042】
[環境情報:製品情報]
図5に示すように、製品情報44は、ライセンス契約されているソフトウェアプログラム(製品)を特定する情報であり、ライセンス契約されている製品に関する情報、例えば、製品の世代情報(バージョン)、保守情報などを含む。製品情報44は、プロダクトIDとライセンスコードとによって、契約情報43に対応付けられている。
【0043】
また、保守情報は、プログラムの不具合を改善する修正プログラムのID(パッチ情報ID)を含んでいる。よって、端末装置100の管理者は、当該ソフトウェアプログラムについて、セキュリテイホールなどの問題が生じた場合は、保守情報に基づいて適切な修正プログラムを適用する。
【0044】
[環境情報:アクセス管理情報]
図6に示すように、アクセス管理情報45は、ソフトウェアプログラムにアクセス可能な利用者(利用者ID)と、ソフトウェアプログラムを実行可能な端末装置(コンピュータID)と、ソフトウェアプログラム(またはコンテンツ)が端末装置にインストールされた日時とを、互いに対応付けて管理するための情報である。
【0045】
また、アクセス管理情報45には、利用者ID、コンピュータIDに加え、端末装置100にインストールされたソフトウェアプログラムの履歴情報が、インストール情報として含まれている。インストール情報は、契約ID、プロダクトID、タイムスタンプ、インストールコードによって構成されている。アクセス管理情報45によれば、利用者が使用する端末装置100と、その端末装置100で使用するソフトウェアプログラムと、の利用環境が、アクセスの頻度またはアクセスの範囲として管理されることによる。そして、この結果、利用者が使用できるソフトウェアプログラムの世代管理も含めた適切なアクセス管理が可能となる。
【0046】
[状態情報]
状態情報50は、クライアント端末100のソフトウェアプログラムが、その実行に割り当てられた記憶領域(スタックまたはヒープと呼ばれる)を参照して、分岐処理または復帰処理を実行した際の、改ざんの検出に用いられる情報である。具体的には、状態情報50は、CPUの動作状態を示す状態信号51と、メモリ関数の動作を制御する環境変数52とを含む。
【0047】
[改ざん検出装置の詳細構造]
続いて、改ざん検出装置20の構成について、具体的に説明する。図2に示すように、改ざん検出装置20は、改ざん検出部25に加えて、利用者管理部21と、端末装置管理部22と、タスク管理部23と、不正利用検出部24と、利用アクセス暗号化部26とを更に備えている。
【0048】
利用者管理部21は、端末装置100の利用者が、自身を特定するために必要な管理情報として、利用者管理情報41を登録すると、監視装置200に、当該利用者管理情報を送出する。
【0049】
端末装置管理部22は、端末装置100の利用者が、自身が使用する端末装置100を特定するために必要な管理情報として、装置識別情報42を登録すると、監視装置200に、当該装置識別情報42を送出する。
【0050】
タスク管理部23は、端末装置の稼働状況(稼動プロセス)を管理する。タスク管理部23は、改ざん検出部25が改ざんを検出すると、その時点において実行しているタスク(プロセス)を実行時間と共に記録する。タスク管理部23が、記録を監視装置200に送出すると、この記録は、監視装置200における改ざんの分析において、処理中のタスクの確認と、改ざんしたタスクの表出とに利用される。
【0051】
不正利用検出部24は、利用者が端末装置100を用いてソフトウェアプログラムを利用する場合に、利用者管理情報41及び装置識別情報42を、アクセス管理情報45に照らし合わせて、そのことが許可されているかどうかを判定する。そして、不正利用検出部24は、判定結果、許可されていない場合は、端末装置100によるソフトウェアプログラムの利用を不正利用として検出する。また、不正利用検出部24は、検出結果を監視装置200に送出する。送出された検出結果は、監視装置200の監視部70によって参照される。
【0052】
改ざん検出部25は、上述したように、ソフトウェアプログラムに、その実行時に割り当てられた記憶領域のデータ(アドレス情報)に対して改ざんが行われている場合に、それを検出する。
【0053】
本実施の形態では、改ざん検出部25は、ソフトウェアプログラムが、分岐処理または復帰処理を実行すると、先ず、端末装置100のCPU(プロセッサ)11の動作を示す状態信号の出力と、環境変数の設定によって記憶装置10の異常検出機能を起動させたときの出力とを取得する。環境変数の設定は、具体的には、環境変数(MALLOC_CHECK)に所定の値を設定することによって行われる。
【0054】
そして、改ざん検出部25は、状態信号の出力からスタック操作命令(メモリの動的領域確保malloc、解放free)が実行されていると判断できる場合、および異常検出機能の起動により診断メッセージが出力されている場合のいずれかに該当するかどうかを判定する。
【0055】
続いて、改ざん検出部25は、いずれかに該当すると判定する場合に、スタック領域またはヒープ領域に格納されているアドレスが、記憶装置10の動的領域及び静的領域のいずれのアドレスであるかを判定する。そして、判定の結果、動的領域である場合は、改ざん検出部25は、改ざんが行われていると判断し、このことを改ざんとして検出する。また、改ざん検出部25は、検出結果を記憶し、更に、検出結果を特定する改ざん情報を、監視装置200に送出する。
【0056】
利用アクセス暗号化部26は、端末装置100で利用するソフトウェアプログラムおよびコンテンツがインストールされると、インストール時定数として取得したタイムスタンプを用いて、アクセス管理情報45を生成する。利用アクセス暗号化部26は、生成したアクセス管理情報45を監視装置200に送出する。
【0057】
[装置動作]
次に、本発明の実施の形態における改ざん検出装置20の動作について図7〜図9を用いて説明する。図7は、ソフトウェアプログラムによる分岐処理または復帰処理によって改ざんが行われていない場合を説明する図である。図8は、ソフトウェアプログラムによる分岐処理または復帰処理によって改ざんが行われている場合を説明する図である。図9は、本発明の実施の形態における改ざん検出装置の動作を示すフロー図である。
【0058】
なお、以下の説明においては、適宜図1〜図6を参酌する。また、本実施の形態では、改ざん検出装置20を動作させることによって、改ざん検出方法が実施される。よって、本実施の形態における改ざん検出方法の説明は、以下の改ざん検出装置20の動作説明に代える。
【0059】
まず、図7を用いて、改ざんが行われていない正常な状態のメモリマップを示す。図7に示すように、分岐処理または復帰処理では、スタック領域(またはヒープ領域)が使用される。改ざんがない正常な処理では、スタック領域に設定された分岐先アドレスは、分岐先のプログラムにおける正しいアドレスを保持している。
【0060】
続いて、図8を用いて、改ざんが行われている状態のメモリマップを示す。図8に示すように、正常な分岐処理での流れと異なり、スタック領域に設定された分岐先アドレスが第三者により改ざんされているため、スタック領域に設定された分岐先アドレスは、不正なアドレス、即ち、動的領域にあるアドレスを保持している。
【0061】
続いて、図9を用いて、改ざん検出装置20の動作の流れを説明する。図9に示すように、まず、改ざん検出部25は、端末装置100のCPU(プロセッサ)11の動作を示す状態信号の出力を取得し、ソフトウェアプログラムが分岐処理または復帰処理を実行しているかどうかを判定する(ステップA1)。具体的には、改ざん検出部25は、記憶装置10から状態情報50を取得し、状態情報50に基づいて判定を行う。
【0062】
ステップA1の判定の結果、ソフトウェアプログラムが分岐処理または復帰処理を実行していない場合は、改ざん検出部25は、待機状態となる。一方、ステップA1の判定の結果、ソフトウェアプログラムが分岐処理または復帰処理を実行している場合は、改ざん検出部25は、ステップA2を実行する。
【0063】
ステップA2では、改ざん検出部25は、更に、状態信号の出力に基づき、スタック操作命令が実行されているかどうかを判定する。ステップA2の判定の結果、スタック操作命令が実行されている場合は、改ざん検出部25は、ステップA5を実行する。
【0064】
一方、ステップA2の判定の結果、スタック操作命令が実行されていない場合は、改ざん検出部25は、環境変数(MALLOC_CHECK)に所定の値を設定し、記憶装置10の異常検出機能を起動させる(ステップA3)。
【0065】
ステップA3が実行されると、更に、改ざん検出部25は、記憶装置10から診断メッセージが出力されているかどうかを判定する(ステップA4)。ステップA4の結果、診断メッセージが出力されていない場合は、改ざん検出部25は、改ざんが行われていないと判断し、処理を終了する。一方、ステップA4の結果、診断メッセージが出力されている場合は、改ざん検出部25は、ステップA5を実行する。
【0066】
このように、ステップA1〜A4では、(a)CPUの動作状態を示す状態信号に異常はないかどうか、(b)環境変数(MALLOC_CHECK)の設定後に、診断メッセージが出力されていないかどうか、が確認される。そして、(a)による異常、または(b)による診断メッセージの出力がなされている場合に、ステップA5が実行される。
【0067】
ステップA5では、改ざん検出部25は、スタック領域またはヒープ領域に格納されているアドレスが、記憶装置10の静的領域のアドレスであるかどうかを判定する。具体的には、改ざん検出部25は、分岐処理または復帰処理で利用したスタック領域の値(アドレス)を読み込み、この値がプログラム領域または共有ライブラリ領域にあるかどうかを、Static-area-pointer31の値と共有ライブラリpointer32の値とに基づいて判定する。
【0068】
ステップA5の判定の結果、アドレスが静的領域にない場合、即ち、動的領域にある場合は、改ざんが行われていると判断し、改ざんを特定する改ざん情報を、監視装置200に対して送信する(ステップA6)。
【0069】
一方、ステップA5の判定の結果、アドレスが静的領域にある場合は、改ざん検出部25は、改ざんは行われていないと判定する。但し、この場合、改ざん検出部25は、プログラムに不具合が発生している、または実行時における設定値に不正があった、と判断し、ソフトウェアプログラムの不具合を監視装置200に通知する(ステップA7)。
【0070】
ステップA6またはステップA7が実行されると、改ざん検出部25は、再度ステップA1を実行し、再び改ざんの検出処理を実行する。なお、図9には、利用者管理部21、端末装置管理部22、タスク管理部23、不正利用検出部24、および利用アクセス暗号化部26それぞれによる処理ステップは、図示されていないが、これらによる処理ステップも適宜実行される。
【0071】
[本実施の形態における効果]
以上のように、本実施の形態によれば、ソフトウェアプログラムの利用にあたり、事前に、ソフトウェアプログラムに、チェッカコード、検出用のマクロ、またか関数を埋め込むこともなく、改ざんされたかどうかを判定できる。また、改ざんが行われた場合は、迅速に適切な対応処置を実行することが可能となる。
【0072】
本実施の形態におけるプログラムは、コンピュータに、図9に示すステップA1〜〜A7を実行させるプログラムであれば良く、更に、コンピュータは、端末装置100自体であっても良い。この場合、改ざん検出装置20は、本実施の形態におけるプログラムによって、端末装置100のオペレーティングシステム上に構築される。そして、端末装置100のCPU11が、利用者管理部21、装置管理部22、タスク管理部23、不正利用検出部24、改ざん検出部25、利用アクセス暗号化部26として機能し、処理を実行する。
【0073】
ここで、実施の形態における端末装置100の具体例について図10を用いて説明する。図10は、本発明の実施の形態で利用される端末装置の具体例を示すブロック図である。
【0074】
図10に示すように、端末装置(コンピュータ)100は、記憶装置10およびCPU11に加えて、二次記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
【0075】
CPU11は、二次記憶装置113に格納された、本実施の形態におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
【0076】
また、二次記憶装置113の具体例としては、ハードディスクの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0077】
また、記録媒体120の具体例としては、CF(Compact Flash)及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記憶媒体、又はCD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体が挙げられる。
【0078】
上述した実施の形態の一部又は全部は、以下に記載する(付記1)〜(付記19)によって表現することができるが、以下の記載に限定されるものではない。
【0079】
(付記1)
ソフトウェアプログラムを実行する端末装置における改ざんを検出する改ざん検出装置であって、
前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、改ざん検出部を備えている、
ことを特徴とする改ざん検出装置。
【0080】
(付記2)
前記改ざん検出部が、
前記分岐処理または前記復帰処理が行われた場合に、前記端末装置のプロセッサの動作を示す前記状態信号の出力と、環境変数の設定による前記メモリの異常検出機能を起動させたときの出力とが、設定条件を満たすかどうかを判定し、
判定の結果、設定条件を満たす場合に、前記スタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定する、
付記1に記載の改ざん検出装置。
【0081】
(付記3)
前記ソフトウェアプログラムを利用することが、前記端末装置に対して許可されているかどうかを判定し、許可されていない場合に、前記端末装置による前記ソフトウェアプログラムの利用を不正利用として検出する、不正利用検出部を、更に備えている、付記1または2に記載の改ざん検出装置。
【0082】
(付記4)
前記端末装置が、前記ソフトウェアプログラムにアクセス可能な利用者と、前記ソフトウェアプログラムを実行可能な端末装置と、前記ソフトウェアプログラムが前記端末装置にインストールされた日時とを、互いに対応付けて管理するためのアクセス管理情報を記憶しており、
前記不正利用検出部が、前記アクセス管理情報に基づいて、許可されているかどうかを判定する、
付記3に記載の改ざん検出装置。
【0083】
(付記5)
前記不正利用検出部が、前記不正利用を検出した場合に、前記端末装置に対して、不正利用の検出を通知する、付記3または4に記載の改ざん検出装置。
【0084】
(付記6)
改ざん検出装置を有する端末装置と、監視装置とを備え、
前記改ざん検出装置は、
前記端末装置で実行されるソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出し、
更に、検出した前記改ざんを特定する改ざん情報を前記監視装置に送信し、
前記監視装置は、前記改ざん検出装置から送信されてきた前記改ざん情報を用いて、前記端末装置を監視する、
ことを特徴とする監視システム。
【0085】
(付記7)
前記改ざん検出装置が、
前記分岐処理または前記復帰処理が行われた場合に、前記端末装置のプロセッサの動作を示す前記状態信号の出力と、環境変数の設定による前記メモリの異常検出機能を起動させたときの出力とが、設定条件を満たすかどうかを判定し、
判定の結果、設定条件を満たす場合に、前記スタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定する、
付記6に記載の改ざん監視システム。
【0086】
(付記8)
前記改ざん検出装置が、
前記ソフトウェアプログラムを利用することが、前記端末装置に対して許可されているかどうかを判定し、許可されていない場合に、前記端末装置による前記ソフトウェアプログラムの利用を不正利用として検出する、
付記6または7に記載の監視システム。
【0087】
(付記9)
前記端末装置が、前記ソフトウェアプログラムにアクセス可能な利用者と、前記ソフトウェアプログラムを実行可能な端末装置と、前記ソフトウェアプログラムが前記端末装置にインストールされた日時とを、互いに対応付けて管理するためのアクセス管理情報を記憶しており、
前記改ざん検出装置が、前記アクセス管理情報に基づいて、許可されているかどうかを判定する、
付記8に記載の監視システム。
【0088】
(付記10)
前記端末装置が、使用が許可される利用者を管理するための利用者管理情報と、端末装置を一意に識別するための装置識別情報とを記憶しており、
前記改ざん検出装置が、前記利用者管理情報、及び前記装置識別情報を、前記監視装置に送信し、
前記監視装置が、前記改ざん検出装置から送信されてきた、前記利用者管理情報、及び前記装置識別情報を更に用いて、前記端末装置を監視する、付記6〜9のいずれかに記載の監視システム。
【0089】
(付記11)
前記改ざん検出装置が、前記不正利用を検出した場合に、前記端末装置に対して、不正利用の検出を通知する、付記8または9に記載の監視システム。
【0090】
(付記12)
ソフトウェアプログラムを実行する端末装置における改ざんを検出するための方法であって、
(a)前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、ステップを有している、
ことを特徴とする改ざん検出方法。
【0091】
(付記13)
前記(a)のステップにおいて、
前記分岐処理または前記復帰処理が行われた場合に、前記端末装置のプロセッサの動作を示す前記状態信号の出力と、環境変数の設定による前記メモリの異常検出機能を起動させたときの出力とが、設定条件を満たすかどうかを判定し、
判定の結果、設定条件を満たす場合に、前記スタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定する、
付記12に記載の改ざん検出方法。
【0092】
(付記14)
(b)前記ソフトウェアプログラムを利用することが、前記端末装置に対して許可されているかどうかを判定し、許可されていない場合に、前記端末装置による前記ソフトウェアプログラムの利用を不正利用として検出する、ステップを、更に有している、付記12または13に記載の改ざん検出方法。
【0093】
(付記15)
前記端末装置が、前記ソフトウェアプログラムにアクセス可能な利用者と、前記ソフトウェアプログラムを実行可能な端末装置と、前記ソフトウェアプログラムが前記端末装置にインストールされた日時とを、互いに対応付けて管理するためのアクセス管理情報を記憶している場合に、
前記(b)のステップにおいて、前記アクセス管理情報に基づいて、許可されているかどうかを判定する、
付記14に記載の改ざん検出方法。
【0094】
(付記16)
(c)前記(b)のステップで、前記不正利用を検出した場合に、前記端末装置に対して、不正利用の検出を通知する、ステップを更に有している、
付記14または15に記載の改ざん検出方法。
【0095】
(付記17)
コンピュータがソフトウェアプログラムを実行している場合における改ざんの検出を、前記コンピュータによって行うためのプログラムであって、
前記コンピュータに、
(a)前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記コンピュータのメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、ステップを実行させる、プログラム。
【0096】
(付記18)
前記(a)のステップにおいて、
前記分岐処理または前記復帰処理が行われた場合に、前記コンピュータのプロセッサの動作を示す前記状態信号の出力と、環境変数の設定による前記メモリの異常検出機能を起動させたときの出力とが、設定条件を満たすかどうかを判定し、
判定の結果、設定条件を満たす場合に、前記スタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定する、
付記17に記載の改ざんプログラム。
【0097】
(付記19)
(b)前記ソフトウェアプログラムを利用することが、前記コンピュータに対して許可されているかどうかを判定し、許可されていない場合に、前記コンピュータによる前記ソフトウェアプログラムの利用を不正利用として検出する、ステップを、更に前記コンピュータに実行させる、付記17または18に記載の改ざんプログラム。
【0098】
(付記20)
前記コンピュータが、前記ソフトウェアプログラムにアクセス可能な利用者と、前記ソフトウェアプログラムを実行可能なコンピュータと、前記ソフトウェアプログラムが前記コンピュータにインストールされた日時とを、互いに対応付けて管理するためのアクセス管理情報を記憶している場合に、
前記(b)のステップにおいて、前記アクセス管理情報に基づいて、許可されているかどうかを判定する、
付記19に記載のプログラム。
【産業上の利用可能性】
【0099】
以上のように、本発明によれば、監視対象となるソフトウェアプログラムを加工することなく、当該ソフトウェアプログラムにおける改ざんを確実に検出することができる。本発明は、端末装置のセキュリティの確保が必要なコンピュータネットワークに有用である。
【符号の説明】
【0100】
10 記憶装置
11 CPU
20 改ざん検出装置
21 利用者管理部
22 端末装置管理部
23 タスク管理部
24 不正利用検出部
25 改ざん検出部
26 利用アクセス暗号化部
30 記憶領域管理情報
31 Static-area-pointer
32 共有ライブラリpointer
40 環境情報
41 利用者管理情報
42 装置識別情報
43 契約情報
44 製品情報
45 アクセス管理情報
50 状態情報
51 状態信号
52 環境変数
60 監視情報
61 改ざん情報
70 監視部
71 格納部
80 ネットワーク
100 端末装置
113 二次記憶装置
114 入力インターフェイス
115 表示コントローラ
116 データリーダ/ライタ
117 通信インターフェイス
118 入力機器
119 ディスプレイ装置
120 記録媒体
121 バス
200 監視装置
300 監視システム

【特許請求の範囲】
【請求項1】
ソフトウェアプログラムを実行する端末装置における改ざんを検出する改ざん検出装置であって、
前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、改ざん検出部を備えている、
ことを特徴とする改ざん検出装置。
【請求項2】
前記改ざん検出部が、
前記分岐処理または前記復帰処理が行われた場合に、前記端末装置のプロセッサの動作を示す前記状態信号の出力と、環境変数の設定による前記メモリの異常検出機能を起動させたときの出力とが、設定条件を満たすかどうかを判定し、
判定の結果、設定条件を満たす場合に、前記スタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定する、
請求項1に記載の改ざん検出装置。
【請求項3】
前記ソフトウェアプログラムを利用することが、前記端末装置に対して許可されているかどうかを判定し、許可されていない場合に、前記端末装置による前記ソフトウェアプログラムの利用を不正利用として検出する、不正利用検出部を、更に備えている、請求項1または2に記載の改ざん検出装置。
【請求項4】
前記端末装置が、前記ソフトウェアプログラムにアクセス可能な利用者と、前記ソフトウェアプログラムを実行可能な端末装置と、前記ソフトウェアプログラムが前記端末装置にインストールされた日時とを、互いに対応付けて管理するためのアクセス管理情報を記憶しており、
前記不正利用検出部が、前記アクセス管理情報に基づいて、許可されているかどうかを判定する、
請求項3に記載の改ざん検出装置。
【請求項5】
前記不正利用検出部が、前記不正利用を検出した場合に、前記端末装置に対して、不正利用の検出を通知する、請求項3または4に記載の改ざん検出装置。
【請求項6】
改ざん検出装置を有する端末装置と、監視装置とを備え、
前記改ざん検出装置は、
前記端末装置で実行されるソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出し、
更に、検出した前記改ざんを特定する改ざん情報を前記監視装置に送信し、
前記監視装置は、前記改ざん検出装置から送信されてきた前記改ざん情報を用いて、前記端末装置を監視する、
ことを特徴とする監視システム。
【請求項7】
ソフトウェアプログラムを実行する端末装置における改ざんを検出するための方法であって、
(a)前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記端末装置のメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、ステップを有している、
ことを特徴とする改ざん検出方法。
【請求項8】
コンピュータがソフトウェアプログラムを実行している場合における改ざんの検出を、前記コンピュータによって行うためのプログラムであって、
前記コンピュータに、
(a)前記ソフトウェアプログラムが、分岐処理または復帰処理を行った場合に、前記コンピュータのメモリのスタック領域に格納されているアドレスが、前記メモリの動的領域及び静的領域のいずれのアドレスであるかを判定し、判定結果に基づいて、前記記憶領域に格納されているデータに対する改ざんを検出する、ステップを実行させる、プログラム。

【図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


【公開番号】特開2012−185547(P2012−185547A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−46531(P2011−46531)
【出願日】平成23年3月3日(2011.3.3)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.COMPACTFLASH
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】