JP2009259078A - バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置 - Google Patents
バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置 Download PDFInfo
- Publication number
- JP2009259078A JP2009259078A JP2008108728A JP2008108728A JP2009259078A JP 2009259078 A JP2009259078 A JP 2009259078A JP 2008108728 A JP2008108728 A JP 2008108728A JP 2008108728 A JP2008108728 A JP 2008108728A JP 2009259078 A JP2009259078 A JP 2009259078A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- memory area
- program
- dummy
- memory
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】既存のオペレーションシステムを改変することなくプログラム実行時のオーバーヘッドを低減し、バッファオーバーフローを検出する。
【解決手段】コンピュータ1は、プログラム34からの要求に応じてメモリ31内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスにダミーメモリ領域を割り当てる割当ステップと、ダミーメモリ領域のアドレスをデバックレジスタ33に登録する登録ステップと、当該コンピュータ1のハードウェアのデバック機能を用いてデバックレジスタ33に登録されたダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する。
【選択図】図2
【解決手段】コンピュータ1は、プログラム34からの要求に応じてメモリ31内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスにダミーメモリ領域を割り当てる割当ステップと、ダミーメモリ領域のアドレスをデバックレジスタ33に登録する登録ステップと、当該コンピュータ1のハードウェアのデバック機能を用いてデバックレジスタ33に登録されたダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する。
【選択図】図2
Description
本発明は、プログラムの実行中に発生するバッファメモリのオーバーフローを検出する技術に関する。
プログラム中でメモリ破壊を行っている箇所を検出する方法として、例えば特許文献1にメモリエリアの前後にバリアを確保し、バリアの値をプログラムステップ毎に監視してバリアの破壊(メモリ破壊)を検出する方法が記載されている。
また、バッファメモリに関しては、例えば特許文献2にバッファメモリ領域確保要求があったときに、物理ページが存在しない仮想ページを用意し、要求のあったメモリ領域をこの仮想ページの直前に割り当てることで、バッファメモリのオーバーフロー発生時にページフォルトを発生させることでバッファメモリの破壊を検出するバッファメモリ管理方法が記載されている。
特開2000−57008
特開2000−40008
特許文献1のメモリ破壊を検出する方法は、プログラムを1ステップ実行する毎にバリア(メモリ)の破壊をチェックする必要があるため、プログラム実行時のオーバーヘッドが大きい。また、特許文献2のバッファメモリ管理方法では、バッファメモリを確保する際に、ページ割当を行うのはオペレーションシステム(OS)である。したがって、バッファメモリを仮想ページの直前に割り当てるようにページ割当方法を変更するためには、オペレーションシステムの改造が必要となる。
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、既存のオペレーションシステムを改変することなくプログラム実行時のオーバーヘッドを低減し、バッファオーバーフローを検出することにある。
本発明は、コンピュータが行う、プログラムの実行時に発生するバッファオーバーフローを検出する方法であって、前記コンピュータは、前記プログラムからの要求に応じてメモリ内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスにダミーメモリ領域を割り当てる割当ステップと、前記ダミーメモリ領域のアドレスを、デバックレジスタに登録する登録ステップと、当該コンピュータのハードウェアのデバック機能を用いて前記デバックレジスタに登録された前記ダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する検出ステップと、を行うこと。
また、本発明は、コンピュータが実行する、アプリケーションプログラムの実行時に発生するバッファオーバーフローを検出する検出プログラムであって、前記コンピュータに、前記アプリケーションプログラムから要求に応じてメモリ内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスに、ダミーメモリ領域を割り当てる割当ステップと、前記ダミーメモリ領域のアドレスを、デバックレジスタに登録する登録ステップと、当該コンピュータのハードウェアのデバック機能を用いて前記デバックレジスタに登録された前記ダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する検出ステップと、を行う。
また、本発明は、プログラムの実行時に発生するバッファオーバーフローを検出するバッファオーバーフロー検出装置であって、ソースプログラムを解析し、バッファメモリ領域の割り当て要求を検出すると、当該割り当て要求の前後にダミーメモリ領域の割り当て処理、および当該ダミー領域のメモリアドレスをデバックレジスタに登録する処理をソースプログラムに追加する前処理手段と、前記前処理手段により前処理されたソースプログラムをコンパイルし、実行可能なプログラムに変換するコンパイル手段と、前記実行可能なプログラムを実行する実行手段とを有し、前記実行手段は、前記実行可能なプログラムを実行することにより、前記実行可能なプログラムからの要求に応じてメモリ内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスに、ダミーメモリ領域を割り当て、前記ダミーメモリ領域のアドレスをデバックレジスタに登録し、当該バッファオーバーフロー検出装置のハードウェアのデバック機能を用いて前記デバックレジスタに登録された前記ダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する。
本発明によれば、既存のオペレーションシステムを改変することなくプログラム実行時のオーバーヘッドを低減し、バッファオーバーフローを検出することができる。
<第1の実施形態>
以下、本発明の第1の実施形態について説明する。
以下、本発明の第1の実施形態について説明する。
図1は、本発明の第1の実施形態であるバッファオーバーフロー検出装置(以下、「検出装置」)1の機能ブロック図である。図示する検出装置1は、前処理部11と、コンパイル部12と、実行部13と、デバック部14と、プログラム記憶部15とを有する。
前処理部11は、プログラム記憶部15にあらかじめ記憶されたソースプログラムをコンパイルする前に前処理を行い、前処理済みソースプログラムを生成してプログラム記憶部16に出力する。すなわち、前処理部11は、ソースプログラムの字句解析を行い、ソースプログラムの中で所定の条件を満たす字句が記載された箇所を検出すると、ソースプログラムを変更し、前処理済みソースプログラムを生成する。ソースプログラムの変更は、例えば、所定の命令または宣言の追加、削除、変更などである。
コンパイル部12は、プログラム記憶部16に出力された前処理済みソースプログラムを入力として読み込み、字句解析を行い、実行部13(CPU)が実行可能なプログラムに変換し、プログラム記憶部15に出力する。実行部13は、実行可能プログラムを実行し、バッファオーバーフローを検出する。
デバック部14は、検出装置1のCPU(ハードウェア)のデバック機能であって、プログラム記憶部15の実行可能プログラム(アプリケーションプログラム等)の実行時に発生するエラーを検出する。すなわち、CPUは、当該CPU内部にある複数のデバックレジスタに登録された、所定のアドレスのメモリを監視し、当該メモリにおけるデータの変更を検知する。
図2に、CPUとデバックレジスタの模式図を示す。あらかじめメモリ31内の特定のアドレスをデバックレジスタ33に登録し、実行可能プログラム34を実行することにより、デバックレジスタ33に登録されたアドレスに対して更新が発生すると、CPU32は、これを検知して割り込みを発生させる。そして、CPU32は、実行中のプログラム34の一部である割込関数(割込ハンドラ)35を呼び出すことができる。なお、割込関数35は、あらかじめプログラム記憶部15に記憶されている実行可能プログラムの中の一部(関数、サブルーチン等)であって、所定のエラー処理(例えば、実行中のプログラム34の強制終了、ログ情報の取得等)を行う。この割込関数が呼び出されたことにより、実行部13(実行中のプログラム34)は、バッファオーバーフローを検出する。
図3に、本実施形態のソースプログラムの構造を示す。なお、本実施形ではC言語、C++言語などを例として説明するが、プログラミング言語はこれらに限定されない。
図示するソースプログラムは、少なくとも1つの関数21を有する。関数21は、所定の処理を実行して結果を返す一連の命令群であり、少なくとも1つの引数を有する場合がある。関数21は、変数宣言部22と処理内容記述部23とを含む。変数宣言部22には、関数21内でのみ使用されるローカル変数が記述(宣言)される。変数宣言部22で記述されたローカル変数は、プログラムの実行時に記述された順序に従って、検出装置1が備えるメモリ内のスタックメモリ上に配置される。処理内容記述部23には、ローカル変数を用いた処理手順が記述される。
上記説明した検出装置1は、例えば、少なくともCPUと、メモリと、HDD等の外部記憶装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされたプログラムを実行することにより、検出装置1の各機能が実現される。なお、検出装置1は、必要に応じて入力装置および出力装置を備えることとしてもよい。
次に、本実施形態の検出装置1のバッファオーバーフロー検出処理について説明する。
本実施形態では、スタックメモリ上のバッファのバッファオーバーフローを検出する。スタックメモリは、プログラム起動時に検出装置1のメモリの中に確保されるメモリ領域であり、関数を呼び出しの際に使用される。バッファは、メモリの中に確保されるメモリ領域であって、本実施形態ではスタックメモリ上に確保されるものとする。メモリ中に確保されるバッファは、論理的に連続したメモリ領域であって、他のメモリ領域と隣接して存在する。プログラム実行中に、バッファとして確保されたメモリ領域を超えるデータが入力された場合、この領域にデータがオーバーフローし(溢れてしまい)、オーバーフローしたデータは隣接するメモリ領域へと書き込まれ、すなわちバッファオーバーフローが発生する。
図4および図5は、本実施形態のバッファオーバーフロー検出処理のフローチャートである。
まず、前処理部11は、プログラム記憶部15に格納されたソースプログラムを読み込み、各関数について以下の処理を行う。すなわち、図4に示すように、前処理部11は、関数21の変数宣言部22に記述されたローカル変数および引数のうち、連続したメモリアドレス上のメモリ領域の確保を宣言しているもの(以下、「バッファ変数」)を検出する。バッファ変数としては、例えば、配列として宣言されているものなどが考えられる。バッファ変数を検出した場合、前処理部11は、変数宣言部22のバッファ変数が記述されている箇所の前後にダミー変数の宣言を記述(追加)する(S11)。なお、バッファ変数の前に宣言したダミー変数を第1のダミー変数とし、バッファ変数の後に宣言したダミー変数を第2のダミー変数とする。
そして、前処理部11は、変数宣言部22の最後に、long型の変数宣言を2つ追加する。このlong型の変数は、CPU内のデバックレジスタ用の変数(以下、「デバックレジスタ退避変数」)である(S12)。なお、前処理部11は、これらのデバック退避レジスタ変数の変数名を、乱数により生成する。
そして、前処理部11は、処理内容記述部23の先頭に、現時点において各デバックレジスタに登録されている値を取得し、S12で宣言したデバックレジスタ退避変数に入力する処理(命令)を追加する(S13)。
そして、前処理部11は、処理内容記述部23のS13で追加した処理の直後に、S11で宣言した第1のダミー変数および第2のダミー変数のアドレスを、デバックレジスタに登録する処理を追加する(S14)。
そして、前処理部11は、関数21の末尾に当該関数21を抜ける命令がある場合は当該命令の直前に、また、関数21の末尾に当該関数21を抜ける命令がない場合は当該関数21の末尾に、デバックレジスタ退避変数に格納した値をデバックレジスタに登録する(戻す)処理を追加する(S15)。前処理部11は、ソースプログラムの各関数21に上記S11からS15の前処理を行うことにより、前処理済みソースプログラムを生成し、プログラム記憶部15に出力する。
コンパイル部12は、前処理済みソースプログラムを、CPUが実行可能なプログラムに変換(コンパイル)し、実行可能なプログラムをプログラム記憶部15に出力する(S16)。
そして、実行部13は、実行可能プログラムを実行する(S17)。図5に、S17の処理のフローチャートを示す。実行可能プログラムが実行されることにより、所定の関数が呼び出され、S11で宣言された第1のダミー変数、バッファ変数、および第2のダミー変数が順に、スタックメモリ上に割り当てられる(S21)。
図6に、スタックメモリのメモリマップの概略図を示す。図示するように、バッファ変数のメモリ領域62の前後に隣接して、第1のダミー変数のメモリ領域61および第2のダミー変数のメモリ領域63が割り当てられている。
そして、S13で追加された処理により、関数が呼び出される前にデバックレジスタに格納されている値がデバックレジスタ退避変数に格納される(S22)。そして、S14で追加された処理により、スタックメモリに確保された第1のダミー変数のメモリ領域61および第2のダミー変数のメモリ領域63のアドレスが、デバックレジスタに登録される(S23)。
これにより、CPUのデバック機能であるデバック部14は、デバックレジスタに登録された、ダミー変数のメモリ領域61、63を監視し、処理内容記述部の処理を実行することによる当該メモリ領域61、63におけるデータの変更を検知する。前述のとおり、バッファオーバーフローは、確保されたバッファ変数のメモリ領域62のサイズを越えるデータを書き込むことによって発生し、オーバーフローしたデータは隣接する第1のダミー変数のメモリ領域61および/または第2のダミー変数のメモリ領域63に書き込まれる。すなわち、バッファオーバーフローが発生すると、第1のダミー変数のメモリ領域61および/または第2のダミー変数のメモリ領域63が書き換わる。
ダミー変数のメモリ領域61、63のデータが更新されたことを検知した場合(S24:YES)、デバック部14は割り込みを発生させ、割込関数を呼び出す。そして、この割り込みを検知することにより、実行部13(実行中のプログラム34)は、バッファオーバーフローの発生を検知する(S25)。なお、割込関数を実行することにより、所定のエラー処理(実行中のプログラム・関数の強制終了、ログ情報の収集等)が行われる。
一方、ダミー変数のメモリ領域61、63のデータが更新されない場合(S24:NO)、関数が正常に実行され、S15で追加された処理により、デバックレジスタ退避変数に格納した値をデバックレジスタに再登録し、当該関数を終了する。これにより、当該関数の処理を実行している間、デバックレジスタの値がデバックレジスタ退避変数に退避され、当該関数を実行する前のデバックレジスタの値が保証される。
<第2の実施形態>
以下、本発明の第2の実施形態について説明する。
以下、本発明の第2の実施形態について説明する。
本実施形態では、プログラムの外部から入力されたデータをバッファに格納する際に発生するバッファオーバーフローを検出する。なお、本実施形態のバッファオーバーフロー検出装置は、図1と同様であるためここでは説明を省略する。
本実施形態では、プログラム開発者がソースプログラムを作成する際に、プログラムの外部から入力されるデータを格納するためのメモリ領域の確保(割り当て)を宣言する際に、所定の識別子を付加しておく。この識別子が付加されたメモリ領域の確保を宣言しているものを、本実施形態では「バッファ変数」とし、第1の実施形態で説明した図4および図5に示すバッファオーバーフロー検出処理と同様の処理を行う。
すなわち、前処理部11は、プログラム記憶部15に格納されたソースプログラムを読み込み、関数の変数宣言部に記述された所定の識別子が付加されたバッファ変数を検出し、当該バッファ変数が記述されている箇所の前後に第1のダミー変数および第2のダミー変数の宣言を記述する(S11)。そして、前処理部11は、変数宣言部の最後に、デバックレジスタ退避変数を2つ追加する(S12)。そして、前処理部11は、処理内容記述部の先頭に、現時点において各デバックレジスタに登録されている値を取得し、デバックレジスタ退避変数に入力する処理を追加する(S13)。そして、前処理部11は、第1のダミー変数および第2のダミー変数のアドレスを、デバックレジスタに登録する処理を追加する(S14)。そして、前処理部11は、関数の末尾にデバックレジスタ退避変数に格納した値をデバックレジスタに再登録する処理を追加する(S15)。コンパイル部12は、前処理済みソースプログラムを、実行可能プログラムに変換する(S16)。そして、実行部13は、実行可能プログラムを図5に示すように実行する(S17)。
なお、第1の実施形態のバッファ変数はスタックメモリ上に割り当てられたが、本実施形態のバッファ変数はスタックメモリに限定されず、メモリ内のいずれかの領域に割り当てられる。
以上説明した第1および第2の実施形態では、ハードウェア(CPU)のデバック機能を用いてバッファオーバーフローを検出する。すなわち、バッファメモリの前後に割り当てられたダミーメモリ領域のアドレスをデバックレジスタに登録することにより、バッファオーバーフローを検出する。デバックレジスタは、既存のオペレーションシステムを改造することなく、プログラムが利用(アクセス)することができる。これにより、第1および第2の実施形態では、オペレーションシステムを改造することなく、バッファオーバーフローを検出することができる。
また、第1および第2の実施形態では、バッファメモリの前後に割り当てられたダミーメモリ領域のアドレスをデバックレジスタに登録することでバッファオーバーフローを検出する。これにより、デバックレジスタへの登録処理を除き、プログラムの実行によるオーバーヘッドは生じない。すなわち、デバックレジスタへの登録処理は、関数の呼び出し時にのみ行われるため、プログラムの実行によるオーバーヘッドが抑えることができる。
また、第1および第2の実施形態では、デバックレジスタに登録されたダミーメモリ領域のデータが書き換えられたタイミングで、即座にバッファオーバーフローを検出することができる。これにより、バッファオーバーフローに起因する2次的なプログラム誤動作による被害を防止することができる。また、バッファオーバーフローを故意に発生させることにより、不正なコードを実行させるバッファオーバーフロー攻撃からプログラムを保護することができる。
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
1 バッファオーバーフロー検出装置
11 前処理部
12 コンパイル部
13 実行部
14 デバック部
15 プログラム記憶部
21 関数
22 変数宣言部
23 処理内容記述部
31 メモリ
32 CPU
33 デバックレジスタ
11 前処理部
12 コンパイル部
13 実行部
14 デバック部
15 プログラム記憶部
21 関数
22 変数宣言部
23 処理内容記述部
31 メモリ
32 CPU
33 デバックレジスタ
Claims (7)
- コンピュータが行う、プログラムの実行時に発生するバッファオーバーフローを検出する方法であって、
前記コンピュータは、
前記プログラムからの要求に応じてメモリ内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスにダミーメモリ領域を割り当てる割当ステップと、
前記ダミーメモリ領域のアドレスを、デバックレジスタに登録する登録ステップと、
当該コンピュータのハードウェアのデバック機能を用いて前記デバックレジスタに登録された前記ダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する検出ステップと、を行うこと
を特徴とするバッファオーバーフロー検出方法。 - 請求項1記載のバッファオーバーフロー検出方法であって、
前記割当ステップは、スタックメモリ内に、前記バッファメモリおよび前記ダミーメモリ領域を割り当てること
を特徴とするバッファオーバーフロー検出方法。 - 請求項1または請求項2記載のバッファオーバーフロー検出方法であって、
前記コンピュータは、
ソースプログラムを解析し、バッファメモリ領域の割り当て要求を検出すると、当該割り当て要求の前後にダミーメモリ領域の割り当て処理、および当該ダミー領域のメモリアドレスをデバックレジスタに登録する処理をソースプログラムに追加する前処理ステップと、
前記前処理ステップにより前処理されたソースプログラムをコンパイルし、実行可能なプログラムに変換するコンパイルステップと、をさらに行うこと
を特徴とするバッファオーバーフロー検出方法。 - 請求項3記載のバッファオーバーフロー検出方法であって、
前記前処理ステップは、メモリ内の連続したメモリアドレス上のメモリ領域の確保要求を前記バッファメモリ領域の割り当て要求として検出し、当該割り当て要求の前後にダミーメモリ領域の割り当て処理、および当該ダミー領域のメモリアドレスをデバックレジスタに登録する処理をソースプログラムに追加すること
を特徴とするバッファオーバーフロー検出方法。 - 請求項3記載のバッファオーバーフロー検出方法であって、
前記前処理ステップは、ソースプログラムを解析し、所定の識別子が付加され箇所をバッファメモリ領域の割り当て要求として検出し、当該割り当て要求の前後にダミーメモリ領域の割り当て処理、および当該ダミー領域のメモリアドレスをデバックレジスタに登録する処理をソースプログラムに追加すること
を特徴とするバッファオーバーフロー検出方法。 - コンピュータが実行する、アプリケーションプログラムの実行時に発生するバッファオーバーフローを検出する検出プログラムであって、
前記コンピュータに、
前記アプリケーションプログラムから要求に応じてメモリ内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスに、ダミーメモリ領域を割り当てる割当ステップと、
前記ダミーメモリ領域のアドレスを、デバックレジスタに登録する登録ステップと、
当該コンピュータのハードウェアのデバック機能を用いて前記デバックレジスタに登録された前記ダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出する検出ステップと、を行うこと
を特徴とするバッファオーバーフロー検出プログラム。 - プログラムの実行時に発生するバッファオーバーフローを検出するバッファオーバーフロー検出装置であって、
ソースプログラムを解析し、バッファメモリ領域の割り当て要求を検出すると、当該割り当て要求の前後にダミーメモリ領域の割り当て処理、および当該ダミー領域のメモリアドレスをデバックレジスタに登録する処理をソースプログラムに追加する前処理手段と、
前記前処理手段により前処理されたソースプログラムをコンパイルし、実行可能なプログラムに変換するコンパイル手段と、
前記実行可能なプログラムを実行する実行手段と、を有し、
前記実行手段は、前記実行可能なプログラムを実行することにより、
前記実行可能なプログラムからの要求に応じてメモリ内にバッファメモリ領域を割り当てるとともに、当該バッファメモリ領域に隣接する前後のアドレスに、ダミーメモリ領域を割り当て、
前記ダミーメモリ領域のアドレスをデバックレジスタに登録し、
当該バッファオーバーフロー検出装置のハードウェアのデバック機能を用いて前記デバックレジスタに登録された前記ダミーメモリ領域のデータ更新を検出することにより、バッファメモリのオーバーフローを検出すること
を特徴とするバッファオーバーフロー検出装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008108728A JP2009259078A (ja) | 2008-04-18 | 2008-04-18 | バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008108728A JP2009259078A (ja) | 2008-04-18 | 2008-04-18 | バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2009259078A true JP2009259078A (ja) | 2009-11-05 |
Family
ID=41386405
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008108728A Pending JP2009259078A (ja) | 2008-04-18 | 2008-04-18 | バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2009259078A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20200111909A (ko) * | 2019-03-20 | 2020-10-05 | (주)아이넷캅 | 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 |
| JP2022064320A (ja) * | 2020-10-13 | 2022-04-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング) |
| KR20230046082A (ko) * | 2021-09-29 | 2023-04-05 | 한국전자통신연구원 | 메모리 취약점 탐지 장치 및 방법 |
| US11816217B2 (en) * | 2020-04-10 | 2023-11-14 | Vmware, Inc. | Decoy memory allocation |
-
2008
- 2008-04-18 JP JP2008108728A patent/JP2009259078A/ja active Pending
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20200111909A (ko) * | 2019-03-20 | 2020-10-05 | (주)아이넷캅 | 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 |
| KR102324950B1 (ko) * | 2019-03-20 | 2021-11-11 | (주)아이넷캅 | 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 |
| US11816217B2 (en) * | 2020-04-10 | 2023-11-14 | Vmware, Inc. | Decoy memory allocation |
| JP2022064320A (ja) * | 2020-10-13 | 2022-04-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング) |
| JP7790824B2 (ja) | 2020-10-13 | 2025-12-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム(バッファオーバーフロートラッピング) |
| KR20230046082A (ko) * | 2021-09-29 | 2023-04-05 | 한국전자통신연구원 | 메모리 취약점 탐지 장치 및 방법 |
| KR102836529B1 (ko) * | 2021-09-29 | 2025-07-22 | 한국전자통신연구원 | 메모리 취약점 탐지 장치 및 방법 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6412109B1 (en) | Method for optimizing java bytecodes in the presence of try-catch blocks | |
| JP5182816B2 (ja) | 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム | |
| US6973644B2 (en) | Program interpreter | |
| US8713546B2 (en) | System and method for redundant array copy removal in a pointer-free language | |
| US20090248721A1 (en) | System And Method for Stack Crawl Testing and Caching | |
| US20100257608A1 (en) | Apparatus and method for preventing virus code execution | |
| US8984497B2 (en) | Source code converting, method program, and systems for first programming language to a code in a second programming language | |
| JPH05204656A (ja) | スレッド固有データ保持方法 | |
| JPWO2009075116A1 (ja) | プログラムデバッグ方法、プログラム変換方法及びそれを用いるプログラムデバッグ装置、プログラム変換装置並びに記憶媒体 | |
| US20110320745A1 (en) | Data-scoped dynamic data race detection | |
| JP2004013556A (ja) | プロセッサ装置、コンパイル装置及びその方法 | |
| KR20120083803A (ko) | 가상머신을 위한 추가코드 생성장치 및 방법 | |
| CN105849698A (zh) | 动态编程中的执行防护 | |
| JP2017228029A (ja) | 並列化方法、並列化ツール、車載装置 | |
| JP2009259078A (ja) | バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置 | |
| US20050283770A1 (en) | Detecting memory address bounds violations | |
| JP2014211864A (ja) | 未完成ソフトウェアの分析 | |
| US20080307177A1 (en) | Program conversion device | |
| JP2009237610A (ja) | コード変換装置及びコード変換方法 | |
| KR20060035077A (ko) | 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 | |
| US10452534B2 (en) | Asynchronous operation query | |
| JP2008071356A (ja) | 割込禁止区間処理装置および方法とページ固定装置および方法 | |
| US8839191B2 (en) | Computer-readable recording medium, compiler, execution control apparatus, and execution control method for converting a program to be called | |
| US20090217014A1 (en) | Processor, memory device, processing device, and method for processing instruction | |
| JP2011181114A (ja) | プログラム変換装置、プログラム変換方法及び記録媒体 |