このアプリケーションの一部のコンテンツは現時点では利用できません。
このような状況が続く場合は、にお問い合わせくださいフィードバック & お問い合わせ
1. (WO2018235858) 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置
Document

明 細 書

発明の名称 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置

技術分野

0001  

背景技術

0002   0003   0004   0005   0006  

先行技術文献

特許文献

0007  

発明の概要

発明が解決しようとする課題

0008   0009   0010  

課題を解決するための手段

0011   0012   0013   0014   0015   0016   0017   0018   0019   0020  

発明の効果

0021  

図面の簡単な説明

0022  

発明を実施するための形態

0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088  

符号の説明

0089  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16  

図面

1   2   3   4   5   6   7   8   9  

明 細 書

発明の名称 : 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置

技術分野

[0001]
 本発明は、コンピュータプログラムによって実行される情報処理動作を監視するセキュリティ技術に関する。

背景技術

[0002]
 従来、悪意のあるアプリケーションプログラム(不正プログラム)のコンピュータデバイスへの侵入、攻撃によって、コンピュータの制御が奪われ、メモリに格納されているデータファイル等の改竄、消去等のデータ破壊、通信漏洩等が引き起こされてコンピュータのセキュリティが大きく損われている。そこで昨今、アプリケーションプログラムの振舞乃至は挙動を監視して、不正プログラムによる攻撃等を規制する各種の対応ソフトウェアが提案されている。
[0003]
 特許文献1には、アプリケーションによるハードディスクHDD等の記憶装置へのアクセスがウイルス等の不正なアクセスか否かを判定する情報漏洩防止システムが記載されている。すなわち、この情報漏洩防止システムは、ハードディスクHDD等の記憶装置に記憶された情報へのアプリケーションによるアクセスを、オペレーティングシステム(OS)のフック機能を利用してフックし、予め設定されたアクセス許容条件表の内容と照合することでマッチング判定を行うものである。そして、マッチングしない場合にはウイルス等の不正なアクセスであるとして、記憶装置に記憶された情報のアプリケーションへの受け渡しを禁止するようにしている。
[0004]
 特許文献2には、アプリケーションの挙動を監視して正常か否かを判定するセキュリティ技術が提案されている。すなわち、このセキュリティ技術は、オフラインマルウェア検出検査にリアルタイムマルウェア検出検査が追加的に提供され、この追加された検出検査がアプリケーションの実行中にその挙動を記録し、記録された挙動から挙動パターンを抽出し、抽出された挙動パターンを正常なアプリケーションの基本パターン又は以前に記録された前記アプリケーションのパターンと比較するものである。これにより、悪質なアプリケーションが実環境のモバイルデバイスにダウンロード、インストールされ、そして実際に実行されたとしても、モバイルデバイスは、このアプリケーションの悪質な挙動を自動的に検出することができる。
[0005]
 特許文献3には、バッファオーバーラン現象を利用したコンピュータウイルスや不正アクセスを抑制することのできるオペレーティングシステムが記載されている。このオペレーティングシステムは、コンピュータウイルスや不正アクセスを抑制するために、プログラムから要求されたAPI(Application Program Interface)を実行する前に、メモリ装置上におけるプログラムの格納アドレスを取得し、そのアドレスが適正な位置を示しているか否かを判定することにより、APIをコールしたプログラムが適正か不正かを判断するものである。
[0006]
 特許文献4には、コンピュータシステムの脆弱性などのセキュリティーホールを攻撃して侵入する不正プログラムを、定義ファイルに依存することなくプロセスの振舞から検知可能にする情報処理装置が記載されている。この情報処理装置は、プロセスAの実行において発生した情報、例えばモジュールの種類、呼び出された関数の種類、引数の値、読み出し元アドレス、タイムスタンプなどを取得し、これら収集した情報から、不正な攻撃や侵入を示す挙動であるファイルアクセス、ネットワークアクセス、他プロセスの起動などの動作があったか否かを検知して、不正プログラムとみなすものである。さらに特許文献4には、不正ではないプロセスが、ユーザによる操作を検出できない期間中にファイルアクセス、ネットワークアクセス等の動作を行う場合に、不正プログラムとして検知されることから、この不正ではないプロセスを特定するホワイトリストに予め登録しておき、検知に際して、まず照合を行うことが記載されている。

先行技術文献

特許文献

[0007]
特許文献1 : 特開2007-140798号公報
特許文献2 : 特開2017-505944号公報
特許文献3 : 国際公開第2005/029328号公報
特許文献4 : 特開2015-082191号公報

発明の概要

発明が解決しようとする課題

[0008]
 特許文献1は、アプリケーションによるハードディスクHDDに記憶された情報へのアクセスと予め設定されたアクセス許容条件表とのマッチングによるものであり、特許文献2は、検査対象のアプリケーションの実行中の挙動を記録し、記録された挙動から挙動パターンを抽出する一方、抽出された挙動パターンを正常なアプリケーションの基本パターン又は以前に記録された前記アプリケーションのパターンと比較するというものであり、いずれもホワイトリストとの照合といえるものである。
[0009]
 特許文献3は、バッファサイズを超えるデータが送り込まれることでシステムが誤動作を起こす脆弱性を狙って不正アクセスを実行するバッファオーバーラン現象への対応に着目した発明であって、プログラムの格納アドレスが適正か不正かを判断させる判断プログラムをオペレーティングシステムに付加したものである。特許文献4は、プロセス毎にプロセスモニタが設定され、このプロセスモニタが、プロセスの実行によって発生した情報であるモジュールの種類、呼び出された関数の種類、引数の値、読み出し元アドレス、タイムスタンプ情報等を振舞として収集し、不正な攻撃や侵入があったか否かを判定するもので、事前に規制するものではない。また、判別困難な範囲については、ホワイトリストとの照合を行うものである。
[0010]
 本発明は、上記に鑑みてなされたもので、悪意のプログラムによるCPUへの攻撃(プログラムの実行環境の変更)を準備段階で解析して未然に防止する情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置を提供することにある。

課題を解決するための手段

[0011]
 本発明は、コンピュータ技術の発展の歴史と経緯に起因して現在のコンピュータに付与された基本的構造に鑑みてなされたものということができる。
[0012]
 今日、パーソナルコンピュータは、ネットワーク及び種々の外部機器に接続されると共に64ビットの元で大量のデータ処理が可能とされ、その利便性と高性能さから重要インフラ等の基盤産業も含む殆どの産業分野に導入され、さらにIoT、AI及びビッグデータに対応する第4次産業革命用として、高い機密性の元での利活用が期待されている。
[0013]
 パーソナルコンピュータは、1971年、4ビットマイクロプロセッサを搭載したアーキテクチャー(4ビットマイコン)として登場した。4ビットマイコンには、使用者の意図する処理を実現するプログラムが書き込まれ、その結果、使用者が直接マイコンを操作することでプログラムの実行を通してマイクロプロセッサに使用者の意図に沿った処理を実行させていた。すなわち当時はOSが未だ登場しておらず、マイコンは、マイコンを直接操作する者とマイクロプロセッサ(CPU)との一義的な関係を持つ設計思想に基づくものであった。次いで翌年、機能性の普及を目的としてOSを搭載した8ビットマイコンが登場した。OSとは、ユーザやアプリケーションとハードウェアとの中間に位置し、ユーザやアプリケーションに対して標準的なインターフェースを提供すると同時にハードウェアなどの各リソースに対して効率的な管理を行うもので、4ビット設計思想上、第三者としての立場にある。
[0014]
 その後、特にインターネット等のネットワークや各種周辺機器の発展に伴い、これらとの接続を契機に量的、質的により高い情報処理の実現を図るべく、マイコンは、4ビット設計思想を維持した状態で、すなわち4ビット当時の実行命令処理を基本動作として保持したまま、CPUを16ビット、32ビット、64ビットアーキテクチャーとして進化させて、今日に至っている。かかる経緯を経て、今日の64ビットマイコンは、4ビット当時の設計思想を残しながら、一方でCPUの進化に応じて新たな機能を実現する目的で、基本動作以外の種々の拡張機能を実行可能にするルールの下での拡張命令が増設されている。拡張されたルールとは、16ビット、32ビット及び64ビットの進化に応じて増設された種々の機能を無条件乃至は低い条件でCPUに処理可能にする技術である。
[0015]
 かかる拡張機能を導入したことによって、より高度な情報処理が可能になった反面、使用者の操作に基づいて実行される本来の基本動作以外の、すなわち当該使用者が認識乃至意図しないような、第三者の悪意のプログラム(不当プログラム)が容易に侵入し、実行できる環境に移行してきている。
[0016]
 かかる事情に鑑みて、本発明に係る情報処理監視装置は、基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスがその後に発行される基本命令コードの実行を攻撃に変える準備処理か否かを解析する、オペレーティングシステム(OS)よりも高い特権レベルに設定された解析手段と、前記解析手段によって前記プロセスが前記準備処理であると解析された場合、前記プロセスの実行に対する制御を行う、前記高い特権レベルと同一の特権レベルが設定された制御手段とを備えたものである。
[0017]
 また、本発明は、前記情報処理監視装置を備えた情報処理装置である。
[0018]
 また、本発明は、基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスがその後に発行される基本命令コードの実行を攻撃に変える準備処理か否かを解析する、オペレーティングシステムよりも高い特権レベルに設定された解析ステップと、前記解析ステップによって前記プロセスが前記準備処理であると解析された場合、前記プロセスの実行に対する制御を行う、前記高い特権レベルと同一の特権レベルが設定された制御ステップとを備えた情報処理監視方法である。
[0019]
 また、本発明は、コンピュータを、前記情報処理監視装置として機能させるプログラムであり、さらに、そのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
[0020]
 これらの発明によれば、オペレーティングシステムの起動時におけるリスク(感染、侵入等)が解消される。また、4ビット設計思想に基づく基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスが解析対象とされる。すなわち、基本的には、4ビット設計思想時代の命令以外の全ての命令コードが解析されることになる。そのため、攻撃のための準備処理に該当するか否かが解析可能となり、さらに攻撃の準備に該当すると解析された場合、準備段階で、当該プロセス乃至はこのプロセスを含むプログラムの実行が制御、例えば無効化される。従って、悪意のプログラムのCPUへの攻撃を準備段階で解析し、その攻撃が未然に防止される。なお、上記において、攻撃のための準備とは、すなわち、プログラムの実行環境を変えるための外部からのプログラムによる準備でもあり、この外部からのプログラムの実行は、攻撃の準備乃至は攻撃と等価と見なし得る。

発明の効果

[0021]
 本発明によれば、悪意のプログラムによるCPUへの攻撃(プログラムの環境を変える)を準備段階で解析して未然に防止する。

図面の簡単な説明

[0022]
[図1] 本発明に係る情報処理装置の一実施形態を示す構成図である。
[図2] 主メモリのリニアアドレス空間の概要を示すマップ図である。
[図3] CPU及び主メモリの物理メモリ空間の概要を示すマップ図である。
[図4] 起動処理の手順の一例を示すフローチャートである。
[図5] 命令フォーマットを示す図である。
[図6] 監視モジュールによって実行される監視処理Iのフローチャートである。
[図7] 監視モジュールによって実行される監視処理IIのフローチャートである。
[図8] 監視モジュールによって実行される監視処理IIIのフローチャートである。
[図9] 監視モジュールによって実行される監視処理IVのフローチャートである。

発明を実施するための形態

[0023]
 図1は、本発明に係る情報処理装置の一実施形態を示す構成図である。本発明が適用される情報処理装置100としては、外部機器との通信の有無を問わず、各種のパーソナルコンピュータ、コンピュータを内蔵するサーバ装置、金融、ATM及びPOSシステム、また全てのインフラを稼働させる情報処理システムを含み、更に携行用であって情報通信、SNS及び電子マネー決済等が処理可能な情報処理端末等を含む。
[0024]
 情報処理装置100は、マイクロコンピュタで構成され、プロセッサとしてのCPU1を備える。CPU1は、バスBAを介して、補助記憶装置としてのハードディスクドライブ(HDD:Hard Disc Drive)2、BIOS格納用のフラッシュROM2A、主メモリとしてのRAM(Random Access Memory)3、入力部41及び出力部42と接続されている。また、CPU1は、NIC(Network Interface Card)43と接続されて、ローカルエリア及びインターネット等のネットワーク44を介して外部機器との間で各種情報の授受を可能にしている。
[0025]
 HDD2は、各種プログラム及び必要なデータ類を格納する。HDD2は、複数のパーティションに分割されており、通常、例えばwindows(登録商標)のようなOS(Operating System)のプログラム、及びOS下で動作する各種アプリケーションプログラム(APP)は、場所(パス)としてCドライブ領域に格納されている。また、通常、各種APPで利用(アクセス)可能なデータファイル等は、パスとしてDドライブ領域に格納されている。HDD2には、本発明に係る監視モジュール130(図3参照)であるプログラムデータも格納されている。監視モジュール130の詳細は後述する。
[0026]
 RAM3は、情報処理装置100が起動する際に、フラッシュROM2A及びHDD2に格納されているBIOSやプログラム等がロードされると共に、処理途中の情報が一時的に格納される。情報処理装置100は、HDD2に格納されているプログラムファイル、データファイル等がRAM3にロードされ、CPU1によって実行されることで、例えば文書及び図形作成機能、ブラウザ機能等の種々の情報処理機能、さらに適用される分野に応じた各種の情報処理を実行する。
[0027]
 入力部41は、テンキー等を備えたキーボードやマウス、又はタッチパネル等を含み、操作者からの所要の情報の入力や処理の指示を行うものである。出力部42は、処理結果等を画像で表示する表示部を想定している。なお、出力部42としては、プリンタやスピーカを含むことができる。
[0028]
 図2は、RAM3のリニアアドレス空間31の概要を示すマップ図である。なお、リニアアドレス空間31にマッピングされた各データ(プログラムデータやファイルデータ等)は、機能を示すものであり、詳細には、図3に示す物理メモリ30内のページテーブル303に格納されており、かつリニアアドレスから物理アドレスに置換することでCPU1から読み取り可能にされている。
[0029]
 図2に示すように、リニアアドレス空間31には、本実施形態では、特権レベル(リングR=0)のカーネルモード領域311と、特権レベル(リングR=3)のユーザモード領域312とが設定されている。カーネルモード領域311には、シスコール命令に対応するOS(カーネル)のAPI(Application Program Interface)3111、OS(カーネル)3112、システムテーブル3113、及びEプロセス等のプロセスリスト3114が展開されている。ユーザモード領域312には、各種のアプリケーションプログラム3121,…及び各種のシスコール(Syscall)3122が展開されている。
[0030]
 ユーザモード領域312のシスコール3122は、APP3121,…がリソース(後述するレジスタ部123を代表するメモリ資源)に対してアクセスを要求する場合に用いる命令の群である。シスコール命令は、特権レベルをリングR=3からリングR=0に昇格させる拡張命令コードであり、これによって、シスコール命令の引数に対応したAPIが選択され、選択情報は例えば汎用レジスタraxに設定される。
[0031]
 カーネルモード領域311のAPI3111は、シスコール3122から発行されるシスコール命令の引数に対応して設けられており、OS3112の管理に基づいて、リソースへのアクセス処理を実行する。システムテーブル3113は、リニアアドレス空間31内の各データ(プログラムデータやファイルデータ等)のアドレス等を格納したものである。例えば、システムテーブル3113にはGDT(Global Descriptor Table)が含まれる。システムテーブル3113内のGDTは、例えば8バイト単位で各データの格納箇所を管理するセグメントディスクリプタのリストである。各セグメントディスクリプタは、4つの属性、すなわちデータの「種別」(プログラムコード、データ、スタック)と、「ベースアドレス」と、「リミット」と、特権レベルを示す「DPL」を備えている。システムテーブル3113内のGDTと物理メモリ30内のページテーブル303とでリニアアドレスから物理アドレスへの変換を実現する。プロセスリスト3114は、OS3112が管理する、実行中のプログラムのプロセスの一覧を示すもので、例えばEプロセス(EPROCESS)を含む。
[0032]
 図3は、CPU1及びRAM3の物理メモリ30内の各機能の説明、及びCPU1と物理メモリ30内の各機能との関係を説明するマップ図である。RAM3の一部に構成される物理メモリ30内には、BIOS301、ブートマネージャー302及びページテーブル303が展開されると共に監視モジュール130が展開される。BIOS301は、0~1MBの領域に書き込まれる。ブートマネージャー302及びページテーブル303は、それ以上の領域に書き込まれる。BIOS301、ブートマネージャー302及びページテーブル303は、特権レベルであるリングR=0で書き込まれる。なお、ページテーブル303は、複数のページを有し、各ページは所定のデータ量、例えば4KB毎に分割されて構成されている。各ページデータには、物理アドレスとアクセス属性とが設定されている。また、各ページデータには、プログラムコード、データ、スタックのいずれかの種類が含まれる。アクセス属性は、特権レベルに相当するもので、「スーパーバイザー」と「ユーザ」とを有する。「スーパーバイザー」はカーネル空間での処理(カーネルモード)をいい、リングR=0~リングR=2に該当し、「ユーザ」はリングR=3に該当する。
[0033]
 監視モジュール130は、BIOS301の起動に続いて、すなわちOSより先に起動されることで、OSを管理可能に、すなわちOSよりも高い特権レベルを設定可能にされている。例えば、監視モジュール130を、ゲストOSである仮想マシンVMとホストOSである仮想マシンモニタVMMとを備えた仮想化支援技術VT-xに適用する態様では、監視モジュール130は仮想マシンモニタVMMに読み込まれてよい。そして、監視モジュール130によって、ゲストOSに対して、Entry/Exit処理を制御することで、実質的にOSより高い特権レベル(R=-1)が確保できる。 また、OSを特権レベルR=1又は2に書き換え、監視モジュール130を特権レベルR=0とすることでも、OSより高い特権レベルを確保することが可能となる。
[0034]
 CPU1は、メモリコントローラ(MMU)11、制御ユニット12及び演算ユニット13を備えている。メモリコントローラ11は、物理メモリ30内のページテーブル303と制御ユニット12との間に接続され、フェッチされたリニアアドレスへのアクセスに対してページテーブル303を参照して物理アドレスに変換してアクセスし、アクセス内容を制御ユニット12に導くものである。
[0035]
 監視モジュール130は、本実施形態では、メモリ管理部1301、第1解析部1302、ハードウェア割込処理部1303、第2解析部1304、制御部1305、及び規約情報部1306を備えると共に、OSを所定の監視下で起動させるためのブートプログラム(ブート処理部)を有する。これらの詳細は後述する。また、演算ユニット13内には、監視モジュール130でフェッチされ、出力された命令コードを実行する命令実行部131を有する。
[0036]
 監視モジュール130を物理メモリ30に配置することで、OSに対しハードウェアの一部(MMIO(Memory-mappedI/O)空間)に見せかけることができる。このことにより、OSから監視モジュール130を隔離でき、かつ悪意のプログラムからも保護される。メモリ管理部1301は、第1解析部1302、ハードウェア割込処理部1303、第2解析部1304、制御部1305、規約情報部1306を物理メモリ130に配置し、実行可能環境を生成するとともに、OS側のプログラムによる物理メモリ130へのアクセスを監視する。これによりMMIO空間を使用したハードウェアへのアクセスやリニアアドレス空間を構成するページテーブル303へのアクセスも監視する。
[0037]
 制御ユニット12内には、本実施形態ではメモリ管理部1301を介してメモリコントローラ11に接続されたフェッチ部121、フェッチされた命令フォーマットを機械語に変換して解析するデコード部122、レジスタ部123を備えている。図3には一例としての命令フォーマット128を示している。命令フォーマット128の詳細は、図5で説明する。命令コード129がアセンブラ言語で例示されている。この例示された命令コードは、
 mov rax, 10
であり、「汎用レジスタraxに、数値10をコピーする」との意味である。
[0038]
 レジスタ部123は、各種のレジスタを備えるもので、汎用レジスタ124、制御レジスタ125、命令実行レジスタ126及びシステムレジスタ127を少なくとも備えている。汎用レジスタ124は、rax,rbx,rcx,rdx,…を有し、処理予定のデータ、パラメータを一時的に書き込む。なお、汎用レジスタ124の表記は、64ビットの場合にはrax、32ビットの場合にはeax、16ビットの場合にはax、8ビットの場合には、a又はhalと区別して使用する。制御レジスタ125は、レジスタcr0,cr1,cr2,…を有し、CPU1の動作モードを制御する。制御レジスタ125は、物理メモリ30から読み出された命令プログラムを受け取り、実行し、一次記憶し、また再配置するなどの制御用に用いられる。命令実行レジスタ126は、フェッチする命令コードを指定するレジスタRIP(Instraction Pointer)、命令の発行順番を指示するプログラムカウンタを備える。システムレジスタ127は、システムテーブル3113の内に現に使用されるデータが書き込まれると共に、動作モードを制御する各種のmsrレジスタ(ModelSpecific Register )を有する。なお、msrレジスタは、CPU1の内部制御用で、専用のrdmsr、wrmsr命令を使用して読み書きを行わせる。msrレジスタの中には、CPU1の動作としての、例えば拡張機能の有効無効をフラグで識別させて、プロテクトモードでは特権レベルR=0で読み書き可能にし、違反した場合にはフックさせるようにしている。
[0039]
 ここで、図4のフローチャートを用いて、起動処理の手順の一例を説明する。まず、情報処理装置100の電源が投入されると、BIOSプログラムがフラッシュROM2AからRAM3の所定領域に読み出されて(ロードされて)起動される(ステップS1)。次いで、BIOSによってHDD2の先頭セクタからMBR(Master Boot Record)がRAM3にロードされ、起動される(ステップS3)。
[0040]
 次いで、MBRによってHDD2のアクティブなパーティションテーブルに予め格納されている専用ローダがRAM3にロードされ、この専用ローダによって物理メモリ30の所定の一部領域に特権レベル(リングR=-1か0)が実質的に設定されて、この領域内に、HDD2のファイルスシステム外から読み出された監視モジュール130のプログラムがロードされる(ステップS5)。なお、上記において、実質的にリングR=-1か0との意味は、VT-x仮想化支援技術を適用した態様と通常のコンピュータの場合とを含み、いずれにしてもOS3112よりも高い特権レベルが設定されることを意味する。監視モジュール130のロード処理が終了すると、CPU1の制御が監視モジュール130に渡され、監視モジュール130のブート処理部によってブートマネージャー302が起動される(ステップS7)。ここで、カーネルモード領域311に特権レベルとしてリングR=0(又は1か2)の設定が行われ、この状態で、監視モジュール130のブート処理部によって作成されたPBR(Partition Boot Record)及びIPL(Initial Program Loader)で、ページテーブル303、GDT等を含むシステムテーブル3113、更にOS3112(ドライバ含む)がカーネルモード領域311にロードされ、起動される(ステップS9)。この結果、監視モジュール130は、コンピュータ内の全てを見ることが可能となる。
[0041]
 次いで、OS3112のブートが終了すると(ステップS11でYes)、例えば最初のページフォルト(#PF)が発行されると、公知のように、OS3112内のAPローダによって、APP3121,…がユーザモード領域312にリングR=3の特権レベルでロードされる(ステップS13)。この起動処理によって、図2、図3に示すマップが完成する。
[0042]
 なお、起動時には、監視モジュール130は、CPU1の動作モードとして、リアルモード、プロテクトモード、IA32eモード(64ビットモード)及び16ビットでのSMM(SystemManagement mode)モードの各設定、ページテーブル303を有効化、シスコールの有効化の各処理を行う。また、監視モジュール130は、レジスタ部123の初期化、環境設定値の初期設定を行う。
[0043]
 図3に戻って、監視モジュール130の機能について説明する。監視モジュール130のメモリ管理部1301は、メモリコントローラ11とCPU1との間のデータの流れを監視するもので、例えば、この結果、監視モジュール130は、リニアアドレスと物理アドレスの両方を管理してリニアアドレスの改変や物理アドレスの改変への対処、OS(カーネル)以外のプログラムに対してレジスタ部123内の環境設定値の変更アクセスを規制する監視を行う。
[0044]
 監視モジュール130の解析部は、本実施形態では、機能的に、第1解析部1302と第2解析部1304とを備える。第1解析部1302は、デコードされた命令コードが4ビットで定義された基本命令コードか、それ以外の命令コードかを解析する。
[0045]
 図5は、所定の様式を有する命令フォーマットを示している。命令フォーマットは、公知のように、命令を記述する部分と、データやパラメータ部分とから構成されている。命令フォーマットは、先頭側から、1バイトのプリフィックスと、1又は2バイトのオペコード(命令部)と、1バイトのModR/Mと、SIB(Scale Index Base)と、ディスプレイスメントと、即値とから構成されている。オペコード部は可変長で、基本命令は4ビットで記述され、拡張命令は2バイトで記述されている。
[0046]
 4ビットの基本命令とは、4ビット設計思想を維持した状態で、すなわち4ビット当時の実行命令処理を基本動作とするもので、mov(転送、コピー)、jmp(分岐)、更に、計算、論理、比較、In/Out等を行わせる命令をいう。基本命令は、1バイトで構成され、上位4ビットが“1”のときの下位4ビットで16通りの命令(基本命令という)が定義されている。
[0047]
 一方、拡張命令は、各種の周辺機器の登場、ネットワークとの接続等によって、情報処理装置100の入力部41を介しての操作指示以外に、各種の動作の制御命令、またマルチタスク処理のためのマシンスイッチとしてのレジスタへの制御命令であって、制御用のmov、jmpその他の多数の制御命令が準備されている。拡張命令は、2バイトで構成され、先頭の1バイト目が“0F”のとき、2バイト目に拡張命令が定義される。拡張命令としては、システムコール用に用意された各種のシスコール(syscall)命令、シスエンタ(sysenter)命令、また拡張命令機能の有効/無効を規定するwrmsr命令等がある。また、拡張機能は、プリフィックス、2バイトのオペコード及びModR/Mの部分の組み合わせによって各種の制御命令、マルチタスク命令の設定を可能にしている。
[0048]
 図3において、第1解析部1302は、解析の結果が基本命令コードであれば、命令コードを命令実行部131に導き、それ以外の命令コードの場合、ハードウェア割込処理部1303に導く。
[0049]
 ハードウェア割込処理部1303は、第1解析部1302による解析の結果が基本命令コードでなければ(それ以外の命令コードであれば)、フック操作、すなわち割込処理を実行し、割込内容は、第2解析部1304に導かれる。なお、割込処理は、第2解析部1304の解析の終了によって復帰することができる。
[0050]
 第2解析部1304は、基本命令以外の命令、乃至は基本命令と基本命令以外の命令との組(プロセス)を規約情報部1306の規約に基づいて解析して、攻撃の準備に該当するか否かを決定する。第2解析部1304は、解析の対象がプロセスの場合、全ての命令コードのデコードの毎に、プロセスが準備に該当するか否かを逐次解析していくようにして、準備の段階で解析結果を得るようにしているため、攻撃そのものが未然に防止できる。第2解析部1304(又は後述する制御部1305の一方)は、ある時点でのステップに対する解析の結果が未だ攻撃の準備に該当していないと決定した段階では、解析した命令コードの命令実行部131での実行を許可する。これによって、最終的に攻撃の準備ではなかった(複数ステップの命令列からなる)プロセスをより自然に継続実行させることができる。
[0051]
 制御部1305は、第2解析部1304による解析の結果が、直ちに乃至は最終的に攻撃の準備と決定された段階で、プログラムの実行に対して一定の制御を行う制御信号を出力する。この制御信号は、実行中のプログラムを無効化、すなわちプログラムの実行停止、それまでの実行結果の削除、リセット等の処理を行うものでもよい。なお、命令コード(データ、パラメータ含む)の監視は、デコード部122の内容を参照する態様でもよいが、例えばプロセスリスト3114内のEプロセスの一部を利用して命令コードのロガーとして機能させることで、監視するようにしてもよい。
[0052]
 情報処理装置100に対する攻撃とは、情報処理装置100の入力部41からの操作に則して発行される、4ビット設計思想に基づく基本命令コードを、操作者が意図した処理とは異なる内容で実行させることをいい、実際の被害の有無、被害の形態を問わない。そして、攻撃の準備とは、操作者が意図した処理とは異なる内容での処理となるように導くためのプロセスをいう。なお、プロセスとは、少なくとも基本命令以外の1ステップの命令コード、またはこの1ステップを含む複数ステップからなるものを含む。
[0053]
 また、攻撃のための準備のタイミングとしては種々の態様が想定される。例えば、あるプログラムの実行中に、このプログラムに侵入して基本命令を奪う態様がある。また、マルチタスクによって複数のプログラム(例えばプログラムA,B)の実行中に、いずれか一方であるプログラムBに侵入して(第1ステップとしての攻撃)、次いで、他方のプログラムAに介入して、基本命令を奪う(第2ステップとしての攻撃)態様がある。また、プログラム実行中でない期間において、情報処理装置100(コンピュータ)に侵入して準備を施して、後のプログラムの実行において発行される基本命令コードを奪う態様がある。さらに、In/Out命令を利用したSMI命令によってCPUの動作モードであるSMMに遷移し、OSの管理外で動作して攻撃を行う態様がある。本監視モジュール130は、これら全てについて攻撃に対する準備か否かを解析し、攻撃を未然に防ぐようにしている。
[0054]
 悪意のプログラムが基本命令コードを使用して攻撃を行おうとする場合、なりすまし、コピー、書き換えという、操作者の意図によらずにプログラム自身が動こうとする準備行為を要する。規約情報部1306は、かかる観点から、全ての命令コードに対して攻撃の準備に該当するかどうかを解析する際に利用する情報を記憶している。解析対象としての全ての命令コードとは、例えば既設のカーネルAPIというプロセスの命令コードをいう。例えば、命令コードのオペランドであるデータ及びパラメータの各項目の内容(場所(パス、Token・権限、時間、タイミング等)、発行元(データファイル名、実行ファイル名等)、権限の昇格降格、手続手順ルール、基本命令以外の命令コードを少なくとも含む。なお、場所(パス)としては、例えば、C:¥ ProgramFiles 配下のファイルでないかどうか、また、基本命令以外の命令コードとしては、例えば、現状では未使用乃至は非公開のカーネルモードのAPIかどうかなどである。また、トークンには、それぞれ権限の異なるユーザプロセス、システムプロセス、サービスプロセス及びアドミニストレータプロセスの各権限値を含んでよい。また、時間には、処理等に関わる時間情報を含み、また、タイミングには、処理等のスタートのタイミング情報を含む。なお、命令コードのデータ等の一部が実行ファイルに置き換えられているような場合、ソフトウェア割込、レジスタ部123の環境設定値の書き替え命令等も不当性ありの規約として設定されている。さらに、手続手順ルールには、複数のステップからなるプロセスが、4ビット設計思想に基づく基本命令コードの実行のための準備処理としてあり得ない、乃至は不必要な挙動を含む。
[0055]
 以上によれば、規約情報部1306の規約は、OSが構築する保護されたプログラム実行環境(プログラムの環境)を維持する(変えない)ためのものである。例えば、起動された複数のプログラムには、プログラム間において干渉できない環境が提供される。具体的には、CPU1が提供するページテーブル303をプログラム毎に別々に作成することで、リニアアドレス空間を隔離し、他のプログラムへアクセスできなくしている。しかし、特定のカーネルAPI(syscall)を使用することで、この環境を変える(崩す)ことができる。また、プログラムによって新たに必要とされるメモリ領域は通常データ領域として使用されるため、カーネルが確保するメモリ領域は、CPU命令が実行できないリニアアドレス空間となる。しかし、これもカーネルAPI(syscall)の使用方法によって確保したメモリ領域を実行可能領域に変更することが可能であるため、これもまた、規約に違反する実行環境の変更となる。
[0056]
 また、CPU1の実行環境に関する前記規約は、CPU命令単位となり、起動時においてのみ使用される命令が特定のタイミング以降に使用されると規約違反としている。起動後に使用される命令に関しては、独自の解析結果から、発行元のプログラムを特定しており、それ以外からの使用命令を規約違反としている。
[0057]
 図6は、監視モジュール130によって実行される監視処理Iのフローチャートである。プログラムの実行開始された後、命令コードがデコードされると、第1解析、第2解析処理が実行され(ステップS21)、規約情報部1306に基づいて解析結果が攻撃の準備に該当するかどうか(すなわち、プログラムの実行環境を変更しようとする準備かどうか。以下同じ。)が決定される(ステップS23)。そして、解析結果が攻撃の準備に該当しないと決定された場合、命令コードはそのまま命令実行部131に導かれる。そして、プログラムが終了したか否かが判断され(ステップS25)、継続中であれば、ステップS21に戻って、同様の解析処理が継続される。
[0058]
 一方、ステップS23で、解析結果が攻撃の準備に該当すると決定された場合、制御部1305から制御信号が出力され、実行中のプログラムを無効化等させて(ステップS27)、本フローを終了する。
[0059]
 図7は、監視モジュール130によって実行される監視処理IIのフローチャートである。いずれかのプログラムの実行中において、あるタイミングで最初の(プロセスの開始となる)シスコール命令がデコードされると(ステップS31)、このシスコール命令以降にデコードされる各命令コードに対して第1解析、第2解析処理が実行され(ステップS33)、その都度、解析結果が攻撃の準備に該当するかどうか(適正かどうか)が決定される(ステップS35)。解析結果が攻撃の準備に該当しないと決定された場合、命令コードは命令実行部131に導かれる。次いで、現プロセスの終了に対応するシスコール命令が発行されたか否かが判断され(ステップS37)、プロセス終了に対応するシスコール命令ではないと判断されると、ステップS33に戻る。すなわち、ステップS33からステップS37の処理が繰り返し実行される。そして、解析結果が攻撃の準備に該当すると決定された場合、制御部1305から制御信号が出力され、実行中のプログラムを無効化等させて(ステップS39)、本フローを終了する。
[0060]
 一方、ステップS37で、プロセス終了に対応するシスコール命令であると判断された場合、プログラムの終了か否かが判断され(ステップS41)、終了でなければ、今回のシスコール命令をプロセス開始用に置換して(ステップS43)、ステップS33に戻る。これにより、プロセスの範囲内での攻撃準備の有無が監視される。
[0061]
 図8は、監視モジュール130によって実行される監視処理IIIのフローチャートである。プログラム実行中において、発行された命令コードがwrmsr命令か否かが解析される(ステップS51)。解析の結果がwrmsr命令でなければ、次いでプログラムが終了したか否かが判断され(ステップS53)、終了でなければステップS51に戻り、終了であれば、本フローを終了する。一方、ステップS51で、解析結果が、wrmsr命令であれば、攻撃の準備に該当するとして、制御部1305から制御信号が出力され、実行中のプログラムを無効化等させて(ステップS55)、本フローを終了する。
[0062]
 図9は、監視モジュール130によって実行される監視処理IVのフローチャートである。基本命令コード実行中に、SMI割込の発行によってSMMが起動し、拡張命令コードが実行される場合であって、この拡張命令コードによって、CPUの動作モード、プレフィックスその他のパラメータの変更による攻撃が行われる。図9に示す実施形態では、まず、プログラム実行中において、発行された命令コードがシステムマネージメント割込(SMI:SystemManagement Interrupt)命令か否かが解析される(ステップS61)。解析の結果がSMI命令でなければ、次いでプログラムが終了したか否かが判断され(ステップS63)、終了でなければステップS61に戻り、終了であれば、本フローを終了する。一方、ステップS61で、解析結果が、SMI命令であれば、攻撃の準備に該当するとして、制御部1305から制御信号が出力され、実行中のプログラムを無効化等させて(ステップS65)、本フローを終了する。
[0063]
 なお、図6~図9に示す監視処理は、個別に採用するほか、いずれかの2種類以上を採用したものでもよく、さらには全ての監視処理を採用することが好ましい。
[0064]
 続いて、攻撃(プログラムの実行環境の変更)の準備動作に該当する具体例を説明する。
[0065]
(1)制御レジスタへのアクセス例(2ステップ)
 1)mov eax , 0x8xxxxxxx ・・(Opecode : B8xxxxxxxx)
 2)mov cr0 , rax    ・・(Opecode : 0F2xxx  )
 制御レジスタcr0へ設定するオペランドとしての汎用レジスタに対し、その前ステップである1)にて即値を設定するような処理(例えばプロテクトモードの有効化とページテーブルの有効化とを同時に行わせるような処理)は攻撃の準備に該当する。
[0066]
(2)msrレジスタへのアクセス例(4ステップ)
 1)mov ecx , 0xCxxxxxxx ・・(Opecode : B9xxxxxxxx)
 2)mov edx , 0xFxxxxxxx ・・(Opecode : BAxxxxxxx)
 3)mov eax , 0x12xxxxxx  ・(Opecode : B8xxxxxxxx)
 4)wrmsr         ・・(Opecode : 0Fxx   )
 シスコール命令が発行されたときにリングR=0の呼び出し先アドレス(Entry Point)を設定(準備)する処理である。msrレジスタにセットする呼び出し先アドレスが上下4ビットに分けて設定されることは攻撃の準備に該当する。
[0067]
(3)カーネルAPIの呼び出し例(8ステップ)
 1)mov rcx , [rsp]   ・・(Opecode : 488xxxxxxx)
 2)lea rdx , [rsp+0x10] ・・(Opecode : 488xxxxxxx)
 3)lea r8 ,[rsp+0x20] ・(Opecode : 4c8xxxxxxx)
 4)mov r9d, 0x01    ・(Opecode : 41Bxxxxxxx)
 5)push byte 0xxx   ・・(Opecode : 6xxxx   )
 6)mov eax , 0xxx    ・(Opecode : B8xxxxxxx )
 7)mov r10 , rcx     ・(Opecode : 49xxxx  )
 8)syscall         ・ (Opecode : 0Fxx  )
 主メモリ内のファイルをHDD2に格納する前に消去する処理は、痕跡の隠蔽処理として広い意味で攻撃の準備に該当する。
[0068]
 本発明は、以下の態様が採用可能である。
[0069]
(1)監視モジュール130は本実施形態の構成に限定されず、例えば、1つのモジュールでもよい。また、第2解析部が制御部1305の機能を実行する態様でもよい。また、ハードウェア割込処理部1303は、一般的なフック機能を実行する機能部でよい。ハードウェア割込処理部1303は、全ての命令コードに対して割込を行ってもよい。
[0070]
(2)本発明が仮想化支援技術VTで適用される態様では、監視モジュール130は、仮想マシンモニタ(VMM)領域に読み出される。
[0071]
(3)基本命令コードに対しては、解析を省略してもよいし、一定の範囲で解析を行ってもよい。例えばパラメータの内容をチェックするなどしてもよい。
[0072]
(4)前記の実施形態では、侵入した悪意あるプログラムの挙動を規制する構成及び方法を示したが、悪意あるプログラムの侵入を防止する対策を別途施してもよい。
[0073]
 以上説明したように、本発明に係る情報処理監視装置は、基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスがその後に発行される基本命令コードの実行を攻撃に変える準備処理か否かを解析する、オペレーティングシステム(OS)よりも高い特権レベルに設定された解析手段と、前記解析手段によって前記プロセスが前記準備処理であると解析された場合、前記プロセスの実行に対する制御を行う、前記高い特権レベルと同一の特権レベルが設定された制御手段とを備えることが好ましい。
[0074]
 また、本発明は、前記情報処理監視装置を備えた情報処理装置である。
[0075]
 また、本発明に係る情報処理監視方法は、基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスがその後に発行される基本命令コードの実行を攻撃に変える準備処理か否かを解析する、オペレーティングシステムよりも高い特権レベルに設定された解析ステップと、前記解析ステップによって前記プロセスが前記準備処理であると解析された場合、前記プロセスの実行に対する制御を行う、前記高い特権レベルと同一の特権レベルが設定された制御ステップとを備えることが好ましい。
[0076]
 また、本発明は、コンピュータを、前記情報処理監視装置として機能させるプログラムであり、さらに、そのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
[0077]
 これらの発明によれば、オペレーティングシステムの起動時におけるリスク(感染、侵入等)が解消される。また、4ビット設計思想に基づく基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスが解析対象とされる。すなわち、基本的には、4ビット設計思想時代の命令以外の全ての命令コードが解析されることになる。そのため、攻撃のための準備処理に該当するか否かが解析可能となり、さらに攻撃の準備に該当すると解析された場合、準備段階で、当該プロセス乃至はこのプロセスを含むプログラムの実行が制御、例えば無効化される。従って、悪意のプログラムのCPUへの攻撃を準備段階で解析し、その攻撃が未然に防止される。なお、上記において、攻撃のための準備とは、すなわち、プログラムの実行環境を変えるための外部からのプログラムによる準備でもあり、この外部からのプログラムの実行は、攻撃の準備乃至は攻撃と等価と見なし得る。
[0078]
 また、前記解析手段は、フェッチされた命令コードが基本命令コードか否かを解析する第1解析手段と、前記第1解析手段で基本命令コードでないと解析された場合、前記プロセスが準備処理か否かを解析する第2解析手段とを備えることが好ましい。この構成によれば、基本命令コードであると解析された場合、例えばそのまま実行され、一方、基本命令コード以外の命令コードと解析された場合には、準備に該当するか否かの解析の対象となる。
[0079]
 また、前記解析手段は、フェッチされた命令コードが基本命令コードと解析された場合、及び前記プロセスが前記準備処理でないと解析された場合、前記プロセスの命令コードを命令実行部に導くことが好ましい。この構成によれば、攻撃の準備処理に該当しないと解析された適正な命令コードは、命令実行部に導かれて、通常通り実行される。
[0080]
 また、本発明は、基本命令コード以外の命令コードがフェッチされる毎に、割込を発行する割込手段を備えることが好ましい。この構成によれば、攻撃の準備に該当する可能性が高い命令コードは割込によって解析対象とされる。
[0081]
 また、前記解析手段は、拡張命令コードを含むプロセスに対して解析を行うことが好ましい。この構成によれば、個々の拡張命令コードの他、拡張枚例コードを含む複数段の命令ステップからなるプロセスに関しても準備に該当するか否かの判断が行われる。
[0082]
 また、前記解析手段は、シスコール命令を含むプロセスに対して解析を行うことが好ましい。この構成によれば、拡張命令に対応して発行されるシスコール命令は全て解析対象とので、リソースへのアクセスは全て解析対象とされる。
[0083]
 また、前記解析手段は、プロセス開始のシスコール命令からプロセス終了のシスコール命令までの命令コードを含むプロセスに対して解析を行うことが好ましい。この構成によれば、準備処理期間との可能性のある、時間的に前後のシスコール命令の範囲で解析を行うため、準備段階での解析が可能となる。なお、準備処理期間は前後のシスコール命令の他、複数のシスコール命令による場合もある。
[0084]
 また、前記解析手段は、msrレジスタを書き換る命令コードか否かの解析を行うことことが好ましい。この構成によれば、CPUの動作モードを切換えることで実行可能となる攻撃の準備に該当すると解析されて、直ちにプロセスは無効化される。
[0085]
 また、本発明は、前記前記準備処理か否かを解析する規約情報を記憶した規約情報記憶部を備えることが好ましい。規約情報部を利用することで、攻撃の準備行為毎の解析処理方法に基づいて確実に解析することが可能となる。
[0086]
 また、前記規約情報は、カーネルAPIに対するものであることが好ましい。この構成によれば、リソースへアクセスするシスコール命令は、全てカーネルのAPIを利用してなされた、ものであり、係るAPIに対応する解析処理で全ての攻撃順位が解析される。
[0087]
 また、前記制御手段は、前記準備処理と解析された後に発行される命令コードの実行を停止することが好ましい。この構成によれば、攻撃の実行前に、準備に該当すると解析された後の基本命令コード等の命令コードの実行は確実に無効化される。
[0088]
 また、本発明は、前記解析手段及び前記制御手段を前記オペレーティングシステムよりも先に起動させるブート処理部を備えることが好ましい。この構成によれば、解析手段及び制御手段をOSよりも先に起動させることが可能となるため、OSよりも上位でOSプログラム、アプリケーションプログラムの各挙動を監視し得、OSへの不正プログラムの感染、侵入も検出し、阻止される。

符号の説明

[0089]
 100 情報処理装置
 1 CPU(コンピュータ)
 11 メモリコントローラ
 130 監視モジュール(情報処理監視装置)
 1301 メモリ管理部
 1302 第1解析部
 1303 ハードウェア割込処理部
 1304  第2解析部
 1305 制御部
 1306 規約情報部
 2 HDD
 3 RAM
 3112 OS(カーネル)

請求の範囲

[請求項1]
 基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスがその後に発行される基本命令コードの実行を攻撃に変える準備処理か否かを解析する、オペレーティングシステムよりも高い特権レベルに設定された解析手段と、
 前記解析手段によって前記プロセスが前記準備処理であると解析された場合、前記プロセスの実行に対する制御を行う、前記高い特権レベルと同一の特権レベルが設定された制御手段とを備えた情報処理監視装置。
[請求項2]
 前記解析手段は、フェッチされた命令コードが基本命令コードか否かを解析する第1解析手段と、前記第1解析手段で基本命令コードでないと解析された場合、前記プロセスが準備処理か否かを解析する第2解析手段とを備える請求項1に記載の情報処理監視装置。
[請求項3]
 前記解析手段は、フェッチされた命令コードが基本命令コードと解析された場合、及び前記プロセスが前記準備処理でないと解析された場合、前記プロセスの命令コードを命令実行部に導く請求項1又は2に記載の情報処理監視装置。
[請求項4]
 基本命令コード以外の命令コードがフェッチされる毎に、割込を発行する割込手段を備える請求項1~3のいずれかに記載の情報処理監視装置。
[請求項5]
 前記解析手段は、拡張命令コードを含むプロセスに対して解析を行うことを特徴とする請求項1~4のいずれかに記載の情報処理監視装置。
[請求項6]
 前記解析手段は、シスコール命令を含むプロセスに対して解析を行うことを特徴とする請求項1~5のいずれかに記載の情報処理監視装置。
[請求項7]
 前記解析手段は、プロセス開始のシスコール命令からプロセス終了のシスコール命令までの命令コードを含むプロセスに対して解析を行うことを特徴とする請求項1~6のいずれかに記載の情報処理監視装置。
[請求項8]
 前記解析手段は、msrレジスタを書き換る命令コードか否かの解析を行うことを特徴とする請求項1~7のいずれかに記載の情報処理監視装置。
[請求項9]
 前記前記準備処理か否かを解析する規約情報を記憶した規約情報記憶部を備える請求項1~8のいずれかに記載の情報処理監視装置。
[請求項10]
前記規約情報は、カーネルAPIに対するものである請求項1~9のいずれかに記載の情報処理監視装置。
[請求項11]
 前記制御手段は、前記準備処理と解析された後に発行される命令コードの実行を停止することを特徴とする請求項1~10のいずれかに記載の情報処理監視装置。
[請求項12]
 前記解析手段及び前記制御手段を前記オペレーティングシステムよりも先に起動させるブート処理部を備える請求項1~11のいずれかに記載の情報処理監視装置。
[請求項13]
 請求項1~12のいずれかに記載の情報処理監視装置を備えた情報処理装置。
[請求項14]
基本命令コード以外の、フェッチされた少なくとも1つの命令コードを含むプロセスがその後に発行される基本命令コードの実行を攻撃に変える準備処理か否かを解析する、オペレーティングシステムよりも高い特権レベルに設定された解析ステップと、
 前記解析ステップによって前記プロセスが前記準備処理であると解析された場合、前記プロセスの実行に対する制御を行う、前記高い特権レベルと同一の特権レベルが設定された制御ステップとを備えた情報処理監視方法。
[請求項15]
 コンピュータを、請求項1~12のいずれかに記載の情報処理監視装置として機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
[請求項16]
 コンピュータを、請求項1~12のいずれかに記載の情報処理監視装置として機能させるプログラム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]