JP2022064320A - バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング) - Google Patents

バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング) Download PDF

Info

Publication number
JP2022064320A
JP2022064320A JP2021167124A JP2021167124A JP2022064320A JP 2022064320 A JP2022064320 A JP 2022064320A JP 2021167124 A JP2021167124 A JP 2021167124A JP 2021167124 A JP2021167124 A JP 2021167124A JP 2022064320 A JP2022064320 A JP 2022064320A
Authority
JP
Japan
Prior art keywords
memory address
memory
overflow
program
data
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.)
Pending
Application number
JP2021167124A
Other languages
English (en)
Inventor
ライオンズ、ピーター、マイケル
Peter Lyons Michael
ヒックス、シー、エム、アンドリュー
C M Hicks Andrew
ギャレット、ジェー、ティナン
J Garrett Tynan
ペドローネ、シー、マイルズ
C Pedrone Miles
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 JP2022064320A publication Critical patent/JP2022064320A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0684Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
    • 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
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】バッファオーバーフロートラッピングのための方法、システム及びコンピュータプログラム製品を提供する。【解決手段】バッファオーバーフロートラッピングのプロセスは、プロセッサ上で実行されるオペレーティングシステムにおいて、方法は、メモリにデータを書き込むプログラムから書き込み要求を受信することを含む。書き込み要求には、仮想メモリアドレスとデータが含まれる。仮想メモリアドレスが物理メモリアドレスに割り当てられていないと判断されることに基づいて、割り当てられていない仮想メモリアドレスがオーバーフローメモリ内の物理メモリアドレスに割り当てられる。データは、オーバーフローメモリ内の物理メモリアドレスに書き込まれ、書き込みデータが正常に書き込まれたという指示がプログラムに返信される。プログラムによる仮想メモリアドレスへの後続のアクセス要求は、オーバーフローメモリ内の物理メモリアドレスへ向けられる。【選択図】図3

Description

本発明は、概して、バッファオーバーフロートラッピングに関するものである。より具体的には、バッファオーバーフロートラッピングの裏付けされていないメモリハニーポットに関する。
メモリ管理はコンピュータのメモリを制御および調整するプロセスであり、実行中のさまざまなプログラムにメモリの一部を割り当てることを含む。メモリ管理機能は、コンピュータハードウェア、オペレーティングシステム(OS)、プログラムおよびアプリケーションに備えることが可能である。バッファオーバーフローとは、コンピュータ上で実行されているプログラムが、プログラムに割り当てられていないメモリの部分へのアクセス(読み取りまたは書き込み)を開始する事象を指す。プログラムに割り当てられていないメモリの部分が、コンピュータ上で実行されている別のプログラムに割り当てられている可能性がある。バッファオーバーフローは、例えば、プログラミングエラーなどの人為的エラーによって引き起こされる可能性がある。その他、バッファオーバーフローが意図的に実行され、悪意のあるコードが実行される可能性もある。
バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品を提供する。
本発明の実施形態は、バッファオーバーフロートラッピングに関する。コンピュータで実施される方法の非限定的な例として、プロセッサ上で実行されるオペレーティングシステムにて、メモリにデータを書き込むプログラムから書き込み要求を受信することを含む。書き込み要求には、仮想メモリアドレスとデータが含まれる。この方法は、仮想メモリアドレスが物理メモリアドレスに割り当てられていないと判断する。その判断に基づいて、仮想メモリアドレスがオーバーフローメモリ内の物理メモリアドレスに割り当てられる。データはオーバーフローメモリ内の物理メモリアドレスに書き込まれ、書き込みデータが正常に書き込まれたことを示す指示がプログラムに返信される。プログラムによる仮想メモリアドレスへの後続のアクセス要求は、オーバーフローメモリ内の物理メモリアドレスへ向けられる。
本発明の他の実施形態は、コンピュータシステムおよびコンピュータプログラム製品における上記の方法の特徴を実装する。
本発明の技術を通じて、さらなる技術的特徴および利点が実現される。本発明の実施形態および態様は本明細書に詳細に記載されており、クレームされている主題の一部とみなされる。よりよい理解のため、詳述された明細書及び図面を参照されたい。
本明細書に記載されている排他的権利の詳細は、明細書の最後にある特許請求の範囲で特に指摘され、明確に主張されている。本発明の実施形態の、上述およびその他の特徴および利点は、以下の添付の図面と併せて後述する詳細な説明から明らかである。
本発明の1つ以上の実施形態による、バッファオーバーフロートラッピングのシステムを説明するブロック図である。 本発明の1つ以上の実施形態による、バッファオーバーフロートラッピングの構成要素を説明するブロック図である。 本発明の1つ以上の実施形態による、バッファオーバーフロートラッピングのプロセスを説明するフローチャートである。 本発明の1つ以上の実施形態による、クラウドコンピューティング環境を説明する図である。 本発明の1つ以上の実施形態による抽象化モデルレイヤを説明する図である。 本発明の1つ以上の実施形態によるバッファオーバーフロートラッピングのシステム説明する図である。
ここに示されている図は例示的なものである。本発明の精神から逸脱することなく、図またはそこに記載されている操作には多くの変形があり得る。例えば、アクションを異なる順序で実行したり、アクションを追加、削除、または変更することが可能である。また、「結合された」という用語、およびその変形は、2つの要素間に通信経路を有することを示し、要素間に介在要素/接続がない要素間の直接接続を意味するものではない。これらの変形例はすべて、仕様の一部と見なされる。
本発明の1つ以上の実施形態は、通常は連続するメモリ割り当てに人為的にホールを挿入することによって、バッファオーバーフローに対する防御機構を提供するものである。本発明の1つ以上の実施形態によれば、変換テーブルを使用して仮想メモリアドレスを物理アドレスにマッピングし、戦略的ホールを変換テーブルのマッピングに配置して、オープンである可能性が高い領域にバッファオーバーフローを押し入れる。変換テーブルのオープン領域には、物理メモリアドレスに割り当てられていない仮想アドレスが含まれているため、物理メモリによって裏付けされていない。本発明の1つ以上の実施形態によれば、裏付けされていない仮想メモリアドレスへのアクセスを変換テーブルを介して要求することでそのメモリ境界をまたぐプログラムは、コンピュータシステムのメモリマネージャを動作させて、要求された仮想アドレスを取得する。そして、データを、本明細書でオーバーフローまたはハニーポットメモリと呼ばれるメモリ領域に配置する。
オーバーフローまたはハニーポットメモリは、コンピュータシステム内の周知の制御されたメモリ領域のプールによって実現できる。本発明の1つ以上の実施形態によれば、オーバーフローメモリ領域は、その内容がプログラムによって実行可能になるのを防ぐように構成される。これは、例えば、命令実行保護(IEP)ビットを設定して、オーバーフローメモリのそれぞれのストレージブロック内のコードが実行されないようにすることで実現可能である。オーバーフローメモリへの書き込み中に、集中的な記録プロセスにより、書き込まれているプログラムもしくはデータまたはその両方に関する情報を同時に収集できる。収集した情報は保存して分析することが可能である。
当業者に知られているように、「ハニーポット」という用語は、情報システムの不正使用の試みを検出、偏向、または何らかの方法で打ち消すように設定されたコンピュータセキュリティメカニズムを指す。一般に、ハニーポットには、サイトまたはアプリケーションの正当な部分であるように見えるが、実際には分離および監視されているデータが含まれている。ハニーポットには、攻撃者にとって価値のある情報またはリソースが含まれているように見え、攻撃者は後にブロックされる。ハニーポットメモリおよびオーバーフローメモリという用語は、本明細書では互換的に使用され、あるプログラムが当該プログラムに割り当てられていないメモリ位置にアクセスしようとするときに本発明の1つ以上の実施形態によって利用されるメモリの一部を指す。
コンピュータプログラムが同じ物理メモリの異なる領域を利用する場合、割り当てられたメモリ領域内でコンピュータプログラムを実行し続けることが重要である。より高いレベル(例えば、ソースコードレベルなど)のソフトウェアプログラムは、通常、全てのプログラムの実行およびデータを割り当てられたメモリ領域内の整理された場所に保持するチェックを備える。しかしながら、マイクロコード(またはアセンブリ)レベルでは、これらの内蔵チェックは利用できないことがしばしばある。これはさまざまな理由で発生する可能性があるが、その中で最も重要なのは効率もしくはパフォーマンスまたはその両方に関する考慮事項である。システムは、マイクロコードまたはアセンブリ命令に与えられた情報が有効であると信頼しているため、これらの操作はデータの整合性をチェックしないことがよくある。これにより、これらの操作を可能な限り迅速に実行できる。
これらの低いレベルの操作の多くでは、システムはメモリマネージャを利用して、特定のプログラムの仮想メモリと、データが格納されている物理メモリまたは実メモリとの間の要求を仲介する。上記のように、現代のシステムでは、その上のソフトウェア層によって実行されるチェックが適切な実行を保証していることから、メモリマネージャが諸々の影響をチェックせずにメモリアクセス要求を実行するのが通常である。メモリマネージャはバッファオーバーフローをチェックしていないため、特定のプログラムが、アクセスできないはずの仮想メモリまたは物理メモリの領域にアクセスする可能性がある。バッファオーバーフローは、人為的エラーが原因で発生する場合もあれば、悪意のある理由で意図的に実行される場合もある。多くの場合、バッファオーバーフローは、アドレスまたはメモリオフセット量の計算ミスが原因で発生し、その結果、プログラムが実行されているアービトレーション関数(例えば、ハイパーバイザーなど)によって定義された、要求元のプログラムのメモリ領域外のメモリ位置への要求が発生する。バッファオーバーフローが発生すると、特定のプログラムが別の実行中のプログラムによって使用されるデータを上書きまたは処理する可能性があり、これにより、多数のエラー、クラッシュ、衝突などが発生し、システムがダウンする可能性がある。
本発明の1つ以上の実施形態は、バッファオーバーフローをもたらす可能性のあるメモリへのアクセスを提供する現在の方法に対する技術的改善を提供する。現代のアプローチの欠点は、プログラムが別のプログラムに割り当てられたメモリ領域にアクセスし、他のプログラムが使用するメモリ位置を上書きするなどして、他のプログラムの実行中にエラーを引き起こす可能性があることである。これは、例えば、コード構造が不十分であったり、データサイズの処理が不十分であったりして、コードライブラリの境界のすぐ外側にあるメモリのセクションに書き込んでしまうことが原因である可能性がある。さらに、別のプログラムに割り当てられたメモリ領域にアクセスすると、例えば、プログラムに他のプログラムからのおそらく無効であるデータを読み取らせて処理させることにより、メモリにアクセスするプログラムでエラーが発生する可能性がある。現代のアプローチの他の欠点は、プログラムが物理メモリに裏付けされていない仮想メモリアドレスへのアクセスを要求すると、プログラムにエラーが通知されることである。悪意のある攻撃の場合、攻撃者は仮想アドレスが無効であることが通知され、メモリに裏付けされたアドレスが見つかるまで、攻撃者は他の仮想アドレスへのアクセスを試みることができる。
本発明の1つ以上の実施形態は、仮想アドレスが物理アドレス(すなわち、裏付けされていない仮想メモリアドレス)にマッピングされない戦略的に配置されたギャップを有する変換テーブルを作成することによって、これらの1つ以上の欠点に対する技術的解決策を提供する。プログラムが裏付けされていないメモリアドレスの1つにアクセスしようとすると、メモリマネージャは、オーバーフローメモリへのアクセスを指示し(例えば、要求内の仮想メモリアドレスをオーバーフローメモリ内の物理アドレスに関連付けることによって)、プログラムにオーバーフローメモリへのアクセス実行を許可する。オーバーフロー領域へのリダイレクトは、要求元のプログラムに対して透過的であるため、潜在的なハッカーまたは脅威アクターは、プログラムがオーバーフロー領域のメモリ位置にアクセスしていることに気づかない。メモリアクセスのリダイレクトにより、プログラムが割り当てられたメモリ領域外のデータにアクセスできなくなり、システムエラーを減少させることができる。さらに、オーバーフローメモリへのアクセスを検出することに応じて、本発明の1つ以上の実施形態は、プログラムを識別および分析するために使用できる書き込み中のプログラムもしくはデータまたはその両方に関する状態情報を収集する。プログラムが悪意のあるプログラムである場合、この情報は、問題のあるプログラムを認識すること、もしくは、同様の戦術を使用するプログラムが将来実行されないようにすること、またはその両方のために使用されることができる。
ここで図1を参照すると、バッファオーバーフロートラッピングのためのシステム100のブロック図の概要が、本発明の1つ以上の実施形態に従って示されている。このシステムは、オペレーティングシステム(OS)102、ハイパーバイザー108、メモリ110、およびオーバーフローメモリ114を含む。図1に示されるように、OS102は、メモリマネージャ106、OS102によって実行されるプログラム104、そしてシステムおよびメモリアナライザ116を含む。図1に示される実施形態において、メモリマネージャ106は、メモリ110へのアクセスを要求するため、プログラム104とハイパーバイザー108との間のインタフェースを備えている。さらに、メモリマネージャ106は、バッファオーバーフローを回避する必要があるときに、プログラム104からオーバーフローメモリ114にメモリアクセス要求をリダイレクトするためのインタフェースを備えている。図1に示されるシステムおよびメモリアナライザ116は、裏付けされていないメモリアドレスへのアクセスを要求するプログラムもしくはプログラムの識別と分析に使用できる書き込み中のデータまたはその両方に関する状態情報を収集する。
本発明の1つ以上の実施形態によれば、メモリマネージャ106は、プログラム104から仮想メモリアドレスを受け取り、それをプログラムメモリ112またはオーバーフローメモリ114のいずれかに配置された物理メモリアドレスに変換する。メモリマネージャ106は、この変換を実行するために当技術分野で周知の変換ルックアサイドバッファ(TLB)を含んでいてもよい。プログラム104がその元の割り当てられたスペースの外側のメモリ位置にいつアクセスしようとしているのかを識別するために、簡単なチェックを使用することができる。有効な仮想メモリアドレスには物理メモリが割り当てられており、プログラムまたはプロセスが裏付けされていないメモリ位置からデータを要求した場合、メモリマネージャ106は、アドレスが誤っていることを即座に認識し、当該要求を実行しない。これらのバッファオーバーフローを検出するメモリマネージャ106の能力は、起こり得る悪意のあるプログラムを識別するためのメカニズムとして、本発明の1つ以上の実施形態によって利用される。
本発明の1つ以上の実施形態によれば、オーバーフローメモリ114は、プログラムメモリ112を含むメモリ110とは異なる物理メモリデバイス(またはメモリモジュールもしくはメモリシステム)に配置されている。本発明の1つ以上の実施形態では、オーバーフローメモリ114およびメモリ110は、同じメモリデバイス(またはメモリモジュールもしくはメモリシステム)の異なる領域に配置されている。
本発明の1つ以上の実施形態によれば、プログラム104は、仮想メモリアドレスおよびデータを含む書き込み要求をメモリマネージャ106に送信する。メモリマネージャ106は、要求をハイパーバイザー108に転送し、ハイパーバイザー108は、メモリ110に、仮想メモリアドレスに関連付けられた物理メモリアドレスにあるメモリ110内のメモリ位置にデータを書き込むように命令する。仮想メモリアドレスが裏付けされていない仮想メモリアドレスである場合、メモリ110は、裏付けされていない状態を示すエラーをハイパーバイザー108に返し、ハイパーバイザー108は、エラー表示をOS102に中継する。そしてハイパーバイザー108はプログラム104のバッファオーバーフローのために、ハニーポットまたはオーバーフローメモリ114内の領域を割り当て、メモリマネージャ106に当該割り当てを通知する。メモリマネージャ106は、プログラム104からの書き込み要求における仮想メモリアドレスと、TLBまたは別の場所にあるオーバーフローメモリ114内の物理メモリアドレスとの間のやり取りを格納することができる。ハイパーバイザー108は、オーバーフローメモリ114内の場所にデータを書き込む。オーバーフローメモリ114は、ハイパーバイザー108に書き込みが成功したことを示し、ハイパーバイザー108は、成功した書き込みステータスをプログラム104に伝達し、プログラム104は実行を継続する。次にプログラムが裏付けされていない仮想メモリアドレスへのアクセスを要求するとき、メモリマネージャ106は、プログラム104に割り当てられたオーバーフローメモリ114へのアクセスを指示する。メモリ変換エラーは、プログラム104から完全に隠されている。メモリマネージャ106は、要求にフラグを立て、オーバーフローメモリ114内の領域に対するアドレスを送り返し、その範囲内の(例えば、その仮想メモリアドレスでの)後続のすべての要求をそこに転送する。メモリマネージャ106は、プログラム104によって要求された追加ページの要求にさらにフラグを立て、それらをオーバーフローメモリ114内のこの領域に送信することができる。本発明の1つ以上の実施形態によれば、オーバーフローメモリ114のサイズは十分に大きく、オーバーフローメモリ114が完全に満たされそうになると、オーバーフローメモリ114の内容は、すべての情報を取り込むことができるように構成されたディスクに書き出される。
図1のブロック図は、システム100が図1に示されるすべての構成要素を含むことを示すことを意図するものではないと理解されたい。むしろ、システム100は、図1に示されていない任意の適切な、より少ないまたは追加の構成要素を含むことができる(例えば、追加のメモリコンポーネント、プログラム、機能ブロック、機能ブロック間の接続、モジュール、入力、出力など)。例えば、システムおよびメモリアナライザ116は、メモリマネージャ106に含まれ得る。別の例では、システムおよびメモリアナライザ116は、メモリマネージャ106とは異なるOS102の下、異なるプロセッサ上で実行され得る。さらに、システム100に関して本明細書に記載されるものは、任意の適切なロジックで実装されることもあり、本明細書で言及されるロジックは、様々な実施形態における任意の適切なハードウェア(例えば、プロセッサ、組み込みコントローラ、またはアプリケーション固有の集積回路など)、ソフトウェア(例えば、とりわけアプリケーション)、ファームウェア、または任意の適切な組み合わせのハードウェア、ソフトウェア、およびファームウェアを含むことができる。
図2において、本発明の1つ以上の実施形態による、バッファオーバーフロートラッピングのための構成要素のブロック図200の概要が示されている。図2のブロック図200は、TLB208、システムおよびメモリアナライザ116、メモリマネージャ106、オーバーフローメモリ114、および人206(例えば、システム管理者またはセキュリティアナリスト)の間の相互作用の高レベルな流れを示している。
図2のブロック図200は、仮想メモリアドレスを物理メモリアドレスに変換する際に使用するTLB208を含む。図2に示されるTLB208は、物理メモリアドレスに対応する、メモリ裏付け(backed)仮想メモリアドレス204a、204b、204cを含み、本明細書では総称してメモリ裏付け仮想メモリアドレス204と呼ぶ。TLB208はまた、物理メモリアドレスに割り当てられていない、非裏付け(non-backed)仮想メモリアドレス202a、202b、202c、202dを含み、本明細書では総称して非裏付け仮想メモリアドレス202と呼ぶ。メモリ裏付け仮想メモリアドレス204間の非裏付け仮想メモリアドレス202の配置は、通常は隣接するメモリ割り当てに人為的にホールを置くことの一例である(例えば、スパースメモリ配置)。
図2に示されるTLB208には、問題のあるバッファオーバーフローをオープンである可能性が高い領域に押し入れるために、TLBのマッピングに戦略的に配置されたホールが含まれている。ホールがTLBマッピングに配置されるこの仕組みは、本明細書では「スパースメモリ配置」を使用してTLBを構成すること、と呼ぶ。本発明の1つ以上の実施形態によれば、メモリ裏付け仮想メモリアドレス204aは、「プログラムa」に割り当てられたすべての仮想メモリアドレスを含み、メモリ裏付け仮想メモリアドレス204bは、「プログラムb」に割り当てられたすべての仮想メモリアドレスを含み、メモリ裏付け仮想メモリアドレス204cは、「プログラムc」に割り当てられたすべての仮想メモリアドレスを含む。図2のTLB208に示されるように、メモリ割り当ては、プログラムに割り当てられた仮想アドレス間のスペースの大きな領域を可能にするために戦略的に行われ、あるプログラムが別のプログラムのメモリとオーバーラップしづらくする。
TLB208の実施形態は、プログラムに割り当てられたメモリが複数のセグメントに分割される可能性があるため、プログラムのすべての仮想アドレスを連続したエントリに保持することに限定されない。本発明の1つ以上の実施形態は、共通メモリセグメント(例えば、512メガバイト(MB)または2048MBページ)をオフセットし、既知のオフセットに各セグメントの開始および終了に非裏付けメモリセグメントを配置することができる。例えば、ページがメモリアドレス0x000Aで終了する場合、場所0x000BのTLB208にホールを配置することができる。プログラムまたはプロセスがここでメモリセグメントにアクセスしようとすると、すぐに失敗する。このスキームがないと、場所0x000Bが別のプログラムまたはプロセスによって使用されている(したがって裏付けされている)場合、エラーのあるプロセスが0x000Bを次の裏付けされていないメモリの場所まで上書きし、ページ全体が離れてしまう可能性があり、他の多くのプロセスの操作に影響を与える。
図2のTLB208に示される、メモリ空間に多数のホールを有するメモリシステムを利用することで、バッファオーバーフローが別のプログラムのメモリにブリードオーバーする可能性を低くすることにより、悪意のあるバッファオーバーフローに対する固有の防御を可能にする。さらに、本発明の1つ以上の実施形態は、プログラムがその境界を超えたことを検出するために、ページが裏付けされているかどうかを知る仮想メモリシステム(例えば、メモリマネージャ106)の能力を利用する。プログラムがその境界を超えたことを示すトリガーが発生すると、メモリマネージャ106は、書き込まれているデータをハニーポットまたはオーバーフローメモリ114に配置する。ハニーポットは一般に、悪意のある人にとって望ましいもののように見えるが、実際には攻撃者についてもっと理解するための罠である。
本発明の1つ以上の実施形態によれば、ハニーポット、またはオーバーフローメモリ114は、システム内の周知の制御されたメモリ領域のプールに配置されている。メモリプール内のメモリの各セクションには、セクションに格納されているコードまたはコンピュータ命令の実行を防ぐために、命令実行保護(IEP)ビットを設定している。その場所に書き込まれているものはシステムで実行できないため、その場所への書き込みを許可してデータの内容を調べることができる。メモリマネージャ106は、バッファオーバーフローが発生したことを検出すると、メモリ領域のプールにアクセスし、プログラムがそのメモリ(例えば、オーバーフローメモリ114)に書き込むことを許可し始めると同時に、書き込まれているプログラムまたはデータに関する情報を収集するためにシステムおよびメモリアナライザ116を利用して集中的なレコーディング処理を始める。図2に示すように、コードバッファオーバーフローは、非裏付けメモリ位置202cで検出され、オーバーフロー検出は、オーバーフローメモリ114を含むメモリサブプールにデータを誘導するようメモリマネージャ106の契機となる。
本発明の1つ以上の実施形態によれば、システムおよびメモリアナライザ116は、例えば、バッファオーバーフローを引き起こしたプログラムまたは処理の識別子、書き込み中のデータ、ネットワーク活動、コードスタイル、書き込み中のデータ(コンピュータコードなど)のメッセージダイジェストアルゴリズム5(MD5)ハッシュ、書き込み中のコンピュータコードによってアクセスされているアドレス、書き込み中のコンピュータコードの実行に関連するローダー、もしくはサイズやコードがアクセスを要求するアドレスなどのメモリの内容に関するその他の統計またはその組み合わせなどの、プログラムもしくはデータまたはその両方に関する状態情報を記録するが、これらに限定されない。収集されたデータは、保存(メモリへの書き込みなど)してから分析することができる。分析は、システム管理者またはセキュリティアナリストなどの人206によって手動で実行することができ、また分析を自動化することができる。
本発明の1つ以上の実施形態によれば、システムおよびメモリアナライザ116によって収集された情報(例えば、状態情報)は、例えば、限定されないがMitre Att&ck(商標)などの周知の攻撃フレームワークに対して、MD5ハッシュ、統計、アドレスなどに関連付けられている動作もしくは脅威ツールまたはその両方が、周知の脅威アクターまたはパターンに関連付けられているかどうかを判断するためにチェックを受けてもよい。当技術分野で周知の脅威アクターとは、意図的であろうと非意図的であろうと、企業体に対して悪意のある活動を試みる、または成功裡に悪意ある活動を実行する実在者を指す。バッファオーバーフローが周知の脅威アクターまたはパターンに関連付けられているかどうかに関するこの情報は、マシンを保護し、企業体をさらに保護するための追加の攻撃対象領域を探すためにシステム管理者やセキュリティアナリストなどの人206にさらに使用されることができる。例えば、プロセッサのセキュリティポリシーは、状態情報に基づいて更新できる。セキュリティポリシーの例には、ネットワーク署名、ログトレイル、マシン上での実行が許可されているプログラム、データアクセス、使用されているIDが含まれるが、これらに限定されない。
本発明の1つ以上の実施形態によれば、メモリの転送および情報の集中的な記録の全てを考慮すると、システムおよびメモリアナライザ116は、そのような攻撃への応答を加速するために別個のハードウェアの内部に配置することができる。さらに、メモリマネージャ106の全部または一部は、別個のハードウェアに配置することもできる。
図3は、本発明の1つ以上の実施形態による、バッファオーバーフロートラッピングのプロセス300のフローチャートの概要を示す。図3に示す処理は、コンピュータプロセッサ上で実行されている図1のOS102などのオペレーティングシステムによって実行され得る。コンピュータプロセッサは、スタンドアロンプロセッサ、または図4のノード10などのクラウド内のノードであってもよい。
ブロック302で、書き込み要求がプログラムから受信される。書き込み要求には、仮想メモリアドレスとメモリに書き込まれるデータが含まれる。ブロック304において、仮想メモリアドレスは物理メモリアドレスに割り当てられておらず、仮想メモリアドレスはオーバーフローメモリ内の物理メモリアドレスに割り当てられていると判断される。ブロック306で、データはオーバーフローメモリ内の物理メモリアドレスに書き込まれる。ブロック308で、データ書き込み要求が正常に完了したことの指示がプログラムに返される。本発明の1つ以上の実施形態によれば、プログラムは、データがオーバーフロー位置に書き込まれたことを認識していない。データがメモリに正常に書き込まれたことを示すインジケータがプログラムに返され、プログラムによる仮想メモリアドレスへの後のアクセス要求は、オーバーフローメモリ内の物理メモリアドレスに向けられる。
本発明の1つ以上の実施形態によれば、データおよびプログラムの一方または両方に関する状態情報の記録は、仮想アドレスが物理メモリアドレスに割り当てられていないとの判断に応答して開始される。状態情報を利用して、悪意のあるプログラムまたは脅威アクターに関連するパターンを特定できる。本発明の1つ以上の実施形態によれば、プロセッサのセキュリティポリシーは、少なくとも部分的に状態情報に基づいて更新される。
本発明の1つ以上の実施形態によれば、オーバーフロー位置は、コンピュータコードがオーバーフロー位置から実行されるのを防ぐように構成される。本発明の1つ以上の実施形態によれば、TLBは、仮想メモリアドレスを物理メモリアドレスに変換するために使用され、TLBは、スパースメモリ配置を使用して構成される。
本発明の1つ以上の実施形態は、プロセッサのバッファオーバーフローモードに基づいて実装される。プロセッサのバッファオーバーフローモードは、例えばフラグや他のインジケータの設定に基づいて決定することができ、オーバーフローメモリ位置へのデータの書き込みは、第1のモードであるプロセッサのバッファオーバーフローモードに基づいて実行することができる。第2のモードであるバッファオーバーフローモードに基づいて、ブロック304および306をスキップすることができ、代わりに、書き込みが正常に完了しなかったというプログラムへの指示がプログラムに返される。さらに、または代わりに、バッファオーバーフローモードを特定のプログラムまたはプログラムのグループに関連付けることができる。プロセッサのバッファオーバーフローモードはプログラム可能であり、自動的に、またはシステム管理者などによって設定できる。このようにして、オーバーフローメモリ位置への書き込みおよびバッファオーバーフロー状態の検出に応答する分析は、特定のライフサイクルフェーズ中(例えば、テスト中)、特定のプロセッサ上で実行されるプログラム、特定のプログラム、選択した時間枠などで実行するプログラムに対して選択的に適用することができる。
図3のフローチャートに表すプロセスは、プロセス300の動作が特定の順序で実行されること、またはプロセス300のすべての動作がすべての場合に含まれることを意図して示しているものではない。さらに、プロセス300は、任意の適切な数の追加操作を含むことができる。
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
特性は以下の通りである。
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
サービスモデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
展開モデルは以下の通りである。
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織またはサードパーティーによって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで、図4に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図4に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
ここで、クラウドコンピューティング環境50(図4)によって提供される機能的抽象化レイヤのセットを図5に示す。なお、図5に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、ある場所または物件における物品または資産の自動検出および自動カタログ化または目録化96が含まれる。
本発明の1つ以上の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができることを理解されたい。
図6を参照すると、バッファオーバーフロートラッピングのためのコンピュータシステムの概要が、本発明の1つ以上の実施形態に従って示されている。本明細書に記載の方法は、ハードウェア、ソフトウェア(例えば、ファームウェア)、またはそれらの組み合わせで実装することができる。本発明の1つ以上の例示的な実施形態では、本明細書に記載の方法は、パーソナルコンピュータ、ワークステーション、ミニコンピュータ、またはメインフレームコンピュータなどの特殊または汎用デジタルコンピュータのマイクロプロセッサの一部としてハードウェアに実装される。したがって、システム600は、O/Sの複数のインスタンスを同時に実行することができる汎用コンピュータまたはメインフレーム601を含んでもよい。
図6に示されるように、ハードウェアアーキテクチャに関して、本発明の1つ以上の例示的な実施形態において、コンピュータ601は、1つ以上のプロセッサ605、メモリコントローラ615に結合されたメモリ610、およびローカル入力/出力コントローラ635を介して通信可能に結合された1つ以上の入力もしくは出力またはその両方の(I/O)デバイス640、645(または周辺機器)を含む。入力/出力コントローラ635は、例えば、当技術分野で知られているように、1つ以上のバスまたは他の有線または無線接続であり得るが、これらに限定されない。入力/出力コントローラ635は、通信を可能にするために、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどの、簡素化のために省略されているが、追加の要素を有することができる。さらに、ローカルインタフェースは、前述のコンポーネント間の適切な通信を可能にするために、アドレス、コントローラ、もしくはデータ接続またはその組み合わせを含み得る。入力/出力コントローラ635は、出力デバイス640および645にアクセスするように構成された複数のサブチャネルを含んでもよい。サブチャネルは、光ファイバー通信ポートを含んでもよい。
プロセッサ605は、ソフトウェア、特にキャッシュストレージまたはメモリ610などのストレージ620に格納されたソフトウェアを実行するためのハードウェアデバイスである。プロセッサ605は、任意のカスタムメイドまたは市販のプロセッサ、中央処理装置(CPU)、コンピュータ601に関連するいくつかのプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップまたはチップセットの形態)、マクロプロセッサ、または一般に命令を実行するための任意のデバイスであってもよい。
メモリ610は、揮発性メモリ要素(例えば、ランダムアクセスメモリ(RAM、例えば、DRAM、SRAM、SDRAなど))および不揮発性メモリ要素(例えば、ROM、消去可能プログラマブル読み取り専用メモリ(EPROM)、電子的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、プログラム可能な読み取り専用メモリ(PROM)、テープ、コンパクトディスク読み取り専用メモリ(CD-ROM)、ディスク、ディスケット、カートリッジ、カセットなど)の任意の1つまたは組み合わせを含むことができる。さらに、メモリ610は、電子的、磁気的、光学的、もしくは他のタイプまたはその組み合わせの記憶媒体を組み込むことができる。メモリ610は、様々な構成要素が互いに離れて配置されている分散アーキテクチャを有してよいが、プロセッサ605によってアクセスされ得ることに留意されたい。
メモリ610内の命令は、1つ以上の別個のプログラムを含み、それらのそれぞれは、論理機能を実装するための実行可能命令の順序付けられたリストを含んでもよい。図6の例では、メモリ610内の命令は、適切なオペレーティングシステム(OS)611である。オペレーティングシステム611は、本質的に、他のコンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、および通信制御や関連サービスを提供する。
本発明の1つ以上の実施形態によれば、メモリ610は、それぞれがオペレーティングシステムのインスタンスを実行する複数の論理パーティション(LPAR)を含むことができる。LPARは、ハイパーバイザーによって管理することができ、ハイパーバイザーは、メモリ610に格納され、プロセッサ605によって実行されるプログラムであってもよい。
本発明の1つ以上の例示的な実施形態では、従来のキーボード650およびマウス655を入力/出力コントローラ635に結合することができる。I/Oデバイス640、645などの他の出力デバイスは、入力デバイスを含んでもよい。例えば、これらに限定されないが、プリンタ、スキャナ、マイクなどである。最後に、I/Oデバイス640、645は、入力および出力の両方を通信するデバイス、例えば、ネットワークインタフェースカード(NIC)または(他のファイル、デバイス、システム、またはネットワークにアクセスするための)変調器/脱変調器、無線周波数(RF)または他のトランシーバ、電話インタフェース、ブリッジ、ルータなどを含むことがある。システム600は、ディスプレイ630に結合されたディスプレイコントローラ625をさらに含むことができる。
本発明の1つ以上の例示的な実施形態では、システム600は、ネットワーク665に結合するためのネットワークインタフェース660をさらに含むことができる。ネットワーク665は、コンピュータ601とブロードバンド接続を介した、クライアントなどの任意の外部サーバとの間の通信のためのIPベースのネットワークであってもよい。ネットワーク665は、コンピュータ601と外部システムとの間でデータを送受信する。例示的な実施形態では、ネットワーク665は、サービスプロバイダによって管理される管理されたIPネットワークであってもよい。ネットワーク665は、例えば、WiFi(登録商標)、WiMax(登録商標)などのような無線プロトコルおよび技術を使用して、無線方式で実装され得る。ネットワーク665はまた、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、インターネットネットワーク、またはその他の同様のタイプのネットワーク環境などのパケット交換ネットワークであってもよい。ネットワーク665は、固定ワイヤレスネットワーク、ワイヤレスローカルエリアネットワーク(LAN)、ワイヤレスワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、仮想プライベートネットワーク(VPN)、イントラネットまたは他の適切なネットワークシステムであり、信号を送受信するための機器が含まれる。
コンピュータ601がPC、ワークステーション、インテリジェントデバイスなどである場合、メモリ610内の命令は、基本的な入出力システム(BIOS)(図では簡素にするために省略している)をさらに含んでもよい。BIOSは、起動時にハードウェアを初期化およびテストし、OS611を起動し、ハードウェアデバイス間のデータ転送をサポートする重要なソフトウェアルーチンのセットである。BIOSはROMに格納されているため、コンピュータ601が作動したときにBIOSを実行できる。
コンピュータ601が動作しているとき、プロセッサ605は、メモリ610内に格納された命令を実行し、メモリ610との間でデータを通信し、一般に命令に従ってコンピュータ601の動作を制御するように構成される。本発明の1つ以上の実施形態によれば、コンピュータ601は、図4のクラウドコンピューティングノード10の一例である。
本発明の様々な実施形態は、関連する図面を参照して本明細書に記載されている。本発明の代替の実施形態は、本発明の範囲から逸脱することなく考案することができる。以下の説明および図面では、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示されている。これらの接続もしくは位置関係またはその両方は、特に明記しない限り、直接的または間接的であり、本発明は、この点に関して限定することを意図するものではない。したがって、エンティティの結合は、直接または間接の結合のいずれかを指すことができ、エンティティ間の位置関係は、直接または間接の位置関係である可能性がある。さらに、本明細書に記載の様々なタスクおよびプロセスステップは、本明細書に詳細に記載されていない追加のステップまたは機能を有することでより包括的な手順またはプロセスに組み込むことができる。
本明細書に記載の方法の1つまたは複数は、当技術分野で周知の以下の技術のいずれかまたは組み合わせで実装することができる。データ信号に論理機能を実装するための論理ゲートを有する目立たない論理回路、適切な組み合わせの論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などが挙げられる。
簡潔にするために、本発明の態様を作成および使用することに関連する従来の技術は、本明細書で詳細に説明されてもされなくてもよい。特に、本明細書に記載の様々な技術的特徴を実装するためのコンピューティングシステムおよび特定のコンピュータプログラムの様々な側面は周知である。したがって、簡潔にするために、多くの従来の実装の詳細は、本明細書で簡単に言及されるだけであるか、または周知のシステムもしくはプロセスまたはその両方の詳細を提供せずに完全に省略される。
いくつかの実施形態では、様々な機能または行為は、所与の場所で、もしくは、1つまたは複数の装置またはシステムの動作との関連で、またはその両方で、行うことができる。いくつかの実施形態では、所与の機能または行為の一部は、第1のデバイスまたは場所で実行することができ、機能または行為の残りは、1つ以上の追加のデバイスまたは場所で実行することができる。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、限定することを意図するものではない。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈が明確に他のことを示さない限り、複数形も含むことを意図している。本明細書で使用される場合、「含む(comprises)」という用語もしくは「含む(comprising)」という用語またはその両方は、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせの存在を指定するが、1つ以上の他の機能、整数、ステップ、操作、要素コンポーネント、もしくはそれらのグループまたはその組み合わせの存在または追加を排除するものではない。
以下の特許請求の範囲におけるすべての対応する構造、材料、行為、および同等物またはステッププラス関数要素は、特に主張されているように、他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または行為を含むことを意図している。本開示は、例示および説明の目的で提示されたが、網羅的であることを意図するものではなく、または開示された形態に限定されることを意図するものではない。多くの修正および変形は、本開示の範囲および精神から逸脱することなく、当業者には明らかであろう。実施形態は、本開示の原理および実際の適用を最もよく説明し、当業者が、企図される特定の使用に適した様々な修正を伴う様々な実施形態について本開示を理解できるようにするために選択および説明された。
本明細書に示されている図は例示的なものである。本開示の精神から逸脱することなく、図またはそこに記載されているステップ(または操作)には多くのバリエーションがあり得る。例えば、アクションを異なる順序で実行したり、アクションを追加、削除、または変更したりできる。また、「結合された」という用語は、2つの要素間に信号経路を有することを説明し、間に要素/接続が介在しない要素間の直接接続を意味するものではない。これらのバリエーションはすべて、本開示の一部と見なされる。
以下の定義および略語は、特許請求の範囲および明細書の解釈に使用されます。本明細書で使用される場合、「含む(comprises)」、「含む(comprising)」、「含む(includes)」、「含む(including)」、「含む(has)」、「含む(having)」、「含む(contains)」、「含む(containing)」またはそれらの任意の他の変形という用語は、排他的な包含である。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されるわけではなく、そのような組成物、混合物、プロセス、方法、記事、または装置に明示的にリストされていない他の要素を含むことができる。
さらに、「例示的」という用語は、本明細書では「例、実例、または例示」を意味するために使用される。本明細書で「例示的」として説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。「少なくとも1つ」および「1つ以上」という用語は、1以上、すなわち1、2、3、4などの任意の整数を含むと理解される。「複数」という用語は、2以上、つまり2、3、4、5などの任意の整数を含むと理解される。「接続」という用語には、間接的な「接続」と直接的な「接続」の両方を含めることができる。
「約」、「実質的に」、「概算」という用語、およびそれらの変形は、出願時に利用可能な機器に基づく特定の量の測定に関連する誤差の程度を含むことを意図している。例えば、「約」には、特定の値の±8%、5%、または2%の範囲を含めることができる。
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の***構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピュータ装置/処理装置へダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部記憶装置へダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピュータ装置/処理装置内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピュータ装置/処理装置におけるコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の各態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
上記のコンピュータ可読プログラム命令は、機械を生産するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供してよい。これにより、かかるコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。上記のコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他の装置またはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶してよい。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他の装置にロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他の装置上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他の装置上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
本開示の図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行してもよい。例えば、連続して示される2つのブロックは、実際には、関係する機能に応じて、1つの工程として達成してもよいし、同時もしくは略同時に実行してもよいし、部分的もしくは全体的に時間的に重複した態様で実行してもよいし、または場合により逆順で実行してもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能または動作を行う専用ハードウェアベースのシステムによって、または専用ハードウェアとコンピュータ命令との組み合わせによって実行可能である。
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。説明された実施形態の範囲および精神から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。

Claims (20)

  1. プロセッサ上で実行されるオペレーティングシステムにて、メモリにデータを書き込むプログラムから書き込み要求を受信することであって、当該書き込み要求は仮想メモリアドレスおよび当該データを含む、受信することと、
    前記仮想メモリアドレスが物理メモリアドレスに割り当てられていないと判断することと、
    前記判断に基づいて、前記仮想メモリアドレスをオーバーフローメモリ内の物理メモリアドレスに割り当てることと、
    前記オーバーフローメモリ内の前記物理メモリアドレスに前記データを書き込むことと、
    前記データが前記メモリに正常に書き込まれたという指示を前記プログラムに返信することであって、前記プログラムによる前記仮想メモリアドレスへの後続のアクセス要求は、前記オーバーフローメモリ内の前記物理メモリアドレスへ向けられる、返信することと、
    を含む、方法。
  2. 前記仮想メモリアドレスが物理メモリアドレスに割り当てられていないとの判断に応じて、前記データおよび前記プログラムの一方または両方に関する状態情報の記録を開始することをさらに含む、請求項1に記載の方法。
  3. 前記状態情報は、悪意のあるプログラムまたは脅威アクターに関連付けられたパターンを識別するために利用される、請求項2に記載の方法。
  4. 前記プロセッサのセキュリティポリシーは、少なくとも部分的に前記状態情報に基づいて更新される、請求項2に記載の方法。
  5. 前記データはコンピュータコードを含み、オーバーフロー位置は、当該コンピュータコードが当該オーバーフロー位置から実行されるのを防ぐように構成される、請求項1に記載の方法。
  6. 変換ルックアサイドバッファ(TLB)は仮想メモリアドレスを物理メモリアドレスに変換するために使用され、当該TLBはスパースメモリ配置を使用して構成される、請求項1に記載の方法。
  7. 前記プロセッサのバッファオーバーフローモードを決定することであって、前記割り当てること、書き込むこと、および返信することは、第1のモードである当該プロセッサの当該バッファオーバーフローモードに基づいて実行される、決定することと、
    第2のモードである前記バッファオーバーフローモードに基づいて、前記仮想メモリアドレスが前記メモリ内の物理メモリアドレスに割り当てられていないとの判断に応じて、前記書き込みが正常に完了しなかったという指示を前記プログラムに返信することと、
    をさらに含む、請求項1に記載の方法。
  8. コンピュータが読み取り可能な命令を実行するための1つ以上のプロセッサであって、当該コンピュータが読み取り可能な命令は、当該1つ以上のプロセッサに、
    前記1つ以上のプロセッサの1つのプロセッサ上で実行されるオペレーティングシステムにて、メモリにデータを書き込むプログラムから書き込み要求を受信することであって、当該書き込み要求は仮想メモリアドレスおよび当該データを含む、受信することと、
    前記仮想メモリアドレスが物理メモリアドレスに割り当てられていないと判断することと、
    前記判断に基づいて、前記仮想メモリアドレスをオーバーフローメモリ内の物理メモリアドレスに割り当てることと、
    前記オーバーフローメモリ内の前記物理メモリアドレスに前記データを書き込むことと、
    前記データが前記メモリに正常に書き込まれたという指示を前記プログラムに返信することであって、前記プログラムによる前記仮想メモリアドレスへの後続のアクセス要求は、前記オーバーフローメモリ内の前記物理メモリアドレスへ向けられる、返信することと、を含む操作を実行させる、システム。
  9. 前記操作は、前記仮想メモリアドレスが物理メモリアドレスに割り当てられていないとの判断に応じて、前記データおよび前記プログラムの一方または両方に関する状態情報の記録を開始することをさらに含む、請求項8に記載のシステム。
  10. 前記状態情報は、悪意のあるプログラムまたは脅威アクターに関連するパターンを識別するために利用される、請求項9に記載のシステム。
  11. 前記プロセッサのセキュリティポリシーは、少なくとも部分的に前記状態情報に基づいて更新される、請求項9に記載のシステム。
  12. 前記データはコンピュータコードを含み、オーバーフロー位置は、当該コンピュータコードが当該オーバーフロー位置から実行されるのを防ぐように構成される、請求項8に記載のシステム。
  13. 変換ルックアサイドバッファ(TLB)は仮想メモリアドレスを物理メモリアドレスに変換するために使用され、当該TLBはスパースメモリ配置を使用して構成される、請求項8に記載のシステム。
  14. 前記操作はさらに、
    前記プロセッサのバッファオーバーフローモードを決定することであって、前記割り当てること、書き込むこと、および返信することは、第1のモードである当該プロセッサの当該バッファオーバーフローモードに基づいて実行される、決定することと、
    第2のモードである前記バッファオーバーフローモードに基づいて、前記仮想メモリアドレスが前記メモリ内の物理メモリアドレスに割り当てられていないとの判断に応じて、前記書き込みが正常に完了しなかったという指示を前記プログラムに返信することと、
    をさらに含む、請求項8に記載のシステム。
  15. プログラム命令が記憶されたコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、当該プログラム命令はプロセッサによって実行可能であり、当該プロセッサに、
    前記プロセッサ上で実行されるオペレーティングシステムにて、メモリにデータを書き込むプログラムから書き込み要求を受信することであって、当該書き込み要求は仮想メモリアドレスおよび当該データを含む、受信することと、
    前記仮想メモリアドレスが物理メモリアドレスに割り当てられていないと判断することと、
    前記判断に基づいて、前記仮想メモリアドレスをオーバーフローメモリ内の物理メモリアドレスに割り当てることと、
    前記オーバーフローメモリ内の前記物理メモリアドレスに前記データを書き込むことと、
    前記データが前記メモリに正常に書き込まれたという指示を前記プログラムに返信することであって、前記プログラムによる前記仮想メモリアドレスへの後続のアクセス要求は、前記オーバーフローメモリ内の前記物理メモリアドレスへ向けられる、返信することと、
    を含む操作を実行させる、コンピュータプログラム製品。
  16. 前記操作は、前記仮想メモリアドレスが物理メモリアドレスに割り当てられていないとの判断に応じて、前記データおよび前記プログラムの一方または両方に関する状態情報の記録を開始することをさらに含む、請求項15に記載のコンピュータプログラム製品。
  17. 前記プロセッサのセキュリティポリシーは、少なくとも部分的に前記状態情報に基づいて更新される、請求項16に記載のコンピュータプログラム製品。
  18. 前記データはコンピュータコードを含み、オーバーフロー位置は、当該コンピュータコードが当該オーバーフロー位置から実行されるのを防ぐように構成される、請求項15に記載のコンピュータプログラム製品。
  19. 変換ルックアサイドバッファ(TLB)は仮想メモリアドレスを物理メモリアドレスに変換するために使用され、当該TLBはスパースメモリ配置を使用して構成される、請求項15に記載のコンピュータプログラム製品。
  20. 前記操作はさらに、
    前記プロセッサのバッファオーバーフローモードを決定することであって、前記割り当てること、書き込むこと、および返信することは、第1のモードである当該プロセッサの当該バッファオーバーフローモードに基づいて実行される、決定することと、
    第2のモードである前記バッファオーバーフローモードに基づいて、前記仮想メモリアドレスが前記メモリ内の物理メモリアドレスに割り当てられていないとの判断に応じて、前記書き込みが正常に完了しなかったという指示を前記プログラムに返信することと、
    をさらに含む、請求項15に記載のコンピュータプログラム製品。
JP2021167124A 2020-10-13 2021-10-12 バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング) Pending JP2022064320A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/068,915 US11947465B2 (en) 2020-10-13 2020-10-13 Buffer overflow trapping
US17/068,915 2020-10-13

Publications (1)

Publication Number Publication Date
JP2022064320A true JP2022064320A (ja) 2022-04-25

Family

ID=78399511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021167124A Pending JP2022064320A (ja) 2020-10-13 2021-10-12 バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング)

Country Status (5)

Country Link
US (1) US11947465B2 (ja)
JP (1) JP2022064320A (ja)
CN (1) CN114356616A (ja)
DE (1) DE102021124371A1 (ja)
GB (1) GB2603989B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11947465B2 (en) * 2020-10-13 2024-04-02 International Business Machines Corporation Buffer overflow trapping

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157663A (en) 1990-09-24 1992-10-20 Novell, Inc. Fault tolerant computer system
US6381694B1 (en) 1994-02-18 2002-04-30 Apple Computer, Inc. System for automatic recovery from software problems that cause computer failure
US6594780B1 (en) 1999-10-19 2003-07-15 Inasoft, Inc. Operating system and data protection
US20020144141A1 (en) 2001-03-31 2002-10-03 Edwards James W. Countering buffer overrun security vulnerabilities in a CPU
US7222143B2 (en) 2003-11-24 2007-05-22 Lenovo (Singapore) Pte Ltd. Safely restoring previously un-backed up data during system restore of a failing system
US7647637B2 (en) 2005-08-19 2010-01-12 Sun Microsystems, Inc. Computer security technique employing patch with detection and/or characterization mechanism for exploit of patched vulnerability
US8819822B1 (en) * 2006-03-30 2014-08-26 Vmware, Inc. Security method for detecting intrusions that exploit misinterpretation of supplied data
US8510827B1 (en) * 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security
US8893278B1 (en) * 2011-07-12 2014-11-18 Trustwave Holdings, Inc. Detecting malware communication on an infected computing device
US8694738B2 (en) * 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US10447733B2 (en) * 2014-06-11 2019-10-15 Accenture Global Services Limited Deception network system
US9952887B2 (en) 2014-06-23 2018-04-24 Vmware, Inc. Device simulation in a secure mode supported by hardware architectures
US9804975B2 (en) 2014-06-23 2017-10-31 The Johns Hopkins University Hardware-enforced prevention of buffer overflow
US9990492B2 (en) 2014-07-23 2018-06-05 Grammatech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US10268601B2 (en) * 2016-06-17 2019-04-23 Massachusetts Institute Of Technology Timely randomized memory protection
US10938854B2 (en) * 2017-09-22 2021-03-02 Acronis International Gmbh Systems and methods for preventive ransomware detection using file honeypots
US11030112B2 (en) * 2018-05-25 2021-06-08 Red Hat, Inc. Enhanced address space layout randomization
US11985101B2 (en) * 2019-01-18 2024-05-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method, apparatus, electronic message server and computer program for processing a plurality of electronic messages
US11681806B2 (en) * 2019-10-15 2023-06-20 International Business Machines Corporation Protecting against out-of-bounds buffer references
US11271907B2 (en) * 2019-12-19 2022-03-08 Palo Alto Networks, Inc. Smart proxy for a large scale high-interaction honeypot farm
US11816217B2 (en) * 2020-04-10 2023-11-14 Vmware, Inc. Decoy memory allocation
US11947465B2 (en) * 2020-10-13 2024-04-02 International Business Machines Corporation Buffer overflow trapping

Also Published As

Publication number Publication date
US20220114106A1 (en) 2022-04-14
GB202113827D0 (en) 2021-11-10
US11947465B2 (en) 2024-04-02
GB2603989B (en) 2023-07-12
CN114356616A (zh) 2022-04-15
DE102021124371A1 (de) 2022-04-14
GB2603989A (en) 2022-08-24

Similar Documents

Publication Publication Date Title
US10346625B2 (en) Automated mechanism to analyze elevated authority usage and capability
US9906548B2 (en) Mechanism to augment IPS/SIEM evidence information with process history snapshot and application window capture history
US10831889B2 (en) Secure memory implementation for secure execution of virtual machines
US8312471B2 (en) File system independent content aware cache
US9471802B2 (en) Hybrid file systems
US10158743B2 (en) Compute node cluster management
US9830469B1 (en) Automated mechanism to secure customer data
US20140032753A1 (en) Computer system and node search method
JP2016537695A (ja) マルウェアコンテンツ検出システム内の仮想マシンへの最適化されたリソース割当て
US20200356357A1 (en) Firmware update architecture with os-bios communication
JP7386882B2 (ja) セキュア仮想マシン環境におけるゲスト命令の透過的解釈
JP2022522678A (ja) セキュア実行ゲスト所有者環境制御
US10552616B2 (en) Determining and managing application vulnerabilities
US10223146B2 (en) Rearrangement management for a shared pool of configurable computing resources
JP6616404B2 (ja) クラウド仮想マシンに対する脅威の検出への自動応答
US8838913B1 (en) System and method for locating a memory page in a guest virtual machine
US9213618B2 (en) Storage management systems and methods in hierarchical storage systems
JP2022064320A (ja) バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング)
US10296737B2 (en) Security enforcement in the presence of dynamic code loading
JP2022522849A (ja) セキュア仮想マシンのディスパッチ
US20230239317A1 (en) Identifying and Mitigating Security Vulnerabilities in Multi-Layer Infrastructure Stacks
CN115774742A (zh) 私有云的数据存储新增方法、装置、设备、介质及产品
US10394589B2 (en) Vertical replication of a guest operating system
Ver Dynamic load balancing based on live migration of virtual machines: Security threats and effects
AU2021325335B2 (en) Minimizing delay while migrating direct memory access (dma) mapped pages

Legal Events

Date Code Title Description
RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20211208

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240307