(57)【要約】【課題】第三者により作成されたプログラムの命令による保護対象リソースへのアクセスを実環境でリアルタイムに監視し、マルウェアの可能性を示す挙動を検出する。【解決手段】メモリの所定アドレスに格納されているプログラムの命令に、当該命令が監視対象である旨を通知する監視制御部と、前記プログラムの命令を実行すると共に、前記監視制御部の通知に基づいて前記監視対象であることを示す命令監視ビットが付与された命令を格納するキャッシュを含むプロセッサと、前記プロセッサによる前記命令の実行を監視すると共に、前記命令監視ビットが付与された前記命令が所定の保護対象リソースにアクセスする命令である場合にマルウェアの可能性を示唆する挙動が実行されると検出する監視実行部とを備える。【選択図】図３
2011145945.tif 000002
【特許請求の範囲】
【請求項１】
メモリの所定アドレスに格納されているプログラムの命令に、当該命令が監視対象プログラムの命令である旨を通知する監視制御部と、
前記プログラムの命令を実行すると共に、前記監視制御部の通知に基づいて前記監視対象プログラムの命令であることを示す命令監視ビットが付与された命令を格納するキャッシュを含むプロセッサと、
前記プロセッサによる前記命令の実行を監視すると共に、前記命令監視ビットが付与された前記命令が所定の保護対象リソースにアクセスする命令である場合にマルウェアの可能性を示唆する挙動が実行されると検出する監視実行部と、
を備えるマルウェア検出装置。
【請求項２】
請求項１に記載のマルウェア検出装置であって、
前記監視対象プログラムの命令が格納されている前記メモリの前記所定アドレスが指定される命令監視レジスタと、を更に備え、
前記監視制御部は、前記命令監視レジスタに指定されている前記所定アドレスに格納されているプログラムの命令が前記プロセッサにより読み出された際、当該プログラムの命令は前記監視対象プログラムの命令である旨を通知するマルウェア検出装置。
【請求項３】
請求項２に記載のマルウェア検出装置であって、
前記プロセッサは、前記監視制御部の通知に基づいて前記命令に前記命令監視ビットを付与し、当該命令監視ビットが付与された前記命令を実行する旨を前記監視実行部に通知するマルウェア検出装置。
【請求項４】
請求項３に記載のマルウェア検出装置であって、
前記保護対象リソースのアドレスが指定されるリソース監視レジスタと、を更に備え、
前記監視実行部は、前記プロセッサからの通知に基づき、当該命令が前記リソース監視レジスタに指定されている前記アドレスに対応する前記保護対象リソースに対するアクセスか否かを監視するマルウェア検出装置。
【請求項５】
請求項２〜４のいずれか一項に記載のマルウェア検出装置であって、
前記監視制御部と前記プロセッサとの間には、前記監視対象プログラムの命令であることを示す命令監視対象信号が出力される第１の監視ビット線が配線され、
前記監視制御部は、前記第１の監視ビット線を介して、前記命令監視対象信号を前記プロセッサに対して出力し、
前記プロセッサは、前記命令監視対象信号に対応する前記命令を前記監視対象プログラムの命令として認識するマルウェア検出装置。
【請求項６】
請求項５に記載のマルウェア検出装置であって、
前記プロセッサと前記監視実行部との間には、前記命令監視対象信号が出力される第２の監視ビット線が配設され、
前記プロセッサは、前記第２の監視ビット線を介して、前記命令監視対象信号を前記監視実行部に対して出力し、
前記監視実行部は、前記命令監視対象信号に対応する前記命令を前記監視対象プログラムの命令として認識するマルウェア検出装置。
【請求項７】
請求項２〜４のいずれか一項に記載のマルウェア検出装置であって、
前記監視制御部は、前記命令監視レジスタに指定される前記所定アドレスに格納されている前記命令に前記命令監視ビットを付与する命令を優先的に実行するように前記プロセッサに通知し、
前記プロセッサは、前記監視制御部の通知に基づき、前記命令監視レジスタに保持される前記所定アドレスに格納されている前記命令に前記命令監視ビットを付与するマルウェア検出装置。
【請求項８】
請求項７に記載のマルウェア検出装置であって、
前記プロセッサは、実行対象のプログラムの命令が前記命令監視ビットの付与された前記命令であることを前記監視実行部に通知し、
前記監視実行部は、前記プロセッサの通知に基づき、前記実行対象のプログラムの命令は前記命令監視ビットが付与された命令であることを認識するマルウェア検出装置。
【請求項９】
メモリの所定アドレスに格納されているプログラムの命令に、当該命令が監視対象プログラムの命令である旨、及び所定のデータが保護対象データである旨を通知する監視制御部と、
前記プログラムの命令を実行すると共に、前記監視制御部の通知に基づいて、前記監視対象プログラムの命令であることを示す命令監視ビットが付与された命令、及び前記保護対象データであることを示すデータ監視ビットが付与されたデータを格納するキャッシュを含むプロセッサと、
前記プロセッサによる前記命令の実行を監視すると共に、前記命令監視ビットが付与された前記命令が前記データ監視ビットの付与された前記データを所定の保護対象リソースに書込む命令である場合にマルウェアの可能性を示す挙動として検出する監視実行部と、
を備えるマルウェア検出装置。
【請求項１０】
請求項９に記載のマルウェア検出装置であって、
前記監視対象プログラムの命令が格納されている前記メモリの前記所定アドレスを保持する命令監視レジスタと、を更に備え、
前記監視制御部は、前記命令監視レジスタに指定されている前記所定アドレスに格納されているプログラムの命令が前記プロセッサにより読み出された際、当該プログラムの命令は前記監視対象プログラムの命令である旨を通知するマルウェア検出装置。
【請求項１１】
請求項１０に記載のマルウェア検出装置であって、
前記保護対象データが格納されているアドレスを保持するデータ監視レジスタと、を更に備え、
前記監視制御部は、前記データ監視レジスタに指定されている前記アドレスに格納されているデータは前記保護対象データである旨を通知するマルウェア検出装置。
【請求項１２】
請求項１１に記載のマルウェア検出装置であって、
前記プロセッサは、前記監視制御部の通知に基づき、前記命令に前記命令監視ビットを、前記データに前記データ監視ビットをそれぞれ付与すると共に、前記データ監視ビットが付与された前記データを用いて前記命令監視ビットが付与された前記命令を実行する旨を前記監視実行部に通知するマルウェア検出装置。
【請求項１３】
請求項１２に記載のマルウェア検出装置であって、
前記保護対象リソースのアドレスを保持するリソース監視レジスタと、を更に備え、
前記監視実行部は、前記プロセッサからの通知に基づき、当該命令が前記リソース監視レジスタに指定されている前記アドレスに対応する前記保護対象リソースに対して前記データ監視ビットが付与された前記データを書込むか否かを監視するマルウェア検出装置。
【請求項１４】
請求項１０〜１３のいずれか一項に記載のマルウェア検出装置であって、
前記監視制御部と前記プロセッサとの間には、前記監視対象プログラムの命令であることを示す命令監視対象信号、及び前記保護対象データであることを示すデータ監視対象信号がそれぞれ出力される第１及び第２の監視ビット線が配線され、
前記監視制御部は、前記第１及び第２の監視ビット線を介して、前記命令監視対象信号及び前記データ監視対象信号を前記プロセッサに対してそれぞれ出力し、
前記プロセッサは、前記命令監視対象信号及び前記データ監視対象信号にそれぞれ対応する前記命令及び前記データを前記監視対象プログラムの命令及び前記保護対象データとしてそれぞれ認識するマルウェア検出装置。
【請求項１５】
請求項１４に記載のマルウェア検出装置であって、
前記プロセッサと前記監視実行部との間には、前記命令監視対象信号及び前記データ監視対象信号がそれぞれ出力される第３及び第４の監視ビット線が配設され、
前記プロセッサは、前記第３及び第４の監視ビット線を介して、前記命令監視対象信号及び前記データ監視対象信号を前記監視実行部に対して出力し、
前記監視実行部は、前記命令監視対象信号及び前記データ監視対象信号にそれぞれ対応する前記命令及び前記データを前記監視対象プログラムの命令及び前記保護対象データとしてそれぞれ認識するマルウェア検出装置。
【請求項１６】
請求項１１に記載のマルウェア検出装置であって、
前記監視制御部は、前記命令監視レジスタに指定される前記所定アドレスに格納されている前記命令に前記命令監視ビットを付与する命令、及び前記データ監視レジスタに指定される前記所定アドレスに格納されている前記データに前記データ監視ビットを付与する命令を優先的に実行するように前記プロセッサに通知し、
前記プロセッサは、前記監視制御部の通知に基づき、前記命令監視レジスタに保持される前記所定アドレスに格納されている前記命令に前記命令監視ビットを付与すると共に、前記データ監視レジスタに保持される前記所定アドレスに格納されている前記データに前記データ監視ビットを付与するマルウェア検出装置。
【請求項１７】
請求項１６に記載のマルウェア検出装置であって、
前記プロセッサは、実行対象のプログラムの命令が前記命令監視ビットの付与された前記命令であること、及び、当該命令は前記データ監視ビットの付与された前記データを使用することを前記監視実行部に通知し、
前記監視実行部は、前記プロセッサの通知に基づき、前記実行対象のプログラムの命令は前記命令監視ビットが付与された命令であること、及び、当該命令は前記データ監視ビットの付与された前記データを使用することを認識するマルウェア検出装置。
【請求項１８】
請求項２〜８のいずれか一項に記載のマルウェア検出装置であって、
前記監視対象のプログラムの実行時において前記プログラムから当該監視対象ではない他のプログラムが呼び出された場合、前記監視制御部は、前記他のプログラムの格納された前記メモリのアドレスを前記命令監視レジスタに追加指定し、前記監視実行部は、前記命令監視レジスタに追加指定された前記アドレスに格納された前記他のプログラムの命令の実行を監視するマルウェア検出装置。
【請求項１９】
請求項１１〜１７のいずれか一項に記載のマルウェア検出装置であって、
前記保護対象データがコピーされた場合、前記監視制御部は、当該コピーされた前記データが格納されているアドレスを前記データ監視レジスタに追加指定し、
前記監視実行部は、前記命令監視ビットが付与された前記命令が、前記データ監視ビットが付与された前記データを前記保護対象データとして、前記所定の保護対象リソースに書き込む命令である場合に、当該プログラムの命令の実行を監視するマルウェア検出装置。
【請求項２０】
メモリの所定アドレスに格納されているプログラムの命令に対し、当該命令が監視対象である旨を通知するステップと、
前記プログラムの命令を実行するステップと、
前記通知に基づいて、前記監視対象である前記命令に命令監視ビットを付与するステップと、
前記命令監視ビットが付与された前記命令を格納するステップと、
前記命令の実行を監視するステップと、
前記命令監視ビットが付与された前記命令が所定の保護対象リソースにアクセスする命令である場合に、マルウェアの可能性を示唆する挙動が実行されると検出するステップと、
を備えるマルウェア検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダウンロードされたプログラムの挙動を監視することにより当該プログラムがマルウェアの可能性を示唆する挙動を行うか否かを検出するマルウェア検出装置及びマルウェア検出方法に関する。
【背景技術】
【０００２】
最近、携帯電話機等の組込み機器を操作してネットワークを介して所望のプログラムをダウンロードし、当該組込み機器にインストールして使用する事例が増えている。既に、スマートフォンの様な高度な携帯電話で自由にプログラムがダウンロード可能とされ、今後、多くの組込み機器にてユーザが自由にプログラムをダウンロードすることが益々流行すると期待されている。以下の説明において、ダウンロードには、ネットワークを介して取得する行為に限らず、メールに添付されているファイルを取得する行為、更に、メモリーカード等の外部格納媒体を当該組込み機器に接続して取得する行為も含まれるとする。
【０００３】
このようにダウンロードされたプログラムの中にはマルウェアが潜在する可能性がある。例えば、プログラム内に潜在するマルウェアがメモリに格納されているユーザのクレジット番号等を不正に取得してネットワークに送信するという被害事例も報告されており、このようなマルウェアによる被害は社会的に大きな問題となっている。
【０００４】
ダウンロードされたプログラムにマルウェアが存在するか否かを検出する技術は、静的解析に基づいた方法と、動的解析に基づいた方法とに分類される。静的解析に基づく方法とは、プログラムを実行せずに、当該プログラムのバイナリコードを直接解析することにより、当該プログラムの振る舞い又は構造を分析する方法である。しかし、静的解析では、動作に関わる全てのプログラム要素が既知である必要があり、未知の脆弱性を攻撃するバイナリコード等については確定的な推定を行うことが難しい。静的解析に基づく方法の一例として、パターンマッチング法又はヒューリスティック法等がある。
【０００５】
動的解析に基づく方法とは、プログラムを実際に実行し、当該プログラムが行う振る舞いを観測することにより解析を行う方法である。このため、プログラムの中に未知の脆弱性を攻撃するバイナリコード等が含まれている場合に、当該バイナリコード等を検出することが有効である旨が指摘されている。しかし、プログラムを実際に動作させるため、解析を実施している環境にマルウェアが感染する危険性があるため、感染を防ぐための環境及び対策等が必要となる。動的解析に基づく方法の一例として、ビヘイビア法等がある。
【０００６】
また前述した方法の他に、プログラムへの不正なアクセスを検出して当該プログラムを保護する技術も開示されている。例えば、特許文献１には、プログラムの割付アドレスに対応したプログラム識別コードを持つアクセスチェックテーブルと実行中のプログラム識別コードを持つプロセッサの状態を表す制御レジスタとを備え、プログラム実行時に当該アクセスチェックテーブルと制御レジスタ内のプログラム識別コードとを照会し、一致していない場合には照合エラーとして検出するプログラム保護方式が開示されている。
【０００７】
また、特許文献２には、モードレジスタへストアアクセスを行うストア命令を専用ストア命令としてＣＰＵの命令セットに備え、前記専用ストア命令のＣＰＵによる実行を監視するモードレジスタアクセス制御器が、当該ＣＰＵの命令コードを監視し、前記専用ストア命令の実行が確認された場合だけモードレジスタライトイネーブル信号をアサートし、前記モードレジスタへのストア命令を許可するマイクロコントローラが開示されている。
【０００８】
また、特許文献３には、コンピュータ上で実行されるアプリケーションがハードディスク等の記憶装置に記憶された情報にアクセスしようとした時点で、予め設定されたアクセス許容条件を満たすかどうかを判定部により判定して、当該判定部によって不正なアクセスと判定された場合に前記記憶装置に記憶された情報のアプリケーションへの受け渡しを禁止するコンピュータの情報漏洩防止システムが開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平６−２６６５５１号公報
【特許文献２】特開２００４−０６２５５０号公報
【特許文献３】特開２００７−１４０７９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１は、デバッグの際にプログラムに存在するバグを修正することが想定されたものであり、ビルド時に特定領域への書込みを専用ストア命令に置換えて命令種別で判断する仕組みであるため、第三者により作成されたプログラムに対して適用することが難しい。
【００１１】
特許文献２は、同様にデバッグの際にプログラムに存在するバグを修正することが想定されたものであり、ビルド時にプログラムへ識別ＩＤを埋め込みレジスタにＩＤを設定する仕組みであるため、同様に第三者により作成されたプログラムに適用することが難しい。
【００１２】
特許文献３は、プロセスＩＤ等でシステムコールの呼び出し元を識別して予め用意したリストと比較するためリアルタイムにプログラムを監視することが難しく、特に携帯電話の様なリソースの少ない組込み機器において特許文献３に開示されている方法で解析することは難しい。
【００１３】
また、ソフトウェアによるビヘイビア法の解析により、仮想環境の存在の有無、及び処理遅延の有無に基づいてデバッグの有無を判定して動作停止させるマルウェアが発見されている。以上から、より実環境に近い状態で、プログラムの命令による保護対象リソースへのアクセスをリアルタイムに監視することが求められていた。
【００１４】
本発明は前述した従来の事情に鑑みてなされたもので、その目的は、第三者により作成されたプログラムの命令による保護対象リソースへのアクセスを実環境でリアルタイムに監視し、マルウェアの可能性を示す挙動を検出することのできるマルウェア検出装置及びマルウェア検出方法を提供することである。
【課題を解決するための手段】
【００１５】
本発明のマルウェア検出装置は、メモリの所定アドレスに格納されているプログラムの命令に、当該命令が監視対象である旨を通知する監視制御部と、前記プログラムの命令を実行すると共に、前記監視制御部の通知に基づいて前記監視対象であることを示す命令監視ビットが付与された命令を格納するキャッシュを含むプロセッサと、前記プロセッサによる前記命令の実行を監視すると共に、前記命令監視ビットが付与された前記命令が所定の保護対象リソースにアクセスする命令である場合にマルウェアの可能性を示唆する挙動が実行されると検出する監視実行部とを備える。
【００１６】
前述した構成によれば、第三者により作成されたプログラムの命令が保護対象リソースへアクセスすることを実環境でリアルタイムに監視することができ、マルウェアの振る舞いを実行するプログラムを検出することができる。
【００１７】
本発明のマルウェア検出方法は、メモリの所定アドレスに格納されているプログラムの命令に対し、当該命令が監視対象である旨を通知するステップと、前記プログラムの命令を実行するステップと、前記通知に基づいて、前記監視対象である前記命令に前記命令監視ビットを付与するステップと、前記命令監視ビットが付与された前記命令を格納するステップと、前記命令の実行を監視するステップと、前記命令監視ビットが付与された前記命令が所定の保護対象リソースにアクセスする命令である場合に、マルウェアの可能性を示唆する挙動が実行されると検出するステップとを備える。
【００１８】
前述した構成によれば、第三者により作成されたプログラムの命令が保護対象リソースへアクセスすることを実環境でリアルタイムに監視することができ、マルウェアの振る舞いを実行するプログラムを検出することができる。
【発明の効果】
【００１９】
本発明に係るマルウェア検出装置及びマルウェア検出方法によれば、第三者により作成されたプログラムの命令が保護対象リソースへアクセスすることを実環境でリアルタイムに監視することができ、マルウェアの振る舞いを実行するプログラムを検出することができる。
【図面の簡単な説明】
【００２０】
【図１】携帯電話機の内部構成を示すブロック図
【図２】携帯電話機の動作を説明するフローチャート
【図３】第１の実施形態のマルウェア検出部の内部構成を示すブロック図
【図４】第１の実施形態のマルウェア検出部の動作を示すシーケンス図
【図５】保護対象リソースの種別と擬似応答の一例とが関連付けられた擬似応答テーブルの内容を示す説明図
【図６】第２の実施形態のマルウェア検出部の内部構成を示すブロック図
【図７】第２の実施形態のマルウェア検出部の動作を示すシーケンス図
【図８】保護対象データの全部又は一部がメモリにコピーされたときのメモリの状態遷移を示す説明図
【図９】保護対象データの全部又は一部がメモリにコピーされたときのデータ監視レジスタの状態遷移を示す説明図
【図１０】監視対象プログラムが監視対象プログラムではない他のプログラムを動的に呼び出した場合のメモリの状態遷移を示す説明図
【図１１】監視対象プログラムが監視対象プログラムではない他のプログラムを動的に呼び出した場合の命令監視レジスタの状態遷移を示す説明図
【発明を実施するための形態】
【００２１】
以下、本発明のマルウェア検出装置の一例を携帯電話機として説明する。先ず、本発明のマルウェア検出装置である携帯電話機の内部構成及び当該携帯電話機を用いたマルウェア検出の動作について、図１及び図２を参照して説明する。図１は、携帯電話機１の内部構成を示すブロック図である。図２は、携帯電話機１の動作を説明するフローチャートである。
【００２２】
図１において、携帯電話機１は、ダウンローダ２と、アプリケーションマネージャ３と、信頼性検証部４と、表示部５と、マルウェア検出部６とを備える。
【００２３】
ダウンローダ２は、携帯電話機１を操作するユーザの指示入力に基づき、所望のアプリケーションプログラム（以下、単に「プログラム」という）をダウンロードする。ダウンローダ２は、例えば、ブラウザ又はメーラ等が該当する。
【００２４】
アプリケーションマネージャ３は、携帯電話機１にインストールされる又はインストールされたプログラムの管理及び実行に関する制御を行う。信頼性検証部４は、既存のパターンマッチング等の解析によりプログラムの信頼性を検証する。表示部５は、携帯電話機１の表示画面であり、アプリケーションマネージャ３により制御されるプログラム及び当該プログラムの実行結果等を表示する。マルウェア検出部６は、本発明のマルウェア検出装置の中心的役割を担う。マルウェア検出部６の構成及び動作は、後述の実施形態において詳述する。
【００２５】
図２において、ダウンローダ２は、携帯電話機１を操作するユーザの指示が入力された場合（ステップＳ１ａ）、所望のプログラムのダウンロードを実行する（ステップＳ１ｂ）。ダウンローダ２は、当該プログラムのダウンロードが終了した旨をアプリケーションマネージャ３に通知する（ステップＳ１ｃ）。アプリケーションマネージャ３は、ダウンローダ２の通知に基づき、ステップＳ１ｂにおいてダウンロードされたプログラムのインストールを実行して良いか否かを検証するため、信頼性検証部４に当該プログラムの信頼性を検証させる（ステップＳ１ｄ）。
【００２６】
信頼性検証部４の信頼性検証の結果でホワイトと判定された場合には（ステップＳ１ｅ）、アプリケーションマネージャ３は、当該検証の対象であるプログラムをインストールする（ステップＳ１ｆ）。この場合、例えば、既存のホワイトリストを用いたパターンマッチングによりホワイトと判定された場合が該当する。
【００２７】
信頼性検証部４の信頼性検証の結果でブラックと判定された場合には（ステップＳ１ｅ）、アプリケーションマネージャ３は、当該検証の対象であるプログラムを削除する（ステップＳ１ｇ）。この場合、例えば、既存のブラックリストを用いたパターンマッチングによりブラックと判定された場合が該当する。
【００２８】
信頼性検証部４の信頼性検証の結果でグレーと判定された場合には（ステップＳ１ｅ）、アプリケーションマネージャ３は、マルウェア検出部６に当該検証の対象であるプログラムがマルウェアの可能性を示唆する挙動を実行するか否かを監視するように要求する（ステップＳ１ｈ）。マルウェア検出部６は、アプリケーションマネージャ３の要求に基づき、後述の実施形態にて説明する方法で、当該検証の対象であるプログラムがマルウェアの可能性を示唆する挙動を実行するか否かを監視する（ステップＳ１ｉ）。マルウェア検出部６は、監視の結果、マルウェアの可能性を示唆する挙動が実行されたか否かをアプリケーションマネージャ３に通知する（ステップＳ１ｊ）。
【００２９】
アプリケーションマネージャ３は、マルウェアの可能性を示唆する挙動が実行されなかった場合には、監視対象のプログラムをインストールする（ステップＳ１ｆ）。アプリケーションマネージャ３は、マルウェアの可能性を示唆する挙動が実行された場合には、監視対象のプログラムを削除する（ステップＳ１ｇ）。
【００３０】
ただし、携帯電話機１に格納されているセキュリティポリシ等又は携帯電話機１の仕様により、ステップＳ１ｉの監視を複数回実行した結果マルウェアの可能性を示唆する挙動が全く実行されなかった場合にインストールすることが好ましい場合もある。又は、携帯電話機１に格納されているセキュリティポリシ等又は携帯電話機１の仕様により、ステップＳ１ｉの監視を所定時間（例：約６０秒）実行した結果マルウェアの可能性を示唆する挙動が全く実行されなかった場合にインストールすることが好ましい場合もある。従って、ステップＳ１ｉの１回目の監視の結果マルウェアの可能性を示唆する挙動が実行されなかった場合には、マルウェア検出部６は、アプリケーションマネージャ３に当該監視結果を通知する。この場合、アプリケーションマネージャ３は、マルウェア検出部６に再度、ステップＳ１ｉの監視を実行するように要求する（ステップＳ１ｈ）。
【００３１】
前述の図２に示した携帯電話機１の動作を前提に、以下、本発明のマルウェア検出装置である携帯電話機のマルウェア検出部に関する実施形態について、図面を参照して説明する。
【００３２】
（第１の実施形態）
第１の実施形態では、図１に示すアプリケーションマネージャ３からの監視要求に従い、マルウェア検出部６は、ダウンロードされたプログラムを監視対象のプログラムとして、当該プログラムがマルウェアの可能性を示唆する挙動を実行するか否かを監視する。第１の実施形態では、マルウェア検出部６は、当該監視対象のプログラムが携帯電話機１の保護対象リソースに書込み命令を実行する場合、マルウェアの可能性を示唆する挙動が実行されると検出する。以下の説明において、マルウェア検出部６により監視されるプログラムを「監視対象プログラム」と定義する。また、監視対象プログラムは、ユーザ自身により作成されたプログラムでも良いし、第三者により作成されたプログラムでも良い。
【００３３】
図３は、第１の実施形態のマルウェア検出部６の内部構成を示すブロック図である。図３に示すように、マルウェア検出部６は、監視制御部１１と、命令監視レジスタ２１と、リソース監視レジスタ３１と、プロセッサ４１と、監視実行部５１と、メモリ６１と、保護対象リソース７１とを備える。
【００３４】
監視制御部１１は、マイクロコンピュータにより構成されるものであり、対象領域指定部１２と、監視ビット付与部１３とにより構成されている。また、監視制御部１１は、対象領域指定部１２をソフトウェアで構成し、監視ビット付与部１３はマイクロコンピュータとは別の専用回路であるハードウェアで構成しても良い。
【００３５】
対象領域指定部１２は、監視対象プログラムをメモリ６１に格納するための物理アドレス空間を確保し、当該確保されたメモリ６１の物理アドレス空間に監視対象プログラムを格納する。対象領域指定部１２は、監視対象プログラムが格納されているメモリ６１の物理アドレスの範囲を示す上限アドレス及び下限アドレスを命令監視レジスタ２１に指定する。対象領域指定部１２は、携帯電話機１の保護対象リソース７１の物理アドレスの範囲を示す上限アドレス及び下限アドレスをリソース監視レジスタ３１に指定する。
【００３６】
第１の実施形態では、図３に示すように、監視対象プログラムはメモリ６１の物理アドレス「０ｘ００Ｆ０００」〜「０ｘ００１１ＦＦ」の範囲に格納される。対象領域指定部１２は、「０ｘ００１１ＦＦ」を上限アドレスとして、「０ｘ００Ｆ０００」を下限アドレスとして命令監視レジスタ２１に指定する。また、第１の実施形態では、携帯電話機１の保護対象リソース７１は無線ＬＡＮ対応の通信部であり、この通信部のアドレスは「０ｘ２ＥＥ０１５」〜「０ｘ２２１０１０」と指定されている。対象領域指定部１２は、上限アドレス「０ｘ２２１０１０」及び下限アドレス「０ｘ２ＥＥ０１５」をリソース監視レジスタ３１に指定する。
【００３７】
監視ビット付与部１３は、メモリ６１からどのような命令がプロセッサ４１によりフェッチされているかを常時、検出している。監視ビット付与部１３は、命令監視レジスタ２１に指定された上限アドレス及び下限アドレスの範囲に格納されているプログラムの命令を監視対象プログラムの命令であると認識している。
【００３８】
メモリ６１から命令がプロセッサ４１によりフェッチされた場合、監視ビット付与部１３は、命令監視レジスタ２１に指定されている上限アドレス及び下限アドレスに基づいて当該フェッチされた命令が監視対象プログラムの命令であるか否かを確認する。メモリ６１からフェッチされた命令が監視対象プログラムの命令であると確認された場合には、監視ビット付与部１３は、当該フェッチされた命令が監視対象プログラムの命令であることを示す命令監視対象信号をプロセッサ４１に出力する。
【００３９】
ここで、監視制御部１１の監視ビット付与部１３と、プロセッサ４１との間には、回路上の配線として監視ビット線Ｋ１が物理的に配線されている。監視ビット付与部１３は、メモリ６１からフェッチされた命令が監視対象プログラムの命令であると確認された場合には、命令監視対象信号を監視ビット線Ｋ１に出力する。より具体的には、監視ビット付与部１３は、監視ビット線Ｋ１の出力状態を「Ｈ」（Ｈｉｇｈ）と設定することにより、命令監視対象信号を監視ビット線Ｋ１に出力する。反対に、監視ビット付与部１３は、メモリ６１からフェッチされた命令が監視対象プログラムの命令でないと確認された場合には、命令監視対象信号を監視ビット線Ｋ１に出力しない。この場合には、監視ビット線の出力状態は、「Ｌ」（Ｌｏｗ）である。
【００４０】
命令監視レジスタ２１は、対象領域指定部１２により指定された、監視対象プログラムの格納されているメモリ６１の物理アドレスを格納する格納領域である。第１の実施形態では、上限アドレスとして「０ｘ００１１ＦＦ」、下限アドレスとして「０ｘ００Ｆ０００」が指定されている。
【００４１】
リソース監視レジスタ３１は、対象領域指定部１２により指定された保護対象リソース７１の物理アドレスを格納する格納領域である。第１の実施形態では、上限アドレスとして「０ｘ２２１０１０」及び下限アドレスとして「０ｘ２ＥＥ０１５」が指定されている。また、リソース監視レジスタ３１には、監視レベルが予め指定されている。この監視レベルには、マルウェアの可能性を示唆する挙動である命令が実行された場合に擬似応答が行われる旨が予め指定されている。例えば、第１の実施形態では、監視対象プログラムが保護対象リソース７１に書込む命令を実行した場合に、マルウェアの可能性を示唆する挙動が実行されたと検出され、監視実行部５１により擬似応答が行われる。
【００４２】
プロセッサ４１は、マイクロプロセッサにより構成されるものであり、命令フェッチ部４２と、命令デコード部４３と、命令制御部４４と、命令キャッシュ４５と、データキャッシュ４６と、命令実行部４７とを備える。
【００４３】
命令フェッチ部４２は、メモリ６１に格納された実行対象プログラムの命令をフェッチし（読み出し）、当該フェッチされたプログラムの命令を命令デコード部４３に出力する。フェッチされたプログラムの命令が監視対象プログラムの命令である場合には、監視ビット付与部１３により命令監視対象信号が出力されているため、プロセッサ４１は、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する。
【００４４】
命令デコード部４３は、命令フェッチ部４２によりフェッチされた実行対象プログラムの命令をデコードして当該命令の内容を解釈し、当該内容を命令制御部４４に出力する。ここで、命令デコード部４３によるデコードの結果、メモリ６１の物理アドレス「０ｘ００１１ＦＦ」〜「０ｘ００Ｆ０００」に格納されているプログラムの命令は、携帯電話機１の保護対象リソース７１である通信部に対してデータを書込む命令であるとする。
【００４５】
命令制御部４４は、命令デコード部４３により解釈された命令の実行を制御する。命令制御部４４は、監視ビット付与部１３により出力された命令監視対象信号に基づき、監視対象プログラムとして認識されたプログラムの命令に命令監視ビットを付与する。命令制御部４４は、この命令監視ビットの付与された命令を命令キャッシュ４５に格納する。図３に示すように、命令１を実行するプログラムは、命令監視レジスタ２１に指定されるメモリ６１の物理アドレスの範囲に格納されている。従って、命令１は、監視対象プログラムの命令であり、命令制御部４４により命令監視ビットが付与される。また、命令２を実行するプログラムは、命令監視レジスタ２１に指定される物理アドレスの範囲に対応するメモリ６１の物理アドレスに格納されていないとする。従って、命令２は、監視対象プログラムの命令ではなく、命令制御部４４により命令監視ビットが付与されない。また、命令フェッチ部４２が実行対象プログラムの命令をフェッチする際、プロセッサ４１は、当該フェッチ対象の実行対象プログラムの命令が格納されているメモリ６１の物理アドレスに基づいて、命令監視レジスタ２１を参照して当該フェッチ対象の実行対象プログラムの命令が監視対象プログラムの命令であるか否かを知ることができる。このため、命令フェッチ部４２が実行対象プログラムの命令をフェッチした際、プロセッサ４１が当該フェッチされた実行対象プログラムの命令に命令監視ビットを付与することにより、プロセッサ４１内における命令フェッチ以降のパイプライン処理（デコード、制御、命令実行等）に当該命令監視ビットが付与されても良い。
【００４６】
命令キャッシュ４５は、命令実行部４７により実行される命令及び実行された命令を一時的に格納する格納領域である。命令キャッシュ４５に一時的に格納される命令には、命令制御部４４により命令監視ビットが付与された命令、及び命令監視ビットが付与されない命令の両方が含まれる。データキャッシュ４６は、命令実行部４７による命令の実行に必要なデータ及び当該命令の実行結果のデータを一時的に格納する格納領域である。命令実行部４７は、命令制御部４４の制御の下で実行対象の命令の内容を実行する。プロセッサ４１はフェッチ時に命令キャッシュ４５に該当する命令が存在すれば当該命令キャッシュ４５からデコード済みの命令をロードする。本発明では命令キャッシュ４５に格納された命令にも命令監視ビットが付与されていたため、キャッシュ機構を備えるプロセッサ４１においてもマルウェアの監視が可能となる。
【００４７】
また、プロセッサ４１は、命令実行部４７が今から命令を実行する旨及び当該命令の内容を監視実行部５１に通知する。更に、プロセッサ４１は、今から実行する命令は命令監視ビットが付与されたものである場合には、当該実行する命令は監視対象プログラムの命令であることを示す命令監視対象信号を監視実行部５１に出力する。ここで、プロセッサ４１と監視実行部５１との間には、回路上の配線として監視ビット線Ｋ２が物理的に配線されている。命令実行部４７が今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１は、命令監視対象信号を監視ビット線Ｋ２に出力する。より具体的には、プロセッサ４１は、監視ビット線Ｋ２の出力状態を「Ｈ」（Ｈｉｇｈ）と設定することにより、命令監視対象信号を監視ビット線Ｋ２に出力する。反対に、命令実行部４７が今から実行する命令は命令監視ビットが付与されたものでない場合には、プロセッサ４１は、命令監視対象信号を監視ビット線Ｋ２に出力しない。この場合には、監視ビット線の出力状態は「Ｌ」（Ｌｏｗ）である。
【００４８】
監視実行部５１は、マイクロコンピュータにより構成されるものであり、リソース監視レジスタ３１に指定されている保護対象リソース７１の物理アドレス及び監視レベルを常時、参照している。また、監視実行部５１は、携帯電話機１の保護対象リソース７１ごとに専用回路を複数設けて構成しても良い。
【００４９】
監視実行部５１は、プロセッサ４１からの通知に基づき、命令実行部４７が今から実行する旨及び当該命令の内容を取得し、当該命令実行部４７による命令の実行を監視する。命令実行部４７が今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１により命令監視対象信号が出力されているため、監視実行部５１は、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する。
【００５０】
監視実行部５１は、命令実行部４７が今から実行する命令が監視対象プログラムであって、かつ、リソース監視レジスタ３１に指定されている内容に基づいて当該監視対象プログラムが携帯電話機１の保護対象リソース７１に書込む命令であるか否かを判定する。命令実行部４７が今から実行する命令が監視対象プログラムであって、かつ、当該監視対象プログラムが携帯電話機１の保護対象リソース７１に書込む命令である場合には、監視実行部５１は、当該監視対象プログラムはマルウェアの可能性を示唆する挙動を実行すると検出する。この場合、監視実行部５１は、保護対象リソース７１である通信部に対して擬似応答を行うと共に、当該擬似応答を行った旨をプロセッサ４１に出力する。このとき、プロセッサ４１は、携帯電話機１の表示画面に、「マルウェアの可能性を示唆する挙動を行うプログラムが見つかりました。このプログラムをインストールしますか？」という旨のメッセージを表示してユーザの意思確認を促す。
【００５１】
例えば、前述した擬似応答として、監視実行部５１は、保護対象リソース７１である通信部に書き込まれても影響の全く無いダミーデータ等を通信部に書込む。この擬似応答により、ダミーデータが通信部に書き込まれて携帯電話機１と通信可能に接続された外部装置に送信された場合でも、携帯電話機１は、個人情報等の様な重要なデータの送信を防ぐことができる。仮に監視実行部５１により疑似応答が行われない場合には、携帯電話機１内に存在するマルウェアが当該マルウェアによる携帯電話機１内の保護対象リソースへのアクセスが制御されていると判断して以降の処理を実行しない場合、マルウェア検出部６は、マルウェアの可能性を示唆する挙動の検出を失敗する可能性がある。つまり、監視実行部５１により疑似応答することにより、マルウェアは処理を継続するため、マルウェア検出部６は、当該挙動を検出することが可能となる。
【００５２】
メモリ６１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）又はＯＣＭ（Ｏｎ  Ｃｈｉｐ  Ｍｅｍｏｒｙ）又は実行可能な不揮発メモリ（ＮＯＲ型フラッシュメモリ等）が該当する。第１の実施形態では、メモリ６１には、監視対象プログラムがアドレス「０ｘ００Ｆ０００」〜「０ｘ００１１ＦＦ」に格納される。命令１は監視対象プログラムの命令であるとする。また、命令２は監視対象プログラムの命令ではないとする。
【００５３】
保護対象リソース７１は、監視対象プログラムが所定の行為（例：アクセス、読込み、書込み）を行う対象であって、マルウェアの攻撃等から保護される対象となる携帯電話機１内のハードウェアリソースである。第１の実施形態では、無線ＬＡＮ対応可能な通信部が保護対象リソース７１として指定されている。すなわち、監視対象プログラムが保護対象リソース７１である通信部にデータを書込む命令を実行する場合、当該監視対象プログラムはマルウェアの可能性を示唆する挙動を実行すると検出される。また、保護対象リソース７１は通信部に限定されない。例えば電話帳等が保持されている不揮発メモリ領域を指定することもできる。また、図３では、保護対象リソース７１である通信部を物理アドレスで指定しているが、ＩＤで指定しても良い。
【００５４】
（第１の実施形態のマルウェア検出部６の動作）
次に、第１の実施形態のマルウェア検出部６の動作について、図４を参照して説明する。図４は、第１の実施形態のマルウェア検出部６の動作を説明するシーケンス図である。
【００５５】
図４において、対象領域指定部１２は、監視対象プログラムをメモリ６１に格納するための物理アドレス空間を確保し、当該確保されたメモリ６１の物理アドレス空間に監視対象プログラムを格納する（ステップＳ１１）。
【００５６】
対象領域指定部１２は、監視対象プログラムが格納されているメモリ６１の物理アドレスの範囲を示す上限アドレス及び下限アドレスを命令監視レジスタ２１に指定する（ステップＳ１２）。また、対象領域指定部１２は、携帯電話機１の保護対象リソース７１の物理アドレスの範囲を示す上限アドレス及び下限アドレスをリソース監視レジスタ３１に指定する（ステップＳ１２）。
【００５７】
監視ビット付与部１３は、メモリ６１からどのような命令がプロセッサ４１によりフェッチされているかを常時、検出している（ステップＳ１３）。監視ビット付与部１３は、命令監視レジスタ２１に指定された上限アドレス及び下限アドレスの範囲に格納されているプログラムの命令を監視対象プログラムの命令であると認識している（ステップＳ１４）。
【００５８】
メモリ６１から命令がプロセッサ４１によりフェッチされた場合（ステップＳ１５）、監視ビット付与部１３は、命令監視レジスタ２１に指定されている上限アドレス及び下限アドレスに基づいて当該フェッチされた命令が監視対象プログラムの命令であるか否かを確認する（ステップＳ１６）。メモリ６１からフェッチされた命令が監視対象プログラムの命令であると確認された場合には、監視ビット付与部１３は、当該フェッチされた命令が監視対象プログラムであることを示す命令監視対象信号をプロセッサ４１に出力する（ステップＳ１７）。具体的には、監視ビット付与部１３は、監視ビット線Ｋ１を介して、命令監視対象信号をプロセッサ４１に出力する。
【００５９】
フェッチされたプログラムの命令が監視対象プログラムの命令である場合には、監視ビット付与部１３により命令監視対象信号が出力されているため、プロセッサ４１は、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する（ステップＳ１８）。プロセッサ４１は、監視ビット付与部１３から出力された命令監視対象信号に基づき、監視対象プログラムとして認識されたプログラムの命令に命令監視ビットを付与する（ステップＳ１９）。
【００６０】
プロセッサ４１は、命令実行部４７が今から命令を実行する旨及び当該命令の内容を監視実行部５１に通知する（ステップＳ２０）。このとき、命令実行部４７が今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１は、更に、当該実行する命令は監視対象プログラムの命令であることを示す命令監視対象信号を監視ビット線Ｋ２に出力する。具体的には、プロセッサ４１は、監視ビット線Ｋ２を介して、命令監視対象信号を監視実行部５１に出力する。
【００６１】
監視実行部５１は、リソース監視レジスタ３１に指定されている保護対象リソース７１の物理アドレス及び監視レベルを常時、参照している（ステップＳ２１）。また、監視実行部５１は、リソース監視レジスタ３１に指定されている保護対象リソース７１の物理アドレス及び監視レベルを、常時参照するのではなくプロセッサ４１から今から命令を実行する旨及び当該命令の内容の通知を受けた場合に参照しても良い。監視実行部５１は、プロセッサ４１からの通知に基づき、命令実行部４７が今から実行する旨及び当該命令の内容を取得している。命令実行部４７が今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１により命令監視対象信号が出力されているため、監視実行部５１は、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する。
【００６２】
監視実行部５１は、命令実行部４７が今から実行する命令が監視対象プログラムであって、かつ、リソース監視レジスタ３１に指定されている内容に基づいて当該監視対象プログラムが携帯電話機１の保護対象リソース７１に書込む命令であるか否かを判定する（ステップＳ２２）。
【００６３】
プロセッサ４１の命令実行部４７により実行される命令が監視対象プログラムであって、かつ、当該監視対象プログラムが携帯電話機１の保護対象リソース７１に書込む命令である場合には、監視実行部５１は、当該監視対象プログラムはマルウェアの可能性を示唆する挙動を実行すると検出する（ステップＳ２３）。この場合、監視実行部５１は、保護対象リソース７１である通信部に擬似応答を行うと共に（ステップＳ２４）、当該擬似応答を行った旨をプロセッサ４１に出力する（ステップＳ２５）。このとき、プロセッサ４１は、携帯電話機１の表示画面に、「マルウェアの可能性を示唆する挙動を行うプログラムが見つかりました。このプログラムをインストールしますか？」という旨のメッセージを表示してユーザの意思確認を促す。前述した擬似応答として、例えば、監視実行部５１は、保護対象リソース７１である通信部に書き込まれても影響の全く無いダミーデータ等を通信部に書込む。
【００６４】
ここで、擬似応答の具体例について図５を参照して説明する。擬似応答とは、マルウェアの可能性を示唆する挙動の命令の実行に対する応答である。また、擬似応答は、携帯電話機１にインストールされるプログラムがマルウェアの可能性を示唆する挙動が実行された場合でも当該携帯電話機１のセキュリティを担保するための応答である。図５は、保護対象リソースの種別と擬似応答の一例とが関連付けられた擬似応答テーブルの内容を示す説明図である。
【００６５】
図５に示すように、保護対象リソースが無線ＬＡＮ対応等の「通信部」である場合には、擬似応答は、当該通信部に対して「書込み命令（送信要求命令）に対する成功通知」という内容である。保護対象リソースである通信部に送信要求命令に対する成功通知を送信することにより、通信部から携帯電話機１内の個人情報等を含む重要なデータが無断で当該携帯電話機１と通信可能な外部装置等に送信されることを防ぐことができる。
【００６６】
また、保護対象リソースがＲＡＭ又はフラッシュメモリ等の「メモリ」である場合には、擬似応答は、当該メモリに対する「読込み命令又は書込み命令に対する成功通知」という内容である。擬似応答が読込み命令の成功通知である場合、保護対象リソースのメモリからデータの読出しは実際に行われない。読込みが成功した旨のみを擬似応答として通知することにより、重要なデータの出力を防ぐことができる。また、擬似応答が書込み命令の成功通知である場合、保護対象リソースのメモリに対してデータの書込みは実際に行われない。書込みが成功した旨のみを擬似応答として通知することにより、重要なデータの書換えを防ぐことができる。
【００６７】
また、保護対象リソースが周辺装置との接続に使用される「Ｉ／Ｏ」（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）である場合には、擬似応答は、当該Ｉ／Ｏに対する「読込み命令に対するダミーデータの出力」という内容である。Ｉ／Ｏからの読込み命令に対してダミーデータを擬似応答として出力することにより、重要なデータの漏洩等を防ぐことができる。また、擬似応答の内容は図５に示した例に限定されない。
【００６８】
以上のように、第１の実施形態のマルウェア検出部１を含む携帯電話機１によれば、ユーザの携帯電話機１の操作に基づいてダウンロードされたプログラムが携帯電話機１にインストールされる際、当該携帯電話機１により当該プログラムの信頼性が検証される。この検証において、当該プログラムが携帯電話機１の保護対象リソースに書込み命令を実行するものである場合、当該携帯電話機１は、当該プログラムがマルウェアの可能性を示唆する挙動を実行すると検出し、当該プログラムのインストールの意思確認をユーザに対して行う。
【００６９】
従って、第１の実施形態のマルウェア検出部６を含む携帯電話機１によれば、第三者により作成されたプログラムの命令による保護対象リソースへの書込みを実環境でリアルタイムに監視することができ、マルウェアの可能性を示唆する挙動を実行するプログラムを検出することができる。また、監視対象プログラムにおけるメモリ６１の格納先アドレスを格納する命令監視レジスタ２１を設けることにより、監視対象プログラムの範囲を柔軟に指定することができる。さらに、監視ビット付与部１３からの出力に基づき、プロセッサは、命令監視レジスタに保持されているアドレスに格納されているプログラムを監視対象として柔軟に設定することができる。
【００７０】
また、保護対象リソース７１の物理アドレスを保持するリソース監視レジスタ３１を設けることにより、保護対象リソースの範囲を柔軟に設定することができる。また、監視ビット付与部１３とプロセッサ４１との間を監視ビット線Ｋ１で配線することにより、監視ビット付与部１３は、監視対象プログラムの命令に対して命令監視ビットを追加する内容の命令をプロセッサ４１に別途実行させる旨を通知する必要がなくなる。
【００７１】
更に、プロセッサ４１と監視実行部５１との間を監視ビット線Ｋ２で配線することにより、プロセッサ４１は命令実行部４７が今から命令を実行する旨及び当該命令の内容を監視実行部５１に通知すれば良い。また、監視実行部５１は、物理的に配線された監視ビット線Ｋ２の状態に基づいて命令監視対象信号の有無を確認することにより、監視対象プログラムの有無を容易に確認することができる。更に、本発明の監視対象プログラムはユーザ自身により作成されたプログラムでも良いため、当該プログラムのバグの有無の検出にも用いることができる。
【００７２】
（第２の実施形態）
次に、本発明のマルウェア検出部の第２の実施形態について図面を参照して説明する。第２の実施形態では、第１の実施形態と同様、図１に示すアプリケーションマネージャ３からの監視要求に従い、マルウェア検出部６ｂは、ダウンロードされたプログラムを監視対象のプログラムとして、当該プログラムがマルウェアの可能性を示唆する挙動を実行するか否かを監視する。第２の実施形態では、マルウェア検出部６ｂは、監視対象プログラムが携帯電話機１ｂの保護対象リソースに保護対象データを書込む命令を実行する場合、当該携帯電話機１ｂは、マルウェアの可能性を示唆する挙動が実行されると検出する。
【００７３】
図６は、第２の実施形態のマルウェア検出部６ｂの内部構成を示すブロック図である。図６に示すように、マルウェア検出部６は、監視制御部１１ｂと、命令監視レジスタ２１ｂと、リソース監視レジスタ３１ｂと、プロセッサ４１ｂと、監視実行部５１ｂと、メモリ６１ｂと、保護対象リソース７１ｂと、保護対象データが格納される格納領域８１と、データ監視レジスタ９１とを備える。
【００７４】
監視制御部１１ｂは、マイクロコンピュータにより構成されるものであり、対象領域指定部１２ｂと、監視ビット付与部１３ｂとにより構成されている。
【００７５】
対象領域指定部１２ｂは、監視対象プログラムをメモリ６１ｂに格納するための物理アドレス空間を確保し、当該確保されたメモリ６１ｂの物理アドレス空間に監視対象プログラムを格納する。対象領域指定部１２ｂは、監視対象プログラムが格納されているメモリ６１ｂの物理アドレスの範囲を示す上限アドレス及び下限アドレスを命令監視レジスタ２１ｂに指定する。対象領域指定部１２ｂは、携帯電話機１ｂの保護対象リソース７１ｂの物理アドレスの範囲を示す上限アドレス及び下限アドレスをリソース監視レジスタ３１ｂに指定する。対象領域指定部１２は、携帯電話機１ｂの保護対象データの格納されている格納領域８１の物理アドレスの範囲を示す上限アドレス及び下限アドレスをデータ監視レジスタ９１に指定する。
【００７６】
第２の実施形態では、図６に示すように、監視対象プログラムはメモリ６１の物理アドレス「０ｘ００Ｆ０００」〜「０ｘ００１１ＦＦ」の範囲に格納される。対象領域指定部１２ｂは、「０ｘ００１１ＦＦ」を上限アドレスとして、「０ｘ００Ｆ０００」を下限アドレスとして命令監視レジスタ２１ｂに指定する。また、第２の実施形態では、携帯電話機１の保護対象リソース７１ｂは無線ＬＡＮ対応の通信部であり、この通信部のアドレスは「０ｘ２ＥＥ０１５」〜「０ｘ２２１０１０」と指定されている。対象領域指定部１２ｂは、上限アドレス「０ｘ２２１０１０」及び下限アドレス「０ｘ２ＥＥ０１５」をリソース監視レジスタ３１ｂに指定する。また、第２の実施形態では、携帯電話機１ｂの保護対象データは格納領域８１に格納され、この保護対象データの格納されている物理アドレスは「０ｘＦＥ００５５」〜「０ｘ３０１０１Ｆ」と指定されている。対象領域指定部１２ｂは、上限アドレス「０ｘ３０１０１Ｆ」及び下限アドレス「０ｘＦＥ００５５」をデータ監視レジスタ９１に指定する。
【００７７】
監視ビット付与部１３ｂは、メモリ６１ｂからどのような命令がプロセッサ４１ｂによりフェッチされているかを常時、検出している。監視ビット付与部１３ｂは、プロセッサ４１ｂが格納領域８１にアクセスしてどのようなデータをロードしているかを常時、検出している。
【００７８】
監視ビット付与部１３ｂは、命令監視レジスタ２１ｂに指定された上限アドレス及び下限アドレスの範囲に格納されているプログラムの命令を監視対象プログラムの命令であると認識している。また、監視ビット付与部１３ｂは、データ監視レジスタ９１に指定された上限アドレス及び下限アドレスの範囲に格納されているデータを保護対象データであると認識している。
【００７９】
メモリ６１ｂから命令がプロセッサ４１ｂによりフェッチされた場合、監視ビット付与部１３ｂは、命令監視レジスタ２１ｂに指定されている上限アドレス及び下限アドレスに基づいて当該フェッチされた命令が監視対象プログラムの命令であるか否かを確認する。また、プロセッサ４１ｂが格納領域８１をアクセスしてデータをロードした場合、監視ビット付与部１３ｂは、データ監視レジスタ９１に指定されている上限アドレス及び下限アドレスに基づいて当該ロードされたデータが保護対象データであるか否かを確認する。
【００８０】
メモリ６１ｂからフェッチされた命令が監視対象プログラムの命令であると確認された場合には、監視ビット付与部１３ｂは、当該フェッチされた命令が監視対象プログラムであることを示す命令監視対象信号をプロセッサ４１ｂに出力する。また、格納領域８１からロードされたデータが保護対象データであると確認された場合には、監視ビット付与部１３ｂは、当該ロードされたデータが保護対象データであることを示すデータ監視対象信号をプロセッサ４１ｂに出力する。
【００８１】
ここで、監視制御部１１ｂの監視ビット付与部１３ｂと、プロセッサ４１ｂとの間には、回路上の配線として監視ビット線Ｋ３及び監視ビット線Ｋ４が物理的に配線されている。監視ビット付与部１３ｂは、メモリ６１ｂからフェッチされた命令が監視対象プログラムの命令であると確認された場合には、命令監視対象信号を監視ビット線Ｋ３に出力する。より具体的には、監視ビット付与部１３ｂは、監視ビット線Ｋ３の出力状態を「Ｈ」（Ｈｉｇｈ）と設定することにより、命令監視対象信号を監視ビット線Ｋ３に出力する。反対に、監視ビット付与部１３ｂは、メモリ６１ｂからフェッチされた命令が監視対象プログラムの命令でないと確認された場合には、命令監視対象信号を監視ビット線Ｋ３に出力しない。この場合には、監視ビット線Ｋ３の出力状態は、「Ｌ」（Ｌｏｗ）である。
【００８２】
監視ビット付与部１３ｂは、格納領域８１からロードされたデータが保護対象データであると確認された場合には、当該ロードされたデータは保護対象データであることを示すデータ監視対象信号を監視ビット線Ｋ４に出力する。より具体的には、監視ビット付与部１３ｂは、監視ビット線Ｋ４の出力状態を「Ｈ」（Ｈｉｇｈ）と設定することにより、データ監視対象信号を監視ビット線Ｋ４に出力する。反対に、監視ビット付与部１３ｂは、格納領域８１からロードされたデータが保護対象データではないと確認された場合には、データ監視対象信号を監視ビット線Ｋ４に出力しない。この場合には、監視ビット線の出力状態は、「Ｌ」（Ｌｏｗ）である。
【００８３】
命令監視レジスタ２１ｂは、第１の実施形態の命令監視レジスタ２１と同様のため、説明を省略する。また、リソース監視レジスタ３１ｂは、第１の実施形態のリソース監視レジスタ３１と同様のため、説明を省略する。
【００８４】
プロセッサ４１ｂは、マイクロプロセッサにより構成されるものであり、命令フェッチ部４２ｂと、命令デコード部４３ｂと、命令制御部４４ｂと、命令キャッシュ４５ｂと、データキャッシュ４６ｂと、命令実行部４７ｂとを備える。
【００８５】
命令フェッチ部４２ｂは、メモリ６１ｂに格納された実行対象のプログラムの命令をフェッチし、当該フェッチされたプログラムの命令を命令デコード部４３ｂに出力する。フェッチされたプログラムの命令が監視対象プログラムの命令である場合には、監視ビット付与部１３ｂにより命令監視対象信号が出力されているため、プロセッサ４１ｂは、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する。
【００８６】
命令デコード部４３ｂは、命令フェッチ部４２ｂによりフェッチされた実行対象のプログラムの命令をデコードして当該命令の内容を解釈し、当該内容を命令制御部４４ｂに出力する。ここで、命令デコード部４３ｂによるデコードの結果、メモリ６１ｂの物理アドレス「０ｘ００１１ＦＦ」〜「０ｘ００Ｆ０００」に格納されているプログラムの命令は、携帯電話機１の保護対象リソース７１ｂである通信部に対して格納領域８１に格納されている保護対象データを書込む命令であるとする。
【００８７】
命令制御部４４ｂは、命令デコード部４３ｂにより解釈された命令の実行を制御する。命令制御部４４ｂは、監視ビット付与部１３ｂにより出力された命令監視対象信号に基づき、監視対象プログラムとして認識されたプログラムの命令に命令監視ビットを付与する。命令制御部４４ｂは、この命令監視ビットの付与された命令を命令キャッシュ４５ｂに格納する。
【００８８】
プロセッサ４１ｂは、命令デコード部４３ｂにより解釈された命令の内容に基づき、格納領域８１をアクセスして当該格納領域８１に格納されているデータをロードする。格納領域８１からロードされたデータが保護対象データである場合には、監視ビット付与部１３ｂによりデータ監視対象信号が出力されているため、プロセッサ４１ｂは、このデータ監視対象信号に対応するデータを保護対象データとして認識する。
【００８９】
命令制御部４４ｂは、監視ビット付与部１３ｂにより出力されたデータ監視対象信号に基づき、保護対象データとして認識されたデータにデータ監視ビットを付与する。命令制御部４４ｂは、このデータ監視ビットの付与されたデータをデータキャッシュ４６ｂに格納する。データキャッシュ４６ｂにはデータ監視ビットが付与されたデータ又はそのアドレスが格納されるため、以降にプロセッサ４１ｂがデータキャッシュ４６ｂからデータを取得する際もデータ監視ビットを確認することで監視が可能となる。
【００９０】
図６に示すように、命令１を実行するプログラムは、命令監視レジスタ２１ｂに指定されるメモリ６１ｂの物理アドレスの範囲に格納されている。従って、命令１は、監視対象プログラムの命令であり、命令制御部４４ｂにより命令監視ビットが付与される。また、命令２を実行するプログラムは、命令監視レジスタ２１ｂに指定される物理アドレスの範囲に対応するメモリ６１ｂの物理アドレスに格納されていないとする。従って、命令２は、監視対象プログラムの命令ではなく、命令制御部４４ｂにより命令監視ビットが付与されない。
【００９１】
また、図６に示すように、格納領域８１からロードされたデータ１及びデータ２は、データ監視レジスタ９１に指定される物理アドレスの範囲に対応する格納領域８１の物理アドレスに格納されている。従って、データ１及びデータ２は、保護対象データであり、命令制御部４４ｂによりデータ監視ビットが付与される。
【００９２】
命令キャッシュ４５ｂ、データキャッシュ４６ｂ及び命令実行部４７ｂは、第１の実施形態における命令キャッシュ４５、データキャッシュ４６及び命令実行部４７と同様のため、説明を省略する。
【００９３】
また、プロセッサ４１ｂは、命令実行部４７ｂが今からデータを用いて命令を実行する旨及び当該命令の内容を監視実行部５１ｂに通知する（ステップＳ４２）。更に、プロセッサ４１ｂは、命令実行部４７ｂが今から実行する命令は命令監視ビットが付与されたものである場合には、当該実行する命令は監視対象プログラムの命令であることを示す命令監視対象信号を監視実行部５１ｂに出力する。更に、プロセッサ４１ｂは、命令実行部４７ｂが今から実行する命令において用いられるデータはデータ監視ビットが付与されたものである場合には、当該データは保護対象データであることを示すデータ監視対象信号を監視実行部５１ｂに出力する。
【００９４】
ここで、プロセッサ４１ｂと監視実行部５１ｂとの間には、回路上の配線として監視ビット線Ｋ５及び監視ビット線Ｋ６が物理的に配線されている。命令実行部４７ｂが今から実行する命令は命令監視ビットが付与された命令である場合には、プロセッサ４１ｂは、命令監視対象信号を監視ビット線Ｋ５に出力する。より具体的には、プロセッサ４１ｂは、監視ビット線Ｋ５の出力状態を「Ｈ」（Ｈｉｇｈ）と設定することにより、命令監視対象信号を監視ビット線Ｋ５に出力する。反対に、命令実行部４７ｂが今から実行する命令は命令監視ビットが付与されたものでない場合には、プロセッサ４１ｂは、命令監視対象信号を監視ビット線Ｋ５に出力しない。この場合には、第３の監視ビット線の出力状態は「Ｌ」（Ｌｏｗ）である。
【００９５】
更に、命令実行部４７ｂが今から実行する命令において用いられるデータはデータ監視ビットが付与されたものである場合には、プロセッサ４１ｂは、データ監視対象信号を監視ビット線Ｋ６に出力する。より具体的には、プロセッサ４１ｂは、監視ビット線Ｋ６の出力状態を「Ｈ」（Ｈｉｇｈ）と設定することにより、データ監視対象信号を監視ビット線Ｋ６に出力する。反対に、命令実行部４７ｂが今から実行する命令において用いられるデータはデータ監視ビットが付与されていない場合には、プロセッサ４１ｂは、データ監視対象信号を監視ビット線Ｋ６に出力せず、この場合には、第４の監視ビット線の出力状態は「Ｌ」（Ｌｏｗ）である。
【００９６】
監視実行部５１ｂは、マイクロコンピュータにより構成されるものであり、リソース監視レジスタ３１ｂに指定されている保護対象リソース７１ｂの物理アドレス及び監視レベルを常時、参照している。
【００９７】
監視実行部５１ｂは、プロセッサ４１ｂからの通知に基づき、命令実行部４７ｂが今からデータを用いて命令を実行する旨及び当該命令の内容を取得し、当該命令実行部４７ｂによる命令の実行を監視する。命令実行部４７ｂが今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１ｂにより命令監視対象信号が出力されているため、監視実行部５１ｂは、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する。
【００９８】
命令実行部４７ｂが今から実行する命令において用いられるデータはデータ監視ビットが付与されたものである場合には、プロセッサ４１ｂによりデータ監視対象信号が出力されているため、監視実行部５１ｂは、このデータ監視対象信号に対応するデータを保護対象データとして認識する。
【００９９】
監視実行部５１ｂは、命令実行部４７ｂが今から実行する命令が監視対象プログラムであって、かつ、リソース監視レジスタ３１ｂに指定されている内容に基づいて当該監視対象プログラムが携帯電話機１ｂの保護対象リソース７１ｂに保護対象データを書込む命令であるか否かを判定する。命令実行部４７ｂが今から実行する命令が監視対象プログラムであって、かつ、当該監視対象プログラムが携帯電話機１ｂの保護対象リソース７１ｂに保護対象データを書込む命令である場合には、監視実行部５１ｂは、当該監視対象プログラムはマルウェアの可能性を示唆する挙動を実行すると検出する。この挙動は保護対象データ（クレジットカード番号等）を携帯電話機１ｂと通信可能に接続された外部装置に送信すること意味している。この場合、監視実行部５１ｂは、保護対象リソース７１ｂである通信部に擬似応答を行うと共に、当該擬似応答を行った旨をプロセッサ４１ｂに出力する。このとき、プロセッサ４１ｂは、携帯電話機１ｂの表示画面に、「マルウェアの可能性を示唆する挙動を行うプログラムが見つかりました。このプログラムをインストールしますか？」という旨のメッセージを表示してユーザの意思確認を促す。擬似応答は、図５に示すように、第１の実施形態と同様であるため、説明を省略する。
【０１００】
メモリ６１ｂ及び保護対象リソース７１ｂは、第１の実施形態のメモリ６１及び保護対象リソース７１と同様であるため、説明を省略する。格納領域８１は、携帯電話機１ｂのユーザに関する個人情報等の重要なデータが格納される領域であり、ファイルシステムが構成されている。第２の実施形態では、格納領域８１の物理アドレス「０ｘＦＥ００５５」〜「０ｘ３０１０１Ｆ」の範囲に格納されているデータは保護対象データとされる。
【０１０１】
データ監視レジスタ９１は、対象領域指定部１２ｂにより指定された保護対象データの物理アドレスを格納する格納領域である。第２の実施形態では、上限アドレスとして「０ｘ３０１０１Ｆ」及び下限アドレスとして「０ｘＦＥ００５５」が指定されている。また、データ監視レジスタ９１には、監視レベルが予め指定されている。この監視レベルには、データ監視レジスタ９１に指定されている物理アドレスの範囲に格納されている格納領域８１のデータに対して読込み命令又は書込み命令が行われる際に、当該データにデータ監視ビットが付与される旨が指定されている。
【０１０２】
（第２の実施形態のマルウェア検出部６ｂの動作）
次に、第２の実施形態のマルウェア検出部６ｂの動作について、図７を参照して説明する。図７は、第２の実施形態のマルウェア検出部６ｂの動作を説明するシーケンス図である。
【０１０３】
図７において、対象領域指定部１２ｂは、監視対象プログラムをメモリ６１ｂに格納するための物理アドレス空間を確保し、当該確保されたメモリ６１ｂの物理アドレス空間に当該監視対象プログラムを格納する（ステップＳ３１）。対象領域指定部１２ｂは、監視対象プログラムが格納されているメモリ６１ｂの物理アドレスの範囲を示す上限アドレス及び下限アドレスを命令監視レジスタ２１ｂに指定する（ステップＳ３２）。対象領域指定部１２ｂは、携帯電話機１ｂの保護対象リソース７１ｂの物理アドレスの範囲を示す上限アドレス及び下限アドレスをリソース監視レジスタ３１ｂに指定する（ステップＳ３２）。対象領域指定部１２は、携帯電話機１ｂの保護対象データの格納されている格納領域８１の物理アドレスの範囲を示す上限アドレス及び下限アドレスをデータ監視レジスタ９１に指定する（ステップＳ３２）。
【０１０４】
監視ビット付与部１３ｂは、メモリ６１ｂからどのような命令がプロセッサ４１ｂによりフェッチされているかを常時、検出している（ステップＳ３３）。監視ビット付与部１３ｂは、プロセッサ４１ｂが格納領域８１にアクセスしてどのようなデータをロードしているかを常時、検出している（ステップＳ３３）。
【０１０５】
監視ビット付与部１３ｂは、命令監視レジスタ２１ｂに指定された上限アドレス及び下限アドレスの範囲に格納されているプログラムの命令を監視対象プログラムの命令であると認識している（ステップＳ３４）。更に、監視ビット付与部１３ｂは、データ監視レジスタ９１に指定された上限アドレス及び下限アドレスの範囲に格納されているデータを保護対象データであると認識している（ステップＳ３４）。
【０１０６】
メモリ６１ｂから命令がプロセッサ４１ｂによりフェッチされた場合（ステップＳ３５）、監視ビット付与部１３ｂは、命令監視レジスタ２１ｂに指定されている上限アドレス及び下限アドレスに基づいて当該フェッチされた命令が監視対象プログラムの命令であるか否かを確認する（ステップＳ３６）。
【０１０７】
プロセッサ４１ｂが格納領域８１をアクセスしてデータをプロセッサ４１ｂ内にロードした場合（ステップＳ３７）、監視ビット付与部１３ｂは、データ監視レジスタ９１に指定されている上限アドレス及び下限アドレスに基づいて当該ロードされたデータが保護対象データであるか否かを確認する（ステップＳ３８）。
【０１０８】
メモリ６１ｂからフェッチされた命令が監視対象プログラムの命令であると確認された場合には、監視ビット付与部１３は、当該フェッチされた命令が監視対象プログラムであることを示す命令監視対象信号をプロセッサ４１ｂに出力する（ステップＳ３９）。具体的には、監視ビット付与部１３ｂは、監視ビット線Ｋ３を介して、命令監視対象信号をプロセッサ４１ｂに出力する。
【０１０９】
また、格納領域８１からロードされたデータが保護対象データであると確認された場合には、監視ビット付与部１３は、当該ロードされたデータが保護対象データであることを示すデータ監視対象信号をプロセッサ４１ｂに出力する（ステップＳ３９）。具体的には、監視ビット付与部１３ｂは、監視ビット線Ｋ４を介して、データ監視対象信号をプロセッサ４１ｂに出力する。
【０１１０】
フェッチされたプログラムの命令が監視対象プログラムの命令である場合には、監視ビット付与部１３ｂにより命令監視対象信号が出力されているため、プロセッサ４１ｂは、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する（ステップＳ４０）。また、格納領域８１からロードされたデータが保護対象データである場合には、監視ビット付与部１３ｂによりデータ監視対象信号が出力されているため、プロセッサ４１ｂは、このデータ監視対象信号に対応するデータを保護対象データとして認識する（ステップＳ４０）。
【０１１１】
プロセッサ４１ｂは、監視ビット付与部１３ｂにより出力された命令監視対象信号に基づき、監視対象プログラムとして認識されたプログラムの命令に命令監視ビットを付与する（ステップＳ４１）。また、プロセッサ４１ｂは、監視ビット付与部１３ｂにより出力されたデータ監視対象信号に基づき、保護対象データとして認識されたデータにデータ監視ビットを付与する（ステップＳ４１）。
【０１１２】
プロセッサ４１ｂは、命令実行部４７ｂが今からデータを用いて命令を実行する旨及び当該命令の内容を監視実行部５１ｂに通知する（ステップＳ４２）。命令実行部４７ｂが今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１ｂは、更に、当該実行する命令は監視対象プログラムの命令であることを示す命令監視対象信号を監視ビット線Ｋ５に出力する。具体的には、プロセッサ４１ｂは、監視ビット線Ｋ５を介して、命令監視対象信号を監視実行部５１ｂに出力する。また、命令実行部４７ｂが今から実行する命令において用いられるデータはデータ監視ビットが付与されたものである場合には、プロセッサ４１ｂは、当該データは保護対象データであることを示すデータ監視対象信号を監視ビット線Ｋ６に出力する。具体的には、プロセッサ４１ｂは、監視ビット線Ｋ６を介して、データ監視対象信号を監視実行部５１ｂに出力する。
【０１１３】
監視実行部５１ｂは、リソース監視レジスタ３１ｂに指定されている保護対象リソース７１ｂの物理アドレス及び監視レベルを常時、参照している（ステップＳ４３）。監視実行部５１ｂは、プロセッサ４１ｂからの通知に基づき、命令実行部４７ｂが今からデータを用いて命令を実行する旨及び当該命令の内容を取得している。命令実行部４７ｂが今から実行する命令は命令監視ビットが付与されたものである場合には、プロセッサ４１ｂにより命令監視対象信号が出力されているため、監視実行部５１ｂは、この命令監視対象信号に対応する命令を監視対象プログラムの命令として認識する。
【０１１４】
命令実行部４７ｂが今から実行する命令において用いられるデータはデータ監視ビットが付与されたものである場合には、プロセッサ４１ｂによりデータ監視対象信号が出力されているため、監視実行部５１ｂは、このデータ監視対象信号に対応するデータを保護対象データとして認識する。
【０１１５】
監視実行部５１ｂは、命令実行部４７ｂが今から実行する命令が監視対象プログラムであって、かつ、リソース監視レジスタ３１ｂに指定されている内容に基づいて当該監視対象プログラムが携帯電話機１ｂの保護対象リソース７１ｂに保護対象データを書込む命令であるか否かを判定する（ステップＳ４４）。命令実行部４７ｂが今から実行する命令が監視対象プログラムであって、かつ、当該監視対象プログラムが携帯電話機１ｂの保護対象リソース７１ｂに保護対象データを書込む命令である場合には、監視実行部５１ｂは、当該監視対象プログラムはマルウェアの可能性を示唆する挙動を実行すると検出する（ステップＳ４５）。この場合、監視実行部５１ｂは、保護対象リソース７１ｂである通信部に擬似応答を行うと共に（ステップＳ４６）、当該擬似応答を行った旨をプロセッサ４１ｂに出力する（ステップＳ４７）。このとき、プロセッサ４１ｂは、携帯電話機１ｂの表示画面に、「マルウェアの可能性を示唆する挙動を行うプログラムが見つかりました。このプログラムをインストールしますか？」という旨のメッセージを表示してユーザの意思確認を促す。
【０１１６】
以上のように、第２の実施形態のマルウェア検出部６ｂを含む携帯電話機１ｂによれば、ユーザの携帯電話機１ｂの操作に基づいてダウンロードされたプログラムが携帯電話機１ｂにインストールされる際、当該携帯電話機１ｂにより当該プログラムの信頼性が検証される。この検証において、当該プログラムが携帯電話機１ｂ内の保護対象リソース７１ｂに保護対象データを書込む命令を実行する場合、当該携帯電話機１ｂは、当該プログラムがマルウェアの可能性を示唆する挙動を実行すると検出し、当該プログラムのインストールの意思確認をユーザに対して行う。
【０１１７】
第２の実施形態のマルウェア検出部６ｂを含む携帯電話機１ｂによれば、第三者により作成されたプログラムの命令による保護対象リソースへの保護対象データの書込みを実環境でリアルタイムに監視することができ、マルウェアの可能性を示唆する挙動を実行するプログラムを検出することができる。更に、重要なデータを保護対象データとすることにより、マルウェアの攻撃から重要度の高いデータの漏洩、流出等を防ぐことができ、マルウェアの誤検出を低下することができる。また、監視対象プログラムにおけるメモリ６１の格納先アドレスを格納する命令監視レジスタ２１ｂを設けることにより、監視対象プログラムの範囲を柔軟に指定することができる。さらに、監視ビット付与部１３からの出力に基づき、プロセッサ４１ｂは、命令監視レジスタに保持されているアドレスに格納されているプログラムを監視対象として柔軟に設定することができる。
【０１１８】
また、保護対象データの格納先アドレスを格納するデータ監視レジスタ９１を設けることにより、保護対象のデータの範囲を柔軟に指定することができる。また、プロセッサ４１ｂは、命令監視レジスタ２１ｂ及びデータ監視レジスタ９１にそれぞれ保持されている命令及びデータの格納先アドレスに対応する命令及びデータを取得した場合に的確に監視対象として設定することができる。また、保護対象リソースのアドレスを保持するレジスタを設けることにより、監視対象のリソースの範囲を柔軟に設定することができる。
【０１１９】
また、監視ビット付与部１３ｂとプロセッサ４１ｂとの間を監視ビット線Ｋ３及び監視ビット線Ｋ４でそれぞれ配線することにより、監視ビット付与部１３ｂからプロセッサ４１ｂに対して、命令監視ビット及びデータ監視ビットを追加する内容の命令をプロセッサ４１ｂに別途実行させる必要がなくなる。更に、プロセッサ４１ｂと監視実行部５１ｂとの間を監視ビット線Ｋ５及び監視ビット線Ｋ６で配線することにより、プロセッサ４１ｂは命令実行部４７ｂが今からデータを用いて命令を実行する旨を監視実行部５１ｂに通知すれば良く、監視実行部５１ｂは、物理的に配線された監視ビット線Ｋ５及びＫ６の状態に基づいて命令監視対象信号及びデータ監視対象信号の有無を確認することにより、監視対象プログラム及び保護対象データの有無を容易に確認することができる。
【０１２０】
（変形例１：保護対象データのコピー）
次に、前述した各実施形態の変形例１について図８及び図９を参照して説明する。図８は、保護対象データの全部又は一部がメモリ６１ｂにコピーされたときのメモリ６１ｂの状態遷移を示す説明図である。図９は、保護対象データの全部又は一部がメモリ６１ｂにコピーされたときのデータ監視レジスタ９１の状態遷移を示す説明図である。
【０１２１】
例えば、第２の実施形態において、格納領域８１に格納されている保護対象データの全部又は一部がメモリ６１ｂにコピーされた場合には、当該コピーされた保護対象データの格納されたメモリ６１ｂの物理アドレスはデータ監視レジスタ９１に指定されていない。このため、監視実行部５１ｂは、データ監視レジスタ９１に指定されている物理アドレス以外の物理アドレスに格納されたデータを保護対象データと認識することができず、マルウェアの可能性を示唆する挙動を検出することができない可能性がある。
【０１２２】
そこで、変形例１では、監視実行部５１ｂは、第２の実施形態に加え、格納領域８１に格納されている保護対象データの全部又は一部がメモリ６１ｂにコピーされたことを検出する。監視実行部５１ｂは、対象領域指定部１２ｂに対し、当該コピーされた保護対象データの全部又は一部が格納されているメモリ６１ｂの物理アドレスをデータ監視レジスタ９１に追加指定するように通知する。対象領域指定部１２ｂは、監視実行部５１ｂからの通知に基づき、メモリ６１ｂに格納された保護対象データの格納されている物理アドレスをデータ監視レジスタ９１に追加指定する。
【０１２３】
具体的には、格納領域８１に格納されていた保護対象データの全部又は一部がメモリ６１ｂにコピーされた場合、図８に示すように、当該コピーされた保護対象データはメモリ６１ｂの物理アドレス「０ｘＣＤ００５５」〜「０ｘ０１００１Ｆ」の範囲に格納されるとする。この場合、図９に示すように、データ監視レジスタ９１には、物理アドレス「０ｘＣＤ００５５」をメモリ６１ｂにおける下限アドレス「０ｘＣＤ００５５」、物理アドレス「０ｘ０１００１Ｆ」をメモリ６１ｂにおける上限アドレス「０ｘ０１００１Ｆ」に追加指定される。
【０１２４】
変形例１では、保護対象データのコピー先となるメモリ６１ｂを保護対象リソース７１ｂとして予めリソース監視レジスタ３１ｂに指定することにより、監視実行部５１ｂは、コピー自体を検出することができる。監視実行部５１ｂによりコピーが検出された後、対象領域指定部１２ｂは、そのコピーされた保護対象データのメモリ６１ｂに格納されている物理アドレスをデータ監視レジスタ９１に指定する。なお、コピー先の保護対象データが格納されるメモリ６１ｂの保護対象リソース７１ｂとしての指定は、全ての保護対象データのコピーが検出された時点で解除されて良い。全てのコピー先の保護対象データが格納されている物理アドレスをデータ監視レジスタ９１ｂに指定できるまで、これを繰り返す。全て指定できた後、監視対象プログラムを再実行することでリアルタイムな監視が可能となる。
【０１２５】
従って、変形例１によれば、保護対象データの全部又は一部がデータ監視レジスタ９１に格納されていないメモリ６１の物理アドレスにコピーされた場合でも、当該コピー先の物理アドレスを保護対象データの存在する物理アドレスとしてデータ監視レジスタに追加設定することにより、プログラムの命令の監視をリアルタイムに実行することができる。更に、データ監視レジスタ９１に指定されている物理アドレス以外の物理アドレスに格納されているデータを保護対象データと認識することができ、マルウェアの可能性を示唆する挙動の検出をより高精度に行うことができる。
【０１２６】
（変形例２：ＤＬＬによる他のプログラムの実行）
次に、前述した各実施形態の変形例２について図１０及び図１１を参照して説明する。図１０は、監視対象プログラムが監視対象プログラムではない他のプログラムＸを動的に呼び出した場合のメモリの状態遷移を示す説明図である。図１１は、監視対象プログラムが監視対象プログラムではない他のプログラムＸを動的に呼び出した場合の命令監視レジスタの状態遷移を示す説明図である。
【０１２７】
例えば、第１の実施形態において、監視対象プログラムが命令１を実行した場合に、命令監視レジスタ２１に指定されていない他のプログラムＸを動的に呼び出した場合には、当該呼び出された他のプログラムＸの格納されているメモリ６１の物理アドレスは命令監視レジスタ２１に指定されていない。このため、携帯電話機１の監視実行部５１は、命令監視レジスタ２１に指定されている物理アドレス以外の物理アドレスに格納された命令を監視対象プログラムの命令と認識することができず、マルウェアの可能性を示唆する挙動を検出することができない可能性がある。
【０１２８】
そこで、変形例２では、監視実行部５１は、第１の実施形態に加え、監視対象プログラムの命令１の実行時に、監視対象プログラムが監視対象プログラムではない他のプログラムＸを動的に呼び出したことを検出する。監視実行部５１は、対象領域指定部１２に対し、当該呼び出された他のプログラムＸのメモリ６１に格納された物理アドレスを命令監視レジスタ２１に追加指定するように通知する。対象領域指定部１２は、監視実行部５１からの通知に基づき、メモリ６１に格納された他のプログラムＸの格納されている物理アドレスを命令監視レジスタ２１に追加指定する。
【０１２９】
具体的には、監視対象プログラムの命令１の実行時に、監視対象プログラムではない他のプログラムＸが動的に呼び出された場合、図１０に示すように、当該呼び出された他のプログラムＸはメモリ６１の物理アドレス「０ｘ０６Ｃ０４１」〜「０ｘ０３ＦＤ２５」の範囲に格納されるとする。この場合、図１１に示すように、命令監視レジスタ２１には、物理アドレス「０ｘ０６Ｃ０４１」をメモリ６１における第２の下限アドレス、物理アドレス「０ｘ０３ＦＤ２５」をメモリ６１における第２の上限アドレスに追加指定される。
【０１３０】
変形例２では、呼び出し先の他のプログラムＸが格納されるメモリ６１を保護対象リソース７１として予めリソース監視レジスタ３１に指定することにより、監視実行部５１は、他のプログラムＸの呼び出し自体を検出することができる。監視実行部５１により呼び出しが検出された後、対象領域指定部１２は、その呼び出された他のプログラムＸのメモリ６１に格納されている物理アドレスを命令監視レジスタ２１に指定する。なお、呼び出し先の他のプログラムＸが格納されるメモリ６１の保護対象リソース７１としての指定は、全ての他のプログラムの呼び出しが検出された時点で解除されて良い。全ての呼び出し先の他のプログラムが格納されている物理アドレスを命令監視レジスタ２１に指定できるまで、これを繰り返す。全て指定できた後、監視対象プログラムを実行することでリアルタイムな監視が可能となる。
【０１３１】
従って、変形例２によれば、監視対象プログラムの実行時に、監視対象プログラムではない他のプログラムＸが動的に呼び出された場合でも、当該呼び出された他のプログラムＸのメモリ６１に格納されている物理アドレスを命令監視レジスタ２１に追加指定することにより、当該呼び出されたプログラムの命令の監視をリアルタイムに実行することができる。更に、命令監視レジスタ２１に指定されている物理アドレス以外の物理アドレスに格納されている監視対象プログラムではない他のプログラムＸを動的に監視保護プログラムと認識することができ、マルウェアの可能性を示唆する挙動の検出をより高精度に行うことができる。
【０１３２】
以上、添付図面を参照しながら各種の実施形態について説明したが、本発明のマルウェア検出装置はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１３３】
また、前述した第１の実施形態では、監視対象プログラムが保護対象リソースである通信部に対して「書込み」を行う場合に、当該監視対象プログラムの挙動はマルウェアの可能性を示唆する挙動を実行すると検出される旨を説明した。しかしながら、当該監視対象プログラムが保護対象リソースである通信部に対して「アクセス」を行う場合でも、当該監視対象プログラムの挙動はマルウェアの可能性を示唆する挙動を実行すると検出されても良い。
【０１３４】
例えば、前述した各実施形態においては、監視ビット付与部１３とプロセッサ４１との間、及びプロセッサ４１と監視実行部５１との間には、それぞれ監視ビット線Ｋ１〜Ｋ６がそれぞれ配線される旨を説明した。しかし、第１の実施形態において、監視ビット線Ｋ１の配線を行わず、監視ビット付与部１３は、命令監視レジスタ２１に指定されている物理アドレスに格納されているプログラムの命令に命令監視ビットを付与する命令を優先的に実行する旨をプロセッサ４１に通知するようにしても良い。この場合、プロセッサ４１は、監視ビット付与部１３からの通知に基づき、命令監視レジスタ２１に指定されている物理アドレスに格納されているプログラムの命令がプロセッサ４１にフェッチされた場合に当該命令に命令監視ビットを付与する。
【０１３５】
これに関連して、監視ビット線Ｋ２の配線を行わず、更に、プロセッサ４１は、命令監視ビットが付与された命令を今から実行する旨を監視実行部５１に通知すれば良い。監視実行部５１は、プロセッサ４１からの通知に基づき、実行対象のプログラムの命令は命令監視ビットが付与された命令であることを認識することができる。これにより、携帯電話機１内において監視ビット線Ｋ１及び監視ビット線Ｋ２の配線が不要となる。
【０１３６】
また更に、第２の実施形態において、監視ビット線Ｋ３及び監視ビット線Ｋ４の配線を行わず、監視ビット付与部１３ｂは、命令監視レジスタ２１ｂに指定されている物理アドレスに格納されているプログラムの命令に命令監視ビットを付与する命令、及び、データ監視レジスタ９１に指定されている物理アドレスに格納されているデータにデータ監視ビットを付与する命令を優先的に実行する旨をプロセッサ４１ｂに通知するようにしても良い。この場合、プロセッサ４１ｂは、監視ビット付与部１３ｂからの通知に基づき、命令監視レジスタ２１ｂに指定されている物理アドレスに格納されているプログラムの命令に命令監視ビットを付与すると共に、データ監視レジスタ９１に指定されている物理アドレスに格納されているデータにデータ監視ビットを付与する。
【０１３７】
これに関連して、監視ビット線Ｋ５及び監視ビット線Ｋ６の配線を行わず、更に、プロセッサ４１ｂは、データ監視ビットが付与されたデータを用いて命令監視ビットが付与された命令を実行する旨を監視実行部５１ｂに通知すれば良い。監視実行部５１ｂは、プロセッサ４１ｂからの通知に基づき、実行対象のプログラムの命令は命令監視ビットが付与された命令であって、当該命令はデータ監視ビットが付与されたデータを用いることを認識することができる。これにより、携帯電話機１ｂ内において監視ビット線Ｋ３〜監視ビット線Ｋ６の配線が不要となる。
【０１３８】
前述した各実施形態では、監視対象プログラム、保護対象リソース、及び保護対象データは予め指定されているものとして説明した。しかし、監視対象プログラム、保護対象リソース、及び保護対象データの指定の仕方については特に問わない。例えば、ユーザが監視対象プログラム、保護対象リソース、及び保護対象データを指定しても良い。また、監視対象プログラム、保護対象リソース、及び保護対象データは、携帯電話機１により予め指定されても良い。また、ダウンロードされたプログラムそのもの、又はダウンロードされたプログラムに電子署名が添付されていないプログラムは監視対象プログラムと指定されても良い。
【０１３９】
また、前述した実施形態では、監視対象プログラムが１つである場合を説明した。しかし、複数の監視対象プログラムが携帯電話機１により監視されても良い。例えば、監視対象プログラムが２つある場合には、どちらの監視対象プログラムがマルウェアの可能性を示唆する挙動を示すかを高精度に検出することが難しい可能性もある。監視対象プログラムが監視対象プログラム１及び監視対象プログラム２の２種類ある場合には、監視ビット付与部１３とプロセッサ４１との間、及びプロセッサ４１と監視実行部５１との間にそれぞれ２本の監視ビット線が配線される必要がある。監視対象プログラム１に対しては第１の監視ビット線の出力状態を「Ｈ」に設定し、監視対象プログラム２に対しては第２の監視ビット線の出力状態を「Ｈ」に設定して通知することにより、どの監視対象プログラムに関する通知であるかを明確にし、複数の監視対象プログラムを同時に監視することができる。また、監視ビット線による通知ではなく、例えば、監視ビット付与部１３は、プロセッサ４１によりフェッチされた命令が監視対象プログラム１又は監視対象プログラム２であることをプロセッサ４１に通知すれば良い。また、プロセッサ４１は、命令実行部４７が今から実行する命令が監視対象プログラム１又は監視対象プログラム２であることを監視実行部５１に通知すれば良い。
【０１４０】
また、マルチプロセッサ環境等のように、携帯電話機１内に複数のプロセッサ４１が設けられても構わない。この場合には、プロセッサ４１に対する識別子が予め付与されることにより、監視実行部５１はどのプロセッサ４１に対して監視しているかを把握することができる。これにより、監視対象プログラムを実行するプロセッサが複数ある場合でも、監視対象を明確に見分けることができる。
【０１４１】
また、前述した実施形態において、命令実行部４７が同一の監視対象プログラムを繰り返して実行することも想定される。プロセッサ４１は、命令実行部４７により一度実行された命令及びデータを命令キャッシュ４５及びデータキャッシュ４６にそれぞれ格納している。このため、プロセッサ４１は、命令キャッシュ４５及びデータキャッシュ４６にそれぞれ格納された命令及びデータに命令監視ビット及びデータ監視ビットの付与の有無を確認する。この確認結果に基づき、プロセッサ４１は、監視ビット線による命令監視ビット及びデータ監視ビットの有無を監視実行部５１に通知する。また、プロセッサ４１は、監視ビット線による通知ではなく、前述した確認結果に基づき、命令監視ビット及びデータ監視ビットの有無を監視実行部５１に通知しても良い。これにより、同一の監視対象プログラムが繰り返して実行される際、監視制御部１１及びプロセッサ４１間の動作を不要とすることができる。
【産業上の利用可能性】
【０１４２】
本発明は、第三者により作成されたプログラムの命令による保護対象リソースへのアクセスをリアルタイムに実環境で監視することのできるマルウェア検出装置及びマルウェア検出方法として有用である。
【符号の説明】
【０１４３】
１、１ｂ      携帯電話機
２            ダウンローダ
３            アプリケーションマネージャ
４            信頼性検証部
５            表示部
６、６ｂ      マルウェア検出部
１１、１１ｂ  監視制御部
１２、１２ｂ  対象領域指定部
１３、１３ｂ  監視ビット付与部
２１、２１ｂ  命令監視レジスタ
３１、３１ｂ  リソース監視レジスタ
４１、４１ｂ  プロセッサ
４２、４２ｂ  命令フェッチ部
４３、４３ｂ  命令デコード部
４４、４４ｂ  命令制御部
４５、４５ｂ  命令キャッシュ
４６、４６ｂ  データキャッシュ
４７、４７ｂ  命令実行部
５１、５１ｂ  監視実行部
６１、６１ｂ  メモリ
７１、７１ｂ  保護対象リソース
８１          格納領域
９１          データ監視レジスタ
Ｋ１、Ｋ２、Ｋ３、Ｋ４、Ｋ５、Ｋ６  監視ビット線
【図１】
2011145945.tif 000003
【図２】
2011145945.tif 000004
【図３】
2011145945.tif 000005
【図４】
2011145945.tif 000006
【図５】
2011145945.tif 000007
【図６】
2011145945.tif 000008
【図７】
2011145945.tif 000009
【図８】
2011145945.tif 000010
【図９】
2011145945.tif 000011
【図１０】
2011145945.tif 000012
【図１１】
2011145945.tif 000013