(57)【特許請求の範囲】
【請求項１】
データフローの追跡対象となる追跡対象データを記憶する記憶部のオフセット各々に関連付けられた第１のタグ各々を予め記憶するタグテーブルと、
ＯＳおよび調査用のアプリケーションが起動され、前記追跡対象データの指定を受け付けると、前記ＯＳにより提供されるＡＰＩまたはシステムコールにより、前記記憶部から指定を受け付けた追跡対象データを読み出す読出部と、
前記タグテーブルから、前記読出部により前記追跡対象データが読み出された前記オフセットに関連付けられた前記第１のタグを取得する取得部と、
前記取得部により取得された前記第１のタグに、前記追跡対象データのデータフローを追跡するための第２のタグを付与するタグ付与部と、
前記ＯＳと解析対象となるアプリケーションとが起動され、前記記憶部に記憶された前記追跡対象データのコピーまたは移動がある場合には、コピー先または移動先となるオフセットに関連付けられた第１のタグに関連付けて、前記第２のタグを格納し、前記記憶部に記憶された追跡対象データが出力される場合には、該追跡対象データが記憶されるオフセットに関連付けられた第１のタグを用いて前記タグテーブルを検索し、該第１のタグが前記第２のタグに関連付けられている場合には、前記追跡対象データの外部への流出を検出する解析部と
を備えたことを特徴とするタグ付与装置。
【請求項２】
前記タグ付与部は、前記取得部により取得された前記第１のタグに対応付けて前記第２のタグを前記タグテーブルに格納することで、前記第２のタグを付与することを特徴とする請求項１に記載のタグ付与装置。
【請求項３】
前記取得部は、前記追跡対象データが前記記憶部の複数の記憶領域にまたがって記憶されている場合に、前記複数の記憶領域各々に関連付けられた前記第１のタグ各々を取得することを特徴とする請求項１又は２に記載のタグ付与装置。
【請求項４】
タグ付与装置で実行されるタグ付与方法であって、
前記タグ付与装置は、データフローの追跡対象となる追跡対象データを記憶する記憶部のオフセット各々に関連付けられた第１のタグ各々を予め記憶するタグテーブルを備え、
ＯＳおよび調査用のアプリケーションが起動され、前記追跡対象データの指定を受け付けると、前記ＯＳにより提供されるＡＰＩまたはシステムコールにより、前記記憶部から指定を受け付けた追跡対象データを読み出す読出工程と、
前記タグテーブルから、前記読出工程により前記追跡対象データが読み出された前記オフセットに関連付けられた前記第１のタグを取得する取得工程と、
前記取得工程により取得された前記第１のタグに、前記追跡対象データのデータフローを追跡するための第２のタグを付与するタグ付与工程と、
前記ＯＳと解析対象となるアプリケーションとが起動され、前記記憶部に記憶された前記追跡対象データのコピーまたは移動がある場合には、コピー先または移動先となるオフセットに関連付けられた第１のタグに関連付けて、前記第２のタグを格納し、前記記憶部に記憶された追跡対象データが出力される場合には、該追跡対象データが記憶されるオフセットに関連付けられた第１のタグを用いて前記タグテーブルを検索し、該第１のタグが前記第２のタグに関連付けられている場合には、前記追跡対象データの外部への流出を検出する解析工程と
を含んだことを特徴とするタグ付与方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タグ付与装置及びタグ付与方法に関する。
【背景技術】
【０００２】
マルウェアなどの悪意ある不正プログラムの挙動を把握する手法として、テイント解析がある。テイント解析では、外部から入力されるデータをテイント、すなわち、汚染されたデータであるとみなし、データフローを追いかけることで、外部から入力されたデータがどのような効果を引き起こすかを検出する。例えば、テイント解析では、ＣＰＵ（Central  Processing  Unit）やメモリ等のハードウェア、もしくはそれらのエミュレータ上で、マルウェアにより読み書きされるデータにテイントタグを付与し、テイントタグが付与されたデータの流れを追跡することで、機密情報の外部への流出を検知する。
【０００３】
なお、外部ネットワークから受信したデータが命令ポインタとして解釈される事象を検知し、未知の攻撃を防ぐ手法や、プログラム解析時のブレークポイントをテイントタグで実現する手法もある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Georgios Portokalidis, Asia Slowinska, Herbert Bos, "Argos:  an  Emulator  for  Fingerprinting  Zero-Day  Attacks",  in  Proceedings  of  ACM  SIGOPS/EUROSYS  2006,  European  Conference  on  Computer  Systems  2006
【非特許文献２】中山  心太、青木  一史、川古谷  裕平、岩村  誠、伊藤  光恭、  "メモリ拡張によるアドレスに依存しないブレークポイント技術の提案",マルウェア対策研究人材育成ワークショップ2010
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の手法では、ストレージの各データに予めテイントタグを付与しておく場合、データ構造が公にされていないと解析プログラムを開発することが困難であり、テイントタグを付与できないという問題がある。
【０００６】
例えば、ＯＳ（Operating  System）やアプリケーション上で機密情報を取り扱う場合、機密情報はＯＳやアプリケーションが規定するデータ形式で格納される。例えば、多くのＯＳはファイルシステムを備えており、データを格納する単位として「ファイル」というデータ形式を提供する。ここで、機密情報が「ファイル」に格納されているとすると、機密情報を意味するテイントタグを付与すべき対象はファイルになる。ファイルシステムは、ＯＳにより提供される機能であり、システムコール等により利用される。
【０００７】
ここで、ストレージの各データがどのファイルに対応するかを識別する際には、例えば、ファイルシステムに応じた解析プログラムが開発されて用いられる。ＯＳのレジストリや、ＤＢＭＳ（DataBase  Management  System）におけるレコードに機密情報が含まれる場合は、ファイルシステムに応じた解析プログラムに加えて、各形式に応じた解析プログラムが用いられる。解析プログラムの開発は、ＯＳやアプリケーションがプロプライエタリ・ソフトウェアである場合、言い換えると、データ構造が公にされていない場合には困難となる。
【０００８】
開示の技術は、上述に鑑みてなされたものであって、データ構造を意識することなくタグを付与可能となるタグ付与装置及びタグ付与方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
開示するタグ付与装置は、一つの態様において、記憶部から所定のデータを読み出す読出部を備える。また、開示するタグ付与装置は、一つの態様において、前記記憶部の記憶領域各々に関連付けられた第１のタグ各々を記憶するタグテーブルから、前記読出部により前記所定のデータが読み出された前記記憶領域に関連付けられた前記第１のタグを取得する取得部を備える。また、開示するタグ付与装置は、一つの態様において、前記取得部により取得された前記第１のタグに、前記所定のデータのデータフローを追跡するための第２のタグを付与するタグ付与部を備える。
【発明の効果】
【００１０】
開示のタグ付与装置の一つの態様によれば、データ構造を意識することなくタグを付与可能となるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るタグ付与装置の構成の一例を示すブロック図である。
【図２】図２は、実施例１におけるタグメモリに記憶される情報の一例を示す図である。
【図３】図３は、実施例１に係るタグ付与装置によるタグ付与処理の流れの一例を示すフローチャートである。
【図４】図４は、実施例１に係るテイント解析処理によるタグ付与処理の流れの一例を示すフローチャートである。
【図５】図５は、仮想化技術を用いて実現する場合の一例を示す図である。
【図６】図６は、タグ付与装置による処理を実行するためのタグ付与プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【００１２】
以下に、開示するタグ付与装置及びタグ付与方法の実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１３】
［タグ付与装置の構成］
図１は、実施例１に係るタグ付与装置の構成の一例を示すブロック図である。図１に示す例では、タグ付与装置１００は、入出力部１０１と、データベース１１０と、タグメモリ１１１と、制御部１２０とを有する。
【００１４】
入出力部１０１は、制御部１２０と接続される。入出力部１０１は、情報や指示を利用者から受け付け、受け付けた情報や指示を制御部１２０に入力する。また、入出力部１０１は、制御部１２０から情報を受け付け、受け付けた情報を出力する。入出力部１０１は、キーボードやマウス、マイクモニタやスピーカなどである。なお、入出力部１０１によって受け付けられる情報や指示の詳細や、入出力部１０１によって出力される情報の詳細については、説明を省略する。
【００１５】
データベース１１０は、制御部１２０と接続される。データベース１１０は、制御部１２０による各種処理に用いられるデータを記憶する。データベース１１０は、例えば、ＲＡＭ（Random  Access  Memory）やＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、ハードディスクや光ディスクなどである。データベース１１０は、「記憶部」とも称する。
【００１６】
以下では、データベース１１０が、データとして、「機密情報Ａ」と「機密情報Ｂ」とを記憶する場合を例に説明するが、これに限定されるものではなく、他の任意のデータを記憶しても良い。「機密情報Ａ」と「機密情報Ｂ」とを「所定のデータ」とも称する。また、以下では、データベース１１０に記憶されたデータを読み出す場合について説明するが、これに限定されるものではなく、任意のストレージや記憶部に記憶されたデータを読み出して良い。
【００１７】
また、以下では、データベース１１０が、データベース１１０の記憶領域のうち、先頭の記憶領域からのオフセットが「１０１バイト」から「１９９バイト」までの記憶領域に「機密情報Ａ」を記憶するものとして説明する。また、同様に、データベース１１０が、データベース１１０の記憶領域のうち、先頭の記憶領域からのオフセットが「２５０バイト」から「２７０バイト」までの記憶領域に「機密情報Ｂ」を記憶するものとして説明する。
【００１８】
なお、以下では、データベース１１０の記憶領域のうち、データが記憶されている記憶領域を識別するための情報として、記憶領域の先頭からのオフセットを用いる場合を例に説明するが、これに限定されるものではなく、任意の情報を用いて良い。例えば、データベース１１０の記憶領域各々に対して、オフセットとは関係なく、一意に識別するための情報を付与して用いて良い。例えば、データベース１１０の記憶領域のバイトごとに、ＩＤ（identifier）を付与して用いても良い。
【００１９】
図１の説明に戻る。タグメモリ１１１は、制御部１２０と接続される。タグメモリ１１１は、制御部１２０による各種処理に用いられるデータを記憶する。タグメモリ１１１は、例えば、ＲＡＭやフラッシュメモリなどの半導体メモリ素子、ハードディスクや光ディスクなどである。タグメモリ１１１は、「タグテーブル」とも称する。
【００２０】
タグメモリ１１１は、データベース１１０の記憶領域各々に関連付けられた第１のタグ各々を記憶する。第１のタグとは、例えば、データベース１１０の記憶領域を識別するための位置情報であったり、データベース１１０の記憶領域を識別するための識別情報であったりする。以下では、第１のタグが、データベース１１０の記憶領域の先頭からのオフセットである場合を用いて説明する。また、以下では、タグメモリ１１１が、データベース１１０の記憶領域各々に関連付けられた第１のタグ各々を、全て、予め記憶する場合を用いて説明する。言い換えると、データベース１１０の全記憶領域に対して、予め第１のタグが付与されており、付与された第１のタグがタグメモリ１１１に格納されている場合を用いて説明する。
【００２１】
また、タグメモリ１１１は、所定のデータのデータフローを追跡するための第２のタグを記憶する。第２のタグは、第１のタグに関連付けられる。第２のタグは、関連付けられた第１のタグにより識別される記憶領域に、所定のデータの一部又は全てが記憶されていることを示す識別情報である。第２のタグは、タグメモリ１１１に記憶された第１のタグのうち、所定のデータの一部又は全てが格納されている記憶領域を識別する第１のタグに関連付けられている。また、第２のタグは、所定のデータの一部又は全てが格納されていない記憶領域を識別する第１のタグには関連付けられていない。
【００２２】
なお、以下では、第１のタグを「調査用テイントタグ」とも称し、第２のタグを「解析用テイントタグ」とも称する。また、以下では、解析用テイントタグとして、データを一意に識別する識別情報を用いる場合を例に説明するが、これに限定されるものではない。例えば、解析用テイントタグとして「機密情報Ａ」と「機密情報Ｂ」とを区別可能な識別情報を用いなくても良い。
【００２３】
図２は、実施例１におけるタグメモリに記憶される情報の一例を示す図である。図２に示す例では、タグメモリ１１１は、解析用テイントタグと調査用テイントタグとを関連付けて記憶する。図２に示す例では、解析用テイントタグ「機密情報Ａ」と調査用テイントタグ「１０１」とを関連付けて記憶し、解析用テイントタグ「機密情報Ａ」と調査用テイントタグ「１０２」とを関連付けて記憶し、解析用テイントタグ「機密情報Ａ」と調査用テイントタグ「１９９」とを関連付けて記憶する場合を例に示した。また、解析用テイントタグ「ｎｕｌｌ」と調査用テイントタグ「２００」とを関連付けて記憶する場合を例に示した。
【００２４】
すなわち、図２に示す例では、タグメモリ１１１は、調査用テイントタグ「１０１」〜「１９９」によって識別されるデータベース１１０の記憶領域各々に「機密情報Ａ」が記憶されていることを記憶する。また、タグメモリ１１１は、調査用テイントタグ「２００」によって識別されるデータベース１１０の記憶領域各々に、テイント解析による追跡対象となるデータが記憶されていないことを記憶する。
【００２５】
ここで、調査用テイントタグと解析用テイントタグとがタグメモリ１１１に格納されるタイミングの一例について更に説明する。調査用テイントタグは、例えば、予めタグメモリ１１１に格納されている。その上で、制御部１２０が後述のタグメモリ格納処理を実行することで、テイント解析による追跡対象となるデータが格納された記憶領域に関連付けられた調査用テイントタグについて、解析用テイントタグが格納される。その後、制御部１２０により、後述のテイント解析が実行される。
【００２６】
制御部１２０は、入出力部１０１とデータベース１１０とタグメモリ１１１と接続される。制御部１２０は、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。制御部１２０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）などである。図１に示す例では、制御部１２０は、読出部１２１と、取得部１２２と、タグ付与部１２３と、テイント解析部１２４とを有する。
【００２７】
読出部１２１は、データベース１１０から所定のデータを読み出す。例えば、読出部１２１は、ＯＳや他のアプリケーションの機能を用いたりすることで、データベース１１０からデータを読み出す。より詳細な一例をあげて説明すると、読出部１２１は、直接、又は、他のアプリケーションを介して、ＯＳにより提供されるＡＰＩ（Application  Programming  Interface）やシステムコール等により、データベース１１０から機密情報Ａや機密情報Ｂを読み出す。なお、この段階においては、タグメモリ１１１には、調査用テイントタグのみが格納されている。
【００２８】
なお、読出部１２１によって読み出されるデータは、データベース１１０に記憶された全データであっても良く、データベース１１０に記憶されたデータのうち一部のデータであっても良い。データベース１１０に記憶されたデータのうち一部のデータを読み出す場合には、読み出し時にユーザによって指定されたデータを読み出しても良く、予め設定されたデータを読み出しても良い。また、例えば、データベース１１０に記憶されている情報のうち、機密情報を指定しても良い。
【００２９】
取得部１２２は、データベース１１０の記憶領域各々に関連付けられた第１のタグ各々を記憶するタグメモリ１１１から、読出部１２１により所定のデータが読み出された記憶領域に関連付けられた第１のタグを取得する。ここで、取得部１２２は、所定のデータがデータベース１１０の複数の記憶領域にまたがって記憶されている場合に、複数の記憶領域各々に関連付けられた第１のタグ各々を取得する。
【００３０】
読出部１２１により機密情報Ａと機密情報Ｂとが読み出された場合を用いて説明する。この場合、取得部１２２は、タグメモリ１１１に記憶された調査用テイントタグのうち、機密情報Ａ又は機密情報Ｂが読み出された記憶領域を識別する調査用テイントタグ各々を取得する。図１に示す例では、取得部１２２は、調査用テイントタグ「１０１」〜「１９９」、「２５０」〜「２７０」を取得する。
【００３１】
タグ付与部１２３は、取得部１２２により取得された第１のタグに、所定のデータのデータフローを追跡するための第２のタグを付与する。具体的には、タグ付与部１２３は、取得部１２２により取得された第１のタグに対応付けて第２のタグをタグメモリ１１１に格納することで、第２のタグを付与する。
【００３２】
例えば、図１に示すように、タグ付与部１２３は、取得部１２２により取得された調査用テイントタグ「１０１」〜「１９９」、「２５０」〜「２７０」に関連付けて、解析用テイントタグを格納する。より詳細な一例をあげて説明すると、タグ付与部１２３は、調査用テイントタグ「１０１」〜「１９９」に関連付けて解析用テイントタグ「機密情報Ａ」を格納する。また、タグ付与部１２３は、調査用テイントタグ「２５０」〜「２７０」に関連付けて解析用テイントタグ「機密情報Ｂ」を格納する。
【００３３】
すなわち、上述したように、タグ付与装置１００は、予めストレージに対応する調査用テイントタグ格納領域を用意し、そこに調査用テイントタグとして、ストレージ内の何番目のデータかを表す値を格納しておく。その上で、調査用テイントタグが付与されたストレージを用いて、ＯＳやアプリケーションを起動し、ＯＳやアプリケーションにおいて規定されるデータ構造に基づきデータフローを解析したいデータを一度読み出し、読み出したデータに付与された調査用テイント情報を取得し、データフローを解析するための解析用テイントタグと調査用テイントタグを対にして格納する。
【００３４】
テイント解析部１２４は、タグメモリ１１１に記憶された情報に基づいて、テイント解析を実行する。具体的には、テイント解析部１２４は、テイントタグの伝搬処理及びテイントタグの検出処理を実行する。例えば、テイント解析部１２４は、データベース１１０に記憶されたデータがコピーされて他の記憶領域に格納されたり、他の記憶領域に移動されたりすると、コピー先や移動先となる記憶領域に関連付けられた第１のタグに関連付けて、第２のタグを格納する。言い換えると、コピー先や移動先となる記憶領域に対応する調査用テイントタグに対して、解析用テイントタグが伝搬される。また、テイント解析部１２４は、入出力部１０１からデータが出力される場合に、出力されるデータに第２のタグが付与されているかを監視する。そして、テイント解析部１２４は、第２のタグが付与されているとの監視結果が得られた場合に、データの外部への流出を検出する。
【００３５】
例えば、テイント解析部１２４は、任意の処理タイミングとなると、ＯＳを起動し、解析対象となるアプリケーションを起動する。解析対象となるアプリケーションとは、例えば、マルウェアなどの不正プログラムである可能性のあるアプリケーションが該当する。そして、テイント解析部１２４は、その後、出力されるデータを監視し、外部に機密情報Ａや機密情報Ｂが流出するかを監視する。より詳細な一例をあげて説明すると、テイント解析部１２４は、出力されるデータに関連付けられる第１のタグを用いてタグメモリ１１１を検索し、第２のタグが関連付けられている場合には、データの外部への流出を検出し、第２のタグが関連付けられていない場合には、データの外部への流出を検出しない。この結果、テイント解析部１２４は、解析用テイントタグ「機密情報Ｂ」が関連付けられている場合には、解析対象アプリケーションが「機密情報Ｂ」を流出させるアプリケーションであることを識別する。
【００３６】
例えば、テイント解析部１２４は、出力されるデータについて、解析用テイントタグが付与されている場合に、データの流出ありと判定する。一方、テイント解析部１２４は、出力されるデータがあるとの監視結果が得られなかった場合や、出力されるデータがあるとの監視結果が得られたが第２のタグがない場合には、流出なしと判定する。
【００３７】
すなわち、タグ付与装置１００は、調査用テイントタグが付与されたストレージを用いて、データフローを解析したいプログラムを起動し、データフローを解析する際に、調査用テイントタグに対応する解析用テイントタグを、調査用テイントタグと解析用テイントタグの対から求める。そして、タグ付与装置１００は、解析用テイントタグに基づいて、データの流出を検出する。
【００３８】
なお、タグ付与装置１００は、既知のパーソナルコンピュータ、ワークステーション、携帯電話、ＰＨＳ（Personal  Handyphone  System）端末、移動体通信端末又はＰＤＡ（Personal  Digital  Assistant）などの情報処理装置を利用して実現しても良い。例えば、ＰＤＡなどの情報処理装置に、図１に示したデータベース１１０とタグメモリ１１１、制御部１２０の各機能を搭載することによって実現しても良い。
【００３９】
［タグ付与装置によるタグ付与処理］
図３は、実施例１に係るタグ付与装置によるタグ付与処理の流れの一例を示すフローチャートである。なお、以下では、ユーザによって、タグ付与処理の対象となるデータがユーザによって指定される場合を例に説明するが、これに限定されるものではない。
【００４０】
図３に示すように、タグ付与装置１００では、ユーザによって所定のデータが指定されると（ステップＳ１０１肯定）、読出部１２１は、ユーザによって指定された所定のデータを読み出す（ステップＳ１０２）。例えば、読出部１２１は、データベース１１０から機密情報Ａと機密情報Ｂとを読み出す。
【００４１】
そして、取得部１２２は、第１のタグを取得する（ステップＳ１０３）。例えば、取得部１２２は、機密情報Ａ又は機密情報Ｂが格納されているデータベース１１０の記憶領域に関連付けられた調査用テイントタグ全てを取得する。図１に示す例では、取得部１２２は、調査用テイントタグ「１０１」〜「１９９」、「２５０」〜「２７０」を取得する。
【００４２】
そして、タグ付与部１２３は、第２のタグを付与する（ステップＳ１０４）。具体的には、タグ付与部１２３は、取得部１２２により取得された調査用テイントタグ「１０１」〜「１９９」、「２５０」〜「２７０」に関連付けて、解析用テイントタグを格納する。より詳細な一例をあげて説明すると、タグ付与部１２３は、調査用テイントタグ「１０１」〜「１９９」に関連付けて解析用テイントタグ「機密情報Ａ」を格納する。また、タグ付与部１２３は、調査用テイントタグ「２５０」〜「２７０」に関連付けて解析用テイントタグ「機密情報Ｂ」を格納する。
【００４３】
［タグ付与装置によるテイント解析処理］
図４は、実施例１に係るテイント解析処理によるタグ付与処理の流れの一例を示すフローチャートである。以下に説明する一連の処理は、図３に示したタグ付与処理が実行され、タグメモリ１１１に調査用テイントタグと解析用テイントタグとが格納された後に実行される。また、以下では、説明の便宜上、タグの伝搬処理については言及することなく、テイントタグの検出処理について説明する。
【００４４】
図４に示すように、タグ付与装置１００では、処理タイミングとなると（ステップＳ２０１肯定）、テイント解析部１２４が、解析対象アプリケーションの起動を行う（ステップＳ２０２）。具体的には、タグ付与装置１００では、解析対象となるアプリケーションを起動する。
【００４５】
そして、テイント解析部１２４は、出力されるデータを監視する（ステップＳ２０３）。例えば、テイント解析部１２４は、出力されるデータがあるとの監視結果が得られた場合には（ステップＳ２０４肯定）、出力されるデータに付与された第１のタグを用いてタグメモリ１１１を検索する（ステップＳ２０５）。そして、テイント解析部１２４は、第２のタグがある場合には（ステップＳ２０６肯定）、流出ありと判定する（ステップＳ２０７）。つまり、テイント解析部１２４は、出力されるデータについて、解析用テイントタグが付与されている場合に、データの流出ありと判定する。一方、テイント解析部１２４は、出力されるデータがあるとの監視結果が得られなかった場合や（ステップＳ２０４否定）、出力されるデータがあるとの監視結果が得られたが第２のタグがない場合には（ステップＳ２０４肯定及びステップＳ２０６否定）、流出なしと判定する（ステップＳ２０８）。
【００４６】
［実施例１の効果］
上述したように、実施例１によれば、タグ付与装置１００は、データベース１１０から所定のデータを読み出す。また、タグ付与装置１００は、データベース１１０の記憶領域各々に関連付けられた第１のタグ各々を記憶するタグメモリ１１１から、所定のデータが読み出された記憶領域に関連付けられた第１のタグを取得する。また、タグ付与装置１００は、取得した第１のタグに、所定のデータのデータフローを追跡するための第２のタグを付与する。この結果、データ構造を意識することなくタグを付与可能となる。言い換えると、ＯＳやアプリケーション上で取り扱われるデータ構造に応じたテイントタグを、ストレージに付与可能になる。
【００４７】
すなわち、ストレージの各データがどのファイルに対応するかを識別する際には、例えば、ファイルシステムに応じた解析プログラムが開発されて用いられる。また、ＯＳのレジストリや、ＤＢＭＳ（DataBase  Management  System）におけるレコードに機密情報が含まれる場合は、ファイルシステムに応じた解析プログラムに加えて、各形式に応じた解析プログラムが用いられる。解析プログラムの開発は、ＯＳやアプリケーションがプロプライエタリ・ソフトウェアである場合、言い換えると、データ構造が公にされていない場合には困難である。
【００４８】
言い換えると、ファイルやＤＢＭＳのデータに対してテイントタグを用いた動的テイント解析を行おうとした場合、ＯＳのファイルシステムの構造、ＤＢＭＳのデータ構造に応じて重要な情報がどこに格納されているかを意識して、タグ付け、解析を行う必要がある。これに対して、実施例１によれば、ストレージの格納箇所にテイントタグをつけて機密情報との関連付けを行うことで、ＯＳやアプリケーションによらずにタグ付け可能となり、テイント解析を実行可能となる。
【００４９】
ここで、上述したように、実施例１によれば、予めストレージに対応する調査用テイント格納領域を用意し、調査用テイント格納領域に、ストレージの各データのオフセット等、ストレージの場所を示す情報を格納しておく。その上で、ＯＳやアプリケーションを起動し、調査用テイント情報が付与されたストレージからＯＳやアプリケーションがデータを一度読み出し、読み出したデータに付与された調査用テイント情報を取得し、解析用テイント情報と調査用テイント情報を合わせて格納する。この結果、ＯＳやアプリケーションで取り扱われるデータに関して、データ構造を意識することなく予めテイントタグを付与可能となる。
【００５０】
また、例えば、ファイルシステムは、ＯＳにより提供される機能であり、システムコール等により利用される。このため、テイントタグを付与する契機の一つとして、システムコール等によりファイルが読み込まれた場合が考えられる。例えば、テイント解析において、タグを付与することなく解析対象アプリケーションを起動し、解析対象アプリケーションによりデータがメモリに読み込まれる段階において、調査用テイントタグや解析用テイントタグを付与する手法が考えられる。とはいえ、例えば、マルウェアなどの不正プログラムは、原理的には、システムコールを用いずに直接ストレージ操作を行い、機密情報を取得することも考えられる。この結果、テイントタグは、データベースの各データに予め付与しておくことが望ましい。ここで、上述したように、実施例１によれば、データ構造を意識することなく、データベースの各データに予めテイントタグを付与可能となる。
【００５１】
また、実施例１によれば、タグ付与装置１００は、取得部１２２により取得された第１のタグに対応付けて第２のタグをタグメモリ１１１に格納することで、第２のタグを付与する。この結果、データ構造を意識することなく予めテイントタグを付与可能となる。
【００５２】
また、実施例１によれば、タグ付与装置１００は、所定のデータがデータベース１１０の複数の記憶領域にまたがって記憶されている場合に、複数の記憶領域各々に関連付けられた第１のタグ各々を取得する。この結果、データ構造を意識することなく予めテイントタグを付与可能となる。
【実施例２】
【００５３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例を示す。
【００５４】
［タグメモリ］
例えば、実施例１では、タグメモリ１１１が、予め調査用テイントタグを記憶し、その後、解析用テイントタグが格納される場合を用いて説明した。ただし、これに限定されるものではなく、予め調査用テイントタグを記憶するメモリと、解析用テイントタグと調査用テイントタグとの関連付けを記憶するメモリとが別メモリであっても良い。
【００５５】
［シャドウメモリ］
例えば、タグメモリ１１１について、制御部１２０のうち、タグ付与処理又はテイント解析処理を実行する処理部のみがアクセス可能なシャドウメモリとしても良い。すなわち、ＯＳやアプリケーションからタグメモリ１１１へのアクセスを許可した場合、マルウェア自身が解析されていることを検知する可能性がある。このことを踏まえ、タグ付与処理やテイント解析処理を実行する処理部のみがアクセス可能な一方、他の処理部からは参照不可なメモリとすることで、マルウェアに検知される可能性を低減可能となる。
【００５６】
例えば、タグメモリ１１１とデータベース１１０とを別個のメモリで実現し、タグ付与処理や、テイント解析処理を実行する場合にのみ、タグメモリ１１１に参照可能となるような構成としても良い。
【００５７】
［仮想化］
例えば、上述した制御部１２０やデータベース１１０、タグメモリ１１１などを仮想化技術を用いて実現しても良い。図５は、仮想化技術を用いて実現する場合の一例を示す図である。図５に示す例では、仮想ハードウェア２００が、仮想ＣＰＵ２０１と、仮想ディスク２０２と、シャドウディスク２０３と、仮想メモリ２０４と、シャドウメモリ２０５とを有する。また、仮想ハードウェア２００は、仮想マシンモニタ２２０により実現される。ここで、仮想ディスク２０２は、データベース１１０に相当し、シャドウディスク２０３が、タグメモリ１１１に相当する。また、仮想ハードウェア２００上では、ＯＳ２１０が実行され、ＯＳ２１０において、調査用アプリケーション２１１と解析対象アプリケーション２１２とが実行される。ここで、調査用アプリケーション２１１と仮想ハードウェア２００とが、読出部１２１、取得部１２２、タグ付与部１２３に相当する。また、解析対象アプリケーション２１２は、実施例１におけるテイント解析部１２４の解析対象に相当する。なお、調査用アプリケーション２１１は、テイント解析に先立って処理を実行し、解析対象アプリケーション２１２がＯＳ２１０にて実行されてテイント解析が実行される際には、処理を実行しない。
【００５８】
また、仮想マシンモニタ２２０は、解析用アプリケーション２２１を有する。解析用アプリケーション２２１は、実施例１におけるテイント解析部１２４に相当する。このように、図５に示す例では、実施例１におけるテイント解析部１２４に相当する処理は、仮想ハードウェア２００を実現する仮想マシンモニタ２２０にて実行される。この結果、テイント解析を実行する際に、ＯＳ２１０にて処理を実行する解析対象アプリケーション２１２に気づかれることなく、解析用アプリケーション２２１がテイント解析を実行可能となる。
【００５９】
なお、シャドウディスク２０３は、仮想ディスク２０２上のデータに関するテイントタグを格納するためのデータ格納領域であり、シャドウメモリ２０５は、仮想メモリ２０４上のデータに関するテイントタグを格納するためのデータ格納領域である。
【００６０】
また、図５に示す例では、仮想ディスク２０２から読み出されたデータに関連付けられた調査用テイントタグを一時的に記憶するシャドウメモリ２０５を更に有する場合を例に示した。この場合、シャドウメモリ２０５に格納された調査用テイントタグ各々に対して、解析用テイントタグが関連付けて付与されることになる。解析用テイントタグは、その後、シャドウディスク２０３に格納されても良く、シャドウメモリ２０５に格納されても良い。また、データコピーによるテイントタグの伝搬処理は、仮想ＣＰＵ２０１が行う。ここで、仮想ハードウェア２００が、仮想ＣＰＵ２０１に加えて仮想ＤＭＡコントローラを更に備える場合、仮想ＣＰＵ２０１を介さないデータコピーを行う際には、仮想ＤＭＡコントローラがテイントタグの伝搬処理を行う。
【００６１】
また、図５に示す場合において、仮想ＣＰＵ２０１や仮想ハードウェア２００を提供するＰＣエミュレータにおいて、アプリケーションからシャドウメモリの参照を許す調査専用モードを用意しておき、調査専用モード時にのみ、シャドウディスク２０３やシャドウメモリ２０５への参照を許可するようにしても良い。
【００６２】
［システム構成］
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、図１に示す例では、データベース１１０を別装置としても良い。この場合、データベース１１０とタグ付与装置１００とがネットワーク経由で接続するようにしても良い。また、制御部１２０のうち、テイント解析部１２４を別装置とし、ネットワーク経由で接続されて協働することで、上述したタグ付与装置１００のテイント解析処理を実行するようにしても良い。
【００６４】
［プログラム］
図６は、タグ付与装置による処理を実行するためのタグ付与プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。図６に例示するように、コンピュータ３０００は、例えば、メモリ３０１０と、ＣＰＵ（Central  Processing  Unit）３０２０と、ネットワークインタフェース３０７０とを有する。コンピュータ３０００の各部はバス３１００によって接続される。
【００６５】
メモリ３０１０は、図６に例示するように、ＲＯＭ３０１１及びＲＡＭ３０１２を含む。ＲＯＭ３０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。
【００６６】
ここで、図６に例示するように、ハードディスクドライブ３０８０は、例えば、ＯＳ３０８１、アプリケーションプログラム３０８２、プログラムモジュール３０８３、プログラムデータ３０８４を記憶する。すなわち、開示の技術に係る更新プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール３０８３として、例えばハードディスクドライブ３０８０に記憶される。具体的には、上記実施例で説明した制御部１２０の各部と同様の情報処理を実行する手順各々が記述されたプログラムモジュールが、ハードディスクドライブ３０８０に記憶される。
【００６７】
また、上記実施例で説明したタグメモリ１１１に記憶されるデータのように、タグ付与プログラムによる情報処理に用いられるデータは、プログラムデータ３０８４として、例えばハードディスクドライブ３０８０に記憶される。そして、ＣＰＵ３０２０が、ハードディスクドライブ３０８０に記憶されたプログラムモジュール３０８３やプログラムデータ３０８４を必要に応じてＲＡＭ３０１２に読み出し、各種の手順を実行する。
【００６８】
なお、タグ付与プログラムに係るプログラムモジュール３０８３やプログラムデータ３０８４は、ハードディスクドライブ３０８０に記憶される場合に限られない。例えば、プログラムモジュール３０８３やプログラムデータ３０８４は、着脱可能な記憶媒体に記憶されても良い。この場合、ＣＰＵ３０２０は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、タグ付与プログラムに係るプログラムモジュール３０８３やプログラムデータ３０８４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されても良い。この場合、ＣＰＵ３０２０は、ネットワークインタフェースを介して他のコンピュータにアクセスすることで各種データを読み出す。
【００６９】
［その他］
なお、本実施例で説明したタグ付与プログラムは、インターネットなどのネットワークを介して配布することができる。また、タグ付与プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００７０】
１００      タグ付与装置
１０１      入出力部
１１０      データベース
１１１      タグメモリ
１２０      制御部
１２１      読出部
１２２      取得部
１２３      タグ付与部
１２４      テイント解析部
２００      仮想ハードウェア
２０１      仮想ＣＰＵ
２０２      仮想ディスク
２０３      シャドウディスク
２０４      仮想メモリ
２０５      シャドウメモリ
２１０      ＯＳ
２１１      調査用アプリケーション
２１２      解析用アプリケーション
【図１】
0005832954.tif 000002
【図２】
0005832954.tif 000003
【図３】
0005832954.tif 000004
【図４】
0005832954.tif 000005
【図５】
0005832954.tif 000006
【図６】
0005832954.tif 000007