JP4669053B2 - 情報処理装置、情報処理方法及びこれを実現させるためのプログラム - Google Patents

情報処理装置、情報処理方法及びこれを実現させるためのプログラム Download PDF

Info

Publication number
JP4669053B2
JP4669053B2 JP2009067407A JP2009067407A JP4669053B2 JP 4669053 B2 JP4669053 B2 JP 4669053B2 JP 2009067407 A JP2009067407 A JP 2009067407A JP 2009067407 A JP2009067407 A JP 2009067407A JP 4669053 B2 JP4669053 B2 JP 4669053B2
Authority
JP
Japan
Prior art keywords
read
write
sequence
events
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009067407A
Other languages
English (en)
Other versions
JP2010102679A (ja
Inventor
聡 勝沼
正裕 五島
英嗣 入江
亮太 塩谷
修一 坂井
Original Assignee
株式会社半導体理工学研究センター
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社半導体理工学研究センター filed Critical 株式会社半導体理工学研究センター
Priority to JP2009067407A priority Critical patent/JP4669053B2/ja
Priority to US12/411,771 priority patent/US8413240B2/en
Publication of JP2010102679A publication Critical patent/JP2010102679A/ja
Application granted granted Critical
Publication of JP4669053B2 publication Critical patent/JP4669053B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンピュータ・システムに対する注入攻撃(injection attack)の検出等を目的とする情報処理装置、情報処理方法及びこれを実現させるためのプログラムに関する。
コンピュータ・システムに対する注入攻撃とは、コンピュータ・システムの脆弱性を利用して、外部からこのコンピュータ・システムに注入(inject)した攻撃コードや攻撃コマンドなどを、このコンピュータ・システムに実行させる攻撃をいう。
当初は、バッファ・オーバフローをはじめとして、通常クライアント上で動作するネイティブ・コードのプログラムに対する攻撃が主であった。しかし、最近では、クロス・サイト・スクリプティング(XSS)やSQLインジェクションなど、Perl、PHP、Java(登録商標)などのスクリプト言語で記述されたサーバ・プログラムに対する攻撃が深刻になっている。ここで、前者のように、ネイティブ・コードの構造に依存する攻撃を低次(low-level)の攻撃といい、後者のように、ネイティブ・コードの構造に依存しない攻撃を高次(high-level)の攻撃という。
このような注入攻撃を検出する方法として、DTP(Dynamic Taint Propagation)、DIFT(Dynamic Information Flow Tracking)と呼ばれる技術群がある。DTP/DIFTでは、プログラムが扱う各データには、外部からの入力に依存するかどうかを表す追跡情報(以下、テイント情報と称す。)が付加される。そして、DTP/DIFTでは、このテイント情報を用いて、動的(Dynamic)に、すなわち、プログラム実行時に、外部から入力されたデータに依存するデータを追跡することによって、注入攻撃を検出する。
テイント情報は、最も基本的な方法では、1ビットのテイント・ビットによって表現される。以下、その場合を基に説明するが、実質的に相当する場合も包含される。注入攻撃を検出するより具体的な方法は、以下の(1−1)から(1−3)による3つの処理を行う。なお、テイント・ビットがセットされたデータをテイント・データという。
(1−1)外部からデータが入力されたとき、そのデータに対してテイント・ビットをセットする。
(1−2)データの依存関係にしたがって、依存元から依存先へとテイント・ビットの内容を伝搬させる。
(1−3)プログラムからデータが出力されるとき、そのデータのテイント・ビットを検査する。テイント・ビットがセットされていれば、攻撃の可能性があると判定する。
DTP/DIFTには、以下で述べるように、処理の実行主体に関して、様々な実装方法が考えられる。
DTPでは、Perlのテイント・モードをはじめとする言語レベルのものでは、テイント・ビットの扱いが言語仕様の一部として追加定義される。したがって、テイント・ビットの扱いは、文などの言語構造に対して定義される。典型的には、代入文の実行に際して、右辺を構成する各データに付加されたテイント・ビットの内容を左辺が示すデータのテイント・ビットへと伝搬させることになる。実際の処理は、インタープリタによって行われるか、コンパイラによって埋め込まれたネイティブ・コードをプロセッサなどが実行することなどによって行われる。
DIFTは、低次の注入攻撃を検出することを目的に、Perlのテイント・モードをプロセッサに応用したものであり、上記(1−2)の処理の実行主体はプロセッサになる。すなわち、テイント・ビットの扱いは、プロセッサが実行する命令に対して定義される。典型的には、プロセッサが命令を実行する際に、ソース・オペランドに付加されたテイント・ビットの内容をデスティネーション・オペランドのテイント・ビットへと伝搬させることになる。
このようなDIFTは、もともと低次の注入攻撃を検出するために考案されたものではあるが、高次の注入攻撃も検出することが可能である。DIFTでは、上記(1−1)、(1−3)の処理はプロセッサ単体では実行することができないため、以下のように、コンピュータ・システムのプロセッサ以外の部分との連携が見られる。
(2−1)(プログラムの外部からではなく)ネットワークなどを介して、コンピュータ・システムの外部から入力されたデータに対して、テイント・ビットをセットする。
(2−2)データの依存関係にしたがって、依存元から依存先へとテイント・ビットの情報を伝搬させる。
(2−3)プログラムからデータが出力されるとき、単にデータのテイント・ビットがセットされているか否かだけではなく、どの部分のテイント・ビットがセットされているか否かを検査する。例えば、システム・コールやデータベース・システムに対するSQL文であれば、出力された文字列の構文解析を行い、コマンド名やファイル名など、コンピュータ・システムの外部から直接指定されてはならない部分のテイント・ビットがセットされていないか否かを検査する。
DTP/DIFTには、上述以外にも、Java(登録商標) VMをはじめとする中間言語の実行系に対するものや、プロセッサ・エミュレータに対するものなど、様々なレベルの実装方法が考えられる。
なお、これらのうち、DIFTなど、特定の言語に依存しないものは、包括的であるというメリットがある。言語レベルの技術は、当然のことながら、特定の言語によって記述されたプログラムにしか適用できない。これに対し、言語非依存なものは、その上で実行されるあらゆるプログラムに適用することができる。
ところで、意味のあるサービスを提供するプログラムでは、その出力は入力に依存する。出力が入力に依存しないということは、常に同じ値を出力することを意味することになる。そのようなプログラムは、実際上、役に立たない。
したがって、意味のあるプログラムに対してDTP/DIFTを完全に厳密に実行すると、その出力は入力に依存するのであるから、あらゆる出力データのテイント・ビットがセットされることになり、意味がない。結局、DTP/DIFTを意味のあるものにするには、何らかの条件を満たした時にはテイント・ビットの伝搬を行わないという非伝搬の規則が重要である。
非伝搬規則の設定にあたっては、データ依存によって生じる直接的依存には工夫の余地がないが、条件分岐や間接参照などによって生じる間接的依存の取り扱いが難しい。実際、従来のDTP/DIFTは、間接依存に関する非伝搬規則が機械的に定められているため、誤検出や検出漏れが多く発生していた。
特に、プロセッサで伝搬を行うDIFTでは、条件分岐における分岐条件の依存先の範囲を特定すること自体がそもそも困難である。
言語レベルのDTPにおいても、言語の文法規則の上で、非伝搬規則は機械的に定められている。例えばPerlでは、正規表現マッチで一致した部分を出力するとき、出力にはテイント・ビットは伝搬しない。例えばプラス記号を空白文字に置き換えるような、注入攻撃に関しては無意味なマッチの場合であっても、伝搬は行われない。
尚、この出願の発明に関連する先行技術文献情報としては、次のようなものがある。
マイケル・ダルトン(Michael Dalton)、外2名、「Raksha:ソフトウェア・セキュリティのための柔軟な情報フロー・アーキテクチャ(Raksha: A Flexible Information Flow Architecture for Software Security)」、インターナショナル・シンポジウム・オン・コンピュータ・アーキテクチャ(International Symposium on Computer Architecture)、2007年、pp.227-232
本発明は、攻撃耐性の高いサーバを構築することが可能な情報処理装置、情報処理方法及びこれを実現させるためのプログラムを提供する。
本発明の第の態様による情報処理装置は、記憶手段から追跡情報の付加された第1の文字列データを読み出すための複数の読み出しイベントを含む第1の読み出し系列と、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミングと、追跡情報の付加された第2の文字列データを読み出すための複数の読み出しイベントを含む第2の読み出し系列と、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミングとを検出する読み出し系列検出手段と、前記記憶手段に対して第の文字列データを書き込むための複数の書き込みイベントを含む書き込み系列と、前記複数の書き込みイベントの発生タイミングとを検出する書き込み系列検出手段と、前記読み出し系列検出手段によって検出された前記第1の読み出し系列、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記第2の読み出し系列、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記書き込み系列検出手段によって検出された前記書き込み系列、前記複数の書き込みイベントの発生タイミングに基づいて、「前記第1の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、「前記書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の書き込みイベントグループ」との間で、互い違いの関係を満たすか否か判断する第1の判断を行い、「前記第2の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、前記複数の書き込みイベントグループとの間で、互い違いの関係を満たすか否か判断する第2の判断を行うインタリービング判断手段と、前記インタリービング判断手段の前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、前記書き込みイベントグループに含まれている前記書き込みイベントによって書き込まれる文字列データに、前記書き込みイベントグループとの間で前記互い違いの関係にある直前の読み出しイベントグループに属する読み出しイベントに対応する追跡情報を付加する追跡情報付加手段とを具備する。
本発明の第の態様による情報処理方法では、コンピュータが、記憶手段から追跡情報の付加された第1の文字列データを読み出すための複数の読み出しイベントを含む第1の読み出し系列と、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミングと、追跡情報の付加された第2の文字列データを読み出すための複数の読み出しイベントを含む第2の読み出し系列と、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミングとを検出するとともに、前記記憶手段に対して第の文字列データを書き込むための複数の書き込みイベントを含む書き込み系列と、前記複数の書き込みイベントの発生タイミングとを検出すること、前記コンピュータが、前記第1の読み出し系列、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記第2の読み出し系列、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記書き込み系列、前記複数の書き込みイベントの発生タイミングに基づいて、「前記第1の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、「前記書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の書き込みイベントグループ」との間で、互い違いの関係を満たすか否か判断する第1の判断を行い、「前記第2の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、前記複数の書き込みイベントグループとの間で、互い違いの関係を満たすか否か判断する第2の判断を行うこと、前記コンピュータが、前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、前記書き込みイベントグループに含まれている前記書き込みイベントによって書き込まれる文字列データに、前記書き込みイベントグループとの間で前記互い違いの関係にある直前の読み出しイベントグループに属する読み出しイベントに対応する追跡情報を付加することを含む
本発明の第の態様によるプログラムは、コンピュータを、記憶手段から追跡情報の付加された第1の文字列データを読み出すための複数の読み出しイベントを含む第1の読み出し系列と、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミングと、追跡情報の付加された第2の文字列データを読み出すための複数の読み出しイベントを含む第2の読み出し系列と、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミングとを検出する読み出し系列検出手段、前記記憶手段に対して第の文字列データを書き込むための複数の書き込みイベントを含む書き込み系列と、前記複数の書き込みイベントの発生タイミングとを検出する書き込み系列検出手段、前記読み出し系列検出手段によって検出された前記第1の読み出し系列、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記第2の読み出し系列、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記書き込み系列検出手段によって検出された前記書き込み系列、前記複数の書き込みイベントの発生タイミングに基づいて、「前記第1の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、「前記書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の書き込みイベントグループ」との間で、互い違いの関係を満たすか否か判断する第1の判断を行い、「前記第2の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、前記複数の書き込みイベントグループとの間で、互い違いの関係を満たすか否か判断する第2の判断を行うインタリービング判断手段、前記インタリービング判断手段の前記前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、前記書き込みイベントグループに含まれている前記書き込みイベントによって書き込まれる文字列データに、前記書き込みイベントグループとの間で前記互い違いの関係にある直前の読み出しイベントグループに属する読み出しイベントに対応する追跡情報を付加する追跡情報付加手段として機能させる。



本発明によれば、攻撃耐性の高いサーバを構築することが可能な情報処理装置、情報処理方法及びこれを実現させるためのプログラムを提供できる。
本発明の第1の実施形態に係わるテイント・ビットの伝搬方法を示す状態遷移図。 本発明の第1の実施形態に係わるテイント・ビットの伝搬方法の具体例を示す図。 本発明の第1の実施形態に係わる情報処理装置を示すブロック図。 本発明の第1の実施形態に係わる情報処理装置を示すブロック図。 本発明の第1の実施形態に係わる他の情報処理装置を示すブロック図。 図5の情報処理装置が実行する情報処理のフロー図。 本発明の第2の実施形態に係わる情報処理装置の構成の一例を示すブロック図。 第2の実施形態に係わるアルゴリズムによってテイント情報が伝搬される状態の第1の例を示す図。 第2の実施形態に係わるアルゴリズムによってテイント情報が伝搬される状態の第2の例を示す図。 第2の実施形態に係わるアルゴリズムによってテイント情報が伝搬される状態の第3の例を示す図。 第2の実施形態に係わるアルゴリズムによってテイント情報が伝搬される状態の第4の例を示す図。 本発明の第3の実施形態に係わる文字列検出テーブルの一例を示す図。 第3の実施形態に係わる文字列検出テーブルのエントリ毎に行う文字列検出動作の一例を示すフローチャート。 第3の実施形態に係わるアクセスを通知された側の動作の一例を示すフローチャート。 第3の実施形態に係わるロード命令が実行された場合の動作の一例を示すフローチャート。 第3の実施形態に係わるストア命令が実行された場合の動作の一例を示すフローチャート。
本発明の実施の形態を以下に図面を参照して説明する。尚、以下の各実施の形態では、入力データとこの入力データに依存するデータであることを示す追跡情報の一例として、テイント・ビットを用いる場合を例に挙げて説明するが、他の情報を用いる場合でもよい。以下の各図において、同一の構成要素については同一の符号を付して説明を省略する。
(第1の実施形態)
[1]テイント情報の伝搬の規則
本発明者は、テイント・ビットの伝搬を行う場合の規則について、次のような考察を行った。
プログラムには、入力から出力に至る依存の経路が1つ以上存在する。コンピュータ・システムに対する注入攻撃に関しては、これらの経路のうち、入力も出力も文字列であるもののみを考えればよい。この経路は、1つ以上の部分処理からなる。個々の部分処理は、出力される文字列を用意した主体が当該プログラムかそうでないかによって、以下の2種に分けられる。
第1は、n択的処理である。この処理は、プログラムが用意したn個の文字列群のうちから、入力によって1つが選択され、出力されるものである。
第2は、フリーフォーム的処理である。この処理は、入力された文字列が、そのまま、あるいは文字列変換を経て、出力されるものである。ここでいう文字列変換とは、大文字と小文字、半角文字と全角文字との変換、異なる文字コード間の変換、URLエンコード/デコードなど、文字の表現方法が変換されるだけで、その表す内容は実質的に変化しないものを指す。
この2つの処理は、注入攻撃に対して、n択的処理は安全であり、フリーフォーム的処理は危険である。したがって、入力文字列から出力文字列へのテイント・ビットの情報の伝搬は、フリーフォーム的処理に関しては行い、n択的処理に関しては行わなければよい。
[2]テイント情報の伝搬
[2−1]概要
本実施形態では、コンピュータ・システムの外部からデータが入力された場合、このデータに対してテイント・ビットをセットする。プログラムの依存関係にしたがって、プロセッサによって、依存元から依存先へとテイント・ビットの情報を伝搬させる。データを出力するときは、このデータのテイント・ビットがセットされている(テイントである)か否かを検査する。
ここで、テイント・ビットの伝搬においては、プログラムの実行における読み出しと書き込みとからなる時系列を検査し、フリーフォーム的処理であるとみなす場合(例えば、文字列への出力をなす個々の書き込みの間にテイントであるデータを読み出していた場合)はテイント・ビットの伝搬を行う。
フリーフォーム的処理であるとみなす場合とは、以下の第1の条件と第2の条件とを満たす部分系列を指す。この場合、第1の条件の書き込み対象の文字列データに対してテイント・ビットの伝播を行う。
第1の条件:1つの文字列に対する書き込みをすべて含む。但し、文字列検出器によって1つの文字列に対するものと検出される場合を含む。
第2の条件:第1の部分系列とこの第1の部分系列に引き継ぐ第2の部分系列とからなる部分系列群の2つ以上の連続からなる。
第1の部分系列:テイントであるデータの読み出しを1つ以上含み、かつ、前記第1の条件の書き込みを含まない。
第2の部分系列:前記第1の条件の書き込みを1つ以上含み、かつ、テイントであるデータの読み出しを含まない。
このようなテイント情報の伝搬において、テイントでないデータの読み出しをr、テイントであるデータの読み出しをR、上記第1の条件の文字列に対するものではない書き込みをw、上記第1の条件の文字列の一部に対する書き込みをWと表すと、上記第2の条件を満たす部分系列は、以下の式(1)の正規表現で表すことができる。
([^W]*R[^W]*[^R]*W[^R]*)([^W]*R[^W]*[^R]*W[^R]*)+…(1)
[2−2]状態遷移図
図1は、式(1)の正規表現と同じ系列を受理するオートマトンの状態遷移図である。同図中、丸は状態を、矢印は状態遷移を、それぞれ表す。矢印に隣接して書かれたシンボルが入力されたとき、矢印の元の状態から先の状態へと遷移する。
オートマトンは、最初、初期状態Sにあり、順に入力される系列のシンボルにしたがって状態遷移を繰り返す。系列の最後のシンボルを入力した後に、オートマトンが受理状態Sにあれば、その系列は受理される。
具体的には、初期状態Sにおいて、テイントでないデータの読み出しr及び上記第1の条件の文字列に対するものではない書き込みwが入力された場合は再び状態Sに遷移し、テイントであるデータの読み出しRが入力された場合は状態Sに遷移する。
状態Sにおいて、テイントでないデータの読み出しr、テイントであるデータの読み出しR及び上記第1の条件の文字列に対するものではない書き込みwが入力された場合は再び状態Sに遷移し、上記第1の条件の文字列の出力の一部に対する書き込みWが入力された場合は状態Sに遷移する。
状態Sにおいて、テイントでないデータの読み出しr、上記第1の条件の文字列に対するものではない書き込みw及び上記第1の条件の文字列の一部に対する書き込みWが入力された場合は再び状態Sに遷移し、テイントであるデータの読み出しRが入力された場合は状態Sに遷移する。
状態Sにおいて、テイントでないデータの読み出しr、テイントであるデータの読み出しR及び上記第1の条件の文字列に対するものではない書き込みwが入力された場合は再び状態Sに遷移し、上記第1の条件の文字列の一部に対する書き込みWが入力された場合は状態Sに遷移する。
状態Sにおいて、テイントでないデータの読み出しr、上記第1の条件の文字列の出力に対するものではない書き込みw及び上記第1の条件の文字列の一部に対する書き込みWが入力された場合は再び状態Sに遷移し、テイントであるデータの読み出しRが入力された場合は状態Sに遷移する。
状態Sにおいて、テイントでないデータの読み出しr、テイントであるデータの読み出しR及び上記第1の条件の文字列に対するものではない書き込みwが入力された場合は再び状態Sに遷移し、上記第1の条件の文字列の一部に対する書き込みWが入力された場合は状態Sに遷移する。
以上のように、本実施形態によれば、式(1)の正規表現が表すシンボルの系列、図1の状態遷移図によって表わされるオートマトンが受理するシンボルの系列に対して、上記第1の条件の文字列の一部に対する書き込みWの対象となる文字列データに対してテイント情報の伝搬を行う。
[2−3]具体例
図2は、テイント情報の伝搬を行う部分系列の具体例(例1−a〜c)とテイント情報の伝搬を行わない部分系列の具体例(例2−a〜b)をそれぞれ示す。各例において、テイントであるデータの読み出しをRで示し、上記第1の条件の文字列の一部に対する書き込みをWと示す。また、本図における(1)及び(2)は、上述した第2の条件の第1の部分系列及び第2の部分系列にそれぞれ相当する。なお、本図では、簡単のため、RとWについてのみ示すが、r(テイントでないデータの読み出し)、w(上記第1の条件の文字列に対するものではない書き込み)は任意の位置にいくらでも現れてよい。
例1−aは、テイント情報の伝搬を行う最も簡単な例である。1つのRからなる第1の部分系列(1)と1つのWからなる第2の部分系列(2)とを有する部分系列群が2回連続している。これにより、例1−aは、上述した第2の条件を満たす。
例1−bは、例1−aと同様、1つのRからなる第1の部分系列(1)と1つのWからなる第2の部分系列(2)とを有する部分系列群が存在している。そして、例1−bでは、この部分系列群が4回連続している。これにより、例1−bは、上述した第2の条件を満たす。この例1−bは、フリーフォーム的処理の典型例となっている。
例1−cは、それぞれの部分系列に含まれるR、Wの個数がそれぞれ異なっている例である。1番目の部分系列群は、1つのRからなる第1の部分系列(1)と1つのWからなる第2の部分系列(2)とを有する。2番目の部分系列群は、2つのRからなる第1の部分系列(1)と1つのWからなる第2の部分系列(2)とを有する。3番目の部分系列群は、1つのRからなる第1の部分系列(1)と3つのWからなる第2の部分系列(2)とを有する。このように、各部分系列に含まれるR、Wの個数がそれぞれ異なっている例1−cのような場合も、上述した第2の条件を満たす。
一方、例2−aと例2−bは、部分系列群が2回以上連続していない例である。例2−aは、1つのRからなる第1の部分系列(1)と1つのWからなる第2の部分系列(2)とを有する部分系列群が存在しているだけで、この部分系列群が連続しない。したがって、第2の条件の後半の「部分系列群の2つ以上の連続からなる」という条件を満たさないため、テイント・ビットの伝搬が行われない。同様に、例2−bは、1つのRからなる第1の部分系列(1)と4つのWからなる第2の部分系列(2)とを有する部分系列群が存在しているだけで、この部分系列群が連続しない。したがって、第2の条件の後半の「部分系列群の2つ以上の連続からなる」という条件を満たさないため、テイント・ビットの伝搬が行われない。この例2−bは、n択的処理の典型例となっている。
[3]情報処理装置
図3及び図4は、本実施形態のテイント情報の伝搬を実現するための情報処理装置のブロック図を示す。図3及び図4に示す情報処理装置1は、プロセッサ10、メモリ(記憶部)20、入力部30、出力部40を具備している。プロセッサ10は、読み出し検出手段11、書き込み検出手段12、テイント・ビット付加手段13、検査手段14を具備する。メモリ20は、外部から入力されたテイント情報が付加された文字列データが記憶される第1の記憶部21、処理が実行された後の文字列データが記憶される第2の記憶部22を備えている。なお、第1の記憶部21、第2の記憶部22は、分離されているメモリにそれぞれ記憶されていてもよい。
本実施形態の情報処理装置1では、次のような情報処理を行う。
まず、情報処理装置1の外部から入力部30にデータが入力される。このデータはプロセッサ10に入力され、テイント・ビット付加手段13によりデータに含まれる各データに対してテイント・ビットがそれぞれ付加された(セットされた)状態で、第1の記憶部21に記憶される。
プログラムが実行される際、プロセッサ10は第1の記憶部21から読み出しを行い、第2の記憶部22に書き込みを行う。この際、読み出し検出手段11により、テイント・ビットがセットされたデータ(テイント・データ)に対する読み出しRが検出され、書き込み検出手段12により、文字列データDに含まれるデータd’の書き込みWが検出される。
ここで、テイント・データd1に対する第1の読み出しR1、上記文字列データDに含まれるデータd1’の第1の書き込みW1、テイント・データd2に対する第2の読み出しR2、上記文字列データDに含まれるデータd2’の第2の書き込みW2が順に検出された場合、上記第1の書き込みW1のデータd1’及び上記第2の書き込みW2のデータd2’に対してテイント・ビット付加手段によりテイント・ビットを付加して(セットして)第2の記憶部22に記憶する。
そして、第2の記憶部22に記憶されたデータを出力部40から読み出す場合、プロセッサ10の検査手段14によって、出力データがテイント・データか否かの検査が行われる。
なお、上述した情報処理において、第1の書き込みW1におけるデータd1’は、第1の読み出しR1におけるテイント・データd1でもよいし、テイント・データd1以外でもよい。同様に、第2の書き込みW2におけるデータd2’は、第2の読み出しR2におけるテイント・データd2でもよいし、テイント・データd2以外でもよい。第1及び第2の書き込みW1、W2におけるデータd1’、d2’は、上記文字列データDの任意の2つの部分に対するものであり、このデータd1’、d2’は、文字列データDの任意の連続する部分であっても連続しない部分であってもよい。
また、第1及び第2の読み出しR1、R2のデータは、文字列データに限定されない。第1及び第2の読み出しR1、R2のデータは、同じものであっても異なるものであってもよい。
また、本実施形態の情報処理装置1は、図5に示すように、文字列アクセス検出部50をさらに具備してもよい。この文字列アクセス検出部50は、プロセッサ10が実行する読み出し/書き込み(ロード/ストア)命令の時系列からなるアドレス・トレースを入力として、そこから文字列アクセスを成す部分系列を検出するものである。
具体的には、図6に示すように、文字列アクセス検出部50によって、文字列データであるか否かが判断される(ST1)。この結果、文字列データである場合は、テイント情報の伝搬を行う対象か否かが判断され(ST2)、対象に該当すればテイント情報の伝搬が行われる(ST3)。一方、文字列データでない場合、テイント情報の伝搬を行う対象でない場合には、テイント情報の伝搬は行われない(ST4)。なお、テイント情報の伝搬を行う対象か否かの判断は、上述したように、プロセッサ10によって判断される。
このような文字列アクセス検出部50を利用すれば、プロセッサ10やVMなどのプラットフォームに、本実施形態を実装可能である。なお、スクリプト言語処理系など、文字列アクセスが容易に識別可能である場合には、この文字列アクセス検出器を用いる必要はない。ここで、文字列アクセス検出部50の機能をプロセッサ10により実施させるとしてもよい。
なお、上述した本実施形態のテイント情報の伝搬などの情報処理は、情報処理装置1のプロセッサ10によって実現したり、例えばコンピュータに実現させることのできるプログラム61としても適用可能である(図3及び図5参照)。このプログラム61は、例えば、磁気ディスク、光ディスク、半導体メモリなどの記録媒体60に書き込んで各種装置に適用したり、通信媒体により伝送したりして各種装置に適用することも可能である。記録媒体60に記録されたプログラム61を読み込み、このプログラム61によって動作が制御されることにより、上述した本実施形態の情報処理を実行する。
[4]効果
以上のように、本実施形態によれば、文や命令などのミクロな処理を単位として伝搬していた従来と異なり、プロセッサによる文字列操作毎にテイント情報を伝搬する。したがって、テイント情報の高精度な伝搬が実現でき、注入攻撃の検出漏れや誤検出を抑制することができるため、攻撃耐性の高いサーバ構築が可能となる。
また、本実施形態は、DIFTのように言語非依存性であるため、プロセッサやVMなどのプラットフォーム側に実装可能である。したがって、プラットフォームがアタック耐性を有するため、アプリケーション開発時にはセキュリティ・ホールなどについて考慮する必要がなくなる。
(第2の実施形態)
本実施形態に係る情報処理装置は、上記1の実施形態に係る情報処理装置と異なるアルゴリズムを用いてテイント情報の伝搬を行う。
図7は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
本実施の形態に係るアルゴリズムでは、プロセッサ10は、第1の記憶部21に記憶されているテイント情報の付されている文字列データの読み出しイベントと、第2の記憶部22に対する文字列データの書き込みイベントとの間に互い違い(インタリービング)の関係が発生しているか否か判断する。
そして、プロセッサ10は、テイント情報付き文字列データの読み出しイベントに対して互い違いに発生している書き込みイベントによって第2の記憶部22に記憶される文字列データに、テイント情報を付す。
具体的なアルゴリズムを以下で説明する。
本実施の形態に係るアルゴリズムにおいて、
tはt≧2のしきい値、
k≧1、
mk1,mk2,…,mkt≧1、
n1,n2,…,nt≧1、
である。
文字列Wに対する書き込みの系列に対して文字列Rkに対する読み出しの系列があって、
文字列Wに対する書き込みの系列を
w_1_1,w_1_2,…,w_1_n1,
w_2_1,w_2_2,…,w_2_n2,

w_t_1,w_t_2,…,w_t_nt,

とし、
文字列Rkに対する読み出しの系列を
rk_1_1,rk_1_2,…,rk_1_mk1,
rk_2_1,rk_2_2,…,rk_2_mk2,

rk_t_1,rk_t_2,…,rk_t_mkt,

とすると、
これらの書き込みの系列及び読み出しの系列が、
rk_1_1,rk_1_2,…,rk_1_mk1,
w_1_1,w_1_2,…,w_1_n1,
rk_2_1,rk_2_2,…,rk_2_mk2,
w_2_1,w_2_2,…,w_2_n2,

rk_t_1,rk_t_2,…,rk_t_mkt,
w_t_1,w_t_2,…,w_t_n2

となる互い違いの関係を持つ場合、
i(i≧1)に対して、
r1_i_m1i,r2_i_m2i,…
の中で最後に現れた読み出しイベントに対応するテイント情報を
w_i_1,w_i_2,…,w_i_ni
の書き込みイベントに対して伝搬させる。
情報処理装置70に備えられているプロセッサ10は、上記のようなアルゴリズムを実現するためのプログラム62を記録媒体60から読み出して実行する。
これにより、プロセッサ10は、テイント情報判断部71、読み出し系列検出部72、書き込み系列検出部73、インタリービング判断部74、テイント情報付加部75として機能する。
テイント情報判断部71は、第1の記憶部21に記憶されている読み出し対象の文字列データに、テイント情報が付与されているか否か判断する。
読み出し系列検出部72は、テイント情報判断部71の判断結果に基づいて、第1の記憶部21から、テイント情報が付加されている文字列データの読み出し系列を検出する。読み出し系列は、第1の記憶部21に記憶されておりテイント情報が付加されている文字列データに対する複数の読み出しイベントを含む。また、読み出し系列検出部72は、テイント情報が付加されている文字列データに対する複数の読み出しイベントの発生タイミングを検出、記録、管理する。
書き込み系列検出部73は、第2の記憶部22に対して書き込み対象のデータを記憶するための書き込み系列を検出する。書き込み系列は、第2の記憶部22に書き込まれるデータに対する複数の書き込みイベントを含む。また、書き込み系列検出部73は、第2の記憶部22に書き込まれるデータに対する複数の書き込みイベントの発生タイミングを検出、記録、管理する。
インタリービング判断部74は、読み出し系列検出部72によって検出された読み出し系列とその発生タイミングと、書き込み系列検出部73によって検出された書き込み系列とその発生タイミングとに基づいて、それぞれが読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループと、それぞれが書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の読み出しイベントグループとの間で、互い違いの関係を満たすか否か判断する。
例えば、テイント情報が付加されていると判断された文字列データに関する読み出し系列は、1つ又は連続する複数の読み出しイベントを含む第1の読み出しイベントグループを含み、その後に、1つ又は連続する複数の読み出しイベントを含む第2の読み出しイベントグループを含み、同様の状態が繰り返されているとする。
また、例えば、書き込み系列は、1つ又は連続する複数の書き込みイベントを含む第1の書き込みイベントグループを含み、その後に、1つ又は連続する複数の書き込みイベントを含む第2の書き込みイベントグループを含み、同様の状態が繰り返されているとする。
この場合、インタリービング判断部74は、第1の読み出しイベントグループの後に、第1の書き込みイベントグループが発生し、この第1の書き込みイベントグループの後において、さらに第2の読み出しイベントグループの後に、第2の書き込みイベントグループが発生する状態を、前記互い違いの関係が発生している状態と判断する。その後も、インタリービング判断部74は、処理対象の読み出しイベントグループと処理対象の書き込みイベントグループとをずらしながら同様の判断処理を繰り返す。
上記の読み出し系列検出部72の検出処理、書き込み系列検出部73の検出処理、インタリービング判断部74の判断処理は、例えば、各種の判断文などの制御文を組み合わせることで実現されるとしてもよく、各種のパターン認識技術、パターンの分類手法などを用いるとしてもよい。
テイント情報付加部75は、インタリービング判断部74によってテイント情報が付加されている文字列データに関する互い違いの読み出し及び書き込みが発生していると判断された場合に、書き込み対象の文字列データにテイント情報を付加する。
例えば、テイント情報付加部75は、第1の書き込みイベントグループと第2の書き込みイベントグループとに対して互い違いが発生していると判断された場合に、この第1の書き込みイベントグループに含まれている書き込みイベントによって書き込まれる文字列データのすべてと、第2の書き込みイベントグループに含まれている書き込みイベントによって書き込まれる文字列データのすべてに対して、テイント情報を付加する。
例えば、テイント情報付加部75は、テイント情報を付与する書き込みイベントが複数の読み出しイベントに基づいて発生している場合に、これら複数の読み出しイベントのうち最後に発生した読み出しイベントに対する追跡情報を、書き込み対象の文字列データに付与する。
図8は、本実施の形態に係るアルゴリズムによってテイント情報が伝搬される状態の第1の例を示す図である。
この図8においては、横方向は、読み出しイベント及び書き込みイベントの発生する時間を表す。縦方向は、読み出し文字列データ及び書き込み文字列データの種別を表す。この図8において、矢印は、テイント情報の伝搬を表している。
この図8では、読み出し文字列データRに対して、読み出しイベントr1_1_1,…,r1_5_1を含む読み出し系列が発生している。
この図8において、複数の読み出しイベントグループ(r1_1_1),…,(r1_5_1)は、それぞれが一つの読み出しイベントr1_1_1,…,r1_5_1を含むとする。
図8では、書き込み文字列データWに対して、書き込みイベントw_1_1,…,w_5_1を含む書き込み系列が発生している。
この図8において、複数の書き込みイベントグループ(w_1_1),…,(w_5_1)は、それぞれが一つの書き込みイベントw_1_1,…,w_5_1を含むとする。
それぞれの発生タイミングから、各読み出しイベントグループ(r1_1_1),…,(r1_5_1)と各書き込みイベントグループ(w_1_1),…,(w_5_1)とは、互い違いの関係を満たしている。すなわち、読み出しイベントグループ(r1_1_1),…,(r1_5_1)と書き込みイベントグループ(w_1_1),…,(w_5_1)とは、交互のタイミングで発生する関係を満たしている。
そこで、書き込み文字列データWに対する書き込みイベントグループ(w_1_1),…,(w_5_1)内の書き込みイベントに対しては、それぞれの書き込みイベントグループにとって互い違いの関係にある直前の読み出しイベントグループに属する最終(最新)の読み出しイベントに対応するテイント情報が、書き込み文字列データに対して付与される。
図9は、本実施の形態に係るアルゴリズムによってテイント情報が伝搬される状態の第2の例を示す図である。
この図9では、読み出し文字列データRに対して、読み出しイベントr1_1_1,r1_2_1,r1_2_2,…,r1_4_1を含む読み出し系列が発生している。
この図9において、複数の読み出しイベントグループは、それぞれ(r1_1_1),(r1_2_1,r1_2_2),(r1_3_1,r1_3_2,r1_3_3),(r1_4_1)である。
図9では、書き込み文字列データWに対して、書き込みイベントw_1_1,w_2_1,w_2_2,…,w_4_3を含む書き込み系列が発生している。
この図9において、複数の書き込みイベントグループは、それぞれ(w_1_1),(w_2_1,w_2_2),(w_3_1,w_3_2),(w_4_1,w_4_2,w_4_3)である。
それぞれの発生タイミングから、各読み出しイベントグループ(r1_1_1),(r1_2_1,r1_2_2),(r1_3_1,r1_3_2,r1_3_3),(r1_4_1)と各書き込みイベントグループ(w_1_1),(w_2_1,w_2_2),(w_3_1,w_3_2),(w_4_1,w_4_2,w_4_3)とは、互い違いの関係を満たしている。すなわち、読み出しイベントグループ(r1_1_1),(r1_2_1,r1_2_2),(r1_3_1,r1_3_2,r1_3_3),(r1_4_1)と書き込みイベントグループ(w_1_1),(w_2_1,w_2_2),(w_3_1,w_3_2),(w_4_1,w_4_2,w_4_3)とは、交互のタイミングで発生する関係を満たしている。
そこで、書き込みイベントグループ(w_1_1),(w_2_1,w_2_2),(w_3_1,w_3_2),(w_4_1,w_4_2,w_4_3)内の書き込みイベントに対しては、それぞれの書き込みイベントグループにとって互い違いの関係にある直前の読み出しイベントグループに属する最終(最新)の読み出しイベントに対応するテイント情報が、書き込み文字列データに対して付与される。
図10は、本実施の形態に係るアルゴリズムによってテイント情報が伝搬される状態の第3の例を示す図である。
読み出し文字列データR1に対して、読み出しイベントr1_1_1,r1_2_1,r1_3_1,r1_3_2,r1_4_1を含む読み出し系列が発生している。
読み出し文字列データR1の読み出し系列における複数の読み出しイベントグループは、それぞれ(r1_1_1),(r1_2_1),(r1_3_1,r1_3_2),(r1_4_1)である。
読み出し文字列データR2に対して、読み出しイベントr2_1_1,r2_2_1,r2_3_1,r2_4_1を含む読み出し系列が発生している。
読み出し文字列データR2の読み出し系列における複数の読み出しイベントグループは、それぞれ(r2_1_1),(r2_2_1),(r2_3_1),(r2_4_1)である。
書き込み文字列データWに対して、書き込みイベントw_1_1,w_2_1,w_3_1,w_4_1,w_4_2を含む書き込み系列が発生している。
複数の書き込みイベントグループは、それぞれ(w_1_1),(w_2_1),(w_3_1),(w_4_1,w_4_2)である。
それぞれの発生タイミングから、読み出し文字列データR1についての各読み出しイベントグループ(r1_1_1),(r1_2_1),(r1_3_1,r1_3_2),(r1_4_1)と書き込み文字列データWについての各書き込みイベントグループ(w_1_1),(w_2_1),(w_3_1),(w_4_1,w_4_2)とは、互い違いの関係を満たしている。
さらに、読み出し文字列データR2についての各読み出しイベントグループ(r2_1_1),(r2_2_1),(r2_3_1),(r2_4_1)と書き込み文字列データWについての各書き込みイベントグループ(w_1_1),(w_2_1),(w_3_1),(w_4_1,w_4_2)とについても、互い違いの関係を満たしている。
そこで、書き込みイベントグループ(w_1_1),(w_2_1),(w_3_1),(w_4_1,w_4_2)内の書き込みイベントに対しては、読み出し文字列データR1,R2の読み出しイベントグループのうち、書き込みイベントグループとの間で互い違いの関係にある直前の読み出しイベントグループに属する最終(最新)の読み出しイベントに対応するテイント情報が、書き込み文字列データに対して付与される。
この図10の例では、読み出しイベントr2_1_1に対するテイント情報が、書き込みイベントw_1_1に対する文字列データに付与される。読み出しイベントr1_2_1に対するテイント情報が、書き込みイベントw_2_1に対する文字列データに付与される。読み出しイベントr1_3_2に対するテイント情報が、書き込みイベントw_3_1に対する文字列データに付与される。読み出しイベントr2_4_1に対するテイント情報が、書き込みイベントw_4_1,w_4_2に対する文字列データに付与される。
図11は、本実施の形態に係るアルゴリズムによってテイント情報が伝搬される状態の第4の例を示す図である。
読み出し文字列データR1に対して、読み出しイベントr1_1_1,r1_2_1を含む読み出し系列が発生している。
読み出し文字列データR1の読み出し系列における複数の読み出しイベントグループは、それぞれ(r1_1_1),(r1_2_1)である。
読み出し文字列データR2に対して、読み出しイベントr2_1_1,r2_1_2,r2_1_3,r2_1_4を含む読み出し系列が発生している。
書き込み文字列データWに対して、書き込みイベントw_1_1,w_2_1を含む書き込み系列が発生している。
複数の書き込みイベントグループは、それぞれ(w_1_1),(w_2_1)である。
それぞれの発生タイミングから、読み出し文字列データR1についての各読み出しイベントグループ(r1_1_1),(r1_2_1)と書き込み文字列データWについての各書き込みイベントグループ(w_1_1),(w_2_1)とは、互い違いの関係を満たしている。
しかしながら、読み出し文字列データR2に対する読み出し系列と、書き込み文字列データWに対する書き込み系列とでは、互い違いの関係を満たしていない。
そこで、書き込みイベントグループ(w_1_1),(w_2_1)内の書き込みイベントに対しては、読み出し文字列データR1の読み出しイベントグループのうち、書き込みイベントグループとの間で互い違いの関係にある直前の読み出しイベントグループに属する最終(最新)の読み出しイベントに対応するテイント情報が、書き込み文字列データに対して付与される。
この図11の例では、読み出しイベントr1_1_1に対するテイント情報が、書き込みイベントw_1_1に対する文字列データに付与される。読み出しイベントr1_2_1に対するテイント情報が、書き込みイベントw_1_2に対する文字列データに付与される。
上記のように、本実施形態では、テイント情報を付加されている文字列データに対する少なくとも一回の読み出しイベントの発生後に少なくとも1回の書き込みイベントが発生し、さらにその後に、このテイント情報を付加されている文字列データに対する少なくとも一回の読み出しイベントの発生後に少なくとも1回の書き込みイベントが発生した場合に、互い違いが発生していると判断される。そして、同様の判断が繰り返される。
テイント情報を伝搬させる場合には、その書き込みの直前の少なくとも1回の読み出しにおける最終の読み出しに基づいてテイント情報が伝搬される。
以上説明した本実施形態においては、外部から入力された文字列データに基づいて情報処理装置71内で生成された文字列データについても、精度よくテイント情報を伝搬させることができる。これにより、攻撃耐性の高い情報処理装置71を構築することができる。
(第3の実施の形態)
本実施形態においては、テイント情報の伝搬を実現する具体的なアルゴリズムについて、文字列アクセスの検出と、この文字列アクセスの検出を用いた伝播とに分けて説明する。
[文字列アクセスの検出]
ここでは、文字列アクセスを検出するための文字列検出器の動作について説明する。この文字列検出器は、与えられたアドレスに対して、以下の2つの情報を出力する。なお、この文字列検出器は、プロセッサによって実現されるとしてもよい。
1.該当アクセスが文字列であるか否か
2.バックトラック(後に説明)が必要であるか否か
文字列検出器は、文字列に対するロードとストアをそれぞれ検出するために2つ備えられている。2つの文字列検出器は、それぞれが共通したアルゴリズムにより文字列アクセスを検出する。
それぞれの文字列検出器は、文字列検出テーブルを用いて文字列の検出を行う。図12に、この文字列検出テーブル内の各エントリの要素を示す。文字列検出テーブル内の各エントリは、それぞれが一つの文字列アクセスに関わる情報を保持する。
[エントリの更新と検出]
文字列アクセスの検出は、ロード命令、及びストア命令が実行された際、以下で説明する動作を、それぞれの文字列検出器に備えられている文字列検出テーブル内の全エントリに対して行うことによって実現される。
図13は、本実施の形態に係る文字列検出動作の一例を示すフローチャートである。この図13の文字列検出動作は、文字列検出テーブルのエントリ毎に行われる。
まず、ステップS1−0において、アクセスが行われた際のアドレスと予測アドレス(next_adr)の比較が行われる。これらのアドレスが一致しなかった場合,該当エントリに対する処理は終了する。
ステップS1−0でアドレスが一致した場合、ステップS1−1において、アクセスのインクリメント・フラグ(paired_inc)が1に更新され、ステップS1−2において、アクセス回数(cnt)と予測アドレス(next_adr)がインクリメントされる。
次に,ステップS1−3において、アクセス回数(cnt)が一定のしきい値CNを超えているか否かの判定が行われる。アクセ回数cntがしきい値CNを超えていた場合には、ステップS1−4において、アクセスがロードであった場合はストアを検出する検出器にアクセスの通知が行われ、アクセスがストアであった場合はロードを検出する検出器にアクセスの通知が行われる。通知を行われた側の動作については後述する。
続いて,ステップS1−5において、アクセス回数(cnt)が一定のしきい値CSを超えているか否かの判定が実行される。ここで、アクセス回数cntがしきい値CSを超えていない場合は、該当エントリに対する処理は終了する。アクセス回数cntがしきい値CSを超えていた場合、ステップS1−6において、さらに対となる文字列のアクセス回数(paired_cnt)が一定の閾値CPを超えているか否かの判定が行われる。アクセス回数paired_cntが閾値CPを超えていない場合、該当エントリに対する処理は終了する。
上記のステップS1−6において、アクセス回数paired_cntが閾値CPを超えていた場合、続いて、ステップS1−7において、文字列フラグ(string)が1か否かの判定が行われる。ここで,stringが0の場合、ステップS1−8において、バックトラック要求が出力される。
その後、ステップS1−9において、該当アクセスを文字列として検出した旨が出力され,文字列フラグ(string)が1に更新される。
[エントリの追加]
上記ステップS1−0において、メモリ・アクセスにおけるアドレスと一致する予測アドレス(next_adr)を持つエントリがテーブル内に1つも存在しなかった場合、テーブルへ新しいエントリが追加される。この場合、追加されるエントリ内の各要素は,以下の様に初期化される.
base_adr:該当アクセスのアドレスに初期化される
next_adr:base_adr+1に初期化される
cnt :1に初期化される
他の全ての要素:0に初期化される
なお,テ−ブルの大きさは有限であるため、もしエントリが不足した場合には、LRUアルゴリズムに基づいた置き換えが行われる。
[対となる文字列検出器からの通知]
上記のステップS1−4で行われるアクセスの通知について、この通知を受けた側の動作の一例を図14に示す。この動作は、通知を受けた側の検出器内にある文字列検出テーブルのエントリ全てに対して行われる。この図14の動作は、例えばプロセッサによって実行される。
まず、ステップS2−0において、対となるアクセスのインクリメント・フラグ(paired_inc)が1であるか否かの判定が行われる。インクリメント・フラグpaired_incが0の場合、該当エントリに対する処理は終了する。
ステップS2−0において、インクリメント・フラグpaired_incが1であった場合、ステップS2−1において、対となるアクセスのインクリメント・フラグ(paired_inc)が0に更新され、ステップS2−2において、対となる文字列のアクセス回数(paired_cnt)がインクリメントされる。
[伝搬]
テイント情報の伝搬は、ロード命令およびストア命令が実行された際の動作によって実現される。これらの動作は,先に説明したロード用およびストア用の文字列検出器からの出力に基づいて、例えばプロセッサなどによって行われる。ロード用およびストア用の文字列検出器は、例えばプロセッサに含まれていてもよく、プロセッサとは別構成でもよい。
[ロード命令が実行された際の動作]
図15は、ロード命令が実行された場合の動作の一例を示すフローチャートである。
まず、ステップS3−0において、文字列検出器は、該当アクセスが文字列かどうか判定する。該当アクセスが文字列ではない場合、ここで処理は終了する。
該当アクセスが文字列の場合、ステップS3−1において、そのアドレスに対応するテイント情報がロードされ、保存される。
なお、上記ステップS3−1は、例えばプロセッサによって実行される。
[ストア命令が実行された際の動作]
図16は、ストア命令が実行された場合の動作の一例を示すフローチャートである。
まず、ステップS4−0において、文字列検出器は、該当アクセスが文字列に対するものであるか否か判定する。該当アクセスが文字列ではない場合、ここで処理は終了する。
該当アクセスが文字列の場合、テイント情報のストアが行われる。すなわち、ステップS4−1において、文字列データへのロード時(図15のステップS3−1)に保存されたテイント情報が、対応するアドレスに対してストアされる。次に、ステップS4−2において、文字列検出器から出力されるバックトラック要求の判定が行われ、要求が存在した場合には、ステップS4−3において、後述するバックトラックによる伝搬が行われる。
なお、上記ステップS4−1からステップS4−3は、例えばプロセッサによって実行される。
[バックトラックによる伝搬]
上記図16のステップS4−2において、文字列検出器よってバックトラック要求が出力された場合、以下に示す「2.入力アドレス」から「3.出力アドレス」に対し,「1.伝搬を行うサイズ」で指定されたサイズの伝搬が行われる。なお、この伝搬は、例えばプロセッサによって実行される。
1.伝搬を行うサイズ:ステップS4−0において検出された文字列に対応するエントリ内のアクセス回数(cnt)
2.入力アドレス:直前に検出された文字列へのロードにおける先頭アドレス(base_adr)
3.出力アドレス:ストア時のアドレスから,上記「1.伝搬を行うサイズ」を引いたアドレス
その他、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、上記各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
本発明は、言語処理系などのソフトウェアから、VM、プロセッサなどのプラットフォームまで、あらゆるレベルのテイント情報の伝搬方法として利用可能である。
1,70…情報処理装置、10…プロセッサ、11…読み出し検出手段、12…書き込み検出手段、13…テイント・ビット付加手段、14…検査手段、20…メモリ、21…第1の記憶部、22…第2の記憶部、30…入力部、40…出力部、50…文字列アクセス検出部、60…記録媒体、61,62…プログラム、71…テイント情報判断部、72…読み出し系列検出部、73…書き込み系列検出部、74…インタリービング判断部、75…テイント情報付加部。

Claims (12)

  1. 記憶手段から追跡情報の付加された第1の文字列データを読み出すための複数の読み出しイベントを含む第1の読み出し系列と、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミングと、追跡情報の付加された第2の文字列データを読み出すための複数の読み出しイベントを含む第2の読み出し系列と、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミングとを検出する読み出し系列検出手段と、
    前記記憶手段に対して第の文字列データを書き込むための複数の書き込みイベントを含む書き込み系列と、前記複数の書き込みイベントの発生タイミングとを検出する書き込み系列検出手段と、
    前記読み出し系列検出手段によって検出された前記第1の読み出し系列、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記第2の読み出し系列、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記書き込み系列検出手段によって検出された前記書き込み系列、前記複数の書き込みイベントの発生タイミングに基づいて、「前記第1の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、「前記書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の書き込みイベントグループ」との間で、互い違いの関係を満たすか否か判断する第1の判断を行い、「前記第2の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、前記複数の書き込みイベントグループとの間で、互い違いの関係を満たすか否か判断する第2の判断を行うインタリービング判断手段と、
    前記インタリービング判断手段の前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、前記書き込みイベントグループに含まれている前記書き込みイベントによって書き込まれる文字列データに、前記書き込みイベントグループとの間で前記互い違いの関係にある直前の読み出しイベントグループに属する読み出しイベントに対応する追跡情報を付加する追跡情報付加手段と
    を具備する情報処理装置。
  2. 請求項記載の情報処理装置において、
    前記インタリービング判断手段は、
    前記第1の読み出し系列における第1の読み出しイベントグループの後に、前記書き込み系列における第1の書き込みイベントグループが発生し、その後さらに、前記第1の読み出し系列における第2の読み出しイベントグループの後に、前記書き込み系列における第2の書き込みイベントグループが発生している場合に、前記互い違いの関係を満たすと判断する前記第1の判断を行い、
    前記第2の読み出し系列における第3の読み出しイベントグループの後に、前記第1の書き込みイベントグループが発生し、その後さらに、前記第2の読み出し系列における第4の読み出しイベントグループの後に、前記第2の書き込みイベントグループが発生している場合に、前記互い違いの関係を満たすと判断する前記第2の判断を行う
    ことを特徴とする情報処理装置。
  3. 請求項記載の情報処理装置において、
    前記追跡情報付加手段は、前記追跡情報を付与する書き込みイベントが複数の読み出しイベントに基づいて発生している場合に、これら複数の読み出しイベントのうち最後に発生した読み出しイベントにおける追跡情報を、前記書き込まれる文字列データに付与することを特徴とする情報処理装置。
  4. 請求項乃至請求項のいずれか1項に記載の情報処理装置において、
    tはt≧2のしきい値であり、
    k≧1であり、
    mk1,mk2,…,mkt≧1であり、
    n1,n2,…,nt≧1であり、
    前記書き込み系列検出手段は、前記書き込み系列を検出し、
    前記読み出し系列検出手段は、前記第1及び第2の読み出し系列をそれぞれ検出し、
    前記書き込み系列を
    (w_1_1,w_1_2,…,w_1_n1,
    w_2_1,w_2_2,…,w_2_n2,

    w_t_1,w_t_2,…,w_t_nt,
    …)
    とし、
    前記第1及び第2の読み出し系列のそれぞれ
    (rk_1_1,rk_1_2,…,rk_1_mk1,
    rk_2_1,rk_2_2,…,rk_2_mk2,

    rk_t_1,rk_t_2,…,rk_t_mkt,
    …)
    とすると、
    前記インタリービング判断手段は、前記書き込み系列と前記第1及び第2の読み出し系列のそれぞれとの時系列が、
    (rk_1_1,rk_1_2,…,rk_1_mk1),
    (w_1_1,w_1_2,…,w_1_n1),
    (rk_2_1,rk_2_2,…,rk_2_mk2),
    (w_2_1,w_2_2,…,w_2_n2),

    (rk_t_1,rk_t_2,…,rk_t_mkt),
    (w_t_1,w_t_2,…,w_t_n2)

    前記互い違いの関係の双方を満たすか判断する前記第1及び第2の判断を実行し、
    前記追跡情報付加手段は、前記インタリービング判断手段の前記第1及び第2の判断によって前記互い違いの関係を満たすと判断された場合に、
    i(i≧1)とし、
    前記直前の読み出しイベントグループ(r1_i_m1i,r2_i_m2i,…)
    の中で、最後に現れた読み出しイベントにおける読み出し元の追跡情報を
    (w_i_1,w_i_2,…,w_i_ni)
    の書き込みに対して付加する
    ことを特徴とする情報処理装置。
  5. コンピュータが、記憶手段から追跡情報の付加された第1の文字列データを読み出すための複数の読み出しイベントを含む第1の読み出し系列と、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミングと、追跡情報の付加された第2の文字列データを読み出すための複数の読み出しイベントを含む第2の読み出し系列と、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミングとを検出するとともに、前記記憶手段に対して第の文字列データを書き込むための複数の書き込みイベントを含む書き込み系列と、前記複数の書き込みイベントの発生タイミングとを検出すること
    前記コンピュータが、前記第1の読み出し系列、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記第2の読み出し系列、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記書き込み系列、前記複数の書き込みイベントの発生タイミングに基づいて、「前記第1の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、「前記書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の書き込みイベントグループ」との間で、互い違いの関係を満たすか否か判断する第1の判断を行い、「前記第2の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、前記複数の書き込みイベントグループとの間で、互い違いの関係を満たすか否か判断する第2の判断を行うこと、
    前記コンピュータが、前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、前記書き込みイベントグループに含まれている前記書き込みイベントによって書き込まれる文字列データに、前記書き込みイベントグループとの間で前記互い違いの関係にある直前の読み出しイベントグループに属する読み出しイベントに対応する追跡情報を付加すること
    を含む情報処理方法。
  6. 請求項5記載の情報処理方法において、
    前記判断することは、
    前記第1の読み出し系列における第1の読み出しイベントグループの後に、前記書き込み系列における第1の書き込みイベントグループが発生し、その後さらに、前記第1の読み出し系列における第2の読み出しイベントグループの後に、前記書き込み系列における第2の書き込みイベントグループが発生している場合に、前記互い違いの関係を満たすと判断する前記第1の判断を行い、
    前記第2の読み出し系列における第3の読み出しイベントグループの後に、前記第1の書き込みイベントグループが発生し、その後さらに、前記第2の読み出し系列における第4の読み出しイベントグループの後に、前記第2の書き込みイベントグループが発生している場合に、前記互い違いの関係を満たすと判断する前記第2の判断を行う
    ことを特徴とする情報処理方法
  7. 請求項6記載の情報処理方法において、
    前記付加することは、前記追跡情報を付与する書き込みイベントが複数の読み出しイベントに基づいて発生している場合に、これら複数の読み出しイベントのうち最後に発生した読み出しイベントにおける追跡情報を、前記書き込まれる文字列データに付与することを特徴とする情報処理方法。
  8. 請求項5乃至請求項7のいずれか1項に記載の情報処理方法において、
    tはt≧2のしきい値であり、
    k≧1であり、
    mk1,mk2,…,mkt≧1であり、
    n1,n2,…,nt≧1であり、
    前記検出することは、前記書き込み系列を検出し、
    前記検出することは、前記第1及び第2の読み出し系列をそれぞれ検出し、
    前記書き込み系列を
    (w_1_1,w_1_2,…,w_1_n1,
    w_2_1,w_2_2,…,w_2_n2,

    w_t_1,w_t_2,…,w_t_nt,
    …)
    とし、
    前記第1及び第2の読み出し系列のそれぞれを
    (rk_1_1,rk_1_2,…,rk_1_mk1,
    rk_2_1,rk_2_2,…,rk_2_mk2,

    rk_t_1,rk_t_2,…,rk_t_mkt,
    …)
    とすると、
    前記インタリービング判断手段は、前記書き込み系列と前記第1及び第2の読み出し系列のそれぞれとの時系列が、
    (rk_1_1,rk_1_2,…,rk_1_mk1),
    (w_1_1,w_1_2,…,w_1_n1),
    (rk_2_1,rk_2_2,…,rk_2_mk2),
    (w_2_1,w_2_2,…,w_2_n2),

    (rk_t_1,rk_t_2,…,rk_t_mkt),
    (w_t_1,w_t_2,…,w_t_n2)

    の前記互い違いの関係の双方を満たすか判断する前記第1及び第2の判断を実行し、
    前記付加することは、前記第1及び第2の判断によって前記互い違いの関係を満たすと判断された場合に、
    i(i≧1)とし、
    前記直前の読み出しイベントグループ(r1_i_m1i,r2_i_m2i,…)
    の中で、最後に現れた読み出しイベントにおける読み出し元の追跡情報を
    (w_i_1,w_i_2,…,w_i_ni)
    の書き込みに対して付加する
    ことを特徴とする情報処理方法。
  9. コンピュータを、
    記憶手段から追跡情報の付加された第1の文字列データを読み出すための複数の読み出しイベントを含む第1の読み出し系列と、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミングと、追跡情報の付加された第2の文字列データを読み出すための複数の読み出しイベントを含む第2の読み出し系列と、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミングとを検出する読み出し系列検出手段、
    前記記憶手段に対して第の文字列データを書き込むための複数の書き込みイベントを含む書き込み系列と、前記複数の書き込みイベントの発生タイミングとを検出する書き込み系列検出手段、
    前記読み出し系列検出手段によって検出された前記第1の読み出し系列、前記第1の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記第2の読み出し系列、前記第2の読み出し系列に含まれている複数の読み出しイベントの発生タイミング、前記書き込み系列検出手段によって検出された前記書き込み系列、前記複数の書き込みイベントの発生タイミングに基づいて、「前記第1の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、「前記書き込み系列に含まれており1つ又は連続する複数の書き込みイベントを含む複数の書き込みイベントグループ」との間で、互い違いの関係を満たすか否か判断する第1の判断を行い、「前記第2の読み出し系列に含まれており1つ又は連続する複数の読み出しイベントを含む複数の読み出しイベントグループ」と、前記複数の書き込みイベントグループとの間で、互い違いの関係を満たすか否か判断する第2の判断を行うインタリービング判断手段、
    前記インタリービング判断手段の前記前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、前記書き込みイベントグループに含まれている前記書き込みイベントによって書き込まれる文字列データに、前記書き込みイベントグループとの間で前記互い違いの関係にある直前の読み出しイベントグループに属する読み出しイベントに対応する追跡情報を付加する追跡情報付加手段
    として機能させるためのプログラム。
  10. 請求項9記載のプログラムにおいて、
    前記インタリービング判断手段は、
    前記第1の読み出し系列における第1の読み出しイベントグループの後に、前記書き込み系列における第1の書き込みイベントグループが発生し、その後さらに、前記第1の読み出し系列における第2の読み出しイベントグループの後に、前記書き込み系列における第2の書き込みイベントグループが発生している場合に、前記互い違いの関係を満たすと判断する前記第1の判断を行い、
    前記第2の読み出し系列における第3の読み出しイベントグループの後に、前記第1の書き込みイベントグループが発生し、その後さらに、前記第2の読み出し系列における第4の読み出しイベントグループの後に、前記第2の書き込みイベントグループが発生している場合に、前記互い違いの関係を満たすと判断する前記第2の判断を行う
    ことを特徴とするプログラム。
  11. 請求項10記載のプログラムにおいて、
    前記追跡情報付加手段は、前記追跡情報を付与する書き込みイベントが複数の読み出しイベントに基づいて発生している場合に、これら複数の読み出しイベントのうち最後に発生した読み出しイベントにおける追跡情報を、前記書き込まれる文字列データに付与することを特徴とするプログラム。
  12. 請求項9乃至請求項11のいずれか1項に記載のプログラムにおいて、
    tはt≧2のしきい値であり、
    k≧1であり、
    mk1,mk2,…,mkt≧1であり、
    n1,n2,…,nt≧1であり、
    前記書き込み系列検出手段は、前記書き込み系列を検出し、
    前記読み出し系列検出手段は、前記第1及び第2の読み出し系列をそれぞれ検出し、
    前記書き込み系列を
    (w_1_1,w_1_2,…,w_1_n1,
    w_2_1,w_2_2,…,w_2_n2,

    w_t_1,w_t_2,…,w_t_nt,
    …)
    とし、
    前記第1及び第2の読み出し系列のそれぞれを
    (rk_1_1,rk_1_2,…,rk_1_mk1,
    rk_2_1,rk_2_2,…,rk_2_mk2,

    rk_t_1,rk_t_2,…,rk_t_mkt,
    …)
    とすると、
    前記インタリービング判断手段は、前記書き込み系列と前記第1及び第2の読み出し系列のそれぞれとの時系列が、
    (rk_1_1,rk_1_2,…,rk_1_mk1),
    (w_1_1,w_1_2,…,w_1_n1),
    (rk_2_1,rk_2_2,…,rk_2_mk2),
    (w_2_1,w_2_2,…,w_2_n2),

    (rk_t_1,rk_t_2,…,rk_t_mkt),
    (w_t_1,w_t_2,…,w_t_n2)

    の前記互い違いの関係を満たすか判断する前記第1及び第2の判断を実行し、
    前記追跡情報付加手段は、前記第1及び第2の判断によって前記互い違いの関係の双方を満たすと判断された場合に、
    i(i≧1)とし、
    前記直前の読み出しイベントグループ(r1_i_m1i,r2_i_m2i,…)
    の中で、最後に現れた読み出しイベントにおける読み出し元の追跡情報を
    (w_i_1,w_i_2,…,w_i_ni)
    の書き込みに対して付加する
    ことを特徴とするプログラム。
JP2009067407A 2008-09-29 2009-03-19 情報処理装置、情報処理方法及びこれを実現させるためのプログラム Expired - Fee Related JP4669053B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009067407A JP4669053B2 (ja) 2008-09-29 2009-03-19 情報処理装置、情報処理方法及びこれを実現させるためのプログラム
US12/411,771 US8413240B2 (en) 2008-09-29 2009-03-26 Information processing device, information processing method, and computer readable recording medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008251255 2008-09-29
JP2009067407A JP4669053B2 (ja) 2008-09-29 2009-03-19 情報処理装置、情報処理方法及びこれを実現させるためのプログラム

Publications (2)

Publication Number Publication Date
JP2010102679A JP2010102679A (ja) 2010-05-06
JP4669053B2 true JP4669053B2 (ja) 2011-04-13

Family

ID=42059180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009067407A Expired - Fee Related JP4669053B2 (ja) 2008-09-29 2009-03-19 情報処理装置、情報処理方法及びこれを実現させるためのプログラム

Country Status (2)

Country Link
US (1) US8413240B2 (ja)
JP (1) JP4669053B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615804B2 (en) * 2010-02-18 2013-12-24 Polytechnic Institute Of New York University Complementary character encoding for preventing input injection in web applications
KR101409545B1 (ko) * 2010-08-09 2014-06-19 도시바 미쓰비시덴키 산교시스템 가부시키가이샤 데이터 검색 시스템
JP5501156B2 (ja) * 2010-08-23 2014-05-21 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
US9111092B2 (en) 2011-08-29 2015-08-18 Novell, Inc. Security event management apparatus, systems, and methods
CN102651062B (zh) * 2012-04-09 2014-06-18 华中科技大学 基于虚拟机架构的恶意行为跟踪系统和方法
JP5766650B2 (ja) * 2012-04-27 2015-08-19 日本電信電話株式会社 情報処理装置、監視方法および監視プログラム
JP5952218B2 (ja) * 2013-05-16 2016-07-13 日本電信電話株式会社 情報処理装置および情報処理方法
US9171028B1 (en) * 2013-06-11 2015-10-27 Google Inc. Method of maintaining a large set of taint labels
US9519533B2 (en) * 2015-01-28 2016-12-13 Qualcomm Incorporated Data flow tracking via memory monitoring
CN109873833B (zh) * 2019-03-11 2021-08-03 浙江工业大学 一种基于卡方距离knn的数据注入攻击检测方法
US11275840B2 (en) 2019-07-29 2022-03-15 Sap Se Management of taint information attached to strings

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567900B1 (en) * 2000-08-31 2003-05-20 Hewlett-Packard Development Company, L.P. Efficient address interleaving with simultaneous multiple locality options
US8010469B2 (en) * 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US7406714B1 (en) * 2003-07-01 2008-07-29 Symantec Corporation Computer code intrusion detection system based on acceptable retrievals
US7207065B2 (en) * 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
US7831995B2 (en) * 2004-10-29 2010-11-09 CORE, SDI, Inc. Establishing and enforcing security and privacy policies in web-based applications
US7860842B2 (en) * 2005-03-16 2010-12-28 Oracle International Corporation Mechanism to detect and analyze SQL injection threats
US7757282B2 (en) * 2005-05-20 2010-07-13 Microsoft Corporation System and method for distinguishing safe and potentially unsafe data during runtime processing
US7849509B2 (en) * 2005-10-07 2010-12-07 Microsoft Corporation Detection of security vulnerabilities in computer programs
US7702642B1 (en) * 2005-12-07 2010-04-20 Precise Software Solutions, Inc. Method, system and computer-readable code for instrumenting code for logging database-related strings
US20070156644A1 (en) * 2006-01-05 2007-07-05 Microsoft Corporation SQL injection detector
US20070240141A1 (en) * 2006-03-30 2007-10-11 Feng Qin Performing dynamic information flow tracking
US8510827B1 (en) * 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
US7788235B1 (en) * 2006-09-29 2010-08-31 Symantec Corporation Extrusion detection using taint analysis
US7870610B1 (en) * 2007-03-16 2011-01-11 The Board Of Directors Of The Leland Stanford Junior University Detection of malicious programs
US7882508B1 (en) * 2007-04-27 2011-02-01 Hewlett-Packard Development Company, L.P. Tracing information flow using a signature
US20090049547A1 (en) * 2007-08-13 2009-02-19 Yuan Fan System for real-time intrusion detection of SQL injection web attacks
US8321840B2 (en) * 2007-12-27 2012-11-27 Intel Corporation Software flow tracking using multiple threads
US8074281B2 (en) * 2008-01-14 2011-12-06 Microsoft Corporation Malware detection with taint tracking
US8117660B2 (en) * 2008-06-19 2012-02-14 Microsoft Corporation Secure control flows by monitoring control transfers
US20090328210A1 (en) * 2008-06-30 2009-12-31 Microsoft Corporation Chain of events tracking with data tainting for automated security feedback
US8893280B2 (en) * 2009-12-15 2014-11-18 Intel Corporation Sensitive data tracking using dynamic taint analysis
US8615804B2 (en) * 2010-02-18 2013-12-24 Polytechnic Institute Of New York University Complementary character encoding for preventing input injection in web applications
US10339575B2 (en) * 2010-03-05 2019-07-02 International Business Machines Corporation Method and system for provenance tracking in software ecosystems
US20110314337A1 (en) * 2010-06-18 2011-12-22 International Business Machines Corporation Method and Apparatus for Locating Input-Model Faults Using Dynamic Tainting

Also Published As

Publication number Publication date
US20100083379A1 (en) 2010-04-01
US8413240B2 (en) 2013-04-02
JP2010102679A (ja) 2010-05-06

Similar Documents

Publication Publication Date Title
JP4669053B2 (ja) 情報処理装置、情報処理方法及びこれを実現させるためのプログラム
US9824214B2 (en) High performance software vulnerabilities detection system and methods
CN104081350B (zh) 使用动态编程语言的元数据的运行时优化方法和系统
JP5786512B2 (ja) インジェクション攻撃を検出するためのセキュリティ・ソフトウェア・モジュールを検証するためのハイブリッド制約条件の求解
EP2479673B1 (en) Software architecture for validating C++ programs using symbolic execution
US8381194B2 (en) Methods and apparatuses for selective code coverage
EP2420931B1 (en) Solving hybrid constraints to generate test cases for validating a software module
EP2407887B1 (en) Solving hybrid constraints to validate specification requirements of a software module
EP2479674A1 (en) Optimizing libraries for validating C++ programs using symbolic execution
US9336125B2 (en) Systems and methods for hardware-assisted type checking
US20110047531A1 (en) Methods and apparatuses for selective code coverage
US20140122836A1 (en) Confidence-driven selective predication of processor instructions
CN104090798A (zh) 动静态结合的中断驱动程序数据竞争检测方法
US8572748B2 (en) Label-based taint analysis
US8650546B2 (en) Static analysis based on observed string values during execution of a computer-based software application
Monniaux et al. On the complexity of cache analysis for different replacement policies
Song et al. Infeasible path detection based on code pattern and backward symbolic execution
Atig et al. Context-bounded analysis of TSO systems
Jiang et al. An exploitability analysis technique for binary vulnerability based on automatic exception suppression
US20090210655A1 (en) Processor, method and computer program product including specialized store queue and buffer design for silent store implementation
KR20220154821A (ko) 프로세서 파이프라인에서 간접 점프의 페치 스테이지 처리
US12008149B2 (en) Method and system for on demand control of hardware support for software pointer authentification in a computing system
Saeed et al. Tag‐Protector: An Effective and Dynamic Detection of Illegal Memory Accesses through Compile Time Code Instrumentation
WO2021090497A1 (ja) 推論装置、推論方法、及びコンピュータ読み取り可能な記録媒体
Fattahi et al. Introduction to SinJAR (a New Tool for Reverse Engineering Java Applications) and Tracing Its Malicious Actions Using Hidden Markov Models

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101221

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4669053

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees