JP2019527892A - 仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出 - Google Patents

仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出 Download PDF

Info

Publication number
JP2019527892A
JP2019527892A JP2019503727A JP2019503727A JP2019527892A JP 2019527892 A JP2019527892 A JP 2019527892A JP 2019503727 A JP2019503727 A JP 2019503727A JP 2019503727 A JP2019503727 A JP 2019503727A JP 2019527892 A JP2019527892 A JP 2019527892A
Authority
JP
Japan
Prior art keywords
application
virtual address
binary code
virtual
code
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.)
Granted
Application number
JP2019503727A
Other languages
English (en)
Other versions
JP6704504B2 (ja
JP2019527892A5 (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 クアルコム,インコーポレイテッド
Publication of JP2019527892A publication Critical patent/JP2019527892A/ja
Publication of JP2019527892A5 publication Critical patent/JP2019527892A5/ja
Application granted granted Critical
Publication of JP6704504B2 publication Critical patent/JP6704504B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/562Static detection
    • G06F21/565Static detection by checking file integrity
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • 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/033Test or assess software
    • 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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

コンピューティングデバイス上で実行されるアプリケーションのハイレベル機能を検出するためのシステム、方法、およびコンピュータプログラムが開示される。一方法は、コンピューティングデバイス上のセキュアなメモリに、アプリケーションのための仮想アドレスマッピングテーブルを記憶するステップを含む。仮想アドレスマッピングテーブルは、対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリコードにおける複数の仮想アドレスを含む。アプリケーションは、ハイレベルオペレーティングシステム(HLOS)に登録される。アプリケーションバイナリコードの実行中に、HLOSは、仮想アドレスマッピングテーブルに基づいて、ターゲットアプリケーション機能に対応する仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出する。

Description

優先権主張および関連出願の相互参照
本特許出願は、その内容全体が参照により本明細書に組み込まれる、2016年7月29日に出願され「KERNEL-BASED DETECTION OF TARGET APPLICATION FUNCTIONALITY USING VIRTUAL ADDRESS MAPPING」と題する米国仮出願第62/368,223号に対する米国特許法第119条(e)項に基づく優先権を主張する。
システムまたはプラットフォームレイヤにおける顕著な活動を示さず、したがってアプリケーション実行の有用な機能情報および挙動情報を検出する機会を提供しないハードウェアプラットフォーム上で実行される様々なハイレベルアプリケーションがある。
システムおよびプラットフォームレベルにおいて痕跡(indicative trace)を残さないデバイス上での実行中のセキュリティエクスプロイト(たとえば、クロスサイトスクリプティング)に対して損なわれたハイレベルウェブブラウザアプリケーションである一般的な例。システムライブラリ、プラットフォーム、SOCハードウェアを精査すること、またはデバイスレベル活動を注視することのいずれかによって、ハイレベルアプリケーション上でそのような活動が発生していると判断する方法がない。
したがって、デバイス上で実行される様々なサードパーティ製アプリケーションに対するプラットフォームレベル制御を改善するために、またこれらの実行中のハイレベルアプリケーションの機能活動および挙動活動の一部を検出するために、プラットフォームのHLOSまたはカーネルが理解できる形式でハイレベルアプリケーションの機能および挙動を表現および通信することを可能にする機構を開発する必要がある。これにより、プラットフォームが実行中のアプリケーションの挙動に対する理解を深めることができるようになり、プラットフォームが実行中のアプリケーションの様々な異なる状況に対処するために決定し、措置を講じることができるようになる。
一例として、サードパーティ製ウェブブラウザアプリケーション上のウェブセキュリティエクスプロイトを防止するプラットフォームレベルの決定が、情報を使用して行われ得る。例示的な使用の他の領域は、HLOSまたはカーネルレイヤにおいて本開示における機構を使用してアプリケーションの特定の機能的性質または挙動性質が検出されると、プラットフォームが様々なSOC構成要素(DDR、バス、CPU、キャッシュ)の周波数を引き上げる/引き下げるなどの決定を行うことであり、または高電力モードもしくは低電力モードを関与させる。一般に、本開示により、プラットフォームは、デバイス上で実行される様々なサードパーティ製アプリケーションに対する様々な制御を、アプリケーションによって実行されている機能を検出および認識することによって行う機会を得る。これにより、SOCおよびプラットフォームベンダーは、プラットフォームが本来制御できない様々なサードパーティ製アプリケーションに対して、プラットフォームレベルからのより良いソリューションを提供することができるようになる。
コンピューティングデバイス上で実行されるアプリケーションのハイレベル機能を検出するためのシステム、方法、およびコンピュータプログラムが開示される。1つの方法は、コンピューティングデバイス上のセキュアなメモリに、アプリケーションのための仮想アドレスマッピングテーブルを記憶するステップを含む。仮想アドレスマッピングテーブルは、対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリコードにおける複数の仮想アドレスを含む。アプリケーションは、ハイレベルオペレーティングシステム(HLOS)に登録される。アプリケーションバイナリコードの実行中に、HLOSは、仮想アドレスマッピングテーブルに基づいて、ターゲットアプリケーション機能に対応する仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出する。
別の実施形態は、処理デバイスとハイレベルオペレーティングシステム(HLOS)とを含むシステムである。処理デバイスは、アプリケーションバイナリコードを実行するように構成される。HLOSは、対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリにおける複数の仮想アドレスを含む仮想アドレスマッピングテーブルを含む。HLOSは、ターゲットアプリケーション機能に対応する仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出するように構成される。
図では、同様の参照番号は、その他の形で示されない限り、様々な図の全体を通して同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を含むことが意図されるとき、参照番号に対する文字指定は省略される場合がある。
セキュアなメモリにおける仮想アドレスマッピングを使用してターゲットアプリケーション機能を検出するためのシステムの実施形態のブロック図である。 対応するアプリケーションバイナリコードへのターゲットアプリケーション機能の例示的なマッピングを示す図である。 仮想アドレス-関数マッピングテーブル(VAFMT)の例示的な実施形態を示す図である。 図1のシステムにおける悪意のあるコード活動を検出するための方法の実施形態を示すフローチャートである。 仮想機械コード空間の境界を動的に識別するために使用されるVAFMTの別の実施形態を示す図である。 VAFMTと組み合わせて使用される識別子-仮想マッピングテーブル(IVAMT)の実施形態を示す図である。 ガベージコレクションプロセスに関連して使用されるVMコード空間の一部分を示す図である。 図1の仮想機械におけるガベージコレクション関数の例示的な注目ポイント、および仮想機械を含むアプリケーションバイナリの実行中にガベージコレクション活動の実行を検出するために使用されるVAFMTにおける機能注目ポイントの仮想アドレスを示す図である。 仮想機械ヒープの外部/内部境界の仮想アドレスの例示的なマッピングを示す図である。 仮想機械実施形態において図1のシステムにおける悪意のあるコード活動を検出するための方法の実施形態を示すフローチャートである。 特定のデータ構造タイプのオブジェクトを含む動的に割り振られたバッファの仮想アドレスを決定するために使用される特定のバッファアロケータ関数の仮想アドレス、およびバッファにおいて割り振られたオブジェクトのメンバー/フィールドの値を含むVAFMTの実施形態を示す図である。 アプリケーションバイナリコードの更新バージョンを受信したことに応答してVAFMTを自動的に更新するためのシステムの実施形態を示す合成ブロック/フロー図である。 更新された仮想アドレスおよびメタデータとともに図12のVAFMTを示す図である。 疑似バイナリコードテンプレートへの図12のVAFMTにおける機能注目ポイントの例示的なマッチングを示す図である。 アプリケーションバイナリコードの更新バージョンにおけるマッチング領域への図14の疑似バイナリコードテンプレートの例示的なマッチングを示す図である。 アプリケーションバイナリコードの更新バージョンを受信したことに応答してVAFMTを更新するための方法の実施形態を示すフローチャートである。
「例示的」という語は、本明細書では「例、事例、または例示として機能すること」を意味するために使用される。本明細書で「例示的」と記載されている任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能コンテンツを有するファイルも含み得る。加えて、本明細書で言及する「アプリケーション」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含み得る。
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能コンテンツを有するファイルも含み得る。加えて、本明細書で言及する「コンテンツ」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含み得る。
本明細書で使用する「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が構成要素であってもよい。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在してもよく、構成要素は、1つのコンピュータ上に局在化されてもよく、かつ/または2つ以上のコンピュータ間に分散されてもよい。さらに、これらの構成要素は、様々なデータ構造が記憶された様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システムの中の別の構成要素と、かつ/またはインターネットなどのネットワークにわたって信号によって他のシステムと対話する1つの構成要素からのデータなど)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスによって通信することができる。
図1は、カーネルまたはオペレーティングシステム(O/S)レイヤからのアプリケーションバイナリの所望のまたはターゲットハイレベル機能を検出するためのシステム100の実施形態を示す。図1の実施形態に示すように、システム100は、処理デバイス(たとえば、中央処理装置(CPU)102)、メモリ104、およびハイレベルオペレーティングシステム(HLOS)106を含む。メモリ104は、CPU102によって実行され得る1つまたは複数のアプリケーションを記憶する。メモリ104は、コンピューティングデバイス上にインストールされたアプリケーションに関連付けられた参照アプリケーションソースコード110に対応するアプリケーションバイナリコード108を記憶し得る。この点について、システム100は、たとえば、パーソナルコンピュータ、ラップトップコンピュータ、ワークステーション、サーバ、または、セルラー電話、スマートフォン、携帯情報端末(PDA)、ポータブルゲームコンソール、ナビゲーションデバイス、タブレットコンピュータ、ウェアラブルデバイス(たとえば、スマートウォッチ)、もしくは他のバッテリー電源式ポータブルデバイスなどのポータブルコンピューティングデバイス(PCD)を含む、任意の所望のコンピューティングデバイスまたはシステムにおいて実装され得る。
一実施形態では、カーネルまたはO/Sレイヤは、ハイレベルオペレーティングシステム(HLOS)106を含む。図1に示すように、HLOS106は、登録アプリケーションのリスト112、セキュアなメモリ(たとえば、信頼できるゾーン114)、および各登録アプリケーションのアプリケーションバイナリコード108のための特別に構成された仮想アドレスマッピングテーブルを含む。登録アプリケーションのリスト112は、セキュアな制御および/またはサポートのためにHLOS106に登録されているシステム100上にインストールされたアプリケーションを識別する。たとえば、アプリケーション(たとえば、ウェブアプリケーション、ブラウザアプリケーションなど)のアプリケーションバイナリコード108は、HLOS106に登録され、リスト112において識別され得る。当技術分野で知られているように、信頼できるゾーン114は、メモリにロードされ、かつ/または実行されるコードおよび/またはデータがセキュリティ、秘密性、完全性などに関して保護されることを保証するように構成されたセキュアなメモリまたはエリアを含む。登録アプリケーションのためのアプリケーションバイナリコード108は、所定の仮想アドレスポイントの実行を追跡することによって所望のまたはターゲットハイレベルアプリケーション機能を識別するためにHLOS106および/または信頼できるゾーン114におけるアルゴリズムによって使用される、1つまたは複数の仮想アドレスマッピングテーブルを有し得る。
システム100は、カーネルレイヤにおけるハイレベルアプリケーション機能の追跡および検出が有利である様々なアプリケーションドメインに適用され得ることを諒解されたい。たとえば、例示的な一実施形態では、カーネルは、実行中のアプリケーションの特定の機能的性質または挙動性質の検出に応答して、様々なシステムオンチップ(SoC)構成要素(たとえば、中央処理装置(CPU)、キャッシュ、ダブルデータレート(DDR)メモリ、1つもしくは複数のバスなど)の周波数を引き上げることおよび/もしくは引き下げることなど、決定を制御すること、または高電力モードおよび/もしくは低電力モードを設定すること、ならびに特定のハードウェア特徴を有効化/無効化することができる。このようにして、HLOS106およびカーネルは、デバイス上で実行される様々なサードパーティ製アプリケーションに対する様々な制御を、アプリケーションによって実行されている機能を検出および認識することによって実施する機会を有する。これにより、SOCおよびプラットフォームベンダーは、プラットフォームが本来制御できないことがある様々なサードパーティ製アプリケーションに対して、プラットフォーム/HLOS/カーネルレベルからの改善されたソリューションを提供することができるようになることを諒解されたい。
例示的なアプリケーションドメインでは、システム100は、ウェブアプリケーション、ウェブブラウザ、JavaScriptコード(「JavaScript」は登録商標。以下同じ。)などの悪意のある攻撃または他のエクスプロイトに対するリアルタイムのセキュリティ保護を実現し得る。当技術分野で知られているように、JavaScriptは、多くのウェブサイトおよびウェブアプリケーションにおいて使用されるプログラミング言語であり、JavaScriptベースの攻撃は、サイバーセキュリティに対する最上位の脅威のうちの1つである。ますます多くのウェブ活動がデスクトップコンピュータからモバイルにシフトするにつれて、JavaScript攻撃は、ポータブルコンピューティングデバイスに対する主要な脅威になりつつある。
たいていの悪意のあるJavaScript攻撃は、エクスプロイトのためにJavaScript言語の特性ならびにウェブ標準および仕様の制約を利用する。悪意のあるJavaScriptを通じたウェブベースのエクスプロイトの一般的な例には、クロスサイトスクリプティング(すなわち、XSS/CSS)、クロスサイトリクエストフォージェリ(すなわち、CSRF/XSRF)、ドライブバイダウンロード、ユーザ意図ハイジャッキング(user intent hijacking)、クリックジャッキング、分散型サービス拒否(DDoS)、JavaScriptステガノグラフィ、および様々な形式の難読化されたJavaScriptが含まれる。悪意のある挙動を検出しようと試みる際には、ハイレベルのウェブの挙動および機能の知識が必要とされるので、通常、最新のウェブおよびJavaScriptのセキュリティソリューションがブラウザソフトウェアアーキテクチャ内に組み込まれている。
しかしながら、ウェブ/JavaScriptベースのエクスプロイトは、プラットフォーム活動(たとえば、システムコール、デバイス使用など)に対する可視の指示を有しないことがあるので、HLOS、カーネルおよびデバイスプラットフォーム内のインビルトウェブセキュリティ機構は限られている。多くのウェブ/JavaScriptベースの攻撃は、外向きであり、ユーザのオンライン資産、活動、識別情報などを損なうだけである。言い換えれば、可視の活動パターンは、ウェブブラウザ/アプリケーションソフトウェア内で検出されるだけであり得、したがって、ウェブエクスプロイトに対する大半のセキュリティ機構が、ほとんど常に、ウェブブラウザアプリケーション内に組み込まれている。
この点について、システム100におけるアプリケーションバイナリコード108の例示的な実施形態は、ウェブアプリケーション、ブラウザアプリケーション、またはHLOS106が所定の仮想アドレスポイントを追跡することによってハイレベルアプリケーション機能を検出する他のアプリケーションを含み得る。図1にさらに示すように、システム100は、信頼できるゾーン114に存在する1つまたは複数の悪意のあるコード検出アルゴリズム116をさらに含み得る。悪意のあるコード検出アルゴリズム116は、仮想アドレスポイントの実行および仮想アドレスマッピングテーブルにおいて識別されるそれらの関連する機能的意味に関係するデータを受信し得る。このデータに基づいて、アルゴリズム116は、たとえば、悪意のあるコードおよび挙動、悪意のあるJavaScriptコードおよび実行などを検出し、セキュリティ脅威を解決するか、またはさもなければ悪意のある攻撃を妨害するための適切な方法を開始することができる。一実施形態では、セキュリティ脅威が検出されたとき、システム100は、脅威を自動的に解決するか、または適切な措置を講じるようユーザに指示し得る。
図1の実施形態に示すように、HLOS106によって使用される仮想アドレスマッピングテーブルは、仮想アドレス-関数マッピングテーブル120および識別子-仮想アドレスマッピングテーブル122を含み得る。HLOS106ならびにマッピングテーブル120および122は、システム100が実行中のアプリケーションバイナリコード108からの所望のまたはターゲットハイレベル機能情報を決定し得る統合プラットフォーム機構を含むことを諒解されたい。ハイレベル機能情報は、悪意のある挙動を検出するために信頼できるゾーン114において実装されたアルゴリズムおよび/またはモデル(たとえば、悪意のあるコード検出アルゴリズム116)によって使用され得る。
以下でより詳細に説明するように、システム100は、アプリケーションバイナリコード108を実行するための2つの異なる実行モデルをサポートし得る。第1の実行モデルは、(たとえば、C/C++コードからの)ネイティブバイナリ実行を伴う。第2の実行モデルは、管理されたランタイム実行(たとえば、仮想機械118による実行)を伴う。一実施形態では、仮想機械118は、JavaScriptソースからの動的ジャストインタイム(JIT)または解釈されたコードを実行し得る。管理されたランタイム実行実施形態では、仮想機械118は、バイナリコード108内で仮想機械118が実行するバイナリコード108の一部を含み得る。しかしながら、他の実施形態では、別個のVMおよびバイナリ作業負荷があり得ることを諒解されたい。
ネイティブバイナリ実行モデルの例示的な実施形態が図2〜図4に示されている。ネイティブバイナリ実行のために、登録アプリケーションのリスト112における各アプリケーションは、HLOS106によって維持される対応するVAFMT120を有する。VAFMT120は、信頼できるゾーン114に存在し得る。VAFMT120は、関連ハイレベル機能とマッピングされた異なる注目仮想アドレスを含む。一実施形態では、各関連ハイレベル機能は、アルゴリズム116が理解するマクロ名として示され得る。しかしながら、たとえば、特定の仮想アドレスにおいて検出された活動が、アルゴリズム116においてトリガされる必要がある機能に直接対応するような、アルゴリズム116における関数または関数名へのポインタを含む、関連ハイレベル機能を表すための他の機構が実装されてよいことを諒解されたい。バイナリ画像における特定のアプリケーション関数(および関数内の特定のポイント)の仮想アドレスは、「注目ポイント」と呼ばれることがある。一実施形態では、仮想アドレス注目ポイントは、たとえば、機密ソース/シンクルーチン、危険なウェブアプリケーションプログラムインターフェース(API)、特定のウェブ機能、バッファの開始/終了、または攻撃者が利用し得る任意の他のオブジェクトもしくは既知のウェブ/JavaScript攻撃の分析および検出のための他の適切な情報の中、始めもしくは終わりのポイントを含み、またはそれらの間の複数の特定のポイントを含むことがある。他の実施形態では、仮想アドレス注目ポイントは、JavaScriptインタープリタ、ジャストインタイム(JIT)コンパイラ、またはランタイム環境(たとえば、JavaScriptソースコード、バイトコード/JITコードなどを記憶する仮想機械ヒープのための割振り/割振り解除関数)の実装形態におけるポイントを含む。
図2および図3は、VAFMT120の例示的な実施形態を示す。図2は、アプリケーションバイナリコード108内の対応する仮想アドレスポイントへのアプリケーションソースコード110内のいくつかの所望のまたはターゲット機能ポイントの論理マッピング200を示す。図2および図3では、仮想アドレスが示されているが、バイナリオブジェクトコードは示されていない。この実施形態では、アプリケーションソースコード110は、「documentWrite」関数のためのC++コードを含む。ソースコードにおけるポイント201は、バイナリコードにおける仮想アドレス202にマッピングされる。ソースコードにおけるポイント203は、バイナリコードにおける仮想アドレス204にマッピングされる。ソースコードのポイント205は、バイナリコードにおける仮想アドレス206にマッピングされる。図3は、VAFMT120における列302にあるバイナリコードにおける仮想アドレス202、204、および206の、それらの仮想アドレスにおけるコードが表すそれぞれの機能的意味への論理マッピング300を示す。図3に示すように、VAFMT120は、機能注目ポイント(列304)の対応する説明を伴う複数の仮想アドレス(列302)を含み得る。バイナリコードポイントに関する202によって表される仮想アドレス(0x3273fac8)は、DOCUMENT_WRITE_FUNCTION_STARTに対応する機能ポイントにマッピングされる。DOCUMENT_WRITE_1を示す機能注目ポイントに対応するバイナリコードポイントに関する204によって表される仮想アドレス(0x3473fad4)。バイナリコードにおける206によって表される仮想アドレス(0x3473fae8)は、マクロ的意味DOCUMENT_WRITE_2を有する機能ポイントにマッピングされる。
図11は、特定のデータ構造タイプ(たとえば、クラス、構造、集合)のオブジェクトを含む動的に割り振られたバッファの開始および終了の仮想アドレスを決定するために使用され得る特定のバッファアロケータ関数の仮想アドレスを有するカスタム仮想アドレステーブルを含むVAFMT120の実施形態を示す。バッファにおいて割り振られたオブジェクトのメンバー/フィールドの値は、注目ポイントである特定のフィールド/メンバーのためのテーブルにおいて維持されることもある、オフセットおよび長さフィールドを使用して決定され得る。たとえば、システムメモリアロケータ関数の実行をアロケータ関数の仮想アドレスによってカバーされる領域から追跡することによって、割り振られたバッファのサイズおよびアドレスを検出するために、バッファ割振り関数の仮想アドレスが使用され得る。バッファ開始および終了仮想アドレスが知られると、特定のデータ構造タイプに関するオブジェクトの特定のメンバー/フィールドの値を決定するために、オフセットおよび長さフィールドが使用され得る。
図1において破線によって示されているように、アプリケーションソースコード110は、システム100に記憶される必要がない。そうではなく、それは、オフラインまたはオフデバイスに位置してよく、参照またはオープンソースコードとして利用可能であってよい。ブラウザまたはウェブアプリケーションの実際の商用バイナリにおける注目仮想アドレスを決定するために、参照および指針として特定のバージョンの参照ソースコードが使用され得る。オープンソースプロジェクトのマッチングコード改訂/バージョンから、同等のバイナリがコンパイルされ得る。そのバージョン/改訂に基づくアプリケーションバイナリの所望のまたはターゲット仮想アドレスおよび関数/ポイントを検出するために、参照として、コンパイルされたバイナリが使用され得る。同様のコンパイラおよびリンカオプションが使用されてよい。さらに、アプリケーションコードにおける様々なポイントにおけるブレークポイントが、仮想アドレスおよびそれらの機能マッピングポイントの決定に使用され得る。オープンソースプロジェクトのための既知のコンパイルされた関数からの参照バイナリを使用することによって、所与のアプリケーションバイナリにおける機能を識別するために、バイナリコード認識および類似性抽出方法が利用され得る。わずかに修正されたバージョンを有するバイナリ(または既知の参照オープンソースプロジェクトとのいくつかのソースコード差異を有するソースベースから生じたバイナリ)の場合、重要なウェブ関数およびAPIを呼び出すテストコードが書かれ得る。ターゲット仮想アドレスポイントのセットに収斂するように、様々なテストケースからの仮想アドレスアクセスシーケンスが使用され得る。アプリケーションバイナリコードから機能を抽出するために他の機構が使用されてよいことを諒解されたい。
図4は、ネイティブバイナリ実行モデルにおける悪意のあるコード活動を検出するための方法400の実施形態を示すフローチャートである。ブロック402において、アプリケーションのためにVAFMT120が生成される。上記で説明したように、VAFMT120は、対応するハイレベルアプリケーション機能にマッピングされた複数の注目仮想アドレスを含む。ブロック404において、たとえば、ポータブルコンピューティングデバイスなど、コンピューティングデバイス上にアプリケーションがインストールされ得る。ブロック406において、HLOS106によって提供されるセキュリティサポートのために、アプリケーションが登録され得る(たとえば、登録アプリケーション112)。ブロック408において、アプリケーションが起動されてよく、応答して、CPU102は、アプリケーションバイナリコード108を実行し得る。登録アプリケーション112が実行されているとき、HLOS106は、アプリケーションの実行中のプロセスをインターセプトし得る(ブロック410)。ブロック412において、HLOS106は、対応するVAFMT120を使用して、機能注目ポイントを、実行されているときに検出および記録し得る。ブロック414において、記録されたポイントは、悪意のある攻撃を検出および解決するために、悪意のあるコード検出アルゴリズム116に提供され得る。悪意のあるコード検出アルゴリズム116は、シグネチャベースのアルゴリズム、パターンマッチングアルゴリズムを含むこと、または機械学習もしくは他の技法を用いることがある。このようにして、悪意のあるコード検出アルゴリズム116は、VAFMT120を使用して、入力として受信する仮想アドレスの意味を提供し得る。
VAFMT120はHLOS106の制御下にあるので、HLOS106によって実行されるアプリケーションバイナリコード108の仮想アドレスの任意の変換/ランダム化(たとえば、アドレス空間レイアウトランダム化(ASLR))が、実行中のアプリケーションの有効仮想アドレスとの同期を維持するために、VAFMT120における仮想アドレスに適用され得る。一実施形態では、VAFMT120とともにJavaScriptコードおよびアプリケーション実行から集められた情報は、ハイレベルウェブ/JavaScript機能情報を提供することができ、この情報は悪意のあるコード検出アルゴリズム116に供給され得る。任意の悪意のある挙動を検出すると(ブロック416)、HLOS106は、アプリケーション/レンダラ/JavaScriptプロセスを休止し、ユーザのダイアログボックスを開いて、潜在的危険について警告し、ユーザに進むことに関する指示を求めることができる。ユーザが依然として進むことを望んでいる場合、ブラウザプロセスがHLOS106によって再開され得る。ユーザが進むことを望んでいない場合、HLOS106はユーザに、タブを閉じるか、もしくは何らかの他のウェブサイトにナビゲートするように要請することがあり、またはHLOS106は、その実行インスタンス(ブラウザタブ)のためのプロセスを終了することがある。
VAFMT120は、たとえば、オーバージエア(OTA)更新を介して、アプリケーションバイナリコード110バージョンが変わったときに更新され得る。これらの更新により、HLOS106は任意の登録アプリケーション112に対して更新バイナリにより準備ができているようになる。更新バイナリは、同じ注目ポイントに対する新しい仮想アドレスをもたらし得る。
HLOS106ならびにマッピングテーブル120および122が、たとえば、仮想機械118(図1)を伴う管理されたランタイム実行モデルをサポートするように構成されてもよいことを諒解されたい。この点について、上記で説明した統合プラットフォーム機構は、システム100が、実行中のアプリケーションバイナリコード108からの所望のまたはターゲットハイレベル機能情報を決定することを可能にする。管理されたランタイム実行モデルの例示的な実施形態が図5〜図10に示されている。
管理されたランタイムまたは仮想機械実行を伴う実施形態では、JavaScriptソースおよび/またはJavaScriptソースのためのバイトコード/ジャストインタイム(JIT)バイナリが、別のテーブル(たとえば、識別子-アドレスマッピングテーブル(IVAMT)122)の助けをかりて、仮想機械(VM)ヒープの異なる部分から読み取られ得る。IVAMT122は、VMヒープの重要な境界の仮想メモリアドレスを含む。それは、仮想機械118またはアプリケーションバイナリ108の様々な機能ポイントの仮想アドレスが維持され得る他のタイプのエントリをさらに含み得る。IVAMT122は、一般に、アプリケーション実行中に更新され、かつ/または動的に決定され得る特定の機能ポイントの仮想アドレスに使用され得ることを諒解されたい。この点について、IVAMT122は、機能ポイントを仮想アドレスにマッピングし得る。一方、VAFMT120は、静的に定義された仮想アドレスを機能的意味にマッピングし得る。したがって、VAFMT120は、アプリケーション実行中に変化しなくてよいが、たとえば、コンピューティングデバイスに対するオーバージエア(OTA)更新によって、更新されることがある。他の種々のテーブルがVAFMT120およびIVAMT122に関連付けられ得ることをさらに諒解されたい。種々のテーブルは、仮想アドレスではないパラメータ値または設定にマッピングされた様々なマクロまたはパラメータ名を含み得る。
図9の実施形態では、例示的なVMヒープ構造900の様々な外部および/または内部境界に関して仮想メモリアドレス901が識別される。図9に示すように、VMヒープ構造900は、たとえば、fromフィールド912、toフィールド914、コードフィールド902、マップフィールド904、大型オブジェクトフィールド906、旧データフィールド908、および旧ポインタフィールド910を含む、様々な内部および/または外部境界を識別する複数のデータフィールドを含み得る。VMヒープは、ネイティブシステムヒープにおいて割り振られた、VM管理されたメモリ領域である。当技術分野で知られているように、VMヒープにおいて、VMは、たとえば、コード(たとえば、JavaScriptソース)、バイトコード、中間コード、JITedバイナリ、実行中に作成されたオブジェクト、ならびにすべての他の関連するハウスキーピング情報およびプログラム(たとえば、JavaScriptプログラム)の実行に使用される内部データ構造を割り振り、割振り解除する、メモリ管理の抽象化を実行する。図9にさらに示すように、VMヒープ領域は、VMが記憶する物のタイプに応じて様々な下位領域(たとえば、910、908、906、904、902、912、および914)を含み得る。下位領域912および914は、最初に作成されたオブジェクトを含めるために使用され得、任意のガベージコレクション活動は、下位領域912から914に生のオブジェクトをスワップし、その逆も同様である。一実施形態では、下位領域902は、JavaScriptソース、バイトコード、中間コード、およびJITedバイナリ/アセンブリコードを保存するために使用され得る。下位領域904は、プログラム(たとえば、JavaScriptプログラム)の実行中にVMによって作成されたオブジェクトに関連付けられたいくつかの内部データ構造を維持するために使用され得る。下位領域906は、所定のサイズ(たとえば、1MB)よりも大きい任意の種類のアイテム(コード、オブジェクト)を維持するために使用され得る。下位領域908および910は、ガベージコレクションの複数のサイクルにわたって存続してきたオブジェクトおよびデータを維持することができ、下位領域908は、定数値を有するオブジェクトに焦点を当て、下位領域910は、他のオブジェクトを指すオブジェクトに焦点を当てる。
動作中、HLOS106は、VMヒープに関してメモリ割振りが変化したときにIVAMT122における仮想メモリアドレス901を識別し、動的に更新し得る。JavaScript仮想機械118が、関数がアクティブになるまでヒープにおけるソースを維持することを諒解されたい。管理されたランタイムまたは仮想機械実行モデルは、VMヒープからJavaScriptソースおよび/またはバイトコード/JITコードを識別することを伴い得る。JavaScriptソースを保持しているVMヒープオブジェクトは、新しい書込みがないかを追跡されてよく、仮想機械118によって受信された新しいJavaScriptソースが識別され得る。識別されたJavaScriptソースは、信頼できるゾーン114におけるアルゴリズム116に提供されてよく、そこでは、JavaScriptコードから様々な特徴を抽出し、任意の悪意のある挙動を検出するためにそれらを使用する。JavaScriptコードから抽出される特徴の例には、以下の特徴または他の特徴が含まれ得る。ドキュメントオブジェクトモデル(DOM)修正および感度関数、いくつかの評価、いくつかのストリング、スクリプト長、ストリング修正関数、難読化解除のための「built-ins」など。信頼できるゾーン115は、任意の悪意のある活動を決定するために、抽出された特徴を悪意のあるコード検出アルゴリズム116に供給し得る。
いくつかの実施形態では、JITバイナリ/バイトコードのみが利用可能であるとき、特徴は、それらから抽出され、次いで、悪意のあるコード検出アルゴリズム116に送られ得る。たとえば、HLOS106は、ハイレベルJavaScriptアーティファクトを表すバイトコード/JITコードシーケンスのライブラリを維持し得る。これらのアーティファクトとVMコード空間におけるJavaScript関数からのバイトコード/JITコードストリームの任意のマッチングが記録され、悪意のある特性の決定のために悪意のあるコード検出アルゴリズム116に渡され得る。
図5および図6は、管理されたランタイムまたは仮想機械実行中に使用されるIVAMT122およびVAFMT120の例示的な実施形態を示す。図5は、対応するアプリケーションバイナリコード108へのVMコード空間の割振りに関係するターゲット機能の論理マッピング500を示す。この実施形態では、アプリケーションソースコード110は、「AllocateVMCodeSpace」関数のためのコードを含む。図5に示すように、ソースコード110における第1のポイントは、バイナリコード108における仮想アドレス502にマッピングされ得る。ソースコード110における第2のポイントは、バイナリコード108における仮想アドレス504にマッピングされ得る。例示的な実装形態では、実行中のVMが実行する必要がある新しいJavaScriptソースコードを取得し、現在のVMヒープコード空間(902)に十分な空間がないと判断されたとき、関数AllocateVMCodeSpaceが呼び出され得る。この関数は、新しいJavaScriptコードのサイズを測り、VMがJavaScriptソース、関連するバイトコードもしくは中間コードおよび/またはJITedバイナリを保存できるように、VMヒープコード空間がサイズを拡大する必要がある量を決定し得る。決定されたサイズに基づいて、AllocateVMCodeSpace関数は、mmap()、malloc()、calloc()、またはrealloc()など、システムアロケータ関数を使用して、ネイティブプラットフォームのヒープにおけるVMヒープコード空間の割り振られた空間を拡大し得る。mmap()関数は、好ましくはアドレス開始時に、メモリにファイル記述子によって指定された他のオブジェクトからのオフセットで開始するバイトのシーケンスをマッピングするPOSIX準拠Unixシステムコールである。mmap()関数は、オブジェクトがマッピングされる実際の場所を戻す。malloc()、realloc()、calloc()およびfree()は、C/C++プログラミング言語での動的メモリ割振りのための手動メモリ管理を実行するためのC標準ライブラリにおける関数のグループを含む。バイナリコード108における注目ポイントの仮想アドレス502および504は、VAFMT120における列302に直接配置され得る。仮想アドレスによって表される異なる注目ポイントの機能的意味は、VAFMT120の列304においてマクロ名として列挙され得る。検出アルゴリズム116(図1)は、VAFMT120の列304においてマクロによって表される機能を明確に理解し得る。VAFMT120における特定の行の(列304における)マクロ名は、プロセッサ(たとえば、CPU102)が(列302における)その仮想アドレスポイントにおけるアプリケーションのバイナリ命令を実行するときに、実行されている機能をはっきりと識別し得る。このようにして、注目ポイントに関する仮想アドレスの実行統計値、カウントおよびプロファイルを知ることによって、検出アルゴリズム116は、ハイレベルアプリケーションバイナリによって実行されている機能を完全に理解する。マッピングは直接的に、仮想アドレス302と、マクロ(304)によって表され、処理または検出を実行する検出アルゴリズム116によって理解される機能的意味との間であってよく、それによって、その仮想アドレス注目ポイントにおける実際のバイナリ命令を知る必要を減らし得ることを諒解されたい。
仮想アドレスおよびマクロの意味とともに表される注目ポイントは、オフラインで決定され、次いで、特定のアプリケーションバイナリに対してVAFMT120にポピュレートされ得る。多くのタイプのアプリケーションは、利用可能なマッチング参照ソースコードを有し得る。たとえば、マッチング参照ソースコードは、普及しているオープンソースプロジェクトから開発された一般に利用可能なアプリケーション(たとえば、ブリンク/Chromiumベースのブラウザ、Webkitベースのブラウザ、Dalvik、ART、RenderScriptなど、Androidプラットフォームにおける様々な仮想機械)に利用可能であり得る。利用可能なマッチング参照ソースコードを有するアプリケーションの場合、商用アプリケーションバイナリにおける注目ポイントの仮想アドレスを、それらの注目ポイントのソースコードにおける対応する表現/ステートメントに関して決定するために、様々なオフライン機構が使用され得る。
注目ポイントの仮想アドレスのオフライン決定のための例示的な実施形態について説明する。注目機能を実施するソースコード110におけるいくつかの重要かつ有用な関数が、マッチング参照ソースコードにおいて識別され得る。合わせて特定の一意の機能を表すポイントの一意のセットを形成するために、ソースコード110内の様々なポイントが手動で決定され得る。これは、機能に対して完全なソースコード110の機能全体を一意に表すソースコード110内のサンプルポイントのセットと同等であり得ることを諒解されたい。ソースコード110はコンパイルされ、アセンブルされ、実際の商用サードパーティ製アプリケーションと同等である参照アプリケーションにリンクされ得る。両方のバイナリ(参照および商用サードパーティ)は、同じソースコード110から生じ、同様のビルド技法(たとえば、コンパイル、アセンブル、リンク)およびツールチェーンを使用し得る。当分野で知られているように、オープンソースアプリケーションは、自由に利用可能なGCCまたはLLVMツールチェーンを使用し得る。コンパイラ、アセンブラ、およびリンカツールは、参照バイナリアプリケーションを生成するために使用されてよく、ソースコードにおける重要なポイントに対応する仮想アドレスポイントに留意することができる。注目ポイントの仮想アドレスは、バイナリアプリケーションがビルドされる(コンパイルされる、アセンブルされる、リンクされる)ソースコード110における注目ポイントの直接的マッピングを含み得るので、商用サードパーティバイナリにおける仮想アドレス注目ポイントを識別するために商用バイナリと比較するために、参照バイナリがオフラインで使用され得る。商用サードパーティバイナリにおける注目ポイントの仮想アドレスを決定するために、他のオフラインまたは他の技法が使用されてよいことをさらに諒解されたい。一実施形態では、図2は、ソースコード110における異なる注目ポイント(201、203、205)が、バイナリ108における対応する仮想アドレス(202、204、206)にどのように直接マッピングされ得るかを示す。
図6は、図5のVAFMT120と例示的なIVAMT122との間の論理マッピング600を示す。VAFMT120は、実行が注目され、追跡されているバイナリアプリケーションにおける固定および既知の注目ポイントの仮想アドレスを含む。これらの仮想アドレスは、バイナリアプリケーションが変わるときはいつでも更新され得る。IVAMT122は、バイナリアプリケーションが実行されるときに作成または更新される特定のポイントの仮想アドレスを含み、これは動的であり、動的なアイテム(たとえば、ランタイムバッファ開始または終了ポイント)の仮想アドレスを表し得る。VAFMT120の左手列(302)は、仮想アドレスを含み、右手列(304)は、その仮想アドレスポイントにおけるバイナリコード108に存在する機能的説明を示し得る。このようにして、VAFMT120は、仮想アドレスを機能的意味にマッピングする。一般に、IVAMT122は逆方向を含む。この場合、機能的意味またはマクロ名が知られており、システムは、機能的意味またはマクロ名604が実装されているか、またはバイナリアプリケーションの実行インスタンスにおいて利用可能である仮想アドレス602を決定する。IVAMT122における仮想アドレスは、ランタイムにおいて決定される動的な値を含み得る。動的に割り振られたバッファ(または仮想機械ヒープもしくはそのサブ空間)の開始および終了が決定される場合、動的バッファ/ヒープ-空間割振りをしているバイナリアプリケーションにおける関数内の注目ポイントの仮想アドレスがVAFMT120から取得され得る。これらの関数の実行は、VAFMT120における仮想アドレスの実行を検出することによって決定され得る。さらに、バッファ/ヒープ-空間割振りの開始/終了仮想アドレスは、これらの関数から呼び出されたシステムメモリ割振り関数を検出することによって決定され得る。バッファ/ヒープ-空間割振りのこれらの決定された開始/終了仮想アドレスは、IVAMT(122)において更新され得る。
図7は、VMヒープコード空間に対するガベージコレクションの影響、およびどのようにJavaScriptソースが、仮想機械118のガベージコレクション活動が存在する場合に一貫して決定され得るかを示す。新しいオブジェクトの割振りおよび無効の(すなわち、使用されていない)オブジェクトの割振り解除がランタイムまたは仮想機械118によって明示的に処理され得るので、ガベージコレクションは、管理されたランタイムまたは仮想機械の不可欠な活動であることを諒解されたい。管理されたVMヒープから無効の(すなわち、使用されていない)オブジェクトを回収する活動は、ガベージコレクションと呼ばれる。この点について、必要とされないScriptオブジェクトまたは他のオブジェクトが回収されるとき、VMヒープは再編成され、既存のオブジェクトはあちこち移動し、新しいオブジェクト割振りのための空間を作るために圧縮され得る。図7は、VMヒープコード空間704aに対するそのようなガベージコレクション活動の影響を示す。VMヒープコード空間704aは、JavaScriptオブジェクトJS1、JS2、JS3、JS4を含む。ガベージコレクション事象の後、それらは圧縮され、JavaScriptオブジェクトJS3が除去されてよく、JavaScriptオブジェクトJS3は、ガベージコレクタによって必要とされないものまたは無効のものとして検出され、したがってVMヒープコード空間704bから回収(削除)されている。ただし、VMヒープにおけるオブジェクトのいかなるそのような動き(たとえば、除去、圧縮など)によっても、JavaScriptオブジェクトが存在する場所を決定する仮想アドレス開始および終了ロケーションは変わる。例示的な方法では、各ガベージコレクション活動の後、VMヒープおよびヒープ内の様々な空間(図9)に関して図5および図6に示す仮想アドレス決定機構を再実行することによって、仮想アドレスは変更され得、それによって、ガベージコレクション中にScriptオブジェクトが移動した場合に仮想アドレスは新しい値により更新され得る。図8に示すように、カーネルは、ガベージコレクション中に発生しているオブジェクト移動およびそれらが移動する距離を追跡し得る。オブジェクトが移動したアドレスオフセットを追跡することによって、VMヒープコード空間におけるJavaScriptオブジェクトの開始および終了の仮想アドレス値が更新され得る。同様に、VMヒープの様々なコード空間のIVAMT122における仮想アドレスは、図9に示すVMヒープの様々なサブ空間の割振り/割振り解除/移動を追跡することによって更新され得る。
図10は、管理されたランタイムまたは仮想機械実行モデルにおける悪意のあるコード活動を検出するための方法1000の実施形態を示すフローチャートである。図10のブロック1002、1004、1006、1008、および1010において表されるステップまたは機能は、一般に、図4の方法に関連して上記で説明したブロック402、404、406、408、および410に対応し得ることを諒解されたい。ブロック1012において、方法1000は、VMヒープアロケータ/ディアロケータ関数の注目ポイント仮想アドレスを、実行されたときに検出する。ブロック1014に示すように、実行がVMヒープアロケータ/ディアロケータ関数の内部であることが検出されたとき、方法1000は、カーネルのシステムアロケータ/ディアロケータ関数へのエントリVMを検出し、システムメモリ割振り/割振り解除を記録することができる。それに基づいて、方法1000は、VMのヒープの開始/終了仮想アドレスを計算および決定し得る。VMヒープの特定の割振り領域(たとえば、コード空間、大型オブジェクト空間など)のために同様の機構を実装することによって、VMヒープ内の特定の下位領域(たとえば、コード空間、大型オブジェクト空間など)の開始/終了仮想アドレスが決定され得る。ブロック1016に示すように、JavaScriptソースコードオブジェクトを記憶するために使用されるVMヒープ空間がブロック1014において決定されると、方法1000は、VMヒープ内のJavaScriptオブジェクトの開始を決定するために(バイナリでの)スクリプトオブジェクトヘッダシグネチャ/パターンを使用し得る。JavaScriptオブジェクトの長さは、ヘッダから抽出され、JavaScriptソースコード全体を抽出するために使用され得る。ブロック1018に示すように、JavaScriptソースコードは、たとえば、悪意のある挙動を検出するために検出アルゴリズム116によって使用される特定の注目特徴を抽出するために使用され得る。ブロック1020において、JavaScriptコードの悪意のある挙動が、たとえば、ブロック1018においてJavaScriptソースから抽出された特徴に基づいて決定され得る。
上述のように、VAFMT120は、最初に、オフライン方式で構成され、コンピューティングシステム100(図1)に提供され得る。一実施形態では、アプリケーションバイナリコード108の新バージョンがコンピューティングシステム100にとって利用可能になったとき、VAFMT120は、同様に、オフライン方式で更新され、コンピューティングシステム100に、たとえば、通信ネットワークを介して提供され得る(「オーバージエア(OTA)更新」と呼ばれる)。このようにしてVAFMT120を更新することは、頻繁に更新されるバイナリアプリケーションにとって不利であり得る。アプリケーションバイナリコード108の更新バージョンにおけるバイナリコードの比較的大きい部分は変わらないままであり得ることを諒解されたい。VAFMT120において識別される機能注目ポイント304は、アプリケーションバイナリコード108および/またはバージョン間で変わらないことがあるバイナリコードの比較的限られた部分を含み得る。
たとえば、コンパイラ動作および/または設定は、まれに変わることがあり、バイナリコードにおける様々なモジュールは、モジュール間で同様のまたは所定のオフセットを維持し得る。図12〜図16は、アプリケーションバイナリコード108の新バージョンまたは更新バージョンがインストールされたときにVAFMT120における仮想アドレスを自動的に更新するためにコンピューティングデバイス100において実装され得る様々な機構を示す。
これらの機構が様々なタイプのアプリケーションおよび/または使用事例に関するVAFMT120のOTA更新の必要を減らし得ることを諒解されたい。たとえば、セキュリティアプリケーションの文脈では、これらの機構は、同じ発生コードベースに基づくウェブブラウザアプリケーションに対する最もよくあるタイプの更新の多くに関するOTA更新の必要をなくし得る。既存のウェブブラウザアプリケーションは、週次または月次でバイナリアプリケーションコードを更新し得る。新しいバイナリバージョンの仮想アドレスは、機能注目ポイント304に関係する特定のモジュールに関してソースコードが変わっていないときでも変わり得る。この場合、仮想アドレスは、機能注目ポイント304以外のアプリケーションの部分におけるソースコードの変更、またはアプリケーションの他の部分においてアクセスされる変数タイプおよびデータ構造タイプ(たとえば、C++クラス、C-構造、集合など)の変更がある場合に変わり得る。さらに、コンパイラ、アセンブラ、およびリンカオプションのいくつかの種類の変更は、アプリケーションの他の部分の仮想的変更をもたらし得る。
図12は、アプリケーションバイナリコード108の新バージョンまたは更新バージョンがインストールされたときにVAFMT120を自動的に更新するためにコンピューティングデバイス100において実装され得る例示的な機構の実施形態を示す。図12に示すように、VAFMT120は、メタデータ1200および1つまたは複数の疑似バイナリコードテンプレート1202により補足され得る。以下でより詳細に説明するように、メタデータ1200および疑似バイナリコードテンプレート1202は、HLOS106が、アプリケーションバイナリコード108が新バージョンにより更新されたときに機能注目ポイント304の新しい仮想アドレス302を決定することを可能にし得る。
疑似バイナリコードテンプレート1202は、局所変数のためのメモリおよび疑似レジスタにおける記憶ロケーションのための記号表現を使用する演算ステートメントのシーケンスを含むことを諒解されたい。疑似バイナリコードテンプレート1202は、それらの目的を示す様々なカテゴリーの疑似レジスタを使用し得る。一実施形態では、ArgumentReg#は、サブルーチンに引数を渡す疑似レジスタを示し得る。ReturnRegは、サブルーチン呼出しから戻るときの戻りアドレスを含み得る。ProgCounterは、プロセッサのプログラムカウンタが指す現在アドレスを含み得る。ReturnValueReg#は、呼出し側コードにサブルーチン呼出しからの値を戻すために使用されるレジスタを示し得る。演算は、変数または記憶ロケーションであり得る入力および出力を伴うプロセッサにおけるアセンブリ演算の忠実な表現(close representation)を含み得る。たとえば、AddWord変数は、サイズ4バイトまたは1ワードのオペランドの加算演算を示し得る。LoadWord変数は、所定のサイズ(たとえば、4バイトまたは1ワード)を有するメモリからの値をロードすることを示し得る。LoadByte変数は、所定のサイズ(たとえば、1バイト)を有するメモリからの値をロードすることを示し得る。branchEQは、以前の比較演算が、比較されているオペランドの等しさをもたらしている場合に、オペランドとして提供されるターゲットに分岐する条件付き分岐を含み得る。アドレス指定モードまたはアドレス計算は、ロード演算または記憶演算から分離され得る。一実施形態では、ベースレジスタおよびオフセットを伴うロード演算は、2つの演算、すなわち、疑似レジスタに一定のオフセット値を加算することによって最終アドレスを計算する加算演算、および後続の、計算された最終アドレスを含む疑似レジスタを使用する実際のロード演算に分割され得る。これは、様々な形式のアドレス指定モードが更新アプリケーションバイナリによって使用される場合に最も一般的な形式による表現を維持するために行われ得る。定数である演算引数は、有効範囲の定数を符号化するために必要とされるビットの数によって表され得る。
たとえば、定数「Const8bits」は、オペランドが8ビットによって符号化され得る任意の有効値であることを示す演算のためのオペランドとして使用され得、したがって、許容される値の有効な動的範囲を決定し得る。いくつかのオペランドは、ハードコーディングされた定数(たとえば、値「8」を示す「#8」)であり得る。直接分岐演算のオペランドは、現在のプログラムカウンタからのオフセット(たとえば、(「ProgCounter + #Const20bits」、または「ProgCounter + #12」))として表され得る。疑似バイナリコードテンプレート1202は、これらまたは他の演算ステートメントを使用して注目機能を実施し得る。たとえば、マッチング機能またはモジュールを介して正確な機能を実施する新しい更新バイナリにおける領域を識別するために演算ステートメントが使用され得ることを諒解されたい。マッチングモジュールは、疑似バイナリコードテンプレート1202のフォーマットおよび表現とアプリケーションの実際のバイナリの両方を理解するように構成される。マッチングモジュールは、マッチングを検出するために演算のウィンドウ内で演算ごとの比較を実行するか、または制御データフローおよび制御データフロー領域内の演算を比較のために使用し得る。
様々なマッチング技法が使用され得る。疑似バイナリコードテンプレート1202における演算ステートメントは、静的単一代入(SSA)表現を使用することができ、SSA表現では、特定の疑似レジスタ変数が1回だけ代入され、それによって、演算ステートメント間の真の依存を明らかにする。SSA表現は、アプリケーションの更新バイナリにおける機能領域のマッチングの改善を可能にし得る。「疑似」という用語は、表現がバイナリ実行可能ではなく、プロセッサの実際のアセンブリ命令、レジスタ、およびアドレス指定モードを使用せず、バイナリコードにアセンブルされないことを指す。疑似バイナリコードテンプレート1202は、アプリケーションの更新バイナリにおける注目機能を検出するためにマッチングモジュールがテンプレートパターンおよび指針として使用する機能参照を提供する。疑似バイナリコードテンプレート1202の実際のフォーマットおよび表現は実装依存であり、様々な他の代替形態が使用されてよいことを諒解されたい。他の実施形態では、いくつかの実装形態は、実際のアセンブリ命令表現またはバイナリアプリケーションが実行されるCPU102のためのアセンブリ表現に似ている表現を使用し得る。
上記で説明したように、HLOS106は、登録アプリケーションのリスト112を維持し得る。登録アプリケーションごとに、HLOS106は、機能注目ポイント304の仮想アドレス302を含むテーブル(たとえば、VAFMT120、IVAMT122)を維持する。図12に示すように、VAFMT120における1つまたは複数の仮想アドレス302が、疑似バイナリコードテンプレート1202に関連付けられ得る。図12の実施形態では、疑似バイナリコードテンプレート1202は、一意の機能(documentWrite関数)を表す機能注目ポイント304の特定のセットの仮想アドレス302のセットに関連付けられる。疑似バイナリコードテンプレート1202は、documentWrite関数をカバーするバイナリコードと一般的に同等の疑似コード命令を含む。一実施形態では、疑似バイナリコードテンプレート1202は、プロセッサ命令セットアーキテクチャ(ISA)を使用しなくてよく、実際のバイナリコードにアセンブルされる必要がない。疑似バイナリコードテンプレート1202は、アセンブリ演算と同様の演算ステートメントを使用し、疑似レジスタおよび記号参照をストレージのために使用し得る。そのような演算ステートメントのシーケンスの使用によって、疑似バイナリコードテンプレート1202は、アプリケーションの実際のバイナリにおいて実施される注目機能(たとえば、documentWrite関数)と同じまたは同等である、それが表す注目機能(たとえば、上記の例での「documentWrite」関数の機能)を実施し得る。コンピューティングシステム100は、任意の数の疑似バイナリコードテンプレート1202を含み得ることを諒解されたい。異なる疑似バイナリコードテンプレート1202の数は、機能注目ポイントの異なるセットを通じて、VAFMT120において捕捉された異なる機能すべてが、新しいアプリケーションバイナリコードがインストールされたときにそれがカバーする関数ポイントの仮想アドレスを更新するために使用される少なくとも1つの代表的な疑似バイナリコードテンプレート1202を有するような数であり得る。
一実施形態では、疑似バイナリコードテンプレート1202は、一般的な形式のターゲットアセンブリ命令、1つまたは複数の疑似レジスタ、およびメモリにおける特定の参照ポイントを表す一般的なベース(たとえば、グローバルヒープまたはスタック、シンボル/変数名)からのメモリアクセスオフセットを含み得る。メタデータ1200は一般に、たとえば、バイトオフセットを使用する仮想アドレス自由表現(virtual-address free representation)を含む。仮想アドレス(0x3473fac8)のメタデータ1200は、バイトオフセット(BASE2 = BASE0 + 74709704)を含む。仮想アドレス(0x3473fad4)のメタデータ1200は、バイトオフセット(BASE2 + 12)を含む。仮想アドレス(0x3473fae8)のメタデータ1200は、バイトオフセット(BASE2 + 32)を含む。このメタデータは、「document_write」機能を一意に表す3つの仮想アドレス注目ポイントのセットに対応する一意のセットを形成し得ることを諒解されたい。
疑似バイナリコードテンプレート1202は、最初にオフライン方式で生成され、コンピューティングシステム100に提供され、デバイスのセキュアなストレージに記憶され得る。疑似バイナリコードテンプレート1202は、たとえば、機能注目ポイント304によってカバーされる領域におけるコードおよび/またはデータ構造の顕著な変更があるときのみ更新される必要があり得ることを諒解されたい。これらのタイプの変更は、比較的まれ(たとえば、6ヵ月に1回)であり得る。このタイプおよび他のタイプの更新は、OTA更新を介して実施され得る。これは、たとえば、週次/月次から、6ヵ月に1回だけ疑似バイナリコードテンプレート1202のOTA更新を行うことのみへの、仮想アドレスのOTA更新の大幅な減少を可能にする。
既存の登録アプリケーションの新しいバイナリバージョンの更新または再インストールが検出され得る。応答して、メタデータ1200および疑似バイナリコードテンプレート1202が、VAFMT120を自動的に更新するために使用され得る。図12に示すように、疑似バイナリコードテンプレート1202は、疑似バイナリコードテンプレート1202によって表される機能注目ポイント304(ひいては、この特定の疑似バイナリコードテンプレートが表す仮想アドレス注目ポイント)が位置する新しいアプリケーションにおけるバイナリコードの領域1206をパターンマッチングするために使用され得る。メタデータ1200は、アプリケーションバイナリコード108の更新バージョン1204において探索される領域1206に焦点を当てるために使用され得る。一意の機能の機能注目ポイント304の元のベース(BASE0)からの相対的OFFSETを使用することによって、焦点領域1206(たとえば、ベース、BASE2の前および後の所定のパーセンテージ)上で探索する最初の試みが行われ得る。多くのタイプの頻繁な更新では、これらの相対的オフセットが依然として接近していることを諒解されたい。図12にさらに示すように、マッチングが検出されたとき、新しい仮想アドレスが新しいバイナリから取得され得、VAFMT120は、新しい仮想アドレスを反映するために更新され得る。1つまたは複数の機能注目ポイント304が新しいバイナリにおけるマッチングをもたらさない場合、コンピューティングシステム100は、OTA更新を開始してよく、または他の実施形態では、特定の注目機能および関連する仮想アドレスを、特定の機能の重要性に基づいてVAFMT120から削除してよい。
図13は、(グレーアウトされたボックスによって表される)更新仮想アドレスとともに図12からのVAFMT120を示す。DOCUMENT_WRITE_FUNCTION_START注目ポイント304に対応する仮想アドレス302は、新しい仮想アドレス(0x3133b61c)に更新されている。DOCUMENT_WRITE_1注目ポイント304に対応する仮想アドレス302は、新しい仮想アドレス(0x3133b62c)に更新されている。DOCUMENT_WRITE_2注目ポイント304に対応する仮想アドレス302は、新しい仮想アドレス(0x3133b640)に更新されている。図13にさらに示すように、仮想アドレスに対応するメタデータ1200も更新され得る。図13に示すように、新しい仮想アドレス(0x3133b61c)のメタデータ1200は、「BASE2 = BASE0 + 74709000」に更新されている。これは、アプリケーションの更新バイナリにおける2つの注目機能の間(すなわち、「KERNEL_ALLOCATOR_FUNCTION」と「DOCUMENT_WRITE_FUNCTION」との間)にわずかな相対位置変更があったことを示す。変更は比較的わずかであり得る。たとえば、変更は、それらの間の74709704バイトの元の総距離のうちの704バイトの縮小であり得る。したがって、探索により、2つの注目機能の間のベースオフセットメタデータ(すなわち、74709704バイト)の前および後のいくつかのトレランスとともに焦点を当てられて、探索領域を狭くすることによって効果的なマッチングが可能になる。新しい仮想アドレス(0x3133b62c)のメタデータ1200は、BASE2 + 16に更新されている。新しい仮想アドレス(0x3133b640)のメタデータ1200は、BASE2 + 36に更新されている。
図14および図15は、DOCUMENT_WRITE関数に関係する機能注目ポイント304のセットに関連付けられた疑似バイナリコードテンプレート1202の例示的な実施形態を示す。機能注目ポイント304のセットは、DOCUMENT_WRITE_FUNCTION_STARTモジュール、DOCUMENT_WRITE_1モジュール、およびDOCUMENT_WRITE_2モジュールを含む。図14に示すように、セットにおける機能注目ポイント304の各々は、疑似バイナリコードテンプレート1202内の「疑似バイナリ命令注目ポイント」を形成する特定の疑似コード命令に直接関連付けられる。疑似バイナリコードテンプレート1202内のこれらの「疑似バイナリ命令注目ポイント」は、「疑似バイナリ注目ポイント」と直接マッチングした更新アプリケーションバイナリにおける特定のバイナリ命令に応じた、アプリケーションバイナリの更新バージョンにおける新しい仮想アドレス注目ポイントと現在のVAFMT120における仮想アドレス注目ポイントの1対1のマッピングを含む。図14に示すように、DOCUMENT_WRITE_FUNCTION_STARTモジュールは、最初の2つの呼出し側保存済み疑似レジスタ(CallSave0、CallSave1)および戻りレジスタ(ReturnReg)を保存する「プッシュ」演算に関連付けられる。その後に、後続のLoadWord演算によって必要とされるアドレスを計算するAddWord演算がある。AddWord演算は、プログラムカウンタで8ビットに適合すべき定数値を加算し、疑似レジスタreg0に結果を保存する。後続のLoadWord演算は、値のロード元のアドレスとしてreg0のアドレスを直接使用する。アプリケーションのための実際のバイナリでは、8ビットの定数を有するAddWordは、アドレス指定モードの一部としてLoadWord命令に直接含まれ得る。「Const8bits」は、8ビットに適合する任意の定数値を有するオプションを可能にする。ロードされた値は、疑似レジスタreg1において維持され、疑似レジスタreg2に値をロードする第2のLoadWord演算のためのアドレスとして使用される。DOCUMENT_WRITE_FUNCTION_STARTによって示される機能注目ポイントの場合、「プッシュ」演算は、この疑似バイナリコードテンプレート1202における「疑似バイナリ命令注目ポイント」である。
DOCUMENT_WRITE_1モジュールは、疑似レジスタ(reg0)において維持され、疑似レジスタreg1に保存される値の16ビットによる論理シフト左演算に関連付けられる。それは次いで、定数値「4」で加算され、疑似レジスタreg2に保存され、次いで疑似レジスタreg2は、疑似レジスタ(reg3)に値がロードされる際のロード元のアドレスとして使用される。実際のバイナリロード命令の場合、アドレス指定モードは、定数値4による加算を直接実行することができ、したがって、AddWordおよびLoadWordは、単一のロード命令によって表され得ることに留意されたい。reg3における値は、プログラムカウンタ値(PC)にさらに加算されて、呼び出されたルーチンに第1の引数として渡すために使用される第1の引数レジスタ「ArgumentReg0」にバイト値がロードされる際のロード元のアドレスである疑似レジスタreg4における最終アドレスが作成される。その後、20ビットに適合することができる値であるオフセットにあるアドレスへの直接的分岐がある。しかしながら、直接的分岐命令の前に、直接的分岐がアプリケーションの異なる部分への制御ができるようになった後に(ReturnRegを適切に設定することによって)戻るためのアドレスを保存するAddWord命令がある。「論理シフト左」演算は、DOCUMENT_WRITE_1によって示される機能注目ポイントに関するこの疑似バイナリコードテンプレート1202における「疑似バイナリ命令注目ポイント」である。
DOCUMENT_WRITE_2モジュールは、プログラムカウンタで8ビットに適合することができる定数値を加算し、疑似レジスタreg0において結果を維持するAddWord演算に関連付けられる。疑似レジスタreg0は次いで、疑似レジスタ(reg2)に値がロードされる際のロード元のアドレスとして使用される。その後に、疑似レジスタ(reg2)およびプログラムカウンタの現在値を加算し、疑似レジスタreg1において結果を維持する別のAddWord演算がある。疑似レジスタreg1は次いで、直接的分岐命令を通じて後続のサブルーチン呼出しに値を渡すために使用されるArgumentReg0に値がロードされる際のロード元のアドレスとして使用される。実際のバイナリロード命令の場合、アドレス指定モードは、定数値による加算を直接実行することができ、したがって、AddWordおよびLoadWordは、アプリケーションの実際のバイナリでの単一のロード命令によって表され得ることに留意されたい。LoadWord演算の後、20ビットに適合することができる値であるオフセットにあるアドレスへの直接的分岐がある。しかしながら、直接的分岐命令の前に、直接的分岐がアプリケーションの異なる部分への制御ができるようになった後に(ReturnRegを適切に設定することによって)戻るためのアドレスを保存するAddWord命令がある。サブルーチンの呼出しの後、比較の2つのセットおよび疑似バイナリコードテンプレート1202内の近くのロケーションへの分岐がある。両方の比較を、第1のサブルーチン戻り値レジスタ(ReturnValueReg0)に対して行って、サブルーチンによって戻された特定の値(「0」および「1」)をチェックし、戻された値に基づいて、局所的にそれぞれBranchEQ演算およびBranchNE演算を使用して分岐を行う。分岐ターゲットアドレスは、現在のプログラムカウンタ値からの定数オフセットとして提供される。プログラムカウンタでConst8bitsオペランドを加算するAddWord演算は、DOCUMENT_WRITE_2によって示される機能注目ポイントに関するこの疑似バイナリコードテンプレート1202における「疑似バイナリ命令注目ポイント」である。アプリケーションの実際のバイナリは、(「ldr r1、[pc,#80]として)単一の実際のバイナリ命令への疑似バイナリコードテンプレートマッチングにおいて、LoadWord演算とともにこのアドレス計算演算(AddWord)を有することができ、この場合、全体的または部分的のいずれかにおいて「疑似バイナリ命令注目ポイント」がマッチングする実際のバイナリ命令が、アプリケーションのバイナリの新バージョンにおける更新仮想アドレスを決定する命令になることに留意されたい。
図15は、アプリケーションバイナリコード108の更新バージョン1204のマッチング領域1206における同等の対応するバイナリコードへの疑似バイナリコードテンプレート1202における疑似コード命令の各々のマッチングを示す。動作中、疑似バイナリコードテンプレート1202が領域1206とマッチングしたとき、機能注目ポイント304とマッチングするバイナリコードにおける対応する命令の仮想アドレスが、新しい仮想アドレスになり、VAFMT120において更新される。新しいベースおよびオフセットが新しい仮想アドレスに基づいて計算され得、メタデータ1200が更新され得る。
図16は、アプリケーションバイナリコード108の新バージョンまたは更新バージョンがインストールされたときにVAFMT120を自動的に更新するためにコンピューティングデバイス100において実装される方法1600の実施形態を示す。ブロック1602において、上記で説明したように、コンピューティングシステム100に、HLOS106に登録されたアプリケーションのための仮想アドレスマッピングテーブル120が記憶され得る。VAFMT120は、HLOS106中のセキュアなメモリに記憶され得る。図12に示すように、VAFMT120は、登録アプリケーションのアプリケーションバイナリコード108における対応するターゲットアプリケーション機能(機能注目ポイント304)にマッピングされた仮想アドレス302の複数のセットを含み得る。アプリケーションバイナリコード108の更新バージョン1204を受信したこと(決定ブロック1604)に応答して、仮想アドレスマッピングテーブル120における仮想アドレス302の複数のセットのうちの1つまたは複数に関連付けられた対応する疑似バイナリコードテンプレート1202が決定され得る(ブロック1606)。上述のように、一実施形態では、疑似バイナリコードテンプレート1202は、最初に、当初のVAFMT120とともにシステム100へのオーバージエア(OTA)更新を通じて、またはシステム100上にコード/データをダウンロードおよびインストールする任意の他の手段によって獲得され得る。これらの疑似バイナリコードテンプレート1202とVAFMT120の両方が、システム100中の、HLOS106およびカーネルによってアクセス可能なロケーションに記憶され得る。実際の記憶ロケーションは実装依存である。様々なレベルのセキュリティ保護またはセキュアなメモリ構成が、記憶ロケーションに対して考慮され得、実装選択に依存する。疑似バイナリコードテンプレート1202は、たとえば、既存のテンプレートのうちの1つまたは複数がアプリケーションの更新バイナリにおいてマッチングを発見することができないときに更新され得る。注目領域におけるアプリケーションコードの大規模な変更、または上記で説明した他の種類の変更に起因して、ミスマッチが発生し得る。そのような状況の間、更新された疑似バイナリコードテンプレート1202および更新されたVAFMT120が、システム100にOTAダウンロードおよびインストールされ得る。決定ブロック1608において、疑似バイナリコードテンプレート1202は、アプリケーションバイナリコード108の更新バージョン1204を探索し、同等のバイナリ命令に疑似コード命令をマッチングするために使用される。マッチングが発見されたとき、ブロック1610において、バイナリ命令に対応する新しい仮想アドレスが決定される。ブロック1612において、仮想アドレスマッピングテーブル120は、新しい仮想アドレスおよび対応する更新ベース/オフセットメタデータ1200により更新され得る。
図16に示すように、ブロック1606、1608、1610、および1612は、異なる疑似バイナリコードテンプレート1202のすべてに対して、疑似バイナリコードテンプレート1202のすべてがマッチングされ、VAFMT120における仮想アドレスのすべてが更新されるまで繰り返され得る。決定ブロック1611において、方法1600は、疑似バイナリコードテンプレート1202のすべてが処理されたかどうかを判断し得る。「yes」の場合、方法1600はブロック1613において終了することができる。「no」の場合、ブロック1606において新しい疑似バイナリコードテンプレート1202が選択され得る。決定ブロック1608において、マッチングするバイナリシーケンスが特定の疑似バイナリコードテンプレート1202のアプリケーションの更新バイナリにおいて識別されると、方法1600は、マッチングのために次の疑似バイナリコードテンプレート1202に対して繰り返すことができる。ある繰り返しにおいて、アプリケーションの更新バイナリにおける疑似バイナリコードテンプレート1202に関するマッチングがない場合、疑似バイナリコードテンプレート1202によって表される注目機能がVAFMT120から削除され得るかどうかが最初に判断される(決定ブロック1607)。それが削除され得る(機能の重要性が低いことを含む、様々な理由に起因し得る)場合、この注目機能に関する仮想アドレス注目ポイントのエントリすべてがVAFMT120から削除され得(ブロック1605)、次の疑似バイナリコードテンプレート1202に関するマッチングを探索するために、ブロック1606で繰り返しが続く。しかしながら、機能(ひいては、疑似バイナリコードテンプレート1202)が重要であり、削除されるべきではない場合(ブロック1609)、自動的更新機構は失敗し、その場合、仮想アドレスおよび/または疑似バイナリコードテンプレート1202の完全なオーバージエア(OTA)更新が実行され得る。これは、(たとえば、より低い頻度で、6ヵ月に1回発生する)アプリケーションの更新バイナリの大幅な変更/修正がある場合を表し得る。
本明細書で説明した方法ステップのうちの1つまたは複数は、上記で説明したモジュールなどのコンピュータプログラム命令としてメモリに記憶される場合があることを諒解されたい。これらの命令は、本明細書で説明した方法を実行するために、対応するモジュールと組み合わせてまたは協働して、任意の適切なプロセッサによって実行される場合がある。
本明細書で説明したプロセスまたはプロセスフローにおけるいくつかのステップは、当然、説明したように本発明が機能するために他のステップに先行する。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合には、本発明は、説明したステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行され、後に実行され、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップが省略される場合または実行されない場合がある。さらに、「その後(thereafter)」、「次いで(then)」、「次に(next)」などの語は、ステップの順序を限定することを意図していない。これらの語は単に、例示的な方法の説明を通して読者を導くために使用される。
加えて、プログラミングにおける当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、難なく、開示した発明を実装するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を識別することができる。
したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示が、本発明をどのように製作し使用すべきかについて適切に理解するために必要であるとは見なされない。特許請求されるコンピュータ実装プロセスの発明性のある機能は、上記の説明において、かつ様々なプロセスフローを示す場合がある図とともに、より詳細に説明される。
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せにおいて実装される場合がある。ソフトウェアにおいて実装される場合、機能は、コンピュータ可読媒体上の1つまたは複数の命令またはコードとして記憶または送信されてもよい。コンピュータ可読媒体は、コンピュータ記憶媒体と、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってもよい。例として、限定はしないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、NANDフラッシュ、NORフラッシュ、M-RAM、P-RAM、R-RAM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形態における所望のプログラムコードを搬送もしくは記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。
また、あらゆる接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(「DSL」)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(「CD」)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
本発明の趣旨および範囲から逸脱することなく、本発明が関係する代替的な実施形態が、当業者には明らかになるであろう。したがって、選択された態様が図示され詳細に説明されてきたが、以下の特許請求の範囲によって定義されるように、本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変が行われてよいことが理解されよう。
100 システム、コンピューティングシステム
102 中央処理装置(CPU)
104 メモリ
106 ハイレベルオペレーティングシステム(HLOS)
108 アプリケーションバイナリコード、バイナリコード、アプリケーションバイナリ、バイナリ
110 参照アプリケーションソースコード、アプリケーションソースコード、ソースコード
112 登録アプリケーションのリスト、リスト、登録アプリケーション
114 信頼できるゾーン
115 信頼できるゾーン
116 悪意のあるコード検出アルゴリズム、アルゴリズム、検出アルゴリズム
118 仮想機械、JavaScript仮想機械
120 仮想アドレス-関数マッピングテーブル、マッピングテーブル、VAFMT、仮想アドレスマッピングテーブル
122 識別子-仮想アドレスマッピングテーブル、マッピングテーブル、識別子-アドレスマッピングテーブル(IVAMT)
200 論理マッピング
201 ポイント、注目ポイント
202 仮想アドレス、バイナリコードおける仮想アドレス
203 ポイント、注目ポイント
204 仮想アドレス、バイナリコードおける仮想アドレス
205 ポイント、注目ポイント
206 仮想アドレス、バイナリコードおける仮想アドレス
300 論理マッピング
302 列、仮想アドレス、左手列
304 列、機能注目ポイント、右手列、機能的意味を表すマクロ
400 方法
500 論理マッピング
502 仮想アドレス
504 仮想アドレス
600 論理マッピング
602 仮想アドレス
602 機能的意味またはマクロ名
702 スクリプトオブジェクトヘッダ
704a VMヒープコード空間、VMコード空間
704b VMヒープコード空間、VMコード空間
900 VMヒープ構造
901 仮想メモリアドレス
902 コードフィールド、下位領域、コード
904 マップフィールド、下位領域、マップ
906 大型オブジェクトフィールド、下位領域、大型オブジェクト
908 旧データフィールド、下位領域、旧データ
910 旧ポインタフィールド、下位領域、旧ポインタ
912 下位領域、fromフィールド
914 下位領域、toフィールド
1000 方法
1104 列
1106 列
1108 列
1110 列
1112 列
1114 列
1200 メタデータ、更新ベース/オフセットメタデータ、バイトオフセットを使用する仮想アドレス自由表現
1202 疑似バイナリコードテンプレート
1204 更新バージョン、アプリケーションバイナリの更新バージョン
1206 領域、焦点領域、マッチング領域
1600 方法
JS1 JavaScriptオブジェクト
JS2 JavaScriptオブジェクト
JS3 JavaScriptオブジェクト
JS4 JavaScriptオブジェクト

Claims (30)

  1. コンピューティングデバイス上で実行されるアプリケーションのハイレベル機能を検出するための方法であって、
    コンピューティングデバイス上のセキュアなメモリに、アプリケーションのための仮想アドレスマッピングテーブルを記憶するステップであって、前記仮想アドレスマッピングテーブルは、対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリコードにおける複数の仮想アドレスを含む、ステップと、
    ハイレベルオペレーティングシステム(HLOS)に前記アプリケーションを登録するステップと、
    前記アプリケーションバイナリコードの実行中に、前記HLOSが、前記仮想アドレスマッピングテーブルに基づいて、前記ターゲットアプリケーション機能に対応する前記仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出するステップと
    を含む方法。
  2. 前記セキュアなメモリは、前記HLOSにおける信頼できるゾーンに存在する、請求項1に記載の方法。
  3. 前記アプリケーションバイナリコードが更新されたときに、前記ターゲットアプリケーション機能の改訂された仮想アドレスにより前記仮想アドレスマッピングテーブルを更新するステップ
    をさらに含む、請求項1に記載の方法。
  4. 前記アプリケーションの実行に関連付けられた1つまたは複数の例外または挙動を検出するように構成された例外処理モジュールに、前記仮想アドレスから検出された、前記実行されたターゲットアプリケーション機能を提供するステップ
    をさらに含む、請求項1に記載の方法。
  5. 前記例外処理モジュールは、悪意のあるコード検出アルゴリズムを含む、請求項4に記載の方法。
  6. 前記アプリケーションは、セキュアなウェブアプリケーションおよびウェブブラウザのうちの1つを含む、請求項1に記載の方法。
  7. 前記アプリケーションバイナリコードは、ネイティブバイナリコードとして実行される、請求項1に記載の方法。
  8. 前記アプリケーションバイナリコードは、関連する仮想機械を含む、請求項1に記載の方法。
  9. コンピューティングデバイス上で実行されるアプリケーションのハイレベル機能を検出するためのシステムであって、
    コンピューティングデバイス上のセキュアなメモリに、アプリケーションのための仮想アドレスマッピングテーブルを記憶するための手段であって、前記仮想アドレスマッピングテーブルは、対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリにおける複数の仮想アドレスを含む、手段と、
    ハイレベルオペレーティングシステム(HLOS)に前記アプリケーションを登録するための手段と、
    アプリケーションバイナリコードの実行中に、前記仮想アドレスマッピングテーブルに基づいて、前記ターゲットアプリケーション機能に対応する前記仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出するための手段と
    を含むシステム。
  10. 前記セキュアなメモリは、前記HLOSにおける信頼できるゾーンを含む、請求項9に記載のシステム。
  11. 前記アプリケーションバイナリコードが更新されたときに、前記ターゲットアプリケーション機能の改訂された仮想アドレスにより前記仮想アドレスマッピングテーブルを更新するための手段
    をさらに含む、請求項9に記載のシステム。
  12. 前記アプリケーションの実行に関連付けられた1つまたは複数の例外を検出するように構成された例外処理モジュールに、前記仮想アドレスから検出された、前記実行されたターゲットアプリケーション機能を提供するための手段
    をさらに含む、請求項9に記載のシステム。
  13. 前記例外処理モジュールは、悪意のあるコード検出アルゴリズムを含む、請求項12に記載のシステム。
  14. 前記アプリケーションは、セキュアなウェブアプリケーションおよびウェブブラウザのうちの1つを含む、請求項9に記載のシステム。
  15. 前記アプリケーションバイナリコードは、ネイティブバイナリコードとして実行される、請求項9に記載のシステム。
  16. 前記アプリケーションバイナリコードは、関連する仮想機械を含む、請求項9に記載のシステム。
  17. メモリ内で具現化され、コンピューティングデバイス上で実行されるアプリケーションのハイレベル機能を検出するためにプロセッサによって実行可能であるコンピュータプログラムであって、前記方法は、
    コンピューティングデバイス上のセキュアなメモリに、アプリケーションのための仮想アドレスマッピングテーブルを記憶するステップであって、前記仮想アドレスマッピングテーブルは、対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリにおける複数の仮想アドレスを含む、ステップと、
    ハイレベルオペレーティングシステム(HLOS)に前記アプリケーションを登録するステップと、
    アプリケーションバイナリコードの実行中に、前記HLOSが、前記仮想アドレスマッピングテーブルに基づいて、前記ターゲットアプリケーション機能に対応する前記仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出するステップと
    を含む、コンピュータプログラム。
  18. 前記セキュアなメモリは、前記HLOSにおける信頼できるゾーンを含む、請求項17に記載のコンピュータプログラム。
  19. 前記方法は、
    前記アプリケーションバイナリコードが更新されたときに、前記ターゲットアプリケーション機能の改訂された仮想アドレスにより前記仮想アドレスマッピングテーブルを更新するステップ
    をさらに含む、請求項17に記載のコンピュータプログラム。
  20. 前記方法は、
    前記アプリケーションの実行に関連付けられた1つまたは複数の例外または挙動を検出するように構成された例外処理モジュールに、前記仮想アドレスから検出された、前記実行されたターゲットアプリケーション機能を提供するステップ
    をさらに含む、請求項17に記載のコンピュータプログラム。
  21. 前記例外処理モジュールは、悪意のあるコード検出アルゴリズムを含む、請求項20に記載のコンピュータプログラム。
  22. 前記アプリケーションは、セキュアなウェブアプリケーションおよびウェブブラウザのうちの1つを含む、請求項17に記載のコンピュータプログラム。
  23. 前記アプリケーションバイナリコードは、ネイティブバイナリコードとして実行される、請求項17に記載のコンピュータプログラム。
  24. 前記アプリケーションバイナリコードは、関連する仮想機械を含む、請求項17に記載のコンピュータプログラム。
  25. 実行中のアプリケーションのハイレベル機能を検出するためのシステムであって、
    アプリケーションバイナリコードを実行するように構成された処理デバイスと、
    対応するターゲットアプリケーション機能にマッピングされたアプリケーションバイナリにおける複数の仮想アドレスを含む仮想アドレスマッピングテーブルを含むハイレベルオペレーティングシステム(HLOS)であって、前記ターゲットアプリケーション機能に対応する前記仮想アドレスのうちの1つまたは複数がいつ実行されるかを検出するように構成されたHLOSと
    を含むシステム。
  26. セキュアなメモリが、前記HLOSにおける信頼できるゾーンを含む、請求項25に記載のシステム。
  27. 前記HLOSは、前記仮想アドレスから検出された、前記実行されたターゲットアプリケーション機能を受信し、前記アプリケーションの実行に関連付けられた1つまたは複数の例外を検出するように構成された例外処理モジュールをさらに含む、請求項25に記載のシステム。
  28. 前記例外処理モジュールは、悪意のあるコード検出アルゴリズムを含む、請求項27に記載のシステム。
  29. 前記アプリケーションは、セキュアなウェブアプリケーションおよびウェブブラウザのうちの1つを含む、請求項25に記載のシステム。
  30. 前記アプリケーションバイナリコードは、関連する仮想機械を含む、請求項25に記載のシステム。
JP2019503727A 2016-07-29 2017-06-30 仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出 Active JP6704504B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662368223P 2016-07-29 2016-07-29
US62/368,223 2016-07-29
US15/245,037 2016-08-23
US15/245,037 US10380342B2 (en) 2016-07-29 2016-08-23 Kernel-based detection of target application functionality using virtual address mapping
PCT/US2017/040492 WO2018022255A1 (en) 2016-07-29 2017-06-30 Kernel-based detection of target application functionality using virtual address mapping

Publications (3)

Publication Number Publication Date
JP2019527892A true JP2019527892A (ja) 2019-10-03
JP2019527892A5 JP2019527892A5 (ja) 2019-11-28
JP6704504B2 JP6704504B2 (ja) 2020-06-03

Family

ID=61009931

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2019503726A Active JP6704503B2 (ja) 2016-07-29 2017-06-30 オフセットベースの仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出
JP2019503727A Active JP6704504B2 (ja) 2016-07-29 2017-06-30 仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出
JP2019503720A Pending JP2019528515A (ja) 2016-07-29 2017-06-30 アプリケーションバイナリコードの更新バージョンに関するターゲットアプリケーション機能の仮想メモリアドレスの更新

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019503726A Active JP6704503B2 (ja) 2016-07-29 2017-06-30 オフセットベースの仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2019503720A Pending JP2019528515A (ja) 2016-07-29 2017-06-30 アプリケーションバイナリコードの更新バージョンに関するターゲットアプリケーション機能の仮想メモリアドレスの更新

Country Status (9)

Country Link
US (3) US10289847B2 (ja)
EP (3) EP3491568B1 (ja)
JP (3) JP6704503B2 (ja)
KR (3) KR20190038543A (ja)
CN (3) CN109643343B (ja)
BR (3) BR112019001506A2 (ja)
SG (3) SG11201811216WA (ja)
TW (3) TWI686744B (ja)
WO (3) WO2018022257A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9754112B1 (en) * 2014-11-24 2017-09-05 Bluerisc, Inc. Detection and healing of vulnerabilities in computer code
US10289847B2 (en) 2016-07-29 2019-05-14 Qualcomm Incorporated Updating virtual memory addresses of target application functionalities for an updated version of application binary code
US10754988B2 (en) * 2016-08-30 2020-08-25 Winbond Electronics Corporation Anti-rollback version upgrade in secured memory chip
US10275596B1 (en) * 2016-12-15 2019-04-30 Symantec Corporation Activating malicious actions within electronic documents
WO2018208669A1 (en) * 2017-05-08 2018-11-15 KnowBe4, Inc. Systems and methods for providing user interfaces based on actions associated with untrusted emails
US10795659B1 (en) * 2017-11-02 2020-10-06 Virtuozzo International Gmbh System and method for live patching processes in user space
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10698686B2 (en) 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10635602B2 (en) 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10552070B2 (en) 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
JP7013297B2 (ja) * 2018-03-22 2022-01-31 株式会社セキュアブレイン 不正検知装置、不正検知ネットワークシステム、及び不正検知方法
US11182283B2 (en) * 2018-09-26 2021-11-23 Apple Inc. Allocation of memory within a data type-specific memory heap
CN109858239B (zh) * 2019-01-16 2020-01-17 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
US10936507B2 (en) * 2019-03-28 2021-03-02 Intel Corporation System, apparatus and method for application specific address mapping
US11468881B2 (en) * 2019-03-29 2022-10-11 Samsung Electronics Co., Ltd. Method and system for semantic intelligent task learning and adaptive execution
US11561814B2 (en) * 2019-05-15 2023-01-24 Vmware, Inc. Browser-driven capture of application installations for application virtualization
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
CN110598378B (zh) * 2019-08-01 2023-07-18 华为技术有限公司 全局偏移表度量方法、动态度量方法及相关装置、设备
KR20210029621A (ko) 2019-09-06 2021-03-16 삼성전자주식회사 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치
CN110888773B (zh) * 2019-10-28 2023-06-06 北京字节跳动网络技术有限公司 一种获取线程标识的方法、装置、介质和电子设备
TWI728637B (zh) * 2020-01-02 2021-05-21 中華電信股份有限公司 資訊安全防護方法及電腦可讀媒介
US11610020B2 (en) * 2020-04-07 2023-03-21 Mcafee, Llc Securing sensitive user data stored locally by an application
US11599342B2 (en) * 2020-09-28 2023-03-07 Red Hat, Inc. Pathname independent probing of binaries
CN113190448B (zh) * 2021-05-06 2022-11-04 网易(杭州)网络有限公司 测试代码更新方法及装置、电子设备、存储介质
CN113190237B (zh) * 2021-05-10 2024-01-19 北京百度网讯科技有限公司 数据处理方法、系统和装置
US11902398B2 (en) 2021-06-22 2024-02-13 Bizdata Inc. System and method to integrate data from one application to another application
US11934533B2 (en) 2021-06-22 2024-03-19 Microsoft Technology Licensing, Llc Detection of supply chain-related security threats to software applications
CN114268514B (zh) * 2021-11-30 2022-11-08 国汽智控(北京)科技有限公司 车辆与上位机的通信方法、装置及系统
CN114448815B (zh) * 2021-12-27 2023-11-03 天翼云科技有限公司 基于网络拓扑的cdn节点数据生成方法、装置及计算机设备
US11928460B2 (en) * 2022-04-20 2024-03-12 International Business Machines Corporation Dynamic update of a computer program in memory

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572590A (en) 1994-04-12 1996-11-05 International Business Machines Corporation Discrimination of malicious changes to digital information using multiple signatures
JP3011115B2 (ja) * 1997-01-17 2000-02-21 日本電気株式会社 デバッグシステム
US6988271B2 (en) 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6681331B1 (en) 1999-05-11 2004-01-20 Cylant, Inc. Dynamic software system intrusion detection
US6785818B1 (en) 2000-01-14 2004-08-31 Symantec Corporation Thwarting malicious registry mapping modifications and map-loaded module masquerade attacks
US6477612B1 (en) 2000-02-08 2002-11-05 Microsoft Corporation Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
US6598144B1 (en) * 2001-12-12 2003-07-22 Advanced Micro Devices, Inc. Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping
US7213123B2 (en) * 2002-10-24 2007-05-01 International Business Machines Corporation Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
JP4763743B2 (ja) * 2008-03-28 2011-08-31 日本電信電話株式会社 プログラム動作比較装置及び方法及びプログラム
CN101315602B (zh) * 2008-05-09 2011-01-26 浙江大学 硬件化的进程内存管理核的方法
EP2151763A1 (en) 2008-07-28 2010-02-10 Nagravision S.A. Method and apparatus for obfuscating virtual to physical memory mapping
US9235704B2 (en) 2008-10-21 2016-01-12 Lookout, Inc. System and method for a scanning API
CN101430662B (zh) * 2008-12-09 2010-10-06 东信和平智能卡股份有限公司 Java语言程序与虚拟机程序共同调试的方法
US8117422B2 (en) 2009-02-05 2012-02-14 Texas Instruments Incorporated Fast address translation for linear and circular modes
US8271450B2 (en) 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
TWI432987B (zh) 2011-03-15 2014-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與病毒掃描方法
US8943330B2 (en) 2011-05-10 2015-01-27 Qualcomm Incorporated Apparatus and method for hardware-based secure data processing using buffer memory address range rules
US9032526B2 (en) 2011-05-12 2015-05-12 Microsoft Technology Licensing, Llc Emulating mixed-code programs using a virtual machine instance
US8566935B2 (en) 2011-05-12 2013-10-22 At&T Intellectual Property I, L.P. Balancing malware rootkit detection with power consumption on mobile devices
CN102243595B (zh) * 2011-08-03 2014-02-19 浙江大学 基于MMU架构的Java Card系统组件更新方法
US8897762B2 (en) * 2012-02-28 2014-11-25 Qualcomm Incorporated Optimizing signaling load overhead and battery consumption for background applications
IL219597A0 (en) 2012-05-03 2012-10-31 Syndrome X Ltd Malicious threat detection, malicious threat prevention, and a learning systems and methods for malicious threat detection and prevention
US9344275B2 (en) * 2012-05-08 2016-05-17 Arm Technologies Israel Ltd. System, device, and method of secure entry and handling of passwords
US8819772B2 (en) 2012-06-25 2014-08-26 Appthority, Inc. In-line filtering of insecure or unwanted mobile device software components or communications
US9268936B2 (en) 2012-07-27 2016-02-23 Mandiant, Llc Physical memory forensics system and method
US9092327B2 (en) * 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US9311011B2 (en) * 2013-08-07 2016-04-12 Qualcomm Incorporated Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
CA2923231C (en) * 2013-09-12 2020-06-02 Virsec Systems, Inc. Automated runtime detection of malware
US9489313B2 (en) 2013-09-24 2016-11-08 Qualcomm Incorporated Conditional page fault control for page residency
CN104572046B (zh) * 2013-10-16 2019-01-11 腾讯科技(深圳)有限公司 一种堆栈还原方法和计算机系统
US9721212B2 (en) 2014-06-04 2017-08-01 Qualcomm Incorporated Efficient on-device binary analysis for auto-generated behavioral models
US9721660B2 (en) * 2014-10-24 2017-08-01 Microsoft Technology Licensing, Llc Configurable volatile memory without a dedicated power source for detecting a data save trigger condition
CN104461905A (zh) * 2014-12-30 2015-03-25 东信和平科技股份有限公司 一种智能卡虚拟机、api库与上层应用同时调试的方法及系统
CN105117648A (zh) * 2015-07-29 2015-12-02 杭州安恒信息技术有限公司 一种基于虚拟机的0day/恶意文档检测系统及方法
US10289847B2 (en) 2016-07-29 2019-05-14 Qualcomm Incorporated Updating virtual memory addresses of target application functionalities for an updated version of application binary code

Also Published As

Publication number Publication date
BR112019001506A2 (pt) 2019-05-07
EP3491568A1 (en) 2019-06-05
EP3491568B1 (en) 2022-02-23
JP6704504B2 (ja) 2020-06-03
CN109478217A (zh) 2019-03-15
CN109564608A (zh) 2019-04-02
KR20190038544A (ko) 2019-04-08
TWI686744B (zh) 2020-03-01
US10360383B2 (en) 2019-07-23
EP3491569A1 (en) 2019-06-05
US20180032721A1 (en) 2018-02-01
KR102097256B1 (ko) 2020-04-03
WO2018022255A1 (en) 2018-02-01
US10289847B2 (en) 2019-05-14
TWI696950B (zh) 2020-06-21
JP2019526123A (ja) 2019-09-12
EP3491569B1 (en) 2020-04-22
WO2018022256A1 (en) 2018-02-01
JP2019528515A (ja) 2019-10-10
SG11201811213XA (en) 2019-02-27
BR112019001511A2 (pt) 2019-04-30
US20180032731A1 (en) 2018-02-01
SG11201811211TA (en) 2019-02-27
KR20190038542A (ko) 2019-04-08
BR112019001479A2 (pt) 2019-04-30
WO2018022257A1 (en) 2018-02-01
TW201807576A (zh) 2018-03-01
CN109643343A (zh) 2019-04-16
CN109643343B (zh) 2023-09-15
JP6704503B2 (ja) 2020-06-03
EP3491570A1 (en) 2019-06-05
US10380342B2 (en) 2019-08-13
SG11201811216WA (en) 2019-02-27
KR20190038543A (ko) 2019-04-08
KR102058326B1 (ko) 2019-12-20
CN109478217B (zh) 2021-12-28
US20180032441A1 (en) 2018-02-01
TW201807570A (zh) 2018-03-01
TW201805806A (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
JP6704504B2 (ja) 仮想アドレスマッピングを使用したターゲットアプリケーション機能のカーネルベースの検出
US11061833B2 (en) Apparatus and method for handling page protection faults in a computing system
Yuhala et al. Montsalvat: Intel SGX shielding for GraalVM native images
KR102271273B1 (ko) 네이티브 코드 분석방지 우회를 위한 프로세스 래핑 방법, 이를 수행하기 위한 기록 매체 및 장치
Saeed et al. Tag‐Protector: An Effective and Dynamic Detection of Illegal Memory Accesses through Compile Time Code Instrumentation
Galea et al. SUDUTA: Script UAF Detection Using Taint Analysis
Verma Multimedia Attacks on Android devices using StageFright exploit

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191015

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191015

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200512

R150 Certificate of patent or registration of utility model

Ref document number: 6704504

Country of ref document: JP

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