JP6899614B2 - ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス - Google Patents
ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス Download PDFInfo
- Publication number
- JP6899614B2 JP6899614B2 JP2018534638A JP2018534638A JP6899614B2 JP 6899614 B2 JP6899614 B2 JP 6899614B2 JP 2018534638 A JP2018534638 A JP 2018534638A JP 2018534638 A JP2018534638 A JP 2018534638A JP 6899614 B2 JP6899614 B2 JP 6899614B2
- Authority
- JP
- Japan
- Prior art keywords
- stack
- guard word
- guard
- routine
- word
- 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
- 238000000034 method Methods 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 34
- 238000004590 computer program Methods 0.000 claims description 28
- 239000013598 vector Substances 0.000 claims description 18
- 230000006870 function Effects 0.000 description 35
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000001681 protective effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000005303 weighing Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
Description
1つ又は複数の態様に関連するコンピュータ実装方法及びシステムも、本明細書で説明され、特許請求される。さらに、1つ又は複数の態様に関連するサービスも、本明細書で説明され、特許請求され得る。
1つ又は複数の態様が、本明細書の最後にある特許請求の範囲において、例として具体的に示され、明確に特許請求されている。上記及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
60:ハードウェア及びソフトウェア層
70:仮想化層
80:管理層
90:ワークロード層
100、200:コンピューティング環境
102:コンピュータ・システム/サーバ
106:プロセッサ
108、204:メモリ
110、208:バス
150:ネットワーク・アダプタ
160:スタック破損検出論理
202:ネイティブ中央演算処理ユニット
212:エミュレータ・コード
300:スタック
302a、302b、400、420:スタックフレーム
304、402:スタック・ポインタ
306:パラメータ領域
308:ローカル及びスピル変数領域
310:バッファ
312:レジスタ保存領域
314、406:リターンアドレス
404:ガードワード
600:Store Guard Word命令
602:アドレス
700:ガードワード・レジスタ
800:POPCHECK命令
Claims (20)
- コンピューティング環境のスタックの破損を検出するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、処理回路に対し、
呼び出し側ルーチンに随伴し、リターンアドレスを保護するためのガードワード保護の使用をサポートすることを示すインジケータを提供することと、
ガードワード保護の使用をサポートしていると前記インジケータが示すことに基づいて、前記呼び出し側ルーチンによる呼び出されたルーチンの呼び出しに際して、ハードウェア命令により、ガードワードを前記呼び出し側ルーチンのスタックに格納することであって、前記ガードワードは、前記スタックに格納されるリターンアドレスを保護するためのものである、前記格納することと、
前記呼び出し側ルーチンがガードワード保護の使用をサポートしていると前記インジケータが示すことに基づいて、前記コンピューティング環境のプロセッサ上で実行される前記呼び出されたルーチンにおいて、前記呼び出し側ルーチンのスタックに格納されたガードワードをチェックすることと、
前記チェックに基づいて、前記ガードワードが予想される値を有するかどうかを判断することと、
前記ガードワードが予想しない値を有すると判断することに基づいて、前記スタックの
破損の表示を提供することと、
を実行させる、コンピュータ・プログラム。 - 前記チェック及び判断は、前記呼び出されたルーチンにより発行される命令を介して実行される、請求項1に記載のコンピュータ・プログラム。
- 前記コンピュータ・プログラムを実行することにより前記処理回路が実現する方法は、
前記スタックから前記ガードワードを取得することと、
前記ガードワードがもはや前記スタック上において見えないように、前記スタックのスタック・ポインタを移動させることと、
前記判断、前記チェック、及び前記表示を提供することの1つ又は複数を実行することと、
を含む、請求項2に記載のコンピュータ・プログラム。 - 前記方法は、
前記リターンアドレスを保護するために、前記呼び出し側ルーチンが前記ガードワードの使用をサポートするかどうかを判断することと、
前記呼び出し側ルーチンが前記ガードワードの使用をサポートすることに基づいて、前記取得すること、前記移動させること、及び前記実行することを実行することと、
をさらに含む、請求項3に記載のコンピュータ・プログラム。 - 前記コンピュータ・プログラムは、前記ガードワードについてのアドレスを指定するstore guard word命令を用いて、前記ガードワードを提供することを実行させる、請求項1に記載のコンピュータ・プログラム。
- 前記コンピュータ・プログラムを実行することにより前記処理回路が実現する方法は、
ガードワード命令を用いて前記ガードワードを提供することと、
前記リターンアドレスを保護するために、前記呼び出し側ルーチンが前記ガードワードの使用をサポートすることを示すようにインジケータを設定することと、
をさらに含む、請求項1に記載のコンピュータ・プログラム。 - 前記コンピュータ・プログラムを実行することにより前記処理回路が実現する方法は、
前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートするかどうかを判断することと、
前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートすると判断することに基づいて、前記チェック、前記判断、及び前記表示を提供することの1つ又は複数を実行することと、
をさらに含む、請求項1に記載のコンピュータ・プログラム。 - 前記コンピュータ・プログラムを実行することにより前記処理回路が実現する方法は、
前記呼び出し側ルーチン及び前記呼び出されたルーチンの少なくとも1つのルーチンが、前記リターンアドレスを保護するための前記ガードワードの使用をサポートしないと判断することに基づいて、前記チェックすることと、前記判断をすることと、前記表示を提供することのいずれも行わないことをさらに含む、請求項7に記載のコンピュータ・プログラム。 - 前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートするかどうかを判断することは、少なくとも1つのインジケータをチェックすることを含む、請求項7に記載のコンピュータ・プログラム。
- 前記少なくとも1つのインジケータは、前記インジケータのベクトル内に格納される、請求項9に記載のコンピュータ・プログラム。
- コンピューティング環境のスタックの破損を検出するためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリと通信するプロセッサと、
を含み、前記コンピュータ・システムは、
呼び出し側ルーチンに随伴し、リターンアドレスを保護するためのガードワード保護の使用をサポートすることを示すインジケータを提供することと、
ガードワード保護の使用をサポートしていると前記インジケータが示すことに基づいて、前記呼び出し側ルーチンによる呼び出されたルーチンの呼び出しに際して、ハードウェア命令により、ガードワードを前記呼び出し側ルーチンのスタックに格納することであって、前記ガードワードは、前記スタックに格納されるリターンアドレスを保護するためのものである、前記格納することと、
前記呼び出し側ルーチンがガードワード保護の使用をサポートしていると前記インジケータが示すことに基づいて、前記コンピューティング環境のプロセッサ上で実行される前記呼び出されたルーチンにおいて、前記呼び出し側ルーチンのスタックに格納されたガードワードをチェックすることと、
前記チェックに基づいて、前記ガードワードが予想される値を有するかどうかを判断することと、
前記ガードワードが予想しない値を有すると判断することに基づいて、前記スタックの
破損の表示を提供することと、
を実行する、コンピュータ・システム。 - 前記チェック及び判断は、前記呼び出されたルーチンにより発行される命令を介して実行され、
前記スタックから前記ガードワードを取得することと、
前記ガードワードがもはや前記スタック上において見えないように、前記スタックのスタック・ポインタを移動させることと、
前記判断、前記チェック、及び前記表示を提供することの1つ又は複数を実行することと、
を実行する、請求項11に記載のコンピュータ・システム。 - 前記ガードワードについてのアドレスを指定するガードワード命令を用いて、前記ガードワードを提供する、請求項11に記載のコンピュータ・システム。
- 前記コンピュータ・システムが実現する方法は、
ガードワード命令を用いて前記ガードワードを提供することと、
前記リターンアドレスを保護するために、前記呼び出し側ルーチンが前記ガードワードの使用をサポートすることを示すようにインジケータを設定することと、
を含む、請求項11に記載のコンピュータ・システム。 - 前記コンピュータ・システムが実現する方法は、
前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートするかどうかを判断することと、
前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートすると判断することに基づいて、前記チェック、前記判断、及び前記表示を提供することの1つ又は複数を実行することと、
を含む、請求項11に記載のコンピュータ・システム。 - コンピューティング環境のスタックの破損を検出するコンピュータ実施方法であって、前記コンピュータ実施方法は、コンピュータに対し、
呼び出し側ルーチンに随伴し、リターンアドレスを保護するためのガードワード保護の使用をサポートすることを示すインジケータを提供することと、
ガードワード保護の使用をサポートしていると前記インジケータが示すことに基づいて、前記呼び出し側ルーチンによる呼び出されたルーチンの呼び出しに際して、ハードウェア命令により、ガードワードを前記呼び出し側ルーチンのスタックに格納することであって、前記ガードワードは、前記スタックに格納されるリターンアドレスを保護するためのものである、前記格納することと、
前記呼び出し側ルーチンがガードワード保護の使用をサポートしていると前記インジケータが示すことに基づいて、前記コンピューティング環境のプロセッサ上で実行される前記呼び出されたルーチンにおいて、前記呼び出し側ルーチンのスタックに格納されたガードワードをチェックすることと、
前記チェックに基づいて、前記ガードワードが予想される値を有するかどうかを判断することと、
前記ガードワードが予想しない値を有すると判断することに基づいて、前記スタックの
破損の表示を提供することと、
を実行させる、コンピュータ実施方法。 - 前記チェック及び判断は、前記呼び出されたルーチンにより発行される命令を介して実行され、
前記スタックから前記ガードワードを取得することと、
前記ガードワードがもはや前記スタック上において見えないように、前記スタックのスタック・ポインタを移動させることと、
前記判断、前記チェック、及び前記表示を提供することの1つ又は複数を実行することと、
を含む、請求項16に記載のコンピュータ実施方法。 - 前記ガードワードについてのアドレスを指定するstore guard word命令を用いて、前記ガードワードを提供する、請求項16に記載のコンピュータ実施方法。
- ガードワード命令を用いて前記ガードワードを提供することと、
前記リターンアドレスを保護するために、前記呼び出し側ルーチンが前記ガードワードの使用をサポートすることを示すようにインジケータを設定することと、
をさらに含む、請求項16に記載のコンピュータ実施方法。 - 前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートするかどうかを判断することと、
前記リターンアドレスを保護するために、前記呼び出し側ルーチン及び前記呼び出されたルーチンが前記ガードワードの使用をサポートすると判断することに基づいて、前記チェック、前記判断、及び前記表示を提供することの1つ又は複数を実行することと、
をさらに含む、請求項16に記載のコンピュータ実施方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/989,397 US9606855B1 (en) | 2016-01-06 | 2016-01-06 | Caller protected stack return address in a hardware managed stack architecture |
US14/989,397 | 2016-01-06 | ||
PCT/IB2016/057979 WO2017118893A1 (en) | 2016-01-06 | 2016-12-23 | Caller protected stack return address in hardware managed stack architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019506666A JP2019506666A (ja) | 2019-03-07 |
JP6899614B2 true JP6899614B2 (ja) | 2021-07-07 |
Family
ID=58359626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018534638A Active JP6899614B2 (ja) | 2016-01-06 | 2016-12-23 | ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス |
Country Status (6)
Country | Link |
---|---|
US (3) | US9606855B1 (ja) |
JP (1) | JP6899614B2 (ja) |
CN (1) | CN108475223B (ja) |
DE (1) | DE112016005571T5 (ja) |
GB (1) | GB2562666B (ja) |
WO (1) | WO2017118893A1 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9514301B1 (en) | 2016-01-06 | 2016-12-06 | International Business Machines Corporation | Interlinking modules with differing protections using stack indicators |
US9582274B1 (en) | 2016-01-06 | 2017-02-28 | International Business Machines Corporation | Architected store and verify guard word instructions |
US10228992B2 (en) | 2016-01-06 | 2019-03-12 | International Business Machines Corporation | Providing instructions to facilitate detection of corrupt stacks |
US9576128B1 (en) | 2016-01-06 | 2017-02-21 | International Business Machines Corporation | Interlinking routines with differing protections using stack indicators |
US10120745B2 (en) | 2016-01-06 | 2018-11-06 | International Business Machines Corporation | Providing instructions to protect stack return addresses in a hardware managed stack architecture |
US9606855B1 (en) | 2016-01-06 | 2017-03-28 | International Business Machines Corporation | Caller protected stack return address in a hardware managed stack architecture |
KR101716865B1 (ko) * | 2016-04-29 | 2017-03-15 | 고려대학교 산학협력단 | 주 메모리의 에러 셀 회피를 위한 스택 및 힙 메모리 관리 장치 및 그 방법 |
US10360373B2 (en) * | 2016-09-28 | 2019-07-23 | Intel Corporation | Return address encryption |
US20220138311A1 (en) * | 2018-01-08 | 2022-05-05 | Digital Immunity Llc | Systems and methods for detecting and mitigating code injection attacks |
WO2019136428A1 (en) * | 2018-01-08 | 2019-07-11 | Digital Immunity Llc | Systems and methods for detecting and mitigating code injection attacks |
US10613864B2 (en) * | 2018-03-16 | 2020-04-07 | Texas Instruments Incorporated | Processor with hardware supported memory buffer overflow detection |
US11403430B2 (en) * | 2019-06-11 | 2022-08-02 | At&T Intellectual Property I, L.P. | Secure CPU architecture using encryption of return addresses |
GB2618116A (en) * | 2022-04-28 | 2023-11-01 | Advanced Risc Mach Ltd | Exception return state lock parameter |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7380245B1 (en) | 1998-11-23 | 2008-05-27 | Samsung Electronics Co., Ltd. | Technique for detecting corruption associated with a stack in a storage device |
US6301699B1 (en) | 1999-03-18 | 2001-10-09 | Corekt Security Systems, Inc. | Method for detecting buffer overflow for computer security |
JP3552627B2 (ja) * | 2000-02-04 | 2004-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 |
US6912653B2 (en) | 2001-01-23 | 2005-06-28 | Erika Monika Gohl | Authenticating communications |
US20020144141A1 (en) | 2001-03-31 | 2002-10-03 | Edwards James W. | Countering buffer overrun security vulnerabilities in a CPU |
US6996677B2 (en) | 2002-11-25 | 2006-02-07 | Nortel Networks Limited | Method and apparatus for protecting memory stacks |
US7594111B2 (en) | 2002-12-19 | 2009-09-22 | Massachusetts Institute Of Technology | Secure execution of a computer program |
WO2004077294A1 (ja) | 2003-02-26 | 2004-09-10 | Secure Ware Inc. | 不正処理判定方法、データ処理装置、コンピュータプログラム、及び記録媒体 |
US7546587B2 (en) * | 2004-03-01 | 2009-06-09 | Microsoft Corporation | Run-time call stack verification |
US7272748B1 (en) | 2004-03-17 | 2007-09-18 | Symantec Corporation | Method and apparatus to detect and recover from a stack frame corruption |
KR100586500B1 (ko) | 2004-03-18 | 2006-06-07 | 학교법인고려중앙학원 | 버퍼 오버플로우 공격들을 감지하고 복구하는 방법 및 그장치 |
CN1294468C (zh) * | 2004-04-09 | 2007-01-10 | 南京大学 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
WO2006016407A1 (ja) | 2004-08-12 | 2006-02-16 | Fujitsu Limited | Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 |
US7467272B2 (en) | 2004-12-16 | 2008-12-16 | International Business Machines Corporation | Write protection of subroutine return addresses |
US7613954B2 (en) | 2004-12-21 | 2009-11-03 | National Instruments Corporation | Test executive with stack corruption detection |
US7631249B2 (en) | 2005-10-14 | 2009-12-08 | Microsoft Corporation | Dynamically determining a buffer-stack overrun |
KR20070056862A (ko) | 2005-11-30 | 2007-06-04 | 삼성전자주식회사 | 시스템 프로그램의 동적 메모리 할당을 위한 메모리 구조및 메모리 훼손 검출방법 |
US7581089B1 (en) * | 2006-04-20 | 2009-08-25 | The United States Of America As Represented By The Director Of The National Security Agency | Method of protecting a computer stack |
US8104021B2 (en) | 2006-06-09 | 2012-01-24 | Microsoft Corporation | Verifiable integrity guarantees for machine code programs |
US20080140884A1 (en) | 2006-10-09 | 2008-06-12 | Board Of Trustees Of Michigan State University | Canary bit |
US8806439B1 (en) | 2007-04-30 | 2014-08-12 | AT & T Intellectual Property II, LP | System and method for program stack security |
US8099636B2 (en) | 2008-07-15 | 2012-01-17 | Caterpillar Inc. | System and method for protecting memory stacks using a debug unit |
US8245002B2 (en) | 2008-10-08 | 2012-08-14 | International Business Machines Corporation | Call stack protection |
US8412953B2 (en) | 2009-08-28 | 2013-04-02 | Apple Inc | System and method for annotation driven integrity verification |
US8458487B1 (en) | 2010-03-03 | 2013-06-04 | Liaison Technologies, Inc. | System and methods for format preserving tokenization of sensitive information |
US8806640B2 (en) | 2010-10-22 | 2014-08-12 | George Mason Intellectual Properties, Inc. | Program execution integrity verification for a computer system |
US9934166B2 (en) | 2010-12-10 | 2018-04-03 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
US8499354B1 (en) | 2011-03-15 | 2013-07-30 | Symantec Corporation | Preventing malware from abusing application data |
FR2977694A1 (fr) * | 2011-07-08 | 2013-01-11 | St Microelectronics Rousset | Microprocesseur protege contre un debordement de pile |
US8850408B2 (en) | 2011-08-10 | 2014-09-30 | Nintendo Of America, Inc. | Methods and/or systems for determining a series of return callstacks |
CN102298677A (zh) * | 2011-08-29 | 2011-12-28 | 瑞斯康达科技发展股份有限公司 | 一种堆栈溢出的保护方法和装置 |
CN103294517B (zh) * | 2012-02-22 | 2018-05-11 | 国际商业机器公司 | 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置 |
WO2013160724A1 (en) | 2012-04-23 | 2013-10-31 | Freescale Semiconductor, Inc. | Data processing system and method for operating a data processing system |
US9026866B2 (en) | 2012-04-23 | 2015-05-05 | Infineon Technologies Ag | Method and system for realtime detection of stack frame corruption during nested procedure calls |
US9177147B2 (en) * | 2012-09-28 | 2015-11-03 | Intel Corporation | Protection against return oriented programming attacks |
US9092564B2 (en) | 2013-02-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Call stacks for asynchronous programs |
CA2809516C (en) | 2013-03-13 | 2016-11-08 | Khalid Nawaf Alharbi | Preventing stack buffer overflow attacks |
US9569612B2 (en) | 2013-03-14 | 2017-02-14 | Daniel Shawcross Wilkerson | Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality |
US9703622B2 (en) | 2013-06-18 | 2017-07-11 | Nxp Usa, Inc. | Detection of data corruption in a data processing device |
US10445168B2 (en) | 2013-06-18 | 2019-10-15 | Nxp Usa, Inc. | Device and method for executing a program, and method for storing a program |
US9223974B2 (en) * | 2013-07-09 | 2015-12-29 | Globalfoundries Inc. | Anti-viral compiler |
US9411747B2 (en) | 2014-02-04 | 2016-08-09 | Freescale Semiconductor, Inc. | Dynamic subroutine stack protection |
US9361102B2 (en) | 2014-06-09 | 2016-06-07 | Lehigh University | Methods for enforcing control flow of a computer program |
US9977897B2 (en) | 2014-07-16 | 2018-05-22 | Leviathan Security Group, Inc. | System and method for detecting stack pivot programming exploit |
CN104217157B (zh) * | 2014-07-31 | 2017-08-04 | 珠海市君天电子科技有限公司 | 一种漏洞防利用方法及系统 |
US9514285B2 (en) | 2014-09-26 | 2016-12-06 | Intel Corporation | Creating stack position dependent cryptographic return address to mitigate return oriented programming attacks |
US9646154B2 (en) * | 2014-12-12 | 2017-05-09 | Microsoft Technology Licensing, Llc | Return oriented programming (ROP) attack protection |
US9672351B2 (en) * | 2015-02-02 | 2017-06-06 | Qualcomm Incorporated | Authenticated control stacks |
US10120745B2 (en) | 2016-01-06 | 2018-11-06 | International Business Machines Corporation | Providing instructions to protect stack return addresses in a hardware managed stack architecture |
US9514301B1 (en) * | 2016-01-06 | 2016-12-06 | International Business Machines Corporation | Interlinking modules with differing protections using stack indicators |
US9582274B1 (en) | 2016-01-06 | 2017-02-28 | International Business Machines Corporation | Architected store and verify guard word instructions |
US9495237B1 (en) * | 2016-01-06 | 2016-11-15 | International Business Machines Corporation | Detection of corruption of call stacks |
US9606855B1 (en) | 2016-01-06 | 2017-03-28 | International Business Machines Corporation | Caller protected stack return address in a hardware managed stack architecture |
US10228992B2 (en) | 2016-01-06 | 2019-03-12 | International Business Machines Corporation | Providing instructions to facilitate detection of corrupt stacks |
US9576128B1 (en) | 2016-01-06 | 2017-02-21 | International Business Machines Corporation | Interlinking routines with differing protections using stack indicators |
-
2016
- 2016-01-06 US US14/989,397 patent/US9606855B1/en active Active
- 2016-12-23 WO PCT/IB2016/057979 patent/WO2017118893A1/en active Application Filing
- 2016-12-23 JP JP2018534638A patent/JP6899614B2/ja active Active
- 2016-12-23 DE DE112016005571.4T patent/DE112016005571T5/de active Pending
- 2016-12-23 CN CN201680076585.2A patent/CN108475223B/zh active Active
- 2016-12-23 GB GB1812654.0A patent/GB2562666B/en active Active
-
2017
- 2017-02-27 US US15/443,534 patent/US9891919B2/en active Active
- 2017-12-04 US US15/830,095 patent/US10635441B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2017118893A1 (en) | 2017-07-13 |
GB201812654D0 (en) | 2018-09-19 |
US9891919B2 (en) | 2018-02-13 |
GB2562666B (en) | 2021-08-25 |
GB2562666A (en) | 2018-11-21 |
US10635441B2 (en) | 2020-04-28 |
CN108475223B (zh) | 2021-04-20 |
JP2019506666A (ja) | 2019-03-07 |
US20170192836A1 (en) | 2017-07-06 |
US20180088949A1 (en) | 2018-03-29 |
DE112016005571T5 (de) | 2018-08-16 |
US9606855B1 (en) | 2017-03-28 |
CN108475223A (zh) | 2018-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6899614B2 (ja) | ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス | |
US10496462B2 (en) | Providing instructions to facilitate detection of corrupt stacks | |
US10229266B2 (en) | Architected store and verify guard word instructions | |
US9495237B1 (en) | Detection of corruption of call stacks | |
US10248482B2 (en) | Interlinking modules with differing protections using stack indicators | |
US10114971B2 (en) | Interlinking routines with differing protections using stack indicators | |
US11016744B2 (en) | Context information based on type of routine being called | |
US10949221B2 (en) | Executing instructions to store context information based on routine to be executed | |
US10095493B2 (en) | Call sequence generation based on type of routine | |
US10120745B2 (en) | Providing instructions to protect stack return addresses in a hardware managed stack architecture | |
US10140133B2 (en) | Marking external sibling caller routines | |
US20180165091A1 (en) | Marking sibling caller routines | |
CN111033467A (zh) | 同时进行分支地址的预测和寄存器内容的更新 | |
US10180827B2 (en) | Suppressing storing of context information | |
CN110998522A (zh) | 子例程分支序列中的派生值创建和派生值预测的动态融合 | |
CN110998520B (zh) | 代码特定的关联寄存器预测 | |
US12020059B2 (en) | Inaccessible prefix pages during virtual machine execution | |
EP4396676A1 (en) | Inaccessible prefix pages during virtual machine execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190513 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200407 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200617 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200807 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20200807 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20200811 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210427 |
|
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: 20210608 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20210609 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210611 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6899614 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |