JP5039728B2 - コンピュータメモリにおけるスタック領域のデータの保護方法 - Google Patents
コンピュータメモリにおけるスタック領域のデータの保護方法 Download PDFInfo
- Publication number
- JP5039728B2 JP5039728B2 JP2009040086A JP2009040086A JP5039728B2 JP 5039728 B2 JP5039728 B2 JP 5039728B2 JP 2009040086 A JP2009040086 A JP 2009040086A JP 2009040086 A JP2009040086 A JP 2009040086A JP 5039728 B2 JP5039728 B2 JP 5039728B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- stack area
- function
- crc
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Description
プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域における関数への引数の記憶領域に関数への引数とその複製を同時に記憶し、前記関数の実行後、前記関数への引数とその複製とを比較して両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする。
プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域における関数への引数の記憶領域に関数への引数とそのハッシュ値(crc)とを同時に記憶し、前記関数の実行後、前記関数への引数のハッシュ値(crc)を再計算して前記記憶させたハッシュ値(crc)と再計算結果とを比較し、両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする。これにより、関数への引数が多くてデータ量が多くなる場合、複製を作ることでメモリ領域を圧迫するが、このようにハッシュ値(crc)を用いることで少ないメモリ容量で同様な効果を得ることができる。
プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域におけるローカル変数領域にローカル変数とその複製とを記憶し、前記ローカル変数の計算毎に前記ローカル変数領域に計算結果のローカル変数とその複製とを格納すると共に、前記ローカル変数の計算前、計算後に、前記ローカル変数とその複製とを比較して両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする。これにより、悪意のあるプログラムによるデータの破損は通常、ローカル変数の領域から行われることが多いから、このようにローカル変数を複製し、比較することで、こういった悪意のあるプログラムによるデータの破損を確実に検出することができる。
プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域におけるローカル変数領域にローカル変数とそのハッシュ値(crc)とを記憶し、前記ローカル変数の計算毎に計算結果とローカル変数のハッシュ値(crc)を再計算して格納すると共に、前記ローカル変数の計算前、計算後に、前記ローカル変数のハッシュ値(crc)を再計算して記憶されたハッシュ値(crc)と比較し、両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする。これにより、ローカル変数のデータ量が多くなる場合、複製を作ることでメモリ領域を圧迫するが、このようにハッシュ値(crc)を用いることで少ないメモリ容量で同様な効果を得ることができる。
プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域における関数への引数領域に関数への引数とその複製とを同時に記憶すると共に、前記ローカル変数領域にローカル変数とそのハッシュ値(crc)とを記憶して、前記ローカル変数の計算毎に前記ローカル変数の記憶領域に計算結果を、ハッシュ値(crc)の記憶領域に計算結果のハッシュ値(crc)を計算して格納し、前記関数の実行後に前記関数への引数とその複製とを比較すると共に、前記ローカル変数の計算前、計算後に、前記ローカル変数のハッシュ値(crc)を再計算して記憶されたハッシュ値(crc)と比較し、それぞれの比較結果のいずれかが異なっていた場合に前記プログラムの実行を中止して、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする。これにより、関数への引数は通常データ量がそれほど大きくなく、ローカル変数は大きなものがあるがハッシュ値(crc)とすることでデータ量が小さくでき、関数への引数とローカル変数との異常を一度に検出でき、さらにスタック領域のデータの保護を確実に行うことができる。
ステップS22で処理がスタートすると、データ処理装置(CPU)20はステップS24で関数コール時に全引数のハッシュ値(crc)を計算し、図5(B)、(C)に示したように、スタック領域28におけるこの値を関数への引数38a、38b、38cと共に38crcに記憶する。
12 発電機
13 回転数センサ
14 バルブ制御装置
15 回転数入力装置
16 コントロールバルブ
17 入出力装置
18 コントロールコンピュータ
19 シャットオフバルブ
20 データ処理装置(CPU)
21 トリップバルブ
22 記憶装置
24 制御プログラム
26 メインメモリ装置
28 スタック領域
30 汎用レジスタ保存値
32 ローカル変数
34 フレームポインタ保存値
36 関数の戻り番地
38 関数への引数
50 攻撃コード
52 関数の戻り番地
60 カナリア
62 ヒープ領域
Claims (11)
- プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域における関数への引数の記憶領域に関数への引数とその複製を同時に記憶し、前記関数の実行後、前記関数への引数とその複製とを比較して両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とするコンピュータメモリにおけるスタック領域のデータの保護方法。 - 前記関数への引数が複数有る場合、前記関数への引数とその複製とを、関数への全引数、その全複製の順に記憶するか、または関数への第1の引数、その関数への第1の引数の複製、関数への第2の引数、その関数への第2の引数の複製、の順で複数データを同様に対にして記憶させることを特徴とする請求項1に記載したコンピュータメモリにおけるスタック領域のデータの保護方法。
- プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域における関数への引数の記憶領域に関数への引数とそのハッシュ値(crc)とを同時に記憶し、前記関数の実行後、前記関数への引数のハッシュ値(crc)を再計算して前記記憶させたハッシュ値(crc)と再計算結果とを比較し、両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とするコンピュータメモリにおけるスタック領域のデータの保護方法。 - 前記スタック領域における関数への引数の記憶領域に記憶する関数への引数のハッシュ値(crc)の複製をさらに記憶させ、前記関数の実行後、前記関数への引数のハッシュ値(crc)を再計算し、前記記憶させたハッシュ値(crc)と複製ハッシュ値(crc)と前記再計算結果とを比較し、前記再計算結果とハッシュ値(crc)と複製ハッシュ値(crc)との値のいずれかが異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする請求項3に記載したコンピュータメモリにおけるスタック領域のデータの保護方法。
- プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域におけるローカル変数領域にローカル変数とその複製とを記憶し、前記ローカル変数の計算毎に前記ローカル変数領域に計算結果のローカル変数とその複製とを格納すると共に、前記ローカル変数の計算前、計算後に、前記ローカル変数とその複製とを比較して両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とするコンピュータメモリにおけるスタック領域のデータの保護方法。 - 前記ローカル変数が複数有る場合、前記ローカル変数とその複製とを、全ローカル変数、その全ローカル変数の複製の順に記憶するか、または第1のローカル変数、その第1のローカル変数の複製、第2のローカル変数、その第2のローカル変数の複製、の順で複数データを対にして並べて記憶させることを特徴とする請求項5に記載したコンピュータメモリにおけるスタック領域のデータの保護方法。
- プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域におけるローカル変数領域にローカル変数とそのハッシュ値(crc)とを記憶し、前記ローカル変数の計算毎に計算結果とローカル変数のハッシュ値(crc)を再計算して格納すると共に、前記ローカル変数の計算前、計算後に、前記ローカル変数のハッシュ値(crc)を再計算して記憶されたハッシュ値(crc)と比較し、両者が異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とするコンピュータメモリにおけるスタック領域のデータの保護方法。 - 前記ローカル変数とそのハッシュ値(crc)とを記憶する領域にさらにローカル変数のハッシュ値(crc)の複製を記憶する領域を確保し、前記ローカル変数の計算毎に前記ローカル変数の記憶領域に計算結果を、ローカル変数のハッシュ値(crc)とその複製の領域に計算結果のハッシュ値(crc)を再計算して格納し、前記ローカル変数の計算前、計算後に、前記ローカル変数のハッシュ値(crc)を再計算して前記記憶させたハッシュ値(crc)と複製ハッシュ値(crc)と比較し、前記再計算結果と記憶されたハッシュ値(crc)と複製ハッシュ値(crc)との値のいずれかが異なっていた場合に前記プログラムの実行を中止し、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とする請求項7に記載したコンピュータメモリにおけるスタック領域のデータの保護方法。
- プログラムによりコンピュータメモリにおけるスタック領域に、関数への引数、関数の戻り番地、フレームポインタ保存値、ローカル変数、汎用レジスタ保存値の各データを保存するための領域を確保し、前記プログラムを実施するとき、前記スタック領域における特定ビットの故障、複数の作成者のプログラミングにより生じた使用アドレス間違いによるデータの破損、悪意のあるプログラムによるデータの破損、を含むいずれかにより生じたデータ破損による前記プログラムの暴走を含む異常事態を生じないようにした、コンピュータメモリにおけるスタック領域のデータの保護方法であって、
前記スタック領域における関数への引数領域に関数への引数とその複製とを同時に記憶すると共に、前記ローカル変数領域にローカル変数とそのハッシュ値(crc)とを記憶して、前記ローカル変数の計算毎に前記ローカル変数の記憶領域に計算結果を、ハッシュ値(crc)の記憶領域に計算結果のハッシュ値(crc)を計算して格納し、前記関数の実行後に前記関数への引数とその複製とを比較すると共に、前記ローカル変数の計算前、計算後に、前記ローカル変数のハッシュ値(crc)を再計算して記憶されたハッシュ値(crc)と比較し、それぞれの比較結果のいずれかが異なっていた場合に前記プログラムの実行を中止して、前記スタック領域に記憶したデータに異常があることをユーザに通知することを特徴とするコンピュータメモリにおけるスタック領域のデータの保護方法。 - 前記スタック領域に記憶するデータの複製、または複製データが大きい場合に記憶するハッシュ値(crc)は、ビット反転させたデータを用いることを特徴とする請求項1乃至9のいずれかに記載したコンピュータメモリにおけるスタック領域のデータの保護方法。
- ガスタービンによる発電システムにおける、コンピュータを用いた制御装置の安全制御システムに用いられていることを特徴とする、請求項1乃至10のいずれかに記載したコンピュータメモリにおけるスタック領域のデータの保護方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009040086A JP5039728B2 (ja) | 2009-02-24 | 2009-02-24 | コンピュータメモリにおけるスタック領域のデータの保護方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009040086A JP5039728B2 (ja) | 2009-02-24 | 2009-02-24 | コンピュータメモリにおけるスタック領域のデータの保護方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010198147A JP2010198147A (ja) | 2010-09-09 |
JP5039728B2 true JP5039728B2 (ja) | 2012-10-03 |
Family
ID=42822841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009040086A Active JP5039728B2 (ja) | 2009-02-24 | 2009-02-24 | コンピュータメモリにおけるスタック領域のデータの保護方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5039728B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101995285B1 (ko) * | 2018-10-31 | 2019-07-02 | 한국인터넷진흥원 | 취약점이 존재하는 바이너리 패치 방법 및 그 장치 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5824849B2 (ja) * | 2011-04-22 | 2015-12-02 | ソニー株式会社 | 情報処理装置および情報処理方法 |
JP2017123119A (ja) * | 2016-01-08 | 2017-07-13 | 株式会社デンソー | 電子制御装置 |
JP6798157B2 (ja) * | 2016-06-24 | 2020-12-09 | 大日本印刷株式会社 | 電子情報記憶媒体、異常検知方法、及び異常検知プログラム |
JP6905190B2 (ja) | 2017-09-01 | 2021-07-21 | 富士通株式会社 | 情報処理装置およびスタック破壊検出プログラム |
CN110874279B (zh) * | 2018-08-29 | 2023-05-30 | 阿里巴巴集团控股有限公司 | 故障定位方法、装置和系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08249206A (ja) * | 1995-03-13 | 1996-09-27 | Toshiba Corp | スタック領域破壊検出機能付き計算機 |
JP3552627B2 (ja) * | 2000-02-04 | 2004-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 |
JP4374476B2 (ja) * | 2004-05-24 | 2009-12-02 | 独立行政法人科学技術振興機構 | キャッシュ・メモリ及びその制御方法 |
US7424647B2 (en) * | 2004-07-19 | 2008-09-09 | General Electric Company | Emission-monitoring system and method for transferring data |
JP2006185233A (ja) * | 2004-12-28 | 2006-07-13 | Hitachi Ltd | セキュリティ向上のためのプログラム変換方法及びこれを用いたコンパイラプログラム |
JP2009009537A (ja) * | 2006-09-11 | 2009-01-15 | Renesas Technology Corp | プログラム作成方法及び情報処理装置ならびにマイコン |
JP2008158591A (ja) * | 2006-12-20 | 2008-07-10 | Denso Corp | 情報処理装置及び制御プログラム |
-
2009
- 2009-02-24 JP JP2009040086A patent/JP5039728B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101995285B1 (ko) * | 2018-10-31 | 2019-07-02 | 한국인터넷진흥원 | 취약점이 존재하는 바이너리 패치 방법 및 그 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP2010198147A (ja) | 2010-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5039728B2 (ja) | コンピュータメモリにおけるスタック領域のデータの保護方法 | |
EP3207485B1 (en) | Code pointer authentication for hardware flow control | |
EP2294526B1 (en) | A method for secure data reading and a data handling system | |
JP3552627B2 (ja) | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 | |
US8332635B2 (en) | Updateable secure kernel extensions | |
US7886162B2 (en) | Cryptographic secure program overlays | |
US9390264B2 (en) | Hardware-based stack control information protection | |
US8422674B2 (en) | Application-specific secret generation | |
US20040003321A1 (en) | Initialization of protected system | |
US8433927B2 (en) | Cryptographically-enabled privileged mode execution | |
JP2007304954A (ja) | メモリ保護機能を有するコンピュータシステム | |
CN1926518A (zh) | 运行时间安全保证的自动存储器检测器及其方法 | |
KR20130033416A (ko) | 메모리의 세그먼트들을 보호하기 위한 방법 및 장치 | |
Jackson et al. | On the effectiveness of multi-variant program execution for vulnerability detection and prevention | |
US20080133858A1 (en) | Secure Bit | |
TWI808261B (zh) | 使用轉換禁用指示符的設備、資料處理方法、電腦程式和電腦可讀取存儲媒體 | |
CN109409086B (zh) | 基于新增指令的检测堆栈中返回地址被篡改的装置 | |
WO2020057603A1 (zh) | 检测堆栈中返回地址被篡改的方法及装置 | |
CN106874796B (zh) | 系统运行中指令流的安全检测和容错方法 | |
CN115964758A (zh) | 一种基于TrustZone的内核数据完整性保护方法 | |
EP3649553B1 (en) | Data protection | |
KR101986028B1 (ko) | 코드 포인터 보수를 사용하여 프로세싱 흐름에 대한 공격에 대해 장치를 보호하기 위한 시스템 및 방법 | |
JP2011048851A (ja) | ソフトウェアの改竄検出装置及び改竄検出方法 | |
JP2006106956A (ja) | ソフトウェアの改竄検出装置及び改竄検出方法 | |
TW202343291A (zh) | 防止抗重放攻擊之方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110107 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110107 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120314 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120427 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120606 |
|
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: 20120622 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120709 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150713 Year of fee payment: 3 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5039728 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150713 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |