JP7452691B2 - 解析機能付与装置、解析機能付与方法および解析機能付与プログラム - Google Patents

解析機能付与装置、解析機能付与方法および解析機能付与プログラム Download PDF

Info

Publication number
JP7452691B2
JP7452691B2 JP2022556760A JP2022556760A JP7452691B2 JP 7452691 B2 JP7452691 B2 JP 7452691B2 JP 2022556760 A JP2022556760 A JP 2022556760A JP 2022556760 A JP2022556760 A JP 2022556760A JP 7452691 B2 JP7452691 B2 JP 7452691B2
Authority
JP
Japan
Prior art keywords
function
input
propagation
analysis
output
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.)
Active
Application number
JP2022556760A
Other languages
English (en)
Other versions
JPWO2022079840A1 (ja
Inventor
利宣 碓井
知範 幾世
裕平 川古谷
誠 岩村
潤 三好
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2022079840A1 publication Critical patent/JPWO2022079840A1/ja
Application granted granted Critical
Publication of JP7452691B2 publication Critical patent/JP7452691B2/ja
Active 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、解析機能付与装置、解析機能付与方法および解析機能付与プログラムに関する。
マルウェアを用いたスパム(マルスパム)やファイルレスマルウェアなどの多様な攻撃の形態が生じるに伴って、悪性な挙動を示すスクリプト(悪性スクリプト)による攻撃の脅威が顕在化している。
悪性スクリプトとは、悪意のある挙動を持ったスクリプトであり、スクリプトエンジンの提供する機能を悪用して攻撃を実現するプログラムである。一般に、オペレーティングシステム(OS:Operating System)がデフォルトで具備するスクリプトエンジンや、Webブラウザや文書ファイルのビューアなど、特定のアプリケーションの具備するスクリプトエンジンを用いて攻撃が実施される。
こうしたスクリプトエンジンの多くは、ユーザの許可が必要な場合もあるものの、ファイル操作やネットワーク通信、プロセスの起動など、システムを介した挙動も実現可能である。したがって、悪性スクリプトを用いた攻撃は、実行ファイルのマルウェアを用いた攻撃と同様に、ユーザに対しての脅威となる。
悪性スクリプトによる攻撃に対策を講じるためには、スクリプトの持つ挙動を正確に把握する必要があるため、スクリプトを解析することで、その挙動を明らかにする技術が求められている。
悪性スクリプトを解析する際に生じる問題として、コードの難読化がある。悪性スクリプトの多くは、難読化と呼ばれる、解析を妨害する処理が施されている。難読化は、故意にコードの複雑さを高めることで、コードの表層的な情報に基づいて解析するのを困難にする。すなわち、スクリプトを実行せずに、コードから得られる情報で解析する、静的解析と呼ばれる解析方法を妨害する。
特に、実行するコードの一部を外部から動的に取得する場合は、そのコードは実行しなければ得られないため、静的には解析できない。したがって、静的解析はその原理上、不可能となる。
一方で、スクリプトを実行し、その振る舞いを監視することで挙動を知る動的解析と呼ばれる手法は、前述のような難読化の影響を受けない。そのため、悪性スクリプトの解析においては、動的解析に基づく手法が主に用いられている。
動的解析に関する、既存の解析技術の多くは、スクリプトの実行における制御の流れ(制御フロー)を追って挙動を解析するが、さらなる詳細な挙動の解析のためには、制御フローの解析のみならず、データの流れ(データフロー)の解析も求められる。
悪性スクリプトが扱うデータの流れを精緻に追跡できれば、解析者はそのデータの属性(たとえば,復号鍵であるか、攻撃者からの指令であるかなど)を把握できる。これにより、悪性スクリプトの挙動をより詳細に明らかにできる。
こうしたデータの追跡を実現する手法として、テイント解析が存在する。テイント解析とは、データにテイントタグ(以降、タグと呼ぶ)という属性情報を付与し、それをデータの移動にあわせて伝播させていくことで、データフローを解析する技術である。
スクリプトに対するテイント解析の実現について、たとえば、非特許文献1には、PHPのZendフレームワークの仮想機械(VM:Virtual Machine)に対して、タグの伝播ルールを実装し、テイント解析を実現している。この手法によれば、PHPのスクリプトのデータフローを解析できる。
また、非特許文献2には、JavaScriptのVMに対して、伝播ルールを実装し、テイント解析を実現している。この手法によれば、JavaScriptのスクリプトのデータフローを解析できる。
非特許文献3には、JavaScriptのVMではなく、抽象機械を用いてテイント解析を実現する手法が記載されている。この手法によれば、特定のVMによらず、様々な実行環境でのJavaScriptのスクリプトに対して、データフローの解析を実現できる。
そして、非特許文献4には、スクリプトの各行の左辺値のタグを右辺値に伝播させる伝播ルールをスクリプトに直接注入することで、テイント解析を実現する手法が記載されている。この手法によれば、スクリプト言語の種類を問わず、データフローの解析を実現できる。
Monga et al.(2009)A hybrid analysis framework for detecting web application vulnerabilities. Vogt et al.(2007) Cross-Site Scripting Prevention with Dynamic Data Tainting and Static Analysis. Karim et al.(2018) Platform-Independent Dynamic Taint Analysis for JavaScript. Xu et al.(2005) Practical Dynamic Taint Analysis for Countering Input Validation Attacks on Web Applications.
しかしながら、上述した従来技術では、様々なスクリプトエンジンに対し、細粒度のテイント解析を実現することができないという問題がある。
たとえば、非特許文献1及び非特許文献2に記載の手法では、スクリプトエンジンごとに個別にテイント解析機能を設計し、実装する必要があるという課題があった。また、テイント解析機能を実現するために、スクリプトエンジンの仮想機械の内部実装の情報を事前に知る必要があるという課題があった。
非特許文献3に記載の手法では、JavaScriptであれば特定のスクリプトエンジンには依存しないものの、やはり、JavaScriptという特定のスクリプト言語に依存するという課題があった。
非特許文献4に記載の手法では、スクリプト本体へのコードの注入が必要であるため難読化されたスクリプトへの対応が困難であることと、右辺値のタグを左辺値に伝播させるのみの粗粒度の解析であることから、悪性スクリプトの解析には適さないという課題があった。
本発明は、上記に鑑みてなされたものであって、多様なスクリプトエンジンやスクリプト言語に対して個別の設計及び実装を要さず、事前の内部実装の情報なしに、難読化された悪性スクリプトにも適用可能な、細粒度のテイント解析機能の付与を実現できる装置を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明に係る解析機能付与装置は、テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得部と、複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出部と、実行トレースのうち、型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出部と、型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出部と、伝播漏れ関数に対して、タグを強制的に伝播させる強制伝播ルールを生成する生成部と、強制伝播ルールを基にして、スクリプトエンジンにテイント解析機能を付与する解析機能付与部とを備えることを特徴とする。
本発明によれば、様々なスクリプトエンジンに対し、細粒度のテイント解析機能の付与を実現することができる。
図1は、本実施例に係る解析機能付与装置の構成を示す機能ブロック図である。 図2は、テストスクリプトの一例を示す図である。 図3は、実行トレースの一例を示す図である。 図4は、テイント解析を説明するための図(1)である。 図5は、テイント解析を説明するための図(2)である。 図6は、テイント解析を説明するための図(3)である。 図7は、テイント解析を説明するための図(4)である。 図8は、強制伝播ルールDBの一例を示す図である。 図9は、実行トレース取得部の処理手順を示すフローチャートである。 図10は、型変換関数検出部の処理を説明するための図である。 図11は、改造版Smith-Watermanアルゴリズムを説明するための図である。 図12は、型変換関数検出部の処理手順を示すフローチャートである。 図13は、改造版Smith-Watermanアルゴリズムの処理を示すフローチャート(1)である。 図14は、改造版Smith-Watermanアルゴリズムの処理を示すフローチャート(2)である。 図15は、入出力検出部の処理を説明するための図である。 図16は、入出力検出部の処理手順を示すフローチャートである。 図17は、伝播漏れ検出部の処理を説明するための図である。 図18は、伝播漏れ検出部の処理手順を示すフローチャートである。 図19は、強制伝播ルール生成部の処理手順を示すフローチャートである。 図20は、テイント解析機能付与部の処理手順を示すフローチャートである。 図21は、本実施例に係る解析機能付与装置の処理手順を示すフローチャートである。 図22は、解析機能付与プログラムを実行するコンピュータの一例を示す図である。
以下に、本願の開示する解析機能付与装置、解析機能付与方法および解析機能付与プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例に係る解析機能付与装置の構成について説明する。図1は、本実施例に係る解析機能付与装置の構成を示す機能ブロック図である。図1に示すように、解析機能付与装置100は、通信制御部110と、入力部120と、出力部130と、記憶部140と、制御部150とを有する。解析機能付与装置100は、パソコン等の汎用コンピュータで実現される。
通信制御部110は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した外部の装置と制御部150との通信を制御する。
入力部120は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部150に対して処理開始などの各種指示情報を入力する。出力部130は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置等によって実現される。
記憶部140は、テストスクリプト141と、スクリプトエンジンバイナリ142と、実行トレースDB(Data Base)143と、テイント解析ツール144と、強制伝播ルールDB145とを有する。
テストスクリプト141は、テスト用のスクリプトを示す。図2は、テストスクリプトの一例を示す図である。たとえば、図2に示すように、テストスクリプト141は、スクリプト141Aと、スクリプト141Bとを有する。
スクリプトエンジンバイナリ142は、スクリプトを実行するスクリプトエンジン(VM)のバイナリプログラムである。なお、図示を省略するが、記憶部140には、計装用仮想機械のデータが格納されている。かかる計装用仮想機械は、バイナリプログラムに対してフックをし、実行中の監視を可能にするVMである。たとえば、計装用仮想機械の上でフックをしたスクリプトエンジンバイナリ142を用いてスクリプトを実行すると、スクリプトエンジンバイナリ142を監視しながら、スクリプトを実行することができる。
実行トレースDB143は、テストスクリプト141をスクリプトエンジンバイナリ142に実行させることで得られるトレースを保持する。以下の説明では、テストスクリプト141をスクリプトエンジンバイナリ142に実行させることで得られるトレースを、「実行トレース」と表記する。
図3は、実行トレースの一例を示す図である。図3に示すように、実行トレース10は、分岐命令に関するトレース10aと、メモリアクセスに関するトレース10bが含まれる。複数のスクリプトが実行される場合には、実行トレースDB143には、各スクリプトに対応した実行トレースが格納される。
テイント解析ツール144は、テイント解析を実行するツールである。テイント解析を実行することで、伝播漏れ関数を検出することが可能となる。
テイント解析とは、プログラム中のデータの流れを追跡して解析する技術である。テイント解析では、特定のデータ(テイントソース、以降ソースと呼ぶ)にテイントタグと呼ばれる属性情報を付与し、データの移動に合わせてタグを伝播させていく。そして、テイント解析では、あるデータ(テイントシンク、以降シンクと呼ぶ)のタグを確認し、データの属性を特定する。
図4~図7は、テイント解析を説明するための図である。図4について説明する。VM20には、メモリ20aと、仮想CPU21とが含まれ、仮想CPU21には、レジスタ21aが含まれる。テイント解析では、タグ管理用の領域として、シャドウメモリ20bと、シャドウレジスタ21bとをVM20に実装する。
図5の説明に移行する。テイント解析では、特定の書き込みによって、メモリ20aの領域20a-1にデータが書き込まれた場合、タグ20b-1を、シャドウメモリ20bに付与する。特定の書き込みは、ディスク5のI/O(Input Output)等に対応する。この場合、タグ20b-1には、たとえばディスク5に対応することを示す属性情報を持たせる。
図6の説明に移行する。テイント解析では、メモリの移動やコピーに合わせて、タグを伝播させていく。たとえば、領域20a-1が、レジスタ21aの領域20a-2に移動した場合には、シャドウレジスタ21bに、タグ20b-2を設定する。また、領域20a-2のデータが、メモリ20aの領域20a-3に移動した場合には、シャドウメモリ20bに、タグ20b-3を設定する。
図7の説明に移行する。テイント解析では、特定のメモリ読み込み時に、タグを確認することで、データの流通元を特定することができる。特定のメモリ読み込みは、ネットワーク6に接続する通信等に対応する。たとえば、シャドウメモリ20b、シャドウレジスタ21bのタグを確認することで、データの流通元が、ディスク5であることを特定することができる。
なお、テイント解析によって、タグを伝播させていく過程において、タグが伝播しない関数が、スクリプトに含まれる場合がある。たとえば、テイント解析において、本来はデータに依存関係があるソースとシンクの間で、ソースに設定したタグが、シンクにおいて設定されていない場合に、タグが伝播していないことを特定できる。入出力にデータの依存関係があるにも関わらずタグが伝播しない関数を「伝播漏れ関数」と表記する。
図1の説明に戻る。強制伝播ルールDB145は、伝播漏れ関数に対して、強制的にタグを伝播させるルールを保持する。伝播漏れ関数に対して、強制的にタグを伝播させるルールを「強制伝播ルール」と表記する。図8は、強制伝播ルールDBの一例を示す図である。図8に示すように、伝播漏れ関数と、かかる伝播漏れ関数でソースとなる入力の変数とシンクとなる出力の変数とが定義される。「func_offset」は伝播漏れ関数のスクリプトエンジンバイナリ内での位置を、オフセットで示している。図8では、スクリプトエンジンバイナリの先頭から「0x455af0」の位置に、この伝播漏れ関数が存在することを示している。「in_arg_idx」および「out_arg_idx」は、それぞれ入力と出力の変数が伝播漏れ関数の何番目の引数または返り値にあたるかを示す添字である。図8では、「in_arg_idx」が「0」であることは、第一引数が入力であることを示し、「out_arg_idx」が「-1」であることは、返り値が出力であることを示している。「in_arg_idx」および「out_arg_idx」は、それぞれ入力と出力の変数をどのような型として解釈するべきかを示している。図8では、「in_arg_type」が「STRUCT|OFF_8|CHAR_PTR」であることは、前述の「in_arg_idx」が「0」であることと併せて、第一引数を構造体として解釈し、そのオフセットが+8のメンバ変数をchar*型として解釈すると入力値が得られることを示す。また、「out_arg_type」が「STRUCT|OFF_16|UINT32」であることは、前述の「out_arg_idx」が「-1」であることと併せて、返り値を構造体として解釈し、そのオフセットが+16のメンバ変数をuint32_t型として解釈すると出力値が得られることを示す。したがって、この強制伝播ルールは、「func_offset」の位置の伝播漏れ関数の持つ「in_arg_idx」の変数を「in_arg_type」の型で解釈したメモリにタグが付いていれば、「out_arg_idx」の変数を「out_arg_type」の型で解釈したメモリに強制的に伝播させることを示す。
スクリプトを仮想機械バイナリ(スクリプトエンジン)142に入力して、スクリプトを実行する場合に、強制伝播ルールに従って、スクリプトに含まれる伝播漏れ関数に、値を設定する機能を、スクリプトエンジンに付与することで、伝播漏れを抑止することができる。
制御部150は、受付部151、実行トレース取得部152、型変換関数検出部153、入出力検出部154、伝播漏れ検出部155、強制伝播ルール生成部156、テイント解析機能付与部157を有する。
受付部151は、入力部120から、テストスクリプト141およびスクリプトエンジンバイナリ142の入力を受け付ける。受付部151は、テストスクリプト141およびスクリプトエンジンバイナリ142を、記憶部140に格納する。受付部151は、通信制御部110を介して、外部装置から、テストスクリプト141およびスクリプトエンジンバイナリ142を受け付けてもよい。
実行トレース取得部152は、テストスクリプト141を、スクリプトエンジンバイナリ142に入力して実行させ、トレースを取得し、取得したトレースを実行トレースDB143に格納する。たとえば、実行トレース取得部152は、スクリプトエンジンバイナリ142に、トレースを取得するためのフックを設定する。フックは、プログラムの処理に独自の処理を割り込ませる機能である。
図9は、実行トレース取得部の処理手順を示すフローチャートである。図9に示すように、実行トレース取得部152は、テストスクリプト141およびスクリプトエンジンバイナリ142を取得する(ステップS10)。実行トレース取得部152は、スクリプトエンジンバイナリ142にメモリアクセストレースを取得するためのフックを設定する(ステップS11)。
実行トレース取得部152は、スクリプトエンジンバイナリ142に分岐命令のトレースを取得するためのフックを設定する(ステップS12)。実行トレース取得部152は、テストスクリプト141をスクリプトエンジンバイナリ142に入力して実行する(ステップS13)。
実行トレース取得部152は、スクリプトエンジンバイナリ142のフックから得られる実行トレースを実行トレースDB143に格納する(ステップS14)。実行トレース取得部152は、入力されたテストスクリプト141をすべて実行していない場合には(ステップS15,No)、ステップS13に移行する。一方、実行トレース取得部152は、入力されたテストスクリプト141をすべて実行した場合には(ステップS15,Yes)、処理を終了する。
図1の説明に戻る。型変換関数検出部153は、実行トレースDB143に格納された複数の実行トレースを基にして、類似する系列を特定し、特定した系列に含まれる関数呼び出しを、型変換関数の候補として検出する。たとえば、型変換関数検出部153は、差分実行解析と呼ばれる手法を用いて、型変換関数の候補を検出する。
図10は、型変換関数検出部の処理を説明するための図である。図10に示す例では、実行トレース30Aと、実行トレース30Bとを用いて説明する。実行トレース30Aは、図2に示したスクリプト141Aを、スクリプトエンジンバイナリ142で実行することで得られる実行トレースである。実行トレース30Bは、図2に示したスクリプト141Bを、スクリプトエンジンバイナリ142で実行することで得られる実行トレースである。分岐命令に関するトレースの時系列方向を、方向7とする。
型変換関数検出部153は、実行トレース30Aの方向7の順に、実行トレース30Aの系列と、実行トレース30Bの系列とを比較し、類似する系列を特定する。たとえば、系列30A-1と、系列30B-1,30B-2,30B-3との類似度が所定の閾値を超えるものとする。型変換関数検出部153は、系列30A-1と、系列30B-1,30B-2,30B-3に共通して含まれている関数呼び出しを、型変換関数の候補として抽出する。型変換関数検出部153は、型変換関数の候補の情報を、入出力検出部154に出力する。
ここで、図2に示したテストスクリプト141Aと141Bでは、それぞれ「time.time()」が1回および3回呼び出されている。呼び出された結果は、実行トレースに反映され、「time.time()」に対応する分岐のトレースの系列が141Aに対応する30Aには1回(30A-1に対応)、141Bに対応する30Bには3回(30B-1、30B-2、30B-3に対応)出現する。time.time()の中では型変換が内部的に行われており、30A-1、30B-1、30B-2、30B-3の中にそれぞれその型変換関数の呼び出しが存在することが期待される。
たとえば、型変換関数検出部153は、改造版Smith-Watermanアルゴリズムによって、類似する系列を特定する。図11は、改造版Smith-Watermanアルゴリズムを説明するための図である。型変換関数検出部153は、DP表40を設定し、DP表40の表側(行)40lに、型変数関数を一回呼び出した実行トレース(たとえば、実行トレース30A)を設定する。型変換関数検出部153は、DP表40の表頭(列)40Cに、型変数関数をN回呼び出した実行トレース(たとえば、実行トレース30B)を設定する。
型変換関数検出部153は、DP表40の各セル(i,j)に、マッチスコアF(i,j)によって算出される値を設定する。iはi番目の行に対応し、jはj番目の列に対応する。iおよびjの初期値を「0」とする。たとえば、型変換関数検出部153は、式(1)に基づいて、マッチスコアF(i,j)を計算する。式(1)に含まれるs(i,j)は、式(2)によって定義される。なお、式(1)のdには、「-1」が設定される。
Figure 0007452691000001
Figure 0007452691000002
型変換関数検出部153は、各セルにマッチスコアを設定した後に、マッチスコアが最大となるセル(4,4)を抽出し、抽出したセルを基点にバックトラックして、最も相同性の高い系列を抽出する。型変換関数検出部153は、図11のDP表40から、系列「SABC」を抽出する。
型変換関数検出部153は、抽出した系列に関する部分を除いた部分40-1を用いて、新たなDP表40aを生成する。型変換関数検出部153は、DP表40aの各セル(i,j)に、マッチスコアF(i,j)によって算出される値を設定する。
型変換関数検出部153は、各セルにマッチスコアを設定した後に、マッチスコアが最大となるセル(4,4)を抽出し、抽出したセルを基点にバックトラックして、最も相同性の高い系列を抽出する。型変換関数検出部153は、図11のDP表40aから、系列「ABC」を抽出する。
型変換関数検出部153は、抽出した系列に関する部分を除いた部分40-2を用いて、新たなDP表40bを生成する。型変換関数検出部153は、DP表40bの各セル(i,j)に、マッチスコアF(i,j)によって算出される値を設定する。
型変換関数検出部153は、各セルにマッチスコアを設定した後に、マッチスコアが最大となるセル(3,4)を抽出し、抽出したセルを基点にバックトラックして、最も相同性の高い系列を抽出する。型変換関数検出部153は、図11のDP表40bから、系列「ABC」を抽出する。
型変換関数検出部153は、上記処理を実行することで、類似する系列「SABC」、「ABC」、「ABC」を特定する。
図12は、型変換関数検出部の処理手順を示すフローチャートである。図12に示すように、型変換関数検出部153は、実行トレースDB143からテストスクリプト141A、141Bによる実行トレースを取得する(ステップS20)。
型変換関数検出部153は、改造版Smith-Watermanアルゴリズムの処理を実行する(ステップS21)。型変換関数検出部153は、得られた係数を型変換関数の候補として出力する(ステップS22)。
次に、図12のステップS21に示した改造版Smith-Watermanアルゴリズムの処理の一例について説明する。図13、図14は、改造版Smith-Watermanアルゴリズムの処理を示すフローチャートである。
図13について説明する。型変換関数検出部153は、実行トレースDB143から実行トレースを取得する(ステップS30)。型変換関数検出部153は、型変換関数を1回呼び出した実行トレースをDP表の表側に設定する(ステップS31)。
型変換関数検出部153は、型変換関数をN回呼び出した実行トレースをDP表の表頭に設定する(ステップS32)。型変換関数検出部153は、i=0、j=0に設定する(ステップS33)。型変換関数検出部153は、マッチスコアF(i,j)を算出する(ステップS34)。
型変換関数検出部153は、iが表頭の長さに達していない場合には(ステップS35,No)、iに1を加算し(ステップS36)、ステップS34に移行する。
一方、型変換関数検出部153は、iが表頭の長さに達した場合には(ステップS35,Yes)、図14のステップS37に移行する。
図14の説明に移行する。型変換関数検出部153は、jが表側の長さに達していない場合には(ステップS37,No)、iに0を設定し、jに1を加算し(ステップS38)、図13のステップS34に移行する。
型変換関数検出部153は、jが表側の長さに達した場合には(ステップS37,Yes)、マッチスコアが最大となるセルを抽出する(ステップS39)。型変換関数検出部153は、バックトラックして最も相同性の高い系列を抽出する(ステップS40)。
型変換関数検出部153は、N個の系列を取り出していない場合には(ステップS41,No)、抽出した系列と同じ行で抽出した系列を除いた部分で、DP表を新たに作成し(ステップS42)、図13のステップS33に移行する。
型変換関数検出部153は、N個の系列を取り出した場合には(ステップS41,Yes)、抽出した全N個の系列の各々の類似度を算出する(ステップS43)。型変換関数検出部153は、類似度が所定の閾値を超えていない場合には(ステップS44,No)、マッチスコアが最大の代わりに次に大きいセルを抽出することで、再度処理(ステップS39以降の処理)を実施し(ステップS45)、図13のステップS31に移行する。
一方、型変換関数検出部153は、類似度が所定の閾値を超えた場合には(ステップS44,Yes)、抽出した系列に含まれている関数呼び出しを型変換関数の候補とする(ステップS46)。型変換関数検出部153は、型変換関数の候補を出力する(ステップS47)。
図1の説明に戻る。入出力検出部154は、実行トレースのうち、型変換関数の候補の引数および返り値から、入出力の関係にある変数を検出する。入出力検出部154は、検出した入出力の関係にある変数と、かかる変数に対応する型変数関数の情報を、伝播漏れ検出部155に出力する。入出力関係にある変数が特定されると、この変数の型変数関数が特定されるものとする。
図15は、入出力検出部の処理を説明するための図である。入出力検出部154は、スクリプトエンジンバイナリ142にテストスクリプト141を入力して実行し、実行トレースDB143から、テストスクリプト141に対応した実行トレースを取得する。入出力検出部154は、実行トレースを、メモリ領域50に展開する。
入出力検出部154は、テストスクリプト141に含まれる所定の関数に設定された値「123456789」を特定しておく。所定の関数に設定された値を適宜、「設定値」と表記する。入出力検出部154は、メモリ領域50に展開された実行トレースのうち、型変換関数の候補に対応する領域を特定する。
入出力検出部154は、型変換関数の候補に対応する領域に対して、部分領域毎に、静的解析を実行し、部分領域に含まれる構造体の型を推定する。入出力検出部154は、複数種類の型を当てはめ、当てはめた型に対応する値を特定する。
図15に示す例では、部分領域50aに含まれる構造体について説明する。入出力検出部154は、型「int」を当てはめると、値が「34214738」となる。入出力検出部154は、型「int」を当てはめると、値が「5701715」となる。入出力検出部154は、型「wchar」を当てはめると、値が「””」となる。入出力検出部154は、型「char」を当てはめると、値が「123456789」となる。入出力検出部154は、型「char」を当てはめた場合の値が「123456789」となり、設定値と一致する。入出力検出部154は、型「char」を当てはめた場合の値「123456789」を入力値として取り出す。
続いて、部分領域50aに含まれる構造体について説明する。入出力検出部154は、型「int」を当てはめると、値が「123456789」となる。入出力検出部154は、型「int」を当てはめた場合の値(返り値)が「123456789」となり、入力値と一致(一致性が高いと判定)する。
上記処理によって、入出力検出部154は、部分領域50aに型「char」を当てはめ、部分領域50bに型「int」を当てはめた場合の関係が、型変換であることを特定する。入出力検出部154は、入出力の関係にある変数として、部分領域50a,50bを特定する。時系列方向を7aとすると、入力側の変数は、部分領域50aとなり、出力側の変数は、部分領域50bとなる。
図16は、入出力検出部の処理手順を示すフローチャートである。図16に示すように、入出力検出部154は、型変換関数の候補を取得する(ステップS50)。入出力検出部154は、スクリプトエンジンバイナリ142を取得する(ステップS51)。入出力検出部154は、テストスクリプト141を取得する(ステップS52)。
入出力検出部154は、実行トレースDB143からテストスクリプト141に対応した実行トレースを取得する(ステップS53)。入出力検出部154は、スクリプトエンジンバイナリ142の静的解析を実施し、変数の依存関係を収集する(ステップS54)。
入出力検出部154は、変数の依存関係に基づいて所定の方法で構造体の型を推定する(ステップS55)。入出力検出部154は、テストスクリプト141の型変換の入力値を取得する(ステップS56)。入出力検出部154は、メモリアクセストレースの書き込みから、入力値と一致性の高い引数および返り値の値を探索する(ステップS57)。
入出力検出部154は、異なる型でかつ一致性の高い値が見られた場合には(ステップS58,Yes)、入出力の関係にある変数を伝播漏れ検出部155に出力する(ステップS59)。一方、入出力検出部154は、異なる型でかつ一致性の高い値が見られない場合には(ステップS58,No)、型変換関数の候補は型変換関数でない旨を出力する(ステップS60)。
なお、入出力検出部154は、テストスクリプト141の所定の関数に前述の「123456789」のような値が含まれていない場合も、入出力を検出する。その場合は、入出力検出部154は、探索する値を事前に決めずにそれぞれの変数を探索していき、異なる型で一致性の高い値の組であるという条件を満たしたものを、入出力として検出する。
図1の説明に戻る。伝播漏れ検出部155は、型変換関数の入出力の関係にある変数の型変換関数に対してテイント解析を実行し、タグが伝播しない型変換関数を示す伝播漏れ関数を検出する。伝播漏れ検出部155は、伝播漏れ関数と、伝播漏れ関数の入出力の情報を、強制伝播ルール生成部156に出力する。
図17は、伝播漏れ検出部の処理を説明するための図である。伝播漏れ検出部155は、型変換関数の入力となる変数をソースとしてタグ51を設定し、テイント解析を実行する。たとえば、伝播漏れ検出部155は、テイント解析ツール144を読み出して実行することで、テイント解析を実行する。伝播漏れ検出部155は、型変換関数の出力となる変数をシンクとしたとき、タグ51が伝播されておらず、タグ51が消失している場合には、入出力の関係にある変数の型変換関数を、伝播漏れ関数として検出する。
図18は、伝播漏れ検出部の処理手順を示すフローチャートである。図18に示すように、伝播漏れ検出部155は、型変換関数とその入出力の変数とを取得する(ステップS70)。伝播漏れ検出部155は、テイント解析ツール144を取得する(ステップS71)。伝播漏れ検出部155は、テストスクリプトを取得する(ステップS72)。
伝播漏れ検出部155は、型変換関数の入力をテイントソースに設定し、出力をテイントシンクに設定する(ステップS73)。伝播漏れ検出部155は、テイント解析ツールの上で実行しながら、テストスクリプトを実行する(ステップS74)。
伝播漏れ検出部155は、テイントシンクでタグが見られない場合には(ステップS75,No)、型変換関数を、伝播漏れ関数として特定する(ステップS76)。伝播漏れ検出部155は、テイントシンクでタグが見られる場合には(ステップS75,Yes)、型変換関数が伝播漏れ関数ではないと判定する(ステップS77)。
図1の説明に戻る。強制伝播ルール生成部156は、伝播漏れ関数と、伝播漏れ関数の入出力の情報を基にして、強制伝播ルールを生成する。
たとえば、強制伝播ルール生成部156は、伝播漏れ関数のバイナリ上のオフセットが0xとなる場合には、「func_offset=0x455af0」を生成する。伝播漏れ関数の入力が第一引数の場合には「in_arg_idx=0」を生成する。そして、たとえば、伝播漏れ関数の出力が返り値の場合には「out_arg_idx=-1」を生成する。また、たとえば、入力を構造体として解釈し、そのオフセットが+8のメンバ変数をchar*型として解釈すると入力値が得られる場合、「in_arg_type=STRUCT|OFF_8|CHAR_PTR」を生成し、出力を構造体として解釈し、そのオフセットが+16のメンバ変数をuint32t型として解釈すると出力値が得られる場合、「out_arg_type=STRUCT|OFF_16|UINT32」を生成する。
図19は、強制伝播ルール生成部の処理手順を示すフローチャートである。図19に示すように、強制伝播ルール生成部156は、型変換関数とその入出力の変数とを取得する(ステップS80)。
強制伝播ルール生成部156は、各伝播漏れ関数について、強制伝播ルールを生成する(ステップS81)。強制伝播ルール生成部156は、強制伝播ルールを、強制伝播ルールDB145に格納する(ステップS82)。
図1の説明に戻る。テイント解析機能付与部157は、強制伝播ルールを基にして、スクリプトエンジンバイナリ142に、解析機能を付与する。
テイント解析機能付与部157は、スクリプトエンジンバイナリ142を実行できるように設定し、強制伝播ルールの入力でタグの有無を確認するためのフックを設定し、強制伝播ルールの入力でタグがあった場合に、出力にタグを付与するフックを設定する。
たとえば、テイント解析機能付与部157は、スクリプトエンジンバイナリ142によって、スクリプトを実行する際に、伝播漏れ関数の入力値を強制伝播ルールの記載に沿って参照し(強制伝播ルール「in_arg_idx」「in_arg_type」に対応)、タグが付与されている場合には、伝播漏れ関数の出力値を強制伝播ルールの記載に沿って参照し(強制伝播ルール「out_arg_idx」「out_arg_type」に対応)、タグを強制的に付与するように、スクリプトエンジンバイナリ142に解析機能を付与する。テイント解析機能付与部157は、かかる解析機能を付与したスクリプトエンジンバイナリ142を、スクリプト向けのテイント解析ツールとして出力する。
図20は、テイント解析機能付与部の処理手順を示すフローチャートである。図20に示すように、テイント解析機能付与部157は、テイント解析ツール144を取得する(ステップS90)。テイント解析機能付与部157は、スクリプトエンジンバイナリ142をテイント解析ツール144上で実行するように設定する(ステップS91)。
テイント解析機能付与部157は、強制伝播ルールDB145から強制伝播ルールを取得する(ステップS92)。テイント解析機能付与部157は、スクリプトエンジンバイナリ142に、強制伝播ルールの入力でタグの有無を確認するフックを設定する(ステップS93)。
テイント解析機能付与部157は、仮想機械バイナリに、強制伝播ルールの入力でタグがあった場合に、出力にタグを付与するフックを設定する(ステップS94)。テイント解析機能付与部157は、強制伝播ルールDBの強制伝播ルールをすべて処理していない場合には(ステップS95,No)、ステップS92に移行する。
テイント解析機能付与部157は、強制伝播ルールDBの強制伝播ルールをすべて処理した場合には(ステップS95,Yes)、解析機能を付与したスクリプトエンジンバイナリ142を、スクリプト向けのテイント解析ツールとして出力する(ステップS96)。
次に、解析機能付与装置100の処理手順について説明する。図21は、本実施例に係る解析機能付与装置の処理手順を示すフローチャートである。図21に示すように、解析機能付与装置100の受付部151は、テストスクリプト141および仮想機械バイナリの入力を受け付ける(ステップS101)。
解析機能付与装置100の実行トレース取得部152は、実行トレース取得処理を実行する(ステップS102)。ステップS102に示す実行トレース取得処理は、図9に示した処理手順に対応する。
解析機能付与装置100の型変換関数検出部153は、型変換関数検出処理を実行する(ステップS103)。ステップS103に示す型変換関数検出処理は、図12に示した処理手順に対応する。
解析機能付与装置100は、型変換関数の候補が検出されていない場合には(ステップS104)、処理を終了する。一方、解析機能付与装置100は、型変換関数の候補が検出された場合には(ステップS104,Yes)、ステップS105に移行する。
解析機能付与装置100の入出力検出部154は、入出力検出処理を実行する(ステップS105)。ステップS105に示す入出力検出処理は、図16に示した処理手順に対応する。
解析機能付与装置100は、入出力関係にある変数が検出されない場合には(ステップS106,No)、処理を終了する。一方、解析機能付与装置100は、入出力関係にある変数が検出された場合には(ステップS106,Yes)、ステップS107に移行する。
解析機能付与装置100の伝播漏れ検出部155は、伝播漏れ検出処理を実行する(ステップS107)。ステップS107に示す伝播漏れ検出処理は、図18に示した処理手順に対応する。
解析機能付与装置100は、伝播漏れが検出されていない場合には(ステップS108,No)、処理を終了する。一方、解析機能付与装置100は、伝播漏れが検出された場合には(ステップS108,Yes)、ステップS109に移行する。
解析機能付与装置100の強制伝播ルール生成部156は、強制伝播ルール生成処理を実行する(ステップS109)。ステップS109に示す強制伝播ルール生成処理は、図19に示した処理手順に対応する。
解析機能付与装置100は、テイント解析機能付与処理を実行する(ステップS110)。ステップS110に示すテイント解析機能付与処理は、図20に示した処理手順に対応する。解析機能付与装置100は、テイント機能が付与されたスクリプトエンジンバイナリ142を出力する(ステップS111)。
次に、本実施例に係る解析機能付与装置100の効果について説明する。解析機能付与装置100は、テストスクリプト141をスクリプトエンジンバイナリ142に入力して実行することで、複数の実行トレースを取得し、複数の実行トレースを基にして、型変換関数の候補を検出する。解析機能付与装置100は、型変換関数の候補に対して、構造体の静的解析と値の照合による探索を実行し、型変換関数の入出力を検出する。
解析機能付与装置100は、型変換関関数の入力と出力をソースとシンクとしたテイント解析により、伝播漏れを検出し、伝播漏れに対して強制伝播ルールを生成する。解析機能付与装置100は、強制伝播ルールを用いて、スクリプトエンジンバイナリ142(スクリプトエンジン)にフックを施すことで強制的にタグを伝播させ、伝播漏れを解消し、テイント解析機能を付与する。
これによって、バイナリのみしか手に入らないプロプライエタリなスクリプトエンジンに対しても、強制伝播ルールを生成し、人手でのリバースエンジニアリングを要することなく、テイント解析機能の付与を実現できる。
これにより、解析機能付与装置では、スクリプトエンジンやスクリプト言語に対して個別の設計及び実装を要することなく、事前の内部実装の情報なしに、テイント解析を実現できる。
解析機能付与装置100では、スクリプト本体へのコード注入を要さないため、難読化された悪性スクリプトにもテイント解析を適用できる。
解析機能付与装置100では、バイナリ向けのテイント解析ツールの提供する命令レベルでのテイント解析をそのままスクリプトにも適用できるため、細粒度のテイント解析機能の付与を実現できる。
解析機能付与装置100は、入力側のテイントソースにタグを設定し、関数に関する処理(メモリの移動やコピー)に合わせてタグを伝播させていき、テイントシングにおいて、タグが出力されない場合に、型変換関数を伝播漏れ関数として検出する。これによって、伝播漏れを起こす型変換関数を検出することができる。
解析機能付与装置100は、強制伝播ルールを基にして、伝播漏れ関数の入力側の変数に入力したタグを、出力側の変数から強制的に出力させる機能を、スクリプトエンジンバイナリ142に付与することで、伝播漏れを抑止することができる。
このように、解析機能付与装置100によれば、スクリプトエンジンを解析し、テイント解析機能を後付けで付与することにより、多種多様なスクリプト言語のスクリプトエンジンに対して、悪性スクリプトの解析にも適した解析機能の自動的な付与を実現できる。
上述したように、解析機能付与装置100は、多種多様なスクリプト言語で記述される悪性スクリプトの挙動の解析に有用であり、悪性スクリプトに対して、難読化に影響されずに、テイント解析を実施することに適している。このため、解析機能付与装置100は、様々なスクリプトエンジンにテイント解析機能を付与することで、悪性スクリプトのデータフローを解析し、検知などの対策に生かすことが可能である。
ところで、上述した実施例1ではスクリプト言語およびスクリプトエンジンを対象とした説明を記述したが、対象は必ずしもこれらに限定しない。すなわち、解析機能付与装置100は、ソースコードを入力としてバイトコードを生成し、それを仮想機械で解釈して実行する仕組みの言語処理系に対して、同様に構成することができる。そのため、たとえばJavaとその仮想機械のJVMのような、スクリプト言語でない言語および実行エンジンに対しても、実現され得る。
図22は、解析機能付与プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
ここで、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ1031やメモリ1010に記憶される。
また、解析機能付与プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した解析機能付与装置100が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
また、解析機能付与プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、解析機能付与プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、解析機能付与プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
100 解析機能付与装置
110 通信制御部
120 入力部
130 出力部
140 記憶部
141 テストスクリプト
142 スクリプトエンジンバイナリ
143 実行トレースDB
144 テイント解析ツール
145 強制伝播ルールDB
150 制御部
151 受付部
152 実行トレース取得部
153 型変換関数検出部
154 入出力検出部
155 伝播漏れ検出部
156 強制伝播ルール生成部
157 テイント解析機能付与部

Claims (5)

  1. テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得部と、
    前記複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出部と、
    前記実行トレースのうち、前記型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出部と、
    前記型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出部と、
    前記伝播漏れ関数に対して、前記タグを強制的に伝播させる強制伝播ルールを生成する生成部と、
    前記強制伝播ルールを基にして、前記スクリプトエンジンにテイント解析機能を付与する解析機能付与部と
    を備えることを特徴とする解析機能付与装置。
  2. 前記伝播漏れ検出部は、入力側の変数にタグを設定し、前記型変換関数に関する処理に応じて、タグを伝播させていき、出力側の変数において、前記タグが出力されない場合に、前記型変換関数を、前記伝播漏れ関数として検出することを特徴とする請求項1に記載の解析機能付与装置。
  3. 前記解析機能付与部は、前記強制伝播ルールを基にして、前記伝播漏れ関数の入力側の変数に入力したタグが、出力側の変数から出力される機能を、前記スクリプトエンジンに付与することを特徴とする請求項1または2に記載の解析機能付与装置。
  4. 解析機能付与装置で実行される解析機能付与方法であって、
    テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得工程と、
    前記複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出工程と、
    前記実行トレースのうち、前記型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出工程と、
    前記型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出工程と、
    前記伝播漏れ関数に対して、前記タグを強制的に伝播させる強制伝播ルールを生成する生成工程と、
    前記強制伝播ルールを基にして、前記スクリプトエンジンにテイント解析機能を付与する解析機能付与工程と
    を含んだことを特徴とする解析機能付与方法。
  5. テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得手順と、
    前記複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出手順と、
    前記実行トレースのうち、前記型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出手順と、
    前記型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出部と、
    前記伝播漏れ関数に対して、前記タグを強制的に伝播させる強制伝播ルールを生成する生成手順と、
    前記強制伝播ルールを基にして、前記スクリプトエンジンにテイント解析機能を付与する解析機能付与手順と
    をコンピュータに実行させることを特徴とする解析機能付与プログラム。
JP2022556760A 2020-10-14 2020-10-14 解析機能付与装置、解析機能付与方法および解析機能付与プログラム Active JP7452691B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/038801 WO2022079840A1 (ja) 2020-10-14 2020-10-14 解析機能付与装置、解析機能付与方法および解析機能付与プログラム

Publications (2)

Publication Number Publication Date
JPWO2022079840A1 JPWO2022079840A1 (ja) 2022-04-21
JP7452691B2 true JP7452691B2 (ja) 2024-03-19

Family

ID=81208967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022556760A Active JP7452691B2 (ja) 2020-10-14 2020-10-14 解析機能付与装置、解析機能付与方法および解析機能付与プログラム

Country Status (3)

Country Link
US (1) US20230418941A1 (ja)
JP (1) JP7452691B2 (ja)
WO (1) WO2022079840A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020075335A1 (ja) 2018-10-11 2020-04-16 日本電信電話株式会社 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020075335A1 (ja) 2018-10-11 2020-04-16 日本電信電話株式会社 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KANG, Min Gyung et al.,DTA++: Dynamic Taint Analysis with Targeted Control-Frow Propagation,Proceedings of the 18th Annual Network and Distributed System Security Symposium,2011年02月,pp. 1-14,[online], [retrieved on 2024-01-29], Retrieved from <http://bitblaze.cs.berkeley.edu/papers/dta++-ndss11.pdf>
川古谷 裕平, 外2名,"テイント伝搬に基づく解析対象コードの追跡方法",情報処理学会論文誌,日本,情報処理学会,2013年08月,Vol.54, No.8,pp.2079-2089

Also Published As

Publication number Publication date
WO2022079840A1 (ja) 2022-04-21
JPWO2022079840A1 (ja) 2022-04-21
US20230418941A1 (en) 2023-12-28

Similar Documents

Publication Publication Date Title
Feng et al. Apposcopy: Semantics-based detection of android malware through static analysis
JP5844809B2 (ja) プログラミングルール違反に対するソースコードマイニング
Zhang et al. Sidebuster: automated detection and quantification of side-channel leaks in web application development
KR102415971B1 (ko) 악성 모바일 앱 감지 장치 및 방법
JP7115552B2 (ja) 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム
Devesa et al. Automatic behaviour-based analysis and classification system for malware detection
JP7287480B2 (ja) 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム
JP2013536522A5 (ja)
WO2022180702A1 (ja) 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法
Yesir et al. Malware detection and classification using fastText and BERT
Boxler et al. Static taint analysis tools to detect information flows
CN114462044A (zh) 一种基于污点分析的uefi固件漏洞静态检测方法及装置
Sun et al. Osprey: A fast and accurate patch presence test framework for binaries
KR102110735B1 (ko) 취약점 탐색을 위한 바이너리 재생성 방법 및 시스템
CN111291377A (zh) 一种应用漏洞的检测方法及系统
JP7452691B2 (ja) 解析機能付与装置、解析機能付与方法および解析機能付与プログラム
Chen et al. ARMORY: An automatic security testing tool for buffer overflow defect detection
Huang et al. Semantic-aware vulnerability detection
JPWO2017216924A1 (ja) 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
WO2023067665A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム
Shahriar et al. A model-based detection of vulnerable and malicious browser extensions
Liu et al. Automated binary analysis: A survey
KR101583133B1 (ko) 스택 기반 소프트웨어 유사도 평가 방법 및 장치
Bhardwaj et al. Fuzz testing in stack-based buffer overflow
WO2023067663A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230208

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: 20240206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240219

R150 Certificate of patent or registration of utility model

Ref document number: 7452691

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150