JP2021521513A - 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入 - Google Patents

潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入 Download PDF

Info

Publication number
JP2021521513A
JP2021521513A JP2020555096A JP2020555096A JP2021521513A JP 2021521513 A JP2021521513 A JP 2021521513A JP 2020555096 A JP2020555096 A JP 2020555096A JP 2020555096 A JP2020555096 A JP 2020555096A JP 2021521513 A JP2021521513 A JP 2021521513A
Authority
JP
Japan
Prior art keywords
trap
code
application
address range
access
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
JP2020555096A
Other languages
English (en)
Other versions
JP7175549B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021521513A publication Critical patent/JP2021521513A/ja
Application granted granted Critical
Publication of JP7175549B2 publication Critical patent/JP7175549B2/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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスにトラップ・コードを投入するコンピュータ・プログラム製品、システム、および方法を提供する。指定タイプのコマンドが、アプリケーション・コードにおいて処理され、応答して、トラップ・コードが、トラップ・アドレス範囲を割り当てるために実行される。指定タイプのコマンドが、アプリケーション・コードにおいて実行される。アクセス側アプリケーションがトラップ・アドレス範囲にアクセスするかどうかに関して、判断が行われる。アクセス側アプリケーションが潜在的に悪意のあるコードを含むという通知を送信すること、アクセス側アプリケーションの実行をモニタリングすること、およびアクセス側アプリケーションの実行を制限すること、のうちの少なくとも1つが、アクセス側アプリケーションがトラップ・アドレス範囲にアクセスしたという判断に応答して実行される。

Description

本発明は、潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスにトラップ・コードを投入するコンピュータ・プログラム製品、システム、および方法に関する。
ウイルス対策ソフトウェアとも呼ばれる、マルウェア対策ソフトウェアは、悪意のあるブラウザ・ヘルパー・オブジェクト(BHO)、ブラウザ・ハイジャッカ、ランサムウェア、キー・ロガー、バックドア、ルートキット、トロイの木馬、ワーム、悪意のあるLSP、ダイヤラ、不正ツール、アドウェア、およびスパイウェアなどの悪意のあるソフトウェアを検出、防止、および除去するために使用される。典型的には、悪意のあるソフトウェアからのデータ漏洩の可能性があるときに、不審なソフトウェアによるデータのいかなる改変も回避するように、セキュリティ脅威が解決されるまで、漏洩されやすいデータへのアクセスがブロックされる。ランサムウェアという悪意のあるソフトウェアの一種は、ユーザ・データを暗号化し、その後ランサムウェアの操作者が、それらのデータを復号するために使用する暗号キーに対する支払いを要求して、攻撃の被害者を恐喝する。
悪意のあるコードは、キャッシュ動作の一部としてシステム・キャッシュ内に記憶された保護メモリからメモリ・データを読み出すことによって、保護メモリ内のデータにアクセスしようとすることがある。保護メモリは、プロセスがアクセス権を有しない限りプロセスがアクセスできるべきでないシステム・メモリの領域を含む。正当なプロセスは、個人情報、パスワードなどの、他のアプリケーションを対象としないある保護データを保護メモリ内に記憶し得る。悪意のあるコードが、キャッシュ内のあるキャッシュされたデータがカーネル・アドレスからのものであり、機密および秘密の保護データを含み得ることを知っていることを利用するサイドチャネル攻撃において、キャッシュ内に記憶された保護メモリからの保護データが、悪意のあるコードによってアクセスされることがある。
本技術分野において、悪意のある活動およびデータ危殆化を防止するために、キャッシュ内に記憶された保護データにアクセスしようとする悪意のあるコードを検出するための改善された技術に対する必要性が存在する。
第1の実施形態は、潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスにトラップ・コードを投入するコンピュータ・プログラム製品、システム、および方法を提供する。指定タイプのコマンドが、アプリケーション・コードにおいて処理され、応答して、トラップ・コードが、トラップ・アドレス範囲を割り当てるために実行される。指定タイプのコマンドが、アプリケーション・コードにおいて実行される。アクセス側アプリケーションがトラップ・アドレス範囲にアクセスするかどうかに関して、判断が行われる。アクセス側アプリケーションが潜在的に悪意のあるコードを含むという通知を送信すること、アクセス側アプリケーションの実行をモニタリングすること、およびアクセス側アプリケーションの実行を制限すること、のうちの少なくとも1つが、アクセス側アプリケーションがトラップ・アドレス範囲にアクセスしたという判断に応答して実行される。
第1の実施形態では、保護アドレス空間または機密データへのアクセスを提供し得るコマンドなどの指定タイプのコマンドの実行が、トラップ・アドレス範囲を割り当てるトラップ・コードの実行をトリガする。アプリケーションが、実行されているアプリケーション・コードによってアクセスされるアドレス範囲ではない、そのトラップ・アドレス範囲にアクセスしようとする場合、アクセス側アプリケーションが、悪意のあるものであるか、またはアプリケーションに対して割り当てられていないトラップ・アドレス範囲にアプリケーションをアクセスさせるバグを有するという仮定が行われ得る。トラップ・アドレス範囲へのそのようなアクセスが検出されると、ブロック、モニタリングなどの保護動作が、アプリケーション・コードに対して行われ得る。このように、脅威モニタ・プログラムは、モニタリングを全てではないアプリケーションに限定するが、機密情報へのアクセスを提供し得るアプリケーション・コード内の指定タイプのコマンドを、悪意のあるプログラムが利用しようとする状況を、より集中してモニタリングすることを提供する。説明される実施形態は、機密データへのアクセスを提供し得るそのような指定タイプのコマンドが実行されるときに、トラップ・アドレス範囲を割り当てることをトリガし、悪意のあるコードは、正当なアプリケーションによってアクセスされないトラップ・アドレス範囲にアクセスしようとすることによって、検出され得る。
第2の実施形態において、指定タイプのコマンドが、カーネル・アドレスにアクセスするためにユーザ・モードからカーネル・モードへ切り替えるためのコマンドを含み、トラップ・アドレス範囲は、カーネル・アドレス空間において定義される。
第2の実施形態では、カーネル・アドレスは、悪意のあるプログラムがアクセスおよび利用しようとする機密および保護データへのアクセスを提供し得るため、アプリケーションがカーネル・アドレスにアクセスするためにカーネル・モードに切り替えるとき、トラップ・アドレス範囲が割り当てられる。よって、カーネル・アドレスがアプリケーションによってアクセスされるときにトラップ・アドレス範囲を割り当てることによって、説明される実施形態は、機密情報へのアクセスが提供され得るアプリケーション・プログラム内のポイントにおいて、悪意のあるコードのためのトラップを生成する。悪意のあるコードは、カーネル・アドレス空間へのアクセスを提供するコードを用いて割り当てられるトラップ・アドレス範囲などのアドレスを利用しようとし得るため、これによって、悪意のあるコードを捉える可能性がさらに高まる。
第3の実施形態において、アクセス側アプリケーションが、アドレス・テーブルにおいてキャッシュ内の有効データにマッピングされないカーネル・アドレス空間内のアドレスにアクセスすることに応答して、セグメンテーション違反が受信される。このような場合、アクセス側アプリケーションがトラップ・アドレス範囲にアクセスしたかどうかの判断が、セグメンテーション違反を受信することに応答して行われる。
第3の実施形態では、プログラムが悪意のあるものかどうかをチェックすることが、アクセスされているカーネル・アドレスがトラップ・アドレス範囲内にあるかどうかをチェックするために、セグメンテーション違反が発生するときに実行される。これは、セグメンテーション違反を投げるカーネル・アドレスにアクセスするときに悪意のあるプログラムがデータにアクセスする可能性が高いポイントに、悪意のあるプログラムをチェックするプロセッサを制限することによって、モニタリング動作の効率をさらに改善する。
第4の実施形態において、指定タイプのコマンドは、システム・コールを含み、システム・コールは、トラップ・コードの実行後に実行される。
第4の実施形態では、トラップ・アドレス範囲を割り当てることをトリガする指定タイプのコマンドは、システム・コールを含む。これは、システム・コールがカーネル・アドレス空間にアクセスするためにユーザ・モードからカーネル・モードに切り替えるため、トラップ・アドレスをシステム・コールに結び付けることによって、動作効率をさらに改善する。よって、悪意のあるプログラムは、システム・コールを用いて割り当てられるアドレス範囲を求め得る。このように、説明される実施形態は、トラップ・アドレス範囲の割り当てを、あるタイプのコール、悪意のあるプログラムによって標的とされる可能性が他のタイプのコールよりも高いシステム・コールに結び付けることによって、悪意のあるコードに対するモニタリングの効率を改善する。
第5の実施形態において、トラップ・アドレス範囲は、アドレス・テーブルにおいて無効物理アドレスにマッピングされ、アクセス側アプリケーションがトラップ・アドレス範囲にアクセスしたかどうかを判断することが、無効な位置にマッピングされたトラップ・アドレス範囲にアクセス側アプリケーションがアクセスするときに発生する違反を検出することを含む。
第5の実施形態では、トラップ・アドレス範囲を無効物理アドレスにマッピングすることによって、悪意のあるプログラムである可能性が高いプログラムがトラップ・アドレス範囲にアクセスしようとするときにセグメンテーション違反が発生する。これは、連続したモニタリングを必要としないことによってモニタリング動作をさらに最適化し、悪意のあるコードによるアクセスの可能性がより高いときにのみ、モニタリングがトリガされる。それは、プログラムが有効物理アドレスにマッピングされていないトラップ・アドレス範囲にアクセスしようとするときに発生し、通常のオペレーティング・システム・プロセスの一部であるセグメンテーション違反によってフラグされ得る。
第6の実施形態において、トラップ・コードを実行することにより、トラップ・アドレス範囲がアドレス・テーブルにマッピングされ、その場合、アクセス側アプリケーションがトラップ・アドレス範囲にアクセスしたかどうかを判断することは、アクセス側アプリケーションが、計算リソースにアクセスするためにトラップ・アドレス範囲からトラップ・データを使用しようとすることを検出することを含む。
第6の実施形態では、偽造識別子およびパスワードなどのトラップ・データは、有効なアプリケーション・プログラムによって使用されないトラップ・アドレス範囲に置かれる。よって、プログラムが、計算リソースにアクセスするためにトラップ・データから識別子およびパスワードを提示している場合、そのようなアクセスは、悪意のあるものである可能性が最も高い。この実施形態では、モニタリング動作は、悪意のあるものではないモニタリング・プログラム上でリソースを浪費せず、悪意のあるプログラムまたはバグのある悪意のないプログラムからのものである可能性が高いアクセスに集中する。
第7の実施形態において、アプリケーション・コードを実行するプロセッサは、アプリケーション・コードの条件分岐の両方の分岐を投機的に実行し、その場合、条件分岐のうちの一方のみの結果が、条件分岐のどれを通過するかを判断するために使用される条件に応じて維持される。
第8の実施形態において、トラップ・コードは、条件分岐を処理するときに、条件分岐のうちの条件分岐においてプロセッサにより投機的に実行される。
第7および第8の実施形態では、プロセッサがコードを投機的に実行しているときに、トラップ・コードが実行され得る。これにより、悪意のあるプログラムのモニタリング効率がさらに向上するが、なぜなら、悪意のあるプログラムは、投機的実行の結果としてメモリ内に残された機密データを利用しようとすることがあるためである。このように、投機的実行中にトラップ・アドレス範囲を割り当てることによって、説明される実施形態では、投機的実行中にメモリ内に記憶された機密データにアクセスしようとする悪意のあるコードを観察する可能性がより高い。
コンピューティング環境の実施形態を示す図である。 トラップ・アドレス範囲を割り当てるために、アプリケーション・コードを実行するプロセスの実行パス内にトラップ・コードを投入するための動作の実施形態を説明する図である。 トラップ・アドレス範囲へのアクセスから潜在的に悪意のある活動を検出するための動作の実施形態を説明する図である。 潜在的に悪意のあるプログラムがカーネル・アドレスにアクセスしようとしているときに、トラップ・アドレス範囲へのアクセスを検出するための動作の実施形態を説明する図である。 潜在的に悪意のあるプログラムが計算リソースにアクセスするためにトラップ・アドレス範囲からトラップ・コードを提出していることを検出するための動作の実施形態を説明する図である。 悪意のあるコードを検出するためのトラップ・アドレス範囲を割り当てるために、アプリケーション・コードの投機的実行を行いつつトラップ・コードを投入するための、投機的実行プロセスによる動作の実施形態を説明する図である。 図1の構成要素が実施され得るコンピューティング環境を説明する図である。
投機的実行では、アプリケーション・プロセスが、アプリケーション・コードの投機的実行が発生したプログラム内のポイントに最終的に到達するときに、パラメータおよびデータをアプリケーション・プロセスに利用可能にするために、プロセッサは、実行パスにおけるアプリケーション・プロセスに先立ってアプリケーション・コードを投機的に実行する。投機的実行が、前もって判断されたパラメータの値などの条件に応じて実行の各種パスの条件分岐に到達する場合、プロセッサ投機的実行は、条件分岐のどのパスをアプリケーション・プロセスが通過するかにかかわらず利用可能となるパラメータおよび値を事前計算するために、全ての条件分岐のアプリケーション・コードを処理する。これにより、アプリケーション・コードを実行することなく投機的に生成されたパラメータおよび情報を使用できることによって、アプリケーション・プロセスの速度が大幅に上昇する。
当技術分野において、コードを投機的に実行するプロセスが、カーネル・アドレス内のデータにアクセスするために、条件分岐内のシステム・コールを処理するとき、機密情報および個人情報を含み得るアクセス済みのデータは、キャッシュ内に記憶され得る。さらに、アプリケーション・プロセスが、カーネル内の保護データにアクセスするシステム・コールを含まない他の分岐に進む場合、アクセス済みのデータは、キャッシュ内に残ることがある。悪意のあるコードは、投機的実行によってキャッシュ内に記憶された、キャッシュされた保護データを読み出そうとする場合がある。
投機的実行のリスクに対処するために、当技術分野では、キャッシュ内に保護データを残すことを回避するために、いかなる条件分岐上でも投機的実行が休止され得る。別の現行の解決策は、任意の保護データを除去するためにキャッシュをフラッシュすること、または保護データへのアドレスをアンマップすることである。しかしながら、これらの解決策は、アプリケーション・プロセスに先立って投機的に生成されたパラメータおよび他の情報を取り除くことによって、アプリケーション・プロセスによりそれらが必要となる前にデータおよびパラメータを利用可能にする投機的実行の恩恵を取り除くこととなる。
説明される実施形態は、指定タイプのコマンドを処理することに応答してトラップ・コードを実行することにより、プロセッサ投機的実行が続行することを可能にするとともに、悪意のあるコードを検出するためのコンピュータ技術に改善をもたらす。トラップ・コードは、トラップ・アドレス範囲を割り当てる。指定タイプのコマンドは、トラップ・コードの実行後、次いで実行され得る。トラップ・アドレス範囲は、アプリケーション・コードの一部ではないトラップ・コードによって割り当てられたため、トラップ・アドレス範囲は、アプリケーションによって使用されるアドレス範囲ではない。アプリケーションが、トラップ・アドレス範囲にアクセスしようとするとき、アプリケーションは、潜在的の悪意のあるコードと考えられてもよく、アクセス側アプリケーションが潜在的に悪意のあるコードを含むという通知を送信すること、アクセス側アプリケーションの実行をモニタリングすること、およびトラップ・アドレス範囲にアクセスするアプリケーションの実行を制限すること、のうちの少なくとも1つを実行するなど、保護動作が行われ得る。
図1は、バス107を経て通信するプロセッサ102、メモリ104、および記憶デバイス106を有するコンピュータ・システム100を含む、コンピューティング環境の実施形態を図説する。プロセッサ102は、別々の中央処理装置(CPU)、単一CPU上の複数のコアの1つもしくはグループ、または1つもしくは複数のCPU上の処理リソースのグループを含み得る。
メモリ104は、記憶デバイス106内に記憶されたデータへのアプリケーション・アクセスを管理するため、およびボリューム、論理デバイスなどのより大きなトラックのグループの一部であり得る、トラック、論理ブロック・アドレス(LBA)、記憶セル、セルのグループ(例えば、セルの列、行、またはアレイ)、セクタ、セグメントなどとしてデータのアドレス指定を管理するための、オペレーティング・システム108を含む。オペレーティング・システム108は、複数のアプリケーション114が存在しうるアプリケーション・プログラム114内のアプリケーション・コード112を実行するために、アプリケーション・プロセス110の1つまたは複数のインスタンスを生成してもよい。プロセッサ102は、アプリケーション・プロセス110がアプリケーション・コード112を実行している実行パス内の位置に先立ってアプリケーション・コード112を投機的に実行するための投機的実行ロジック116を含み、それにより、投機的に実行されたアプリケーション・コード112内のそのポイントにアプリケーション・プロセス110が到達するときに、投機的に実行されたアプリケーション・コード112からのパラメータおよび他の情報が、アプリケーション・プロセス110に利用可能である。プロセッサ102は、任意の実行中プロセス110上で投機的実行を行い得る。
オペレーティング・システム108は、ハードウェア・ページ・テーブル(HPT)とも呼ばれるアドレス・テーブル118を維持し、アプリケーション114に割り当てられた論理アドレスの、メモリ104内のローカル・キャッシュ120または記憶デバイス106においてデータが記憶されている物理位置へのマッピングを提供する。ある実施形態において、論理アドレスは、仮想アドレスを含んでもよく、そこで、仮想アドレスまたは論理アドレスのためのデータは、メモリ104内のキャッシュ120または記憶デバイス106に記憶されてもよく、記憶デバイス106内の仮想アドレスのためのデータは、アプリケーション・プロセス110によるアクセスおよびプロセッサ102による投機的実行のためにキャッシュ120内にページングされる必要がある。
オペレーティング・システム108は、コンピュータ・システム100においてまたはネットワークを経てリモート接続されたコンピュータ・システムにおいて実行され、入力/出力(I/O)要求を発行するアプリケーション126が、マルウェア、ランサムウェア、ウイルス、および他の悪意のあるコードなどの潜在的に悪意のあるプログラム126を含むかどうかを判断するための、脅威モニタ・プログラム122をさらに含み得る。
メモリ104は、アプリケーション・コード112の投機的実行のパス内に投入されるトラップ・コード124を含む。トラップ・コード124は、アプリケーション・プログラム114によってアクセスされない、かつサイドチャネル攻撃などにおいて盗むためにデータにアクセスしようとする悪意のあるプログラムによってアクセスされる可能性が高い、または正当なプログラム内のバグの結果としてアクセスされる可能性が高い、トラップ・アドレスまたはトラップ・データ128を割り当てることを目的とする。一実施形態では、トラップ・アドレス範囲へのアクセスが、セグメンテーション違反をもたらし、潜在的に悪意のある活動に対してオペレーティング・システム108に警告するように、トラップ・コード124は、無効な位置にマッピングするアドレスのトラップ・アドレス範囲を割り当て得る。代替な的実施形態において、トラップ・アドレス範囲は、正当なアプリケーション・プログラム114または有効なユーザによって提示されない、偽造パスワードおよびユーザ識別子などのトラップ・コード124によってキャッシュ120に追加されるトラップ・データ128にマッピングし得る。よって、システム100内の計算リソースにアクセスするためにトラップ・データ128を提示する、潜在的に悪意のあるアプリケーション126またはユーザは、保護動作が取られる必要がある潜在的に悪意のあるプログラム126として、不審な活動に携わる。ランサムウェアまたは他の悪意のあるプログラムが、ストレージ106内のデータを盗むか、または暗号化するための動作の一部として、トラップ・データ128にアクセスすると仮定され得る。トラップ・アドレス範囲は、アドレス・テーブル118の情報およびフラグにおいて識別され、指示され得る。
メモリ104は、トラップ・アドレス範囲またはトラップ・コード124によって生成されるトラップ・データ128、あるいはその両方へのアクセスに基づいて、ウイルス、ランサムウェアなどの悪意のあるコードを潜在的に有する不審なプロセスを検出するための、脅威モニタ・プログラム122をさらに含む。
オペレーティング・システム108、アプリケーション・プログラム114、トラップ・コード124、脅威モニタ・プログラム122は、メモリ104内にロードされてプロセッサ102の1つまたは複数によって実行されるプログラム・コードとして、図1に示される。代替的には、機能のうちのいくつかまたは全てが、特定用途向け集積回路(ASIC)などのシステム100内のハードウェア・デバイス内のマイクロコードまたはファームウェアとして実施され得る。
ストレージ106は、ソリッド・ステート電子回路で構成されるソリッド・ステート記憶デバイス(SSD)、NAND記憶セル、EEPROM(電気的消去可能プログラマブル読み出し専用メモリ)、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ(RAM)・ドライブ、ストレージ・クラス・メモリ(SCM)、相変化メモリ(PCM)、抵抗変化型メモリ(RRAM)、スピン注入メモリ(STM−RAM)、導電性ブリッジRAM(CBRAM)、磁気ハード・ディスク・ドライブ、光ディスク、テープなどの、当技術分野において既知の1つまたは複数の記憶デバイスを含み得る。記憶デバイスは、単純ディスク束(JBOD)、直接アクセス記憶デバイス(DASD)、独立ディスクの冗長アレイ(RAID)アレイ、仮想化デバイスなどの、デバイスのアレイ内にさらに構成され得る。さらに、記憶デバイスは、異なるベンダまたは同一ベンダからの異種記憶デバイスを含み得る。
メモリ104は、上述したものを含む、適当な揮発性または不揮発性メモリ・デバイスを含み得る。
図2は、実行コードを実行するプロセッサ102についての動作の実施形態を示し、それは、アプリケーション・コード112の通常アプリケーション・コード処理または投機的実行の一部であり得る。(ブロック200において)アプリケーション・コード112を実行するための動作を開始すると、投機的に、またはそうでないやり方で、プロセッサ102は、(ブロック202において)アプリケーション・コード112内のコマンドを処理する。(ブロック204において)処理されたコマンド・タイプが、システム・コールまたはカーネル・アドレス空間にアクセスするためのコールなどの、トラップ・コード124の実行をトリガするために指定されたコマンド・タイプである場合、プロセッサ102は、(ブロック206において)無効な物理アドレスにマッピングするトラップ・アドレス範囲、またはキャッシュ内にデータが記憶されていない範囲など、カーネル・アドレス空間においてトラップ・アドレス範囲を割り当てるためにトラップ・コード124を実行する。代替的に、プロセッサ102は、偽造ユーザ名およびパスワードを含むなど、トラップ・アドレス範囲内にトラップ・データ128を含み得る。(ブロック204において)プロセス・コマンドが指定タイプのものでない場合、または(ブロック206において)トラップ・コード124の実行後、プロセッサ102は、(ブロック208において)処理されたコマンドを実行し、全ての条件分岐における投機的処理コードなどの、アプリケーション・コード112を処理し続ける。実行中にトラップ・コード124の実行の複数のインスタンスに応答して生成されるトラップ・アドレス範囲の複数のインスタンスが存在し得る。
図3は、脅威モニタ・プログラム122によって実行される動作の実施形態を示し、脅威モニタ・プログラム122は、アプリケーション・プログラム126が潜在的に悪意のあるプログラムであるかどうかを判断するための、オペレーティング・システム108の一部であってもよい。(ブロック300において)潜在的に悪意のあるプログラム126が、トラップ・アドレス範囲に対する読み出しまたは書き込みを発行するなど、トラップ・アドレス範囲にアクセスしたことを検出すると、脅威モニタ・プログラム122は、(ブロック302において)アクセス側アプリケーション126が潜在的に悪意のあるコードを含むという通知をユーザまたはウイルス対策プログラムに送信すること、潜在的に悪意のあるプログラム126の実行をモニタリングすること、および潜在的に悪意のあるプログラム126の実行を制限すること、のうちの少なくとも1つを実行する。例えば、脅威モニタ・プログラム122は、潜在的に悪意のあるプログラム126を隔離してもよく、潜在的に悪意のあるプログラム126が認可されたプログラムである場合にはその実行を可能にする、削除する、またはその他潜在的に悪意のあるプログラム126の実行をブロックするなど、さらなるアクションを取るようにユーザに警告してもよい。ある実施形態において、潜在的に悪意のあるプログラム126のモニタリングは、潜在的に悪意のあるプログラム126がコンピュータ・システム100においてどのように対話するか、およびそれがどのアドレスとインターネットを経て通信するかをモニタリングするために、情報がプログラム126に提供される「ハニー・ポット」環境においてプログラム126が実行されることを可能にすることを含み得る。
図4は、オペレーティング・システム108、脅威モニタ・プログラム122、またはアプリケーションがオペレーティング・システム108のカーネル・アドレス空間内のカーネル・アドレスにアクセスしようとするときにアプリケーション・プログラム126が潜在的に悪意のあるプログラムであるかどうかを判断するための他のプログラム、あるいはそれらの組み合わせによって実行される動作の追加実施形態を示す。(ブロック400において)ユーザ空間において実行している場合があるアプリケーション126が、要求されたカーネル・アドレスにアクセスしようとしていることを検出すると、オペレーティング・システム108/脅威モニタ・プログラム122は、(ブロック402において)要求されたカーネル・アドレスがアドレス・テーブル118内にあるかどうかを判断する。(ブロック402において)カーネル・アドレスがアドレス・テーブル118内にある場合、および(ブロック404において)要求されたカーネル・アドレスのためのデータがキャッシュ120内にある場合、(ブロック406において)カーネル・アドレスのための要求されたデータが、キャッシュ120から要求側のアプリケーションに返される。(ブロック402において)要求されたカーネル・アドレスがアドレス・テーブル118内にない場合、または(ブロック404において)要求されたカーネル・アドレスのためのデータがキャッシュ120内にない場合、(ブロック408において)セグメンテーション違反が投げられる。
(ブロック408における)セグメンテーション違反に応答して、オペレーティング・システム108/脅威モニタ・プログラム122は、(ブロック410において)要求されたカーネル・アドレスがトラップ・アドレス範囲内にあるかどうかを判断する。範囲内にない場合、(ブロック412において)エラーがアクセス側アプリケーションに返される。アクセス側アプリケーションは、トラップ・アドレスにアクセスしようとしていなかったため、悪意のあるプログラム126でない場合があるが、セグメンテーション違反を受信する正当なプログラムを含み得る。(ブロック410において)要求されたカーネル・アドレスが、トラップ・アドレス範囲内にある場合、プログラム126は、悪意があると考えられてもよく、脅威モニタ・プログラム122は、図3のブロック302に関して説明されるように、潜在的に悪意のあるプログラム126に関して説明される脅威ハンドリング動作(ブロック414における)のうちの1つを実行する。
図5は、トラップ・パスワードおよびユーザIDを有するなど、トラップ・アドレス範囲においてトラップ・データ128が提供される実施形態において、アプリケーション・プログラム126が潜在的に悪意のあるプログラムであるかどうかを判断するために、脅威モニタ・プログラム122、オペレーティング・システム108、または他のプログラム、あるいはそれらの組み合わせによって実行される動作の追加実施形態を示す。(ブロック500において)アクセス側アプリケーション126が、コンピュータ・システム100内のまたはコンピュータ・システム100に連結された、ハードウェア、ソフトウェア、またはデータ・リソースなどの計算リソースにアクセスするために、ユーザIDまたはパスワードなどのアクセス・コードを提出していることを検出すると、脅威モニタ・プログラム122/オペレーティング・システム108は、(ブロック502において)トラップ・アドレス範囲内のアドレスのうちの1つによってアドレス指定されたキャッシュ120またはストレージ106内の位置に、提出されたコードがあるかどうかを判断する。(ブロック502において)提出されたアクセス・コードが、トラップ・アドレス範囲からのものではない場合、脅威モニタ・プログラム122は、(ブロック504において)要求された計算リソースへのアクセスが認可されるかどうかを判断するために、コードの処理を許可する。そうでない場合、(ブロック502において)提出されたアクセス・コードがトラップ・アドレス範囲のうちの1つにある場合に、脅威モニタ・プログラム122は、図3のブロック302に関して説明されたように、潜在的に悪意のあるプログラム126に関して説明された脅威ハンドリング動作のうちの1つを(ブロック506において)実行する。
図4および図5の実施形態では、アプリケーションが、トラップ・アドレス範囲のうちの1つにアクセスしようとすること、またはトラップ・アドレス範囲に記憶されたコードを提出することを検出された場合、正当なアプリケーション・プログラム114が、アプリケーション・プログラム114に割り当てられないアドレスにアクセスしている場合にエラーまたはバグを有していない限り、トラップ・アドレス範囲は、正当なアプリケーション・プログラム114からアプリケーション・コード112によって割り当てられていないため、アクセス側アプリケーションが悪意のあるコードを含む可能性が高い。
図6は、実行パスにおいてアプリケーション・プロセス110がアプリケーション・コード112を実行しているところに先立って投機的実行を実施するプロセッサ102によって実施される、動作の実施形態を示す。アプリケーション・コード112を投機的に処理しつつ、プロセッサ102は、(ブロック602において)アプリケーション・コード112内の条件分岐を処理し、前もって実行されたアプリケーション・コード112の間の条件またはパラメータ値のセットが、コード内のどの分岐を取るべきかを判断する。プロセッサ102は、その条件分岐に到達するときにアプリケーション・プロセス110が処理する分岐にかかわらず、任意のパラメータおよびデータを利用可能にするために、全ての分岐におけるアプリケーション・コード112を処理する。(ブロック604において)条件分岐内のうちの1つにおけるコマンドを処理すると、プロセッサ102は、(ブロック606において)処理されたコマンドのタイプが、システム・コール、またはカーネル・モードおよびカーネル・アドレス空間への他のアクセスを含むかどうかを判断する。含む場合、プロセッサ102は、(ブロック608において)カーネル・アドレス範囲を含むトラップ・アドレス範囲を割り当てるために、トラップ・コード124を実行する。トラップ・アドレス範囲は、アドレス・テーブル118内の無効な位置にマッピングされるか、またはトラップ・データ128を有する位置にマッピングされる。(ブロック608において)トラップ・コード124を処理した後、または(ブロック606のいいえの分岐から)処理したコマンドがシステム・コールを含まない場合、プロセッサ102は、(ブロック610において)処理したコマンドを投機的に実行し、(ブロック612において)ブロック600に戻って進むことによりアプリケーション・コード112の投機的実行を続ける。
図6の実施形態では、システム・コールが、アプリケーション・コード112の投機的実行中にトラップ・アドレス範囲の割り当てをトリガする。アプリケーション・プロセス110が、システム・コールを有しない他の分岐を取る場合、それははるかに頻繁に通過される分岐である可能性が高く、その分岐内のコードが投機的に実行され、それによって、より頻繁に通過される分岐について投機的実行の恩恵をもたらす。このように、説明される実施形態は、カーネル・アドレスにアクセスしようとしている悪意のあるプログラム126をトラップすることができるように、システム・コールを有する分岐においてトラップ・アドレス範囲を割り当てつつ、投機的実行の恩恵が、最も頻度の高い処理パスについて実現されることを可能にする。悪意のあるコード126は、トラップ・アドレスが条件分岐に割り当てられたと知り、それらがシステム・コールの一部として割り当てられ、個人データ、パスワードなどの機密情報を含み得ると信じるそれらのトラップ・アドレスにアクセスしようとする。
代替的な実施形態において、トラップ・コード124は、システム・コールが実行された後で実行されてもよい。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはJava、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を生成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定のやり方で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令はまた、コンピュータ実施されるプロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実施において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよいし、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
コンピュータ・システム100を含む図1の計算コンポーネントは、図7に示されるコンピュータ・システム702などの1つまたは複数のコンピュータ・システムにおいて実施され得る。コンピュータ・システム/サーバ702は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的状況において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ702は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
図7に示されるように、コンピュータ・システム/サーバ702は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ702のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット704、システム・メモリ706、およびシステム・メモリ706を含む様々なシステム・コンポーネントをプロセッサ704に連結するバス708を含み得るが、これらに限定されない。バス708は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
コンピュータ・システム/サーバ702は、典型的には多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ702によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。
システム・メモリ706は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ(RAM)710またはキャッシュ・メモリ712あるいはその両方などの揮発性メモリの形態で含み得る。コンピュータ・システム/サーバ702は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、記憶システム713は、非リムーバブル不揮発性磁気媒体(図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる)から読み出し、かつ書き込むために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)からの読み出しおよび書き込みのための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読み出しまたは書き込みのための光学ディスク・ドライブが、提供され得る。このような場合、それぞれが、1つまたは複数のデータ媒体インターフェースによってバス708に接続され得る。以下でさらに示され、説明されるように、メモリ706は、発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
プログラム・モジュール716のセット(少なくとも1つ)を有するプログラム/ユーティリティ714は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ706に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施を含み得る。コンピュータ702のコンポーネントは、本明細書に説明されるように一般に発明の実施形態の機能または方法論あるいはその両方を実行する、プログラム・モジュール716として実施され得る。図1のシステムは、1つまたは複数のコンピュータ・システム702において実施されてもよく、そこでは、それらが複数のコンピュータ・システム702において実施される場合、コンピュータ・システムがネットワークを経て通信し得る。
コンピュータ・システム/サーバ702は、また、キーボード、ポインティング・デバイス、ディスプレイ720などの1つもしくは複数の外部デバイス718、ユーザがコンピュータ・システム/サーバ702と対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ702が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。このような通信は、入力/出力(I/O)インターフェース722を介して発生し得る。さらに、コンピュータ・システム/サーバ702は、ネットワーク・アダプタ724を介して、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはそれらの組み合わせなどの1つまたは複数のネットワークと通信し得る。図示されるように、ネットワーク・アダプタ724は、バス708を介してコンピュータ・システム/サーバ702の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム/サーバ702と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
「一実施形態(an embodiment)」、「実施形態(embodiment)」、「実施形態(embodiments)」、「実施形態(the embodiment)」、「実施形態(the embodiments)」、「1つまたは複数の実施形態(one or more embodiments)」、「いくつかの実施形態(some embodiments)」、および「一実施形態(one embodiment)」は、明示的に特段の指定がない限り、「本発明の(全てではないが)1つまたは複数の実施形態」を意味する。
「含む」、「備える」、「有する」という用語、およびそれらの変化形は、明示的に特段の指定がない限り、「限定されないが含む」を意味する。
項目の列挙リストは、明示的に特段の指定がない限り、項目のうちのいずれかまたは全てが相互に排他的であることを示唆しない。
「a」、「an」、および「the」という用語は、明示的に特段の指定がない限り、「1つまたは複数の」を意味する。
互いに通信するデバイスは、明示的に特段の指定がない限り、互いに連続的な通信関係にある必要はない。さらに、互いに通信するデバイスは、直接的に、または1つもしくは複数の媒介を通して間接的に、通信し得る。
互いに通信する複数のコンポーネントを有する実施形態の説明は、そのようなコンポーネント全てが必要とされることを示唆しない。逆に、多様な任意のコンポーネントが、本発明の多岐にわたる可能な実施形態を示すために説明される。
単一デバイスまたは製品が本明細書で説明されるとき、1つより多くのデバイス/製品が、(それらが協調するかどうかにかかわらず)単一デバイス/製品の代わりに使用され得ることが容易に明らかである。同様に、1つより多くのデバイスまたは製品が、本明細書で説明される場合に、(それらが協調するかどうかにかかわらず)単一のデバイス/製品が1つより多くのデバイスもしくは製品の代わりに使用され得ること、または異なる数のデバイス/製品が示された数のデバイスもしくはプログラムの代わりに使用され得ることが容易に明らかである。デバイスの機能性または特徴あるいはその両方が、そのような機能性/特徴を有すると明示的に説明されていない、1つまたは複数の他のデバイスによって代替的に具現化されてもよい。よって、本発明の他の実施形態は、デバイスそれ自体を含む必要はない。
発明の多様な実施形態の前述の説明は、例示および説明のために提示されている。それは、網羅的であること、または開示された正確な形態に発明を限定することを意図するものではない。多くの修正および変形が、上記教示に照らして可能である。発明の範囲は、この詳細な説明によって限定されないが、本明細書に添付された特許請求の範囲によって限定されることが意図される。上記明細書、例、およびデータは、製品の完全な説明および発明の構成の使用を提供する。発明の多くの実施形態が、発明の範囲から逸脱することなく作られ得るため、発明は、添付後の本明細書の特許請求の範囲内に存在する。

Claims (26)

  1. データにアクセスする潜在的に悪意のあるコードをストレージから検出するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、実行時に動作を実行する具現化されたコンピュータ可読プログラム・コードを有するコンピュータ可読記憶媒体を含み、前記動作は、
    アプリケーション・コード内の指定タイプのコマンドを処理することと、
    トラップ・アドレス範囲を割り当てるために、前記指定タイプのコマンドを処理することに応答してトラップ・コードを実行することと、
    前記アプリケーション・コード内の前記指定タイプのコマンドを実行することと、
    アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスするかどうかを判断することと、
    前記アクセス側アプリケーションが潜在的に悪意のあるコードを含むという通知を送信すること、前記アクセス側アプリケーションの実行をモニタリングすること、および前記アクセス側アプリケーションの前記実行を制限すること、のうちの少なくとも1つを、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたという判断に応答して実行することと、
    を含む、コンピュータ・プログラム製品。
  2. 前記トラップ・アドレス範囲が、実行されている前記アプリケーション・コードによってアクセスされない、請求項1に記載のコンピュータ・プログラム製品。
  3. 前記指定タイプのコマンドは、カーネル・アドレスにアクセスするためにユーザ・モードからカーネル・モードへ切り替えるためのコマンドを含み、前記トラップ・アドレス範囲は、カーネル・アドレス空間において定義される、請求項1に記載のコンピュータ・プログラム製品。
  4. 前記動作は、
    アドレス・テーブルにおいてキャッシュ内の有効データにマッピングされていない前記カーネル・アドレス空間内のアドレスに前記アクセス側アプリケーションがアクセスすることに応答して、セグメンテーション違反を受信することをさらに含み、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、前記セグメンテーション違反を受信することに応答して行われる、請求項3に記載のコンピュータ・プログラム製品。
  5. 前記指定タイプのコマンドは、システム・コールを含み、前記システム・コールは、前記トラップ・コードの実行後に実行される、請求項4に記載のコンピュータ・プログラム製品。
  6. 前記トラップ・アドレス範囲は、アドレス・テーブルにおいて無効物理アドレスにマッピングされ、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、無効な位置にマッピングされた前記トラップ・アドレス範囲に前記アクセス側アプリケーションがアクセスするときに発生する違反を検出することを含む、請求項1に記載のコンピュータ・プログラム製品。
  7. 前記トラップ・コードを前記実行することは、前記トラップ・アドレス範囲をアドレス・テーブルにおいてマッピングし、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、計算リソースにアクセスするために前記トラップ・アドレス範囲からトラップ・データを使用しようとすることを前記アクセス側アプリケーションが検出することを含む、請求項1に記載のコンピュータ・プログラム製品。
  8. 複数のトラップ・アドレス範囲が、前記トラップ・コードの実行の複数のインスタンスに応答して割り当てられる、請求項1に記載のコンピュータ・プログラム製品。
  9. 前記アプリケーション・コードを実行する前記プロセッサは、前記アプリケーション・コードの条件分岐の両方の分岐を投機的に実行し、前記条件分岐のうちの一方のみの結果が、前記条件分岐のどれを通過するかを判断するために使用される条件に応じて維持される、請求項1に記載のコンピュータ・プログラム製品。
  10. 前記トラップ・コードは、前記条件分岐を処理するときに、前記条件分岐のうちの条件分岐においてプロセッサにより投機的に実行される、請求項9に記載のコンピュータ・プログラム製品。
  11. データにアクセスする潜在的に悪意のあるコードをストレージから検出するシステムであって、
    プロセッサと、
    前記プロセッサによる実行時に動作を実行するコンピュータ可読プログラムを有するコンピュータ可読記憶媒体と、を備え、前記動作は、
    アプリケーション・コード内の指定タイプのコマンドを処理することと、
    トラップ・アドレス範囲を割り当てるために、前記指定タイプのコマンドを処理することに応答してトラップ・コードを実行することと、
    前記アプリケーション・コード内の前記指定タイプのコマンドを実行することと、
    アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスするかどうかを判断することと、
    前記アクセス側アプリケーションが潜在的に悪意のあるコードを含むという通知を送信すること、前記アクセス側アプリケーションの実行をモニタリングすること、および前記アクセス側アプリケーションの前記実行を制限すること、のうちの少なくとも1つを、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたという判断に応答して実行することと、
    を含む、システム。
  12. 前記指定タイプのコマンドは、カーネル・アドレスにアクセスするためにユーザ・モードからカーネル・モードへ切り替えるためのコマンドを含み、前記トラップ・アドレス範囲は、カーネル・アドレス空間において定義される、請求項11に記載のシステム。
  13. 前記動作は、
    アドレス・テーブルにおいてキャッシュ内の有効データにマッピングされていない前記カーネル・アドレス空間内のアドレスに前記アクセス側アプリケーションがアクセスすることに応答して、セグメンテーション違反を受信することをさらに含み、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、前記セグメンテーション違反を受信することに応答して行われる、請求項12に記載のシステム。
  14. 前記指定タイプのコマンドは、システム・コールを含み、前記システム・コールは、前記トラップ・コードの実行後に実行される、請求項13に記載のシステム。
  15. 前記トラップ・アドレス範囲は、アドレス・テーブルにおいて無効物理アドレスにマッピングされ、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、無効な位置にマッピングされた前記トラップ・アドレス範囲に前記アクセス側アプリケーションがアクセスするときに発生する違反を検出することを含む、請求項11に記載のシステム。
  16. 前記トラップ・コードを前記実行することは、前記トラップ・アドレス範囲をアドレス・テーブルにおいてマッピングし、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、計算リソースにアクセスするために前記トラップ・アドレス範囲からトラップ・データを使用しようとすることを前記アクセス側アプリケーションが検出することを含む、請求項11に記載のシステム。
  17. 前記アプリケーション・コードを実行する前記プロセッサは、前記アプリケーション・コードの条件分岐の両方の分岐を投機的に実行し、前記条件分岐のうちの一方のみの結果が、前記条件分岐のどれを通過するかを判断するために使用される条件に応じて維持される、請求項11に記載のシステム。
  18. 前記トラップ・コードは、前記条件分岐を処理するときに、前記条件分岐のうちの条件分岐においてプロセッサにより投機的に実行される、請求項17に記載のシステム。
  19. データにアクセスする潜在的に悪意のあるコードをストレージから検出する方法であって、
    アプリケーション・コード内の指定タイプのコマンドを処理することと、
    トラップ・アドレス範囲を割り当てるために、前記指定タイプのコマンドを処理することに応答してトラップ・コードを実行することと、
    前記アプリケーション・コード内の前記指定タイプのコマンドを実行することと、
    アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスするかどうかを判断することと、
    前記アクセス側アプリケーションが潜在的に悪意のあるコードを含むという通知を送信すること、前記アクセス側アプリケーションの実行をモニタリングすること、および前記アクセス側アプリケーションの前記実行を制限すること、のうちの少なくとも1つを、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたという判断に応答して実行することと、
    を含む、方法。
  20. 前記指定タイプのコマンドは、カーネル・アドレスにアクセスするためにユーザ・モードからカーネル・モードへ切り替えるためのコマンドを含み、前記トラップ・アドレス範囲は、カーネル・アドレス空間において定義される、請求項19に記載の方法。
  21. アドレス・テーブルにおいてキャッシュ内の有効データにマッピングされていない前記カーネル・アドレス空間内のアドレスに前記アクセス側アプリケーションがアクセスすることに応答して、セグメンテーション違反を受信することをさらに含み、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、前記セグメンテーション違反を受信することに応答して行われる、請求項20に記載の方法。
  22. 前記指定タイプのコマンドは、システム・コールを含み、前記システム・コールは、前記トラップ・コードの実行後に実行される、請求項21に記載の方法。
  23. 前記トラップ・アドレス範囲は、アドレス・テーブルにおいて無効物理アドレスにマッピングされ、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、無効な位置にマッピングされた前記トラップ・アドレス範囲に前記アクセス側アプリケーションがアクセスするときに発生する違反を検出することを含む、請求項19に記載の方法。
  24. 前記トラップ・コードを前記実行することは、前記トラップ・アドレス範囲をアドレス・テーブルにおいてマッピングし、前記アクセス側アプリケーションが前記トラップ・アドレス範囲にアクセスしたかどうかを前記判断することは、計算リソースにアクセスするために前記トラップ・アドレス範囲からトラップ・データを使用しようとすることを前記アクセス側アプリケーションが検出することを含む、請求項19に記載の方法。
  25. 前記アプリケーション・コードを実行する前記プロセッサは、前記アプリケーション・コードの条件分岐の両方の分岐を投機的に実行し、前記条件分岐のうちの一方のみの結果が、前記条件分岐のどれを通過するかを判断するために使用される条件に応じて維持される、請求項19に記載の方法。
  26. 前記トラップ・コードは、前記条件分岐を処理するときに、前記条件分岐のうちの条件分岐においてプロセッサにより投機的に実行される、請求項25に記載の方法。
JP2020555096A 2018-04-16 2019-03-06 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入 Active JP7175549B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/954,334 2018-04-16
US15/954,334 US10810304B2 (en) 2018-04-16 2018-04-16 Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
PCT/IB2019/051786 WO2019202417A1 (en) 2018-04-16 2019-03-06 Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code

Publications (2)

Publication Number Publication Date
JP2021521513A true JP2021521513A (ja) 2021-08-26
JP7175549B2 JP7175549B2 (ja) 2022-11-21

Family

ID=68161907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020555096A Active JP7175549B2 (ja) 2018-04-16 2019-03-06 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入

Country Status (6)

Country Link
US (1) US10810304B2 (ja)
JP (1) JP7175549B2 (ja)
CN (1) CN111989679A (ja)
DE (1) DE112019000594T5 (ja)
GB (1) GB2586409B (ja)
WO (1) WO2019202417A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003777B2 (en) 2018-04-16 2021-05-11 International Business Machines Corporation Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
CA3148437C (en) * 2019-07-23 2023-10-24 Cyber Crucible Inc. Systems and methods for ransomware detection and mitigation
US11520866B2 (en) * 2019-09-10 2022-12-06 International Business Machines Corporation Controlling processor instruction execution
US11429716B2 (en) * 2019-11-26 2022-08-30 Sap Se Collaborative application security
CN111143851B (zh) * 2019-12-11 2023-08-08 上海交通大学 适用于操作系统内核对象地址泄露的检测方法及系统
US11403392B2 (en) * 2020-01-06 2022-08-02 International Business Machines Corporation Security handling during application code branching
CN113934561A (zh) * 2020-06-29 2022-01-14 龙芯中科技术股份有限公司 故障定位方法、装置、系统、硬件平台及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319735A (ja) * 1994-05-26 1995-12-08 Sumitomo Metal Ind Ltd メモリの不正アクセス検出方法及びシステム
JP2013149137A (ja) * 2012-01-20 2013-08-01 Renesas Electronics Corp マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法
US20170032118A1 (en) * 2015-07-31 2017-02-02 Digital Guardian, Inc. Systems and methods of protecting data from injected malware
US20180075236A1 (en) * 2016-09-13 2018-03-15 Samsung Electronics Co., Ltd. Storage device and method for protecting against virus/malware thereof and computing system having the same
JP2021511571A (ja) * 2018-01-12 2021-05-06 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. 投機的実行のエクスプロイトに対する防御

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956751A (en) 1995-06-28 1999-09-21 Industrial Technology Research Institute Computer memory management system using physical segmentation space allocation
US7380276B2 (en) * 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7302619B1 (en) 2004-07-06 2007-11-27 Mindspeed Technologies, Inc. Error correction in a cache memory
US7971255B1 (en) 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
US8701189B2 (en) 2008-01-31 2014-04-15 Mcafee, Inc. Method of and system for computer system denial-of-service protection
TW201137660A (en) 2009-12-23 2011-11-01 Ibm Method and system for protecting an operating system against unauthorized modification
US8495435B2 (en) 2010-09-22 2013-07-23 Intel Corporation Dynamic physical memory replacement through address swapping
CN101944041B (zh) 2010-09-26 2012-10-10 中国科学院计算技术研究所 一种使用陷阱指令优化条件转移代码性能的方法及其系统
US20120159193A1 (en) * 2010-12-18 2012-06-21 Microsoft Corporation Security through opcode randomization
US9038176B2 (en) * 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US8863283B2 (en) * 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US8813227B2 (en) * 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US9305165B2 (en) 2011-05-06 2016-04-05 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US8959577B2 (en) * 2012-04-13 2015-02-17 Cisco Technology, Inc. Automatic curation and modification of virtualized computer programs
US9471514B1 (en) 2012-08-23 2016-10-18 Palo Alto Networks, Inc. Mitigation of cyber attacks by pointer obfuscation
WO2015016880A1 (en) 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Global error correction
US9235692B2 (en) * 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US9400885B2 (en) * 2014-01-10 2016-07-26 Bitdefender IPR Management Ltd. Computer security systems and methods using virtualization exceptions
US9305167B2 (en) * 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US9733847B2 (en) 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9672354B2 (en) * 2014-08-18 2017-06-06 Bitdefender IPR Management Ltd. Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
US9734334B2 (en) * 2014-09-10 2017-08-15 International Business Machines Corporation Data tracking in user space
US9858411B2 (en) * 2014-12-19 2018-01-02 Intel Corporation Execution profiling mechanism
US9594629B2 (en) 2015-06-03 2017-03-14 King Abdulaziz City For Science And Technology Data error correction from cached error correction information
RU2589862C1 (ru) * 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
WO2017030805A1 (en) * 2015-08-18 2017-02-23 The Trustees Of Columbia University In The City Of New York Inhibiting memory disclosure attacks using destructive code reads
US9904782B2 (en) * 2015-10-27 2018-02-27 Mcafee, Llc Synchronous execution of designated computing events using hardware-assisted virtualization
US20180004946A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Regulating control transfers for execute-only code execution
US10157277B2 (en) * 2016-10-01 2018-12-18 Intel Corporation Technologies for object-oriented memory management with extended segmentation
US10467407B2 (en) * 2017-03-30 2019-11-05 Check Point Advanced Threat Prevention Ltd. Method and system for detecting kernel corruption exploits
US10607003B2 (en) * 2017-06-29 2020-03-31 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
US10860718B2 (en) * 2017-07-28 2020-12-08 Mcafee, Llc Protecting computer systems used in virtualization environments against fileless malware
US10824367B2 (en) 2017-10-19 2020-11-03 Seagate Technology Llc Adaptive intrusion detection based on monitored data transfer commands
US10599835B2 (en) * 2018-02-06 2020-03-24 Vmware, Inc. 32-bit address space containment to secure processes from speculative rogue cache loads

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319735A (ja) * 1994-05-26 1995-12-08 Sumitomo Metal Ind Ltd メモリの不正アクセス検出方法及びシステム
JP2013149137A (ja) * 2012-01-20 2013-08-01 Renesas Electronics Corp マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法
US20170032118A1 (en) * 2015-07-31 2017-02-02 Digital Guardian, Inc. Systems and methods of protecting data from injected malware
US20180075236A1 (en) * 2016-09-13 2018-03-15 Samsung Electronics Co., Ltd. Storage device and method for protecting against virus/malware thereof and computing system having the same
JP2021511571A (ja) * 2018-01-12 2021-05-06 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. 投機的実行のエクスプロイトに対する防御

Also Published As

Publication number Publication date
US10810304B2 (en) 2020-10-20
GB2586409B (en) 2021-07-14
GB2586409A (en) 2021-02-17
CN111989679A (zh) 2020-11-24
WO2019202417A1 (en) 2019-10-24
JP7175549B2 (ja) 2022-11-21
GB202016053D0 (en) 2020-11-25
US20190318081A1 (en) 2019-10-17
DE112019000594T5 (de) 2020-11-19

Similar Documents

Publication Publication Date Title
JP7175549B2 (ja) 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入
US10216927B1 (en) System and method for protecting memory pages associated with a process using a virtualization layer
US10642753B1 (en) System and method for protecting a software component running in virtual machine using a virtualization layer
US10726127B1 (en) System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US9530001B2 (en) System and method for below-operating system trapping and securing loading of code into memory
US8966624B2 (en) System and method for securing an input/output path of an application against malware with a below-operating system security agent
US9384349B2 (en) Negative light-weight rules
EP1761836B1 (en) Method of improving computer security through sandboxing
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US8549648B2 (en) Systems and methods for identifying hidden processes
US11755735B2 (en) Speculatively executing conditional branches of code when detecting potentially malicious activity
US10282543B2 (en) Determining whether to destage write data in cache to storage based on whether the write data has malicious data
KR20180097527A (ko) 다수의 네트워크 종점들을 보호하기 위한 듀얼 메모리 인트로스펙션
US11681799B2 (en) Using trap cache segments to detect malicious processes
US11651070B2 (en) Using a characteristic of a process input/output (I/O) activity and data subject to the I/O activity to determine whether the process is a suspicious process
US11042636B2 (en) Using trap storage units to detect malicious processes
WO2019148948A1 (zh) 一种内核完整性保护方法及装置
US10664595B2 (en) Managing reads and writes to data entities experiencing a security breach from a suspicious process
US20190028494A1 (en) System and method for cloud-connected agent-based next-generation endpoint protection
Seong et al. Security Improvement of File System Filter Driver in Windows Embedded OS.
US11588848B2 (en) System and method for suspending a computing device suspected of being infected by a malicious code using a kill switch button

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201022

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20201008

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220426

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220706

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20221026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221102

R150 Certificate of patent or registration of utility model

Ref document number: 7175549

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150