JP2023512029A - メモリマップド制御レジスタのセットへのアクセスを制御する装置及び方法 - Google Patents

メモリマップド制御レジスタのセットへのアクセスを制御する装置及び方法 Download PDF

Info

Publication number
JP2023512029A
JP2023512029A JP2022546038A JP2022546038A JP2023512029A JP 2023512029 A JP2023512029 A JP 2023512029A JP 2022546038 A JP2022546038 A JP 2022546038A JP 2022546038 A JP2022546038 A JP 2022546038A JP 2023512029 A JP2023512029 A JP 2023512029A
Authority
JP
Japan
Prior art keywords
lockdown
memory
value
register
control
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
JP2022546038A
Other languages
English (en)
Inventor
クリストファー グロカット、トーマス
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2023512029A publication Critical patent/JP2023512029A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Communication Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

メモリマップド制御レジスタのセットへのアクセスを制御するための技法を記載する。装置は、データ処理動作を行うためにプログラムコードを実行する処理回路と、プログラムコードを実行するときに処理回路の動作を制御するために使用される制御情報を格納するメモリマップド制御レジスタのセットと、を有する。更に、ロックダウンレジスタを使用してロックダウン値が格納される。処理回路は、メモリアドレス空間に書き込み動作を行うためにストア命令を実行するように構成され、これらのストア命令は複数タイプからなる。ただし、ロックダウン値がセットされているときは、処理回路は、メモリマップド制御レジスタ内の制御情報を変更するために書き込み動作が行われることを、その書き込み動作が複数タイプのストア命令の第1のサブセットからのストア命令の実行によって発生したのではない限り、防止するように構成される。これにより、攻撃者がソフトウェア脆弱性を利用してメモリマップド制御レジスタ内の制御情報を変更しようと企てる見込みが著しく低減される。【選択図】図1

Description

本技法は、メモリマップド制御レジスタのセットへのアクセスを制御する装置及び方法に関する。
データ処理装置はプログラムコードを実行する処理回路を有し得、プログラムコードの実行の際に処理回路の動作を制御するために使用される制御情報を格納するために制御レジスタが備わり得る。従来、このような制御レジスタは、処理回路へ直接アクセスすることのできるハードウェアレジスタとして提供されることがあったが、最近は、制御レジスタのうち1つ以上がメモリマップドレジスタとして提供されることが一般的になってきている。したがって、それらの制御レジスタにメモリアドレス空間のある領域が割り当てられると、メモリにアクセスするために使用されるメモリアクセス命令を、該当するメモリマップド制御レジスタに対応するアドレスを指定するように準備することによって、メモリアクセス命令の実行により、それらのメモリマップド制御レジスタにアクセスすることができる。メモリマップド制御レジスタを使用することにより、データ処理装置内の内部ロジックの低減が可能になり、よって、より小さく、より安価で、より効率的なデータ処理装置の生産に役立ち得る。このことはまた、アセンブリコードから専用の命令を使用する必要なく、Cなどの高レベル言語から制御レジスタにアクセスすることができるので、装置のプログラミングが容易になることも意味し得る。
様々なメモリマップド制御レジスタへのアクセスを制御するために、データ処理装置上で実行中のソフトウェアのどの項目がメモリのどの領域にアクセスできるかを制御する周知のメモリアクセス制御メカニズムを使用することができる。ところが、システムで実行中のソフトウェアにバグがある場合、あるメモリマップド制御レジスタの内容を攻撃者が変更し、よってシステムを危険にさらすことが可能になり得る。例えば、特定のメモリマップド制御レジスタは、特定の信頼されるレベルで実行しているソフトウェアによってのみ更新を許可されるが、信頼されるソフトウェア内にバグが存在する場合、信頼されないソフトウェアを実行させている攻撃者が信頼されるソフトウェア内のメモリ書き込みガジェットにアクセスできる可能性があり、よって、信頼されないソフトウェアからアクセス可能であってはならない1つ以上のメモリマップド制御レジスタの内容を更新できる可能性がある。そのような行為によって、システムが著しい危険にさらされることもある。例えば、システムで実行しているソフトウェアの異なる項目間にメモリ保護境界を強制するために使用される制御情報を、メモリマップド制御レジスタのうち1つ以上が提供することがあり、攻撃者がその制御情報を変更することができる場合、システムで実行している他のソフトウェアの機密データへのアクセスの取得を攻撃者に許すことになり、システムのセキュリティが著しく危険にさらされることがある。
したがって、信頼されるソフトウェアに制御レジスタの内容の更新を許可しながら、攻撃者がそのような攻撃を行える可能性を低減することが望ましいであろう。
1つの構成例では装置が提供され、この装置は、データ処理動作を行うためにプログラムコードを実行する処理回路と、プログラムコードを実行するときに処理回路の動作を制御するために使用される制御情報を格納するメモリマップド制御レジスタのセットと、ロックダウン値を格納するロックダウンレジスタと、を含み、処理回路はメモリアドレス空間に書き込み動作を行うためにストア命令を実行するように構成され、ストア命令は複数タイプからなり、処理回路は、ロックダウン値がセットされているときには、メモリマップド制御レジスタ内の制御情報を変更するために書き込み動作が行われることを、その書き込み動作が複数タイプのストア命令の第1のサブセットからのストア命令の実行によって発生したのではない限り、防止するように構成されている。
別の構成例では、装置内のメモリマップド制御レジスタのセットへのアクセスを制御する方法が提供され、この方法は、データ処理動作を行うために処理回路でプログラムコードを実行することと、メモリマップド制御レジスタのセット内に、プログラムコードを実行するときに処理回路の動作を制御するために使用される制御情報を格納することと、ロックダウンレジスタ内にロックダウン値を格納することと、メモリアドレス空間に書き込み動作を行うために処理回路でストア命令を実行することであって、ストア命令が複数タイプからなることと、ロックダウン値がセットされているときには、メモリマップド制御レジスタ内の制御情報を変更するために書き込み動作が行われることを、その書き込み動作が複数タイプのストア命令の第1のサブセットからのストア命令の処理回路による実行によって発生したのではない限り、防止することと、を含む。
更に別の構成例では、命令実行環境を提供するためにホストデータ処理装置を制御するコンピュータプログラムが提供され、このプログラムは、プログラムコードを実行してデータ処理動作を行う処理プログラムロジックと、プログラムコードを実行するときに処理プログラムロジックの動作を制御するために使用される制御情報を格納するメモリマップド制御データ構造のセットを維持し、またロックダウン値を格納するロックダウンデータ構造を維持する制御プログラムロジックとを含み、処理プログラムロジックはメモリアドレス空間に書き込み動作を行うためにストア命令を実行するように構成され、ストア命令は複数タイプからなり、処理プログラムロジックは、ロックダウン値がセットされているときには、メモリマップド制御データ構造内の制御情報を変更するために書き込み動作が行われることを、その書き込み動作が複数タイプのストア命令の第1のサブセットからのストア命令の実行によって発生したのではない限り、防止するように構成されている。そのようなコンピュータプログラムを格納するためにコンピュータ可読媒体が提供されてもよく、コンピュータ可読媒体は、非一時的又は一時的な形態であってもよい。
本技法について、添付の図面に示す本技法の例を参照して、例示としてのみ更に説明する。
1つの構成例による、データ処理システムの例を概略的に示す図である。 1つの構成例による、メモリアドレス空間の一部分がメモリマップド制御レジスタのためにどのように予約され得るかを概略的に示す図である。 1つの構成例による、図1の処理回路の動作の異なるドメイン及びモードの例を示す図である。 1つの構成例による、メモリマップド制御レジスタに格納された制御情報を使用して、図1の処理回路上で実行するソフトウェアの様々な項目間にどのようにアクセス境界が強制され得るかを示す図である。 1つの構成例による、ストア命令を実行するときに行われるステップを示すフロー図である。 1つの構成例による、メモリマップド制御レジスタのうち1つとしてロックダウンレジスタが提供される状況で、図1のロックダウンレジスタ内のロックダウン値を更新するために行われ得るステップを示すフロー図である。 1つの構成例による、メモリマップド制御レジスタへのバルクアクセスがどのように行われ得るかを示す図である。 1つの構成例による、複数の異なるセキュリティドメインのためにロックダウンレジスタがどのように区分けされ得るかを示す図である。 1つの構成例による、例外の間にロックダウン値がどのように処理され得るかを示す図である。 図8Bは、例外の発生時に、1つの実装例において行われるロックダウン値管理プロセスを示すフロー図である。 使用され得るシミュレータ例を示す図である。 発明を実施するための形態
1つの実装例によれば、装置が、データ処理動作を行うためにプログラムコードを実行する処理回路と、プログラムコードを実行するときに処理回路の動作を制御するために使用される制御情報を格納するメモリマップド制御レジスタのセットと、を備えて提供される。前述したように、そのようなメモリマップド制御レジスタの内容はメモリアクセス命令を使用して更新できるようになっていることが望ましいが、攻撃者が、信頼されるソフトウェア内のメモリ書き込みガジェットを用いてメモリマップド制御レジスタのうち1つ以上の内容を変更するために、装置上で実行中のソフトウェアのバグを利用し、前述したようにシステムのセキュリティが著しく危険にさらされる可能性を低減することも望ましいであろう。
そのような攻撃のリスクを軽減するために、ロックダウン値を格納するために使用されるロックダウンレジスタが装置に備わっていてもよい。処理回路は、メモリアドレス空間に書き込み動作を行うためにストア命令を実行するように構成され、これらのストア命令は複数タイプからなる。ロックダウン値がセットされているときは、処理回路は、メモリマップド制御レジスタ内の制御情報を変更するために書き込み動作が行われることを、その書き込み動作が複数タイプのストア命令の第1のサブセットからのストア命令の実行によって発生したのではない限り、防止するように構成される。したがって、ロックダウン値がセットされているときは、メモリマップド制御レジスタ内の制御情報を変更するためには、第1のサブセット内のストア命令のみを使用することができる。これにより、メモリマップド制御レジスタ内の制御情報を変更するために使用され得るメモリ書き込みガジェットを攻撃者が利用する可能性が大幅に低減される。その理由は、ロックダウン値がセットされているときは、この目的を達成するために、第1のサブセット内にないストア命令を使用するどのようなメモリ書き込みガジェットも使用できないからである。
ロックダウン値のセット状態を示すために使用される実際の値は、実装によって多様であってもよいことが理解される。1つの特定の実装例では、ロックダウン値は「1」の値を有するときはセットされており、ゼロの値を有するときはクリアであるが、代替的に、ロックダウン値は、ゼロの値を有するときはセットされており、「1」値を有するときはクリアであると見なされてもよいことが理解される。
ロックダウン値をセットすることにより、追跡者が信頼されるコード内のソフトウェア脆弱性を利用してメモリマップド制御レジスタを更新しようとする可能性を著しく低減できる一方で、ロックダウン値をクリアできるようにすることによって、後方互換性を提供できる。具体的には、ロックダウン値がクリアであるときは、処理回路は、複数タイプのストア命令の第1のサブセットに加えて第2のサブセットを使用して書き込み動作を行いメモリマップド制御レジスタ内の制御情報を変更することを許可してもよく、ここで、第2のサブセットは第1のサブセットと重複しない。
1つの実装例では、第1のサブセット及び第2のサブセットは集合的に、使用され得る異なるタイプのストア命令の全てを特定してもよい。ただし、代替の実装では、第1のサブセット又は第2のサブセットの中になく、したがって、ロックダウン値がセットされているかクリアであるかに関わらず、メモリマップド制御レジスタ内の制御情報を更新するために使用できない1つ以上のストア命令のタイプが存在してもよい。
ロックダウン値がセットされているときは、処理回路は、複数タイプのストア命令の第2のサブセット内のストア命令を使用したメモリマップド制御レジスタへの一切の書き込みを防止する。いくつかの実装では、処理回路は、第2のサブセットからのストア命令がメモリマップド制御レジスタのセットへの書き込み動作を行おうとすると、フォルト例外を発行するように更に構成されてもよい。
また、メモリマップド制御レジスタの内容を読み出すために使用されるロード命令に関連しても、類似の技法が使用されてもよい。したがって、例えば処理回路は、ロックダウン値がセットされているときは、メモリマップド制御レジスタ内の制御情報の読み出しを、その読み出しが複数タイプのロード命令の第1のサブセットからのロード命令によって発生した場合にのみ許可するように、また、メモリマップド制御レジスタ内の制御情報の読み出しを、その読み出しが複数タイプのロード命令のうち第1のサブセットと重複しない第2のサブセットからのロード命令によって発生した場合は防止するように、更に構成されてもよい。
ストア命令の前述の処理と同様に、処理回路は、ロックダウン値がセットされている状況で、第2のサブセットからのロード命令がメモリマップド制御レジスタセットに読み出し動作を行おうとするとフォルト例外を発行するように構成することもできる。
複数タイプのストア命令の第1のサブセットは、多様な形をとることができるが、一実施例では、制御レジスタ固有のストア命令を含む。そこで、処理回路は、制御レジスタ固有のストア命令を実行しているときは、関連する書き込み動作をメモリマップド制御レジスタに行うことを許可するかを決定する際にロックダウン値を無視するように構成される。いくつかの事例では、メモリマップド制御レジスタを更新するために制御レジスタ固有のストア命令の実行が常に許可される場合もあるが、いくつかの実装では、書き込み動作を進める前に、1つ以上の他のアクセスチェックに合格することが必要なこともある。例えば、あるメモリマップド制御レジスタは、特定のレベルの特権で、又は特定のセキュリティドメインで実行されるソフトウェアによってのみアクセス可能であってもよく、したがって、現在実行されている制御レジスタ固有のストア命令を含むソフトウェアが、その制御レジスタ固有のストア命令が目標とする特定のメモリマップド制御レジスタへのアクセスを許可されているか、書き込み動作を進める前にチェックが行われてもよい。
1つの実装例では、処理回路は、制御レジスタ固有のストア命令を実行しているときに、その制御レジスタ固有のストア命令によって特定されたメモリアドレスがメモリマップド制御レジスタのセットに関連するメモリアドレス範囲の外側にある場合に、フォルト例外を発行するように構成される。ソフトウェア開発者がメモリアドレス空間内のメモリマップド制御レジスタに関連していない他の領域にアクセスするために制御レジスタ固有のストア命令を使用すると、攻撃者が利用できる好適なメモリ書き込みガジェットを見つけ出す可能性が高まることがあるため、開発者にそうした使用を思いとどまらせることが望ましく、そのために、このフォルト例外の発行は便利であり得る。対照的に、制御レジスタ固有のストア命令が控えめに使用されるように、具体的には、メモリマップド制御レジスタにアクセスしようとする場合にのみ使用されるようにすることによって、攻撃者に利用され得る書き込み脆弱性が出てくる可能性を大幅に低減することができる。具体的には、攻撃者によって利用され得るメモリ書き込みガジェットが制御レジスタ固有のストア命令の1つ以上のインスタンスを含むことになる可能性は低い。
メモリアドレスが制御レジスタ固有のストア命令によって特定され得るいくつかの仕方がある。1つの実装例では、メモリアドレスは、制御レジスタ固有のストア命令によって指定されたレジスタに格納されている値及び、その制御レジスタ固有のストア命令によって指定された即値に依存して特定される。
したがって、そのような実装では、制御レジスタ固有のストア命令は、アクセス対象のメモリマップド制御レジスタのアドレスを直接的に特定するのではなく、制御レジスタ固有のストア命令の実行によって、その命令に指定されたレジスタ(典型的には汎用レジスタ)の内容及び、その命令に指定された即値に基づいて必要なメモリマップド制御レジスタのアドレスが計算される。例えば、その汎用レジスタは、ベースアドレスとして使用される値を格納してもよく、アクセス対象のメモリマップド制御レジスタのアドレスを特定するために、そのベースアドレスに即値が加算されてもよい。
1つの特定の実装例では、アドレスが計算された後、制御レジスタ固有のストア命令の実行によって、更に、計算されたアドレスが特定された汎用レジスタに書き戻されてもよい。これにより、例えば、別々の命令がその命令の使用するベースアドレス値を変更する必要なく、制御レジスタ固有のストア命令を含むループの複数回の繰り返しが実行されるようにすることができる。
更なる実装例では、様々なサイズのストア動作を行うことのできる、レジスタ固有のストア命令の複数の変種が存在してもよい。例えば、レジスタ固有のストア命令の、32ビットの値をレジスタに格納する変種、16ビットの値をレジスタに格納する変種、及び8ビットの値をレジスタに格納する別の変種が存在してもよい。これらの変種は、大きなレジスタの一部のみを更新する必要がある場合に有用であり得る。
前述の制御レジスタ固有のストア命令に加えて、制御レジスタ固有のロード命令もまた提供されてもよい。したがって、処理回路が制御レジスタ固有のロード命令を実行しているときは、関連する読み出し動作をメモリマップド制御レジスタに行うことを許可するかを決定する際にロックダウン値が無視されてもよい。前述したように、ここでも、読み出しの実施が許可される前に、1つ以上のアクセスチェックに合格することが必要になり得る。更に、制御レジスタ固有のストア命令が処理されるのと同様に、処理回路は、制御レジスタ固有のロード命令を実行しているときに、その制御レジスタ固有のロード命令によって特定されたメモリアドレスがメモリマップド制御レジスタのセットに関連するメモリアドレス範囲の外側にある場合は、フォルト例外を発行するように構成されてもよい。レジスタ固有のストア命令と同様に、レジスタ固有のロード命令は、アクセス対象のメモリマップド制御レジスタのアドレスを直接的に特定するのではなく、制御レジスタ固有のロード命令の実行によって、その命令に指定されたレジスタ(典型的には汎用レジスタ)の内容及び、その命令に指定された即値に基づいて必要なメモリマップド制御レジスタのアドレスが計算されてもよい。同様に、様々なサイズのロード動作を行う、レジスタ固有のロード命令の変種が存在してもよい。
1つの実装例では、ロックダウンレジスタは、処理回路に直接アクセス可能なハードウェアレジスタであってもよい。ただし、代替の実装では、ロックダウンレジスタは、メモリマップド制御レジスタのセット内に提供されてもよい。これにより、ロックダウン値が変更されるときに使用される同期バリアの必要を回避し得るため、メモリマップド制御レジスタへのアクセスの処理を簡素化することができる。具体的には、メモリマップド制御レジスタのために予約されたメモリアドレス領域は、デバイスメモリに類似すると考えることができ、その結果、そのアドレス領域に関して実行されるストア命令をリオーダすることはできず、順次行う必要がある。したがって、例えば、処理回路によって実行中のコードが、あるメモリマップド制御レジスタの内容を更新するための後続の標準ストア命令の使用を許可するためにロックダウン値をクリアしようとする場合、ロックダウンレジスタがメモリマップド制御レジスタのセット内に提供されているときは、ストア命令が同期バリアの必要なく正しい順序で実行されること、したがって、後続の標準メモリアクセス命令が実行される前にロックダウン値がクリアされることを保証でき、よって、メモリマップド制御レジスタの更新に関して所望の挙動が順守されることになる。
ロックダウンレジスタがメモリマップド制御レジスタのセット内に提供される状況では、処理回路は、ロックダウンレジスタに対応する指定されたメモリアドレスで制御レジスタ固有のストア命令の1つのインスタンスを実行することによってロックダウンレジスタ内のロックダウン値を変更するように構成されてもよい。1つの実装例では、ロックダウン値は、特定の信頼レベルで実行しているソフトウェアによってのみ変更することができ、したがって、その信頼レベルにないソフトウェアが制御レジスタ固有のストア命令を使用してロックダウンレジスタを更新しようとすると、その更新は失敗する。
メモリマップド制御レジスタの内容に対する更新はその都度、制御レジスタ固有のストア命令の1つのインスタンスによって実施することもできるが、いくつかの事例では、複数のメモリマップド制御レジスタへのバルク変更を標準ストア命令を使用して行えるようにすることが望ましいこともある。例えば、標準ストア命令は、メモリアドレスの1つの範囲にわたってデータを更新するための効率的な機構を提供するストアマルチプル命令を含むこともあり、よって、単一のストアマルチプル命令の実行に応答して複数のメモリマップド制御レジスタを更新できるようになっていることもある。1つの実装例では、制御レジスタ固有のストア命令のストアマルチプル変種を提供するのではなく、標準ストア命令がメモリマップド制御レジスタへの要求された更新を行えるようにするために、ロックダウン値を一時的にクリアすることができる。
具体的には、処理回路は、制御レジスタ固有のストア命令を実行してロックダウン値をクリアし、1つ以上の標準アクセス命令を実行してメモリマップド制御レジスタにアクセスし、次いでストア命令を実行してロックダウン値をセットすることによってメモリマップド制御レジスタへの一連のアクセスを行うように、ソフトウェアによって制御可能であってもよい。
1つの実装例では、ロックダウン値をクリアするためには制御レジスタ固有のストア命令のみが使用可能だが、どのタイプのストア命令でもロックダウン値をセットすることが可能な場合があり、よって、標準アクセス命令を使用してメモリマップド制御レジスタにアクセスした後に、標準ストア命令を使用してロックダウン値を再びセットできるようになっていてもよい。
メモリマップド制御レジスタに格納された制御情報は、多様な形をとることができるが、1つの実装例では、信頼されるプログラムコード及び信頼されないプログラムコードがメモリアドレス空間のどの領域にアクセスできるかを制御するために使用される制御情報を少なくとも含む。
1つの実装例では、処理回路は、信頼されるプログラムコードにロックダウンストレージ内のロックダウン値の更新を許可するように構成され、かつ、信頼されないプログラムコードと信頼されるプログラムコードの両方によるメモリマップド制御レジスタへの書き込み動作の遂行をロックダウン値を使用して制御するように構成される。したがって、そのような実装では、ロックダウン値を更新する信頼されるプログラムコードが、より低いレベルの特権又はより低いセキュリティ状態のソフトウェアによるメモリマップド制御レジスタへのアクセスを制限するために使用されるだけではなく、信頼されるプログラムコードによってセットされたロックダウン値そのものが、信頼されるプログラムコードがメモリマップド制御レジスタにどのようにアクセスすることができるかに影響を及ぼすことに留意されたい。
他の実施例では、処理回路は、信頼されるプログラムコードにロックダウンストレージ内のロックダウン値の更新を許可するように構成され、かつ、信頼されるプログラムコードによるメモリマップド制御レジスタへの書き込み動作の遂行をロックダウン値を使用して制御しながら、信頼されないプログラムコードによるメモリマップド制御レジスタへの書き込み動作の遂行を、ロックダウン値の状態とは無関係に制御するように構成される。したがって、ロックダウン値は、より低いレベルの特権又はより低いセキュリティ状態のソフトウェアによるメモリマップド制御レジスタへのアクセスを制限するためにだけ使用されるのではないことにも留意されたい。そのような構成は、信頼されないプログラムコードがクリティカルなレジスタにアクセスすることを他のアクセスチェックが防止し、また、信頼されるプログラムコードからはアクセス可能なクリティカルなレジスタへのアクセスをロックしながらも、信頼されないプログラムコードからアクセス可能にしておくことが望ましい非クリティカルなレジスタが存在する状況で有用であり得る。
信頼されるプログラムコード及び信頼されないプログラムコードは、多様な形をとることができる。1つの実装例では、処理回路は、少なくとも特権状態及び非特権状態を含む複数の状態のうち1つでプログラムコードを実行するように構成され、信頼されるプログラムコードは特権状態にある処理回路によって実行されるプログラムコードであり、信頼されないプログラムコードは非特権状態にある処理回路によって実行されるプログラムコードである。
あるいは、又は加えて、処理回路は、少なくともセキュアドメイン及び低セキュアドメインを含む複数のセキュリティドメインのうち1つでプログラムコードを実行するように構成されてもよく、信頼されるプログラムコードはセキュアドメインにある処理回路によって実行されるプログラムコードであり、信頼されないプログラムコードは低セキュアドメインにある処理回路によって実行されるプログラムコードである。
処理回路が様々なセキュリティドメインで、また様々な特権状態でプログラムコードを実行することができる実装においては、セキュリティドメインのそれぞれにおいて、処理回路は、少なくとも非特権状態及び特権状態を含む複数の状態のうち1つでプログラムコードを実行するように構成されてもよい。そのような実装では、ロックダウンレジスタは、各セキュリティドメイン用のロックダウン値を提供するように構成することができる。したがって、例えば、ロックダウンレジスタは、各セキュリティドメインに対して異なるロックダウン値を提供するように区分けされていてもよい。
前述したように、一実施例では、例えば、コンテキスト切り替えの際に、メモリマップド制御レジスタへのまとまったアクセスを許可するために、一時的にロックダウン値をクリアすることができる。ところが、そのようなコンテキスト切り替えの間に割り込みが発生すると、割り込みの処理を担う割り込みハンドラが、標準的なロード命令及びストア命令を使用してメモリマップド制御レジスタにアクセスする能力を非意図的に有して実行することになり得る。このことを利用するのは比較的困難ではあるが、システムのセキュリティを危険にさらすためにメモリマップド制御レジスタを更新する機会を攻撃者に提供する可能性もある。1つの実装例では、そのような状況を回避するために、例外に関連してロックダウン値管理プロセスが行われる。一実施例では、ロックダウン値管理プロセスは、例外の発生時に、ロックダウンレジスタに現在格納されているロックダウン値を、例外から戻った際に復元できるように保存することを含む。ただし、それに加えて、次いで、例外を処理するために例外処理ルーチンの実行をトリガする前に、ロックダウンレジスタ内のロックダウン値がセットされる。これは、例外処理ルーチンが実行しているときは、第1のサブセット内のメモリアクセス命令を使用してメモリマップド制御レジスタにアクセスできるのは例外処理ルーチンのみであることを意味する。次いで、例外処理ルーチンから戻った際、ロックダウンレジスタ内のロックダウン値を保存されているロックダウン値に復元することができ、よって、例外の前に実行していたコードは、例外が取り込まれる前に存在していたロックダウン値を使用して実行を続けることができる。
いくつかの実装では、例外を取り込む際に必ず上記の挙動を実施することができる。ただし、代替の実装では、オートロックレジスタを使用してオートロック値を格納することができ、処理回路は、オートロック値がセットされているときにのみ、例外の発生時に、ロックダウン値管理プロセスに関連してロックダウン値のセットを行うように構成されてもよい。したがって、オートロック値がセットされているときは、ロックダウンレジスタに存在する現在のロックダウン値が、例外から戻った際に復元できるように例外処理を行う前に保存されるだけでなく、ロックダウン値はまた、例外処理ルーチンの実行をトリガする前にロックダウンレジスタ内でセットされる。ところが、オートロック値がクリアであるときには、例外処理ルーチンの前、及び例外処理ルーチンから戻った際に現在のロックダウン値の保存及び復元はやはり行われるが、例外処理ルーチンの実行をトリガする前にロックダウン値はセットされない。これにより、例外に応答して発生するロックダウン値管理の挙動を設定可能である。
ロックダウンレジスタと同様に、オートロックレジスタは、処理回路から直接アクセス可能なハードウェアレジスタとして提供されてもよく、あるいは、それ自体がメモリマップド制御レジスタの1つとして提供されてもよい。
例外の発生時に、ロックダウンレジスタに現在格納されているロックダウン値がロックダウン値管理プロセスの間に保存され得るいくつかの仕方がある。1つの実装例では、例外の発生時に、ロックダウンレジスタに現在格納されているロックダウン値がリンクレジスタ内のフィールドとして保存される。リンクレジスタは、典型的には、復帰アドレスを捕捉するために使用されてもよく、ロックダウン値はリンクレジスタ内の追加のビットとして提供されてもよい。いくつかの実装では、アドレス空間の一部分は予約されており、実行可能でない。したがって、アドレス空間のそうした部分内のアドレスへの分岐を、バックグラウンド状態への例外復帰をハードウェアに行わせるための要求などの、特殊な状態を通知するために使用することができる。1つの実装例では、例外に入る際に、リンクレジスタに捕捉された復帰アドレスは、予約された実行可能でないアドレス空間内のアドレスを指定するダミー復帰アドレスにセットされ、その代わりに、実際の復帰アドレスはスタックに保存されていてもよい。そのような状況では、ロックダウンレジスタに現在格納されているロックダウン値を、リンクレジスタ内のダミー復帰アドレスの一部として保存することができる。
ここで、特定の例について、図を参照して説明する。
図1は、メモリシステム26からフェッチされた命令に応答してデータ処理を実施する処理回路を含むデータ処理システム2の例を概略的に示す。メモリシステム26は、キャッシュ(例えば、1つ以上のレベルのデータキャッシュ及び/又は命令キャッシュ)と、メインメモリとを含み得る。いくつかのより大きなシステムでは、メインメモリは、例えばDRAMなどの単一のタイプのメモリを含んでもよく、いくつかの小さなシステム(例えば、マイクロコントローラ)では、メインメモリは、プログラムコード及び定数値を格納するためのフラッシュメモリ、及び、実行中に変更されるスタックなどの値を格納するためのSRAMなど、異なるタイプのメモリを含んでもよい。処理回路は、いくつかのパイプライン段を含む処理パイプラインを含み、それらのパイプライン段には、例えば、実行すべき命令をメモリシステム26からフェッチするフェッチ段12、残りのパイプライン段を制御してデータ処理を行わせる制御信号を生成するために、フェッチした命令を復号する復号段14、及び、復号した命令を実行してデータ処理動作を行う実行ユニット4を含む実行段が含まれる。命令の実行中に処理回路によるアクセスのためにソースデータ(ソースオペランド)を格納するため、及び、これらの命令の実行によって生成される結果データ(デスティネーションオペランド)を格納するために、レジスタ6が備わる。
様々な異なる実行ユニットが備わっていてもよく、例えば、ベクトル処理動作を行うベクトル実行ユニット16、算術動作を行う算術論理ユニット(ALU)17、メモリ26からレジスタ6にデータをロードするため、又は、レジスタ6からメモリ26にデータをストアするためにロード及びストア動作を行うロード/ストアユニット18などである。
更に、装置2の動作を制御するために使用される制御情報を格納するために制御レジスタが備わっていてもよい。本明細書に記載の技法によれば、制御レジスタの少なくともいくつかは、処理回路によって実行されるロード命令及びストア命令を使用してアクセスされるメモリマップド制御レジスタ30として提供される。図2Aに示すように、メモリアドレス空間50のある領域55がメモリマップド制御レジスタのために予約されていてもよく、この領域は、図2でPPB(プライベート周辺バス)アドレス空間と記されており、よって、所与のメモリマップド制御レジスタへのアクセスは、その所与のメモリマップド制御レジスタの制御情報を格納する領域55内のアドレスを特定するロード命令又はストア命令の使用によって行われてもよい。任意選択として、ロード命令又はストア命令を実行せずに装置によって直接アクセス可能なハードウェアレジスタとして、1つ以上の更なる制御レジスタ32が備わっていてもよい。
図1に示すパイプライン段は簡略化された表現であり、例えば、レジスタリネームを行うリネーム段、実行を待機する命令をキューイングし、それらの命令に必要なソースオペランドが利用可能になると命令を実行のために発行する発行段、及び、命令のコミットメントを処理し、結果をレジスタ6に書き戻す書き戻し段などの、他のタイプのパイプライン段もまた備わっていてもよいことが理解される。パイプラインは、順番どおりの又は順不同のパイプラインであり得る。
装置2は、様々な様式で構成することができる。例えば、装置が単一のセキュリティドメインで動作するとしても、処理回路は、特権状態と非特権状態の両方で動作することができてもよい。あるいは、装置がセキュアドメイン及び低セキュアドメインを有して、各セキュリティドメインには単一の処理状態のみがあってもよい。更なる例では、装置2は、単一のセキュリティドメイン及び特権レベルでのみ動作してもよい。
ただし、本明細書で考察する例の目的では、システムにおいて、処理回路は、セキュアドメイン及び低セキュアドメインを含む複数のセキュリティドメインで動作することが可能であり、セキュリティドメインのそれぞれの中で、処理回路は、非特権状態及び特権状態を含む複数の処理状態で動作することが可能であると考えられる。
そのような装置2には、メモリシステム26へのアクセスが許可されているかを、メモリアドレス空間の様々な領域に指定された属性データに基づいてチェックするために、メモリアクセスチェック回路20もまた備わっていてもよい。メモリアクセスチェック回路は、メモリアドレス空間の対応する領域のそれぞれに関連するセキュリティドメインを定義するセキュリティドメイン定義データを格納するセキュリティ属性ユニット(Security Attribute Unit、SAU)24を含んでもよい。セキュリティ属性データに基づいて、セキュリティ属性ユニット24は、メモリアクセスが許可されているかを、処理回路の動作の現在のセキュリティドメインと、メモリアクセスの目標アドレスを含む領域に関連するセキュリティドメインとに応じてチェックすることができる。他の実装では、SAU24は、セキュリティドメイン定義データを直接格納するのではなく、メモリアクセスチェックを実施するために、他の場所に格納されたセキュリティドメイン定義データにアクセスしてもよい。いくつかのシステムでは、セキュリティドメイン定義データは、例えばメモリマップド制御レジスタ30などの、制御レジスタに格納されてもよい。
処理回路は、動作の現在のセキュリティドメイン内で動作してもよく、これは一般に、現在実行されている命令のアドレスに関連するセキュリティドメインに相当し得る(ただし、例えばドメイン間の移行を処理しているときなどには、いくつかの例外があり得る)。SAU24によって1つのドメインにあると指定されている領域内のアドレスから、別のドメインに関連する領域内のアドレスに命令が分岐するとき、これにより、処理回路が動作している現在のセキュリティドメインの移行がトリガされてもよい。他の実装では、このような分岐は、現在のセキュリティドメインの移行を直接トリガするのではなく、ゲートウェイ命令が存在するかなどの追加のセキュリティチェックをトリガしてもよい。これらの実装では、ゲートウェイ命令自体が、現在のセキュリティドメインの変更をトリガしてもよい。いくつかの他のタイプのセキュリティドメイン移行については、特別な分岐命令が、その命令によって指定されるアドレスにおける、別のセキュリティ状態での命令の実行に分岐するために使用されてもよい。一般に、セキュアドメインで動作している間、処理回路は、セキュアドメイン及び低セキュアドメインの両方に関連するメモリ領域内のデータにアクセスすることができ、低セキュアドメインで動作するときは、処理回路は低セキュアドメインに関連する領域内のデータにアクセスすることはできるが、SAU24がセキュアドメインに関連すると指定するアドレス空間の領域内のデータにアクセスすることは許可されないことがある。これにより、低セキュアドメインで動作しているコードからの無認可アクセスに対する機密データの保護が可能になる。
また、メモリアクセスチェック回路は、メモリシステム26へのメモリアクセスがアクセス許可を満たすかチェックするメモリ保護ユニット(Memory Protection Unit、MPU)22を含んでもよく、それらのアクセス許可は、例えば、処理回路のどの特権レベルがメモリの所与の領域へのアクセスを許可されるかを指定してもよく、又は、アドレス空間のメモリ領域が読み出し及び書き込みの両方の動作によってアクセス可能なのか、若しくは、書き込みが禁止されている読み出し専用領域なのかを指定してもよい。MPU22によって使用されるアクセス許可は、特権の低いプロセス(アプリケーションなど)が、メモリのどの領域に、どのように(読み出し専用又は読み出し/書き込み)アクセスすることを許可されるかを制御するために、例えば、特権の高いプロセス(ハイパーバイザ又はオペレーティングシステムなど)によって指定されてもよい。MPU22によって提供される許可は、SAU24によって提供される許可とは独立していてもよく、よって、所与のメモリアクセスが許可されるためには、MPU22及びSAU24の両方について定義されたアクセス許可に基づくチェックに合格しなければならない。MPU22は、図1に単一のエンティティとして示されているが、いくつかの例では、それぞれがセキュリティドメインの1つに関連する別個のセキュアMPU22及び低セキュアMPU22が備わっていてもよく、よって、現在のドメインがセキュアドメインであるか低セキュアドメインであるかに応じて、メモリの所与の領域に異なるメモリアクセス許可を指定することができる(例えば、ある領域は低セキュアドメインでは読み出し専用であるが、セキュアドメインでは読み出し可能及び書き込み可能である)。
メモリシステム26へのアクセスは、典型的には、メモリアクセスチェック回路20によるチェックを受ける。メモリマップド制御レジスタ30へのアクセスもまた、メモリアクセスチェック回路20によるチェックを受けてもよく、又は、いくつかの事例では、メモリマップド制御レジスタ30は、メモリアクセスチェックを行わずに(図1の破線で示されるように)アクセスされてもよい。メモリマップド制御レジスタ30へのアクセスが許可されるいくつかの実施形態では、メモリアクセスチェック回路20を迂回することにより、メモリマップド制御レジスタ30自体によって精細なアクセス制御チェックを行うことが可能になり得る。例えば、信頼されないソフトウェアマップは、単一のレジスタで一部のビットのみにアクセスすることができる。SAU24又はMPU22のような一般的な構造は、例えば32バイトなどの最小領域によって制限されているために、そうした構造に、このような精細なアクセス許可チェックを提供することは非実用的であり得る。
図3Aに示すように、装置2は、少なくともセキュアドメイン(S)及び低セキュアドメイン(LS)を含むいくつかのセキュリティドメインの1つでデータ処理を行うことに対応していてもよい。図3Aは、2つのセキュリティドメインのみを有するシステムを示すが、異なるレベルのセキュリティに関連する3つ以上のドメインを備えることも可能である。
また、所与のセキュリティドメイン内で、図3Aに示すように、装置は、ハンドラモード(H)及びスレッドモード(T)を含むいくつかのモードの1つでデータ処理を行ってもよい。ハンドラモードは、典型的には例外処理のために使用され、したがって、例えば、例外処理ルーチンがハンドラモードで実行されてもよい。スレッドモードは、典型的には、複数の異なるスレッド、例えば、複数の異なるアプリケーションスレッドを実行するために使用される。ハンドラモードHで動作しているときには、処理回路は、デフォルトでは、比較的高い特権の動作モードを有すると仮定され、よって、メモリ及び制御レジスタへのアクセスは、低特権レベル以外のあるレベルの特権レベルに従って制御され、一方で、スレッドモードTでは、処理回路は、制御レジスタに格納された他のアーキテクチャ状態に応じて、いくつかの異なる特権レベルのうち1つを有し得る。
したがって、図3Aに示すように、処理回路が動作しているモードとセキュリティドメインとの組み合わせによって、処理回路によってどのように処理が行われるかの様相が決定されてもよい。図3Aは、これらのモードの4つの異なる組み合わせを示し、次の組み合わせが含まれる。
・セキュアスレッドモード(セキュアドメインとスレッドモードとの組み合わせの省略表現)
・低セキュアスレッドモード(低セキュアドメインとスレッドモードとの組み合わせ)
・セキュアハンドラモード(セキュアドメインとハンドラモードとの組み合わせ)
・低セキュアハンドラモード(低セキュアドメインとハンドラモードとの組み合わせ)
前述したように、制御レジスタのいくつかがメモリマップド制御レジスタであることに起因して、攻撃者がバグを利用し、そうしたメモリマップド制御レジスタへのアクセスが許可される信頼レベルでソフトウェア内のメモリ書き込みガジェットを使用できる状況では、攻撃者がシステムを危険にさらす機会を生じさせる可能性がある。これは、制御レジスタのいくつかが、ソフトウェアのどの項目がメモリのどの領域にアクセスできるかを制御する制御情報を格納している場合に、特に問題となり得る。具体的には、そうした攻撃又は攻撃者が、それらのメモリアクセスチェック構成要素の動作を制御するために使用される制御情報を適宜変更することを通して、MPU22及び/又はSAU24によって強制されたメモリ保護境界の一部を除去又は変更することにより、システムのセキュリティを危険にさらすことができる可能性がある。本明細書でより詳細に論じられるように、攻撃者がそのような攻撃を行える可能性を、図1に示すロックダウンレジスタ34内のロックダウン値を使用することによって大幅に低減することができる。図1に示すように、例外を処理するときに保護を強化するために、いくつかの実装では、オートロックレジスタ36もまた備わっていてもよい。ロックダウンレジスタ34及びオートロックレジスタ36はどちらも、装置によって直接アクセス可能なハードウェア制御レジスタとして提供されることができるが、1つの特定の実装例ではメモリマップド制御レジスタ30内の制御レジスタとして提供され、したがって、メモリアクセス命令を使用してアクセスすることができる。図1に示すように、処理回路は、メモリマップド制御レジスタ30の少なくともいくつかへのアクセスを、ロックダウンレジスタ34内のロックダウン値の値に応じて制御するために使用され得る制御レジスタアクセスチェック回路38を備えていてもよい。
図3Bに示すように、図3Aに示した複数の異なる動作モードを考慮するとき、図3Bは、メモリマップド制御レジスタ30のうちのある1つの中にある制御情報を使用して、システム内で実行中のソフトウェアの異なる項目間にどのようにメモリアクセス境界を強制できるかを示す。例えば、低セキュアスレッドモード内では処理回路が複数のスレッド60、62、64を実行するように構成されていてもよく、所望ならば、メモリマップド制御レジスタに提供された低セキュアドメイン用のMPU制御情報を使用して、異なるスレッド間のアクセス境界が強制されてもよい。このことを使用して、例えば、適切と考えられる場合には、1つのスレッドによって処理されるデータが他のスレッドに対しては確実に機密として維持されるようにできる。図3Bに更に示すように、そのような低セキュアドメイン用のMPU制御情報はまた、低セキュアスレッドモードと低セキュアハンドラモードとの間にアクセス境界を強制することができ、低セキュアハンドラモードで実行中のソフトウェア66によって処理されるデータは、低セキュアスレッドモードで実行中のスレッド60、62、64のいずれに対しても機密として維持される。
同様に、同等のMPU制御情報がセキュアドメイン用にメモリマップド制御レジスタ30内に提供されてもよく、したがって、セキュアスレッドモードで実行中の異なるスレッド70、72、74間に仕切りを強制し、セキュアスレッドモードで実行中のスレッドとセキュアハンドラモードで実行中のソフトウェア76との間にアクセス境界を強制するために使用されてもよい。
図3Bに更に示すように、例えば、低セキュアドメイン内で実行中のソフトウェアが確実に、セキュアドメインに関連するデータにアクセスできなくなるように、セキュアドメインと低セキュアドメインとの間にアクセス境界を強制するために、メモリマップド制御レジスタにSAU制御情報が格納されてもよい。
該当するメモリマップド制御レジスタ内の制御情報によって強制されるこれらのアクセス境界は、プロセッサ上で実行中のソフトウェアの様々な項目によってアクセスされるデータのために精細な保護レベルを提供することができるが、それでも、攻撃者によって利用され得るソフトウェア内になんらかのバグが存在する場合、問題が発生する可能性がある。一例として、攻撃者が、非特権ソフトウェア60を低セキュアハンドラモードで実行されるように構成することがあるが、ソフトウェアのバグによって、低セキュアドメインで実行中のソフトウェア66内のメモリ書き込みガジェットをソフトウェア60がトリガできるようになる場合があり、それによって、例えば、ソフトウェア60がそのメモリ書き込みガジェットを使用して該当するメモリマップド制御レジスタ30を更新して、低セキュアドメインでMPU制御情報によって強制されるアクセス境界を変更できることもあり得る。これにより、例えば、低セキュアスレッドモードと低セキュアハンドラモードとの間の境界を事実上、除去することが可能になり得る。
別の例として、攻撃者がソフトウェアのバグを利用して、低セキュアハンドラモードで動作中のソフトウェア66が、セキュアハンドラモードで実行中のソフトウェア76内のバグを利用してソフトウェア76内のメモリ書き込みガジェットをトリガしてメモリマップド制御レジスタを更新し、SAU制御情報によって強制されたアクセス境界を変更できるようにすることがあり得る。最悪のシナリオでは、このことによって、セキュアドメインと低セキュアドメインとの間の境界が事実上、除去されることが可能になり得、その後、低セキュアドメインのソフトウェアが、セキュアドメインに適用可能なデータにアクセスできるようになる。
ところが、本明細書でより詳細に論じられるように、ロックダウンレジスタ34内のロックダウン値を使用することによって、攻撃者が上記の攻撃のいずれかの実施を企てる能力を大幅に低減させることが可能である。
図4は、1つの実装例による、ロックダウンレジスタ34にセットされたロックダウン値に応じてストア命令がどのように実行され得るかを示すフロー図である。ステップ100で、処理回路によって実行されるべき、具体的にはロード/ストアユニット18によって実行されるべきストア命令に遭遇する。ステップ105で、そのストア命令が制御レジスタ30のうち1つにマッピングされたアドレスを指定しているか判定される。前述したように、そのストア命令に適用可能なアドレスは、多様な仕方で決定することができる。例えば、ストア命令は、ベースアドレスを含むソースレジスタを指定してもよく、また、ストア命令によってアクセスされるアドレスを決定するために、ベースアドレスの調整に使用される即時値もまた指定してもよい。次いで、そのアドレスがメモリマップド制御レジスタ30に関連するアドレス領域55内にあるか判定することができ、したがって、どこでストア命令がそれらの制御レジスタのうち1つにアクセスすることを求めているか判定することができる。
そうでない場合、プロセスはステップ110に進み、ここで、制御レジスタ固有のストア命令が使用されているか判定される。具体的には、本明細書に記載の技法によれば、メモリに関して書き込み動作を行うために使用され得る通常のタイプのストア命令に加えて、1つ以上のタイプの制御レジスタ固有のストア命令を定義することができる。前述の攻撃を抑制する能力を最大化するために、そのような制御レジスタ固有のストア命令は、非常に控えめに使用されることが望ましく、具体的には、メモリマップド制御レジスタにアクセスする際にのみ使用されることが望ましい。したがって、ステップ110で制御レジスタ固有のストア命令が使用されていないと判定された場合は、ストア命令がメモリマップド制御レジスタのうち1つにアクセスしようとしていないとステップ105で判定されていれば、これは期待される挙動であり、プロセスはステップ115に進んで、要求された書き込み動作が行われてもよい。書き込み動作が実際に行われるかは、アクセス対象のメモリアドレスに関して合格することが必要なアクセスチェックがある場合にはそれを受けてもよく、そのようなメモリチェックは、例えば、前述したメモリアクセスチェック回路20によって行われる。
ところが、ステップ110で、制御レジスタ固有のストア命令が使用されていると判定された場合には、図4に示す例では、アクセス対象のアドレスは制御レジスタの1つにマッピングされていないので、これは許可されない挙動であり、したがってプロセスはステップ130に進んで、書き込み動作は行われず、代わりにフォルト例外が発行される。
ステップ105で、ストア命令がメモリマップド制御レジスタのうち1つにマッピングされるアドレスを指定していると判定された場合には、ステップ120で、処理回路(図1の例では、制御レジスタアクセスチェック回路38)は、ロックダウン値がセットされているか判定する。そうでない場合、システムは本技法によってもたらされる追加の保護が利用されない標準モードで動作しており、したがって、プロセスは、ステップ115に進んで、ここで、該当するアクセスチェックがあれば合格することを条件として、書き込み動作が行われる。
ところが、ロックダウン値がセットされていると判定された場合は、制御レジスタ固有のストア命令が使用されている場合にのみアクセスを進めることが許可される。したがって、ステップ125でこのことがチェックされ、制御レジスタ固有のストア命令が使用されているならば、プロセスはステップ115に進んで、書き込み動作が行われ、ここでも、必要であり得るアクセスチェックがあればそれを受ける。前述したように、1つの実装例では、メモリマップド制御レジスタへのアクセスはメモリアクセスチェック回路20によるチェックを受けなくてもよく、代わりに、アクセス経路は図1に点線で示された経路をたどる。そのような場合、アクセスは、メモリマップド制御レジスタ30の一部としての精細なチェック回路によってチェックされてもよい。
ところが、ステップ125で制御レジスタ固有のストア命令が使用されていないと判定された場合には、書き込み動作が防止され、プロセスはステップ130に進んで、書き込み動作は実行されずに、代わりにフォルト例外が発行される。
図4のプロセスは、ストア命令の実行に関して示されているが、ロード命令を処理するために類似のプロセスを行うことができ、ここでも、ロード命令の少なくとも1つの制御レジスタ固有の変種が提供され、ロックダウン値がセットされているときは、メモリマップド制御レジスタからの読み出しは、そのような制御レジスタ固有のロード命令を使用してのみ可能である。
そのようなアプローチにより、上述したタイプの攻撃の利用を企てる攻撃者にとって利用可能な攻撃対象領域を大幅に低減することができる。具体的には、ロックダウン値がセットされているときは、攻撃者は、ソフトウェアバグを介して利用できる好適なメモリ書き込みガジェットを見つけ出す必要があり、この場合、そのメモリ書き込みガジェットには制御レジスタ固有のストア命令のうち1つ以上が含まれている必要がある。その理由は、そうではない場合には、そのメモリ書き込みガジェットを使用する攻撃者によって開始される書き込み動作がメモリマップド制御レジスタの内容に関して行われることを、セットされたロックダウン値の存在が防止するからである。同様に、攻撃者は、メモリマップド制御レジスタ30内の機密情報(暗号化鍵など)へのアクセスを得るために、バグを利用してメモリ読み出しガジェットを使用しようと企てる場合には、制御レジスタ固有のストア命令のうち1つ以上を含むメモリ読み出しガジェットのインスタンスを特定する必要がある。
前述したように、ロックダウン値を格納するために使用されるロックダウンレジスタ34は、装置によって直接アクセス可能なハードウェア制御レジスタであってもよいが、一例では、メモリマップド制御レジスタ30のうちの1つとして実装される。メモリマップド制御レジスタのうち1つを使用してロックダウンレジスタを提供することにより、一切の同期バリアの必要性が回避される。具体的には、メモリマップド制御レジスタのために予約されたアドレス空間55はデバイスメモリであると考えることができ、そのようなメモリに対しては、命令をリオーダすることは不可能である。そのようなシナリオでは、ロックダウンレジスタの内容を更新するにはストア命令を使用する必要があるので、このことにより、ロックダウン値の値の変化が、メモリマップド制御レジスタに関する先行及び後続の読み出し及び書き込み動作に対して確実に正しい時点で発生するようになる。したがって、ロックダウン値が変更される時間と、メモリアクセス動作がメモリマップド制御レジスタに関して実行される時間との同期を一切行う必要なく、意図されたアクセス挙動を確保することができる。
図5は、ロックダウンレジスタがメモリマップド制御レジスタのうち1つによって実装されている場合に、ロックダウンレジスタ内のロックダウン値がどのように更新され得るかを示すフロー図である。ステップ150で、現在実行中のストア命令がロックダウンレジスタのアドレスを指定しているか判定される。そのようなシナリオに遭遇した場合、ステップ155で、プロセッサが必要な特権状態で動作しているか判定される。具体的には、ある特権状態で実行中のソフトウェアのみがロックダウンレジスタの内容の更新を許可されると想定される。プロセッサが必要な特権状態で動作していない場合、ステップ160でフォルト例外が発行される。
ところが、プロセッサが必要な特権状態で動作している場合は、ステップ165で、現在のロックダウン値がセットされているか判定される。そうでない場合、1つの実装例では、ロックダウン値は、どのようなストア命令を使用してもセットすることができ、したがって、プロセスはステップ175に進み、ロックダウンレジスタ内でロックダウン値が更新される。ところが、現在のロックダウン値がセットされている場合は、ロックダウン値は、本明細書ではSTRPPB命令とも呼ばれる制御レジスタ固有のストア命令を使用してのみ更新することが許可される。したがって、現在のロックダウン値がセットされているとステップ165で判定された場合、ステップ170で、ロックダウンレジスタを更新しようとしているストア命令がSTRPPB命令であるか判定される。そうでない場合は、ステップ160でフォルト例外が発行される。ところが、STRPPB命令が使用されている場合は、プロセスはステップ175に進んで、ロックダウンレジスタ内でロックダウン値が、ストア命令によって指定された新しい値を反映するように更新される。その後、ステップ180に示すように、更新されたロックダウン値は、メモリマップド制御レジスタへの将来のアクセスを少なくとも特権状態によって制御する。
いずれにせよアクセス制御レジスタの大部分は特権状態からのみアクセスされるという場合もあるが、制御レジスタのうち1つ以上が非特権状態からアクセスできるようになっていてもよい。いくつかの実装形態では、ロックダウンビットがセットされると、ソフトウェアが非特権状態で実行されているか特権状態で実行されているかに関わらず、それらの制御レジスタへのアクセスを行うためには制御レジスタ固有のストア命令又は制御レジスタ固有のロード命令を使用することが必要になる。他の実装では、ロックダウンビットは特権状態からのアクセスにのみ影響を与え、よって、このビットがセットされると、特権状態からこれらの制御レジスタへのアクセスを行うためには制御レジスタ固有のストア命令又は制御レジスタ固有のロード命令を使用することが必要になるが、どのようなロード命令及びストア命令でも非特権状態から制御レジスタにアクセスすることは許可され得る(他のアクセスチェックがある場合はそれに合格することを条件とする)。
ロックダウン値がセットされている間は単一のメモリマップド制御レジスタのみへのアクセスが要求される場合は、1つの実装例では、前述した制御レジスタ固有のストア(STRPPB)命令及びロード(LDRPPB)命令が使用される。
ただし、あり得る全てのタイプのストア命令及びロード命令の制御レジスタ固有の変種を提供しようとすることは、不適切だと考えられる。例えば、典型的には、命令の符号化空間が貴重である場合があり、したがって、それらの命令のそれぞれに制御レジスタ固有の変種を提供することは不可能であり得る。いくつかのメモリアクセス命令ではメモリへのバルクアクセスが考慮されており、そのような命令を、本明細書ではストアマルチプル命令又はロードマルチプル命令と称することもある。それらはメモリへのバルク更新を行うための効率的な機構を提供し、したがって、複数のメモリマップド制御レジスタにバルク更新を行うためにもそのような命令を使用することは、効率的であり得る。図6は、バルクのストア又はロード命令の制御レジスタ固有の変種が提供されていないときに、そのようなバルクアクセスを行うために使用されてもよい機構を示すフロー図である。
ステップ200で、ロックダウンレジスタ内のロックダウン値をクリアするために、STRPPB命令が実行される。これにより、その後、どのようなストア命令又はロード命令を使用してもメモリマップド制御レジスタにアクセスできる窓が開く。したがって、ステップ205で、メモリマップド制御レジスタへの要求されたアクセスを行うために、1つ以上の標準のストア命令又はロード命令を実行することができる。例えば、この時点で、アクセスの効率を改善するために、前述したストアマルチプル命令又はロードマルチプル命令が使用されてもよい。
要求されたバルクアクセスが行われてからは、ロックダウンフラグをセットするために、ステップ210で更なるストア命令を実行することができる。この時点で、本明細書に記載の実装においては、ステップ210でのストア命令がSTRPPB命令である必要はなく、代わりに、どのような適切なストア命令でもロックダウンフラグをセットするために使用できることに留意されたい。その理由は、ロックダウンフラグをセットすることは、単にシステムのセキュリティを高める役割を果たすだけなので、制限される必要はないからである。しかし、それとは対照的に、ロックダウン値をクリアすることは、該当するメモリアクセスチェックが行われるならば、メモリマップド制御レジスタにアクセスするためにどのようなメモリアクセス命令でも使用できるようにし得る。したがって、ロックダウン値をクリアすることは厳密に制御されることが望ましく、それゆえ、本明細書に記載の実装ではロックダウンレジスタ内のロックダウン値をクリアするためにSTRPPB命令を使用する必要がある。
前述したように、装置は、少なくともセキュアドメイン及び低セキュアドメインを含む異なるセキュリティドメインで動作することができてもよい。各セキュリティドメインについて異なるロックダウン値を提供することが可能であり、したがって、セキュリティドメインのそれぞれのためのロックダウン値を保存できるように、ロックダウンレジスタは図7に示すように区分けされていてもよい。よって、セキュアドメイン用のロックダウン値250が提供されてもよく、また、低セキュアドメイン用の別個のロックダウン値255が提供されてもよい。1つの実装例では、セキュアドメイン用のロックダウン値250は、セキュアドメイン内の特権状態からセットでき、低セキュアドメイン用のロックダウン値255は、低セキュアドメイン内の特権状態から、又はセキュアドメイン内の特権状態からセットできる。他の実装形態では、特権状態と非特権状態との間でロックダウンレジスタが区分けされていて、両方の状態が独立に、その状態からメモリマップド制御レジスタ30へのアクセスが行われるときにロード命令及びストア命令の固有の変種が必要であるかを制御できるようになっていてもよい。更なる実装例では、ロックダウンレジスタは、セキュリティドメインと特権状態との間で区分けされていて、図3Aに示される4つの状態のそれぞれが独立に、その状態からメモリマップド制御レジスタ30へのアクセスが行われるときにロード命令及びストア命令の固有の変種が必要であるかを制御できるようになっていてもよい。
前述したように、1つの実施例では、まとまったレジスタアクセスを行う(例えば、コンテキスト切り替え)ために、メモリマップド制御レジスタを提供するために使用されるPPBメモリアドレス空間へのアクセスを一時的にロック解除することができる。ところが、コンテキスト切り替えの間に割り込みが発生すると、割り込みハンドラが非意図的にPPBアドレス空間へのアクセスを有して実行することになり得る。攻撃者がこのシナリオに基づいて攻撃を利用することは比較的困難であるが、そのような攻撃が行われる能力を抑制することが望ましいこともある。図8A及び図8Bは、前述のオートロックレジスタ36の使用を通して、1つの実装例でそれをどのように達成するかを示す。
図8Aは、スレッドT1がバックグラウンドスレッドとして動作している状況を示し、次いで、前述したコンテキスト切り替え及びメモリマップド制御レジスタへのバルクアクセスを行うために使用される例外ハンドラにポイント305で移行するために、ポイント300でタイマー割り込みがトリガされる。図6を参照しながら前述のプロセスに従うと、例外ハンドラコードが、この時点でロックダウン値をクリアすることによってPPBアドレス空間をロック解除し、次いで、コンテキスト切り替えを行うために必要なバルクアルクセスを行い、その後、PPBアドレス空間を再びロックするためにロックダウン値が再びセットされ、その後、ポイント330で例外の処理が終了し、ポイント335でプロセスが別のバックグラウンドスレッドT2の実行に戻る。
ところが、より優先度の高い割り込みがポイント310で発生して、バルクアクセスを行っているコンテキスト切り替え割り込みハンドラコードの遂行の途中にこの割り込みが取り込まれることになると、この割り込みがポイント310で受理されて、その割り込みを処理するために必要な別の例外ハンドラコードへの移行がポイント315で引き起こされる。この時点で、メモリマップド制御レジスタアドレス空間はロック解除されており、したがって、ポイント315と320の間で動作中の例外ハンドラがメモリマップド制御レジスタへのアクセスを意図的ではないかもしれないが、有することに留意されたい。ポイント320で例外ハンドラコードが完了すると、処理はポイント325に戻り、その後、元のタイマー割り込みに応答して処理されているコンテキスト切り替え例外ハンドラルーチンがバルクアクセスを続行し、次いで、ロックダウン値を再セットすることによってPPBアドレス空間を再ロックしてから、ポイント330と335との間でバックグラウンドコードT2に移行する。
ポイント315と320の間で実行される、メモリマップド制御レジスタへの制限無しのアクセスを有する例外処理ルーチンの非意図的な結果を防止することが望ましいであろう。図8Bに示すように、これは、オートロックレジスタ36内のオートロック値の使用を通じて達成することができる。ステップ400で、例外が発生しているか判定され、発生している場合は、ステップ405で現在のロックダウン値が保存される。現在のロックダウン値を保存し得るいくつかの仕方があるが、一例では、現在のロックダウン値は、リンクレジスタに格納された例外リターン値内のフィールドとして格納される。リンクレジスタを使用して、例外に入る際に例外復帰アドレスを捕捉することができるが、いくつかの実装では、アドレス空間の一部分は予約されており、実行可能ではない。したがって、アドレス空間のそうした部分内のアドレスへの分岐を、バックグラウンド状態への例外復帰をハードウェアに行わせるための要求などの、特殊な状態を通知するために使用することができる。1つの実装例では、例外に入る際に、リンクレジスタに捕捉された例外復帰アドレスは、予約された実行可能でないアドレス空間内のアドレスを指定するダミー復帰アドレスにセットされ、その代わりに、実際の復帰アドレスはスタックに保存されていてもよく、そのため、現在のロックダウン値をリンクレジスタ内のダミー復帰アドレスの一部として含ませることができる。
したがって、図8Aを考慮すると、ポイント300において、バックグラウンドスレッドT1に適用可能な現在のロックダウン値をステップ405で保存することができる。その後、ステップ410で、オートロックレジスタ36内にオートロックフラグがセットされているか判定される。そうでない場合、例外に関して追加の保護は実施されず、図8Aを参照して具体的に前述したようにプロセスが進行してもよく、ステップ420で例外を処理するために例外処理ルーチンをトリガすることができ、次いでステップ425で、例外リターンで、ロックダウン値をロックダウンレジスタ内に保存されたロックダウン値に復元することができる。
ところが、オートロックフラグがセットされている場合は、図8Bに示すように、プロセスはまずステップ415に進み、ロックダウンレジスタ内でロックダウン値がセットされる。図8Aを参照すると、これは、ポイント300でスレッドT1に適用可能なロックダウン値の値に関係なく、ポイント305でロックダウン値がセットされることを意味する。そこで、SVCを処理するために使用される例外ハンドラは、PPBアドレス空間をロック解除し、バルクアクセスを行い、ロックダウン値を再セットすることによりPPBアドレス空間を再ロックすることによって、通常のとおり続行することができる。
ところが、オートロックフラグがセットされているときは、ポイント310で高優先度の割り込みが受け取られた場合に生じる問題が取り除かれる。具体的には、図8Bに示されるプロセスを行うことによって、現在のロックダウン値(この事例では、タイマー割り込みに応答して実行されるコンテキスト切り替え例外処理ルーチンがこの時点までにロックダウン値をクリアしているため、クリアである)を保存できることが分かるが、それに加えて、オートロックフラグがセットされていると判定される。したがって、ポイント310で検出された割り込みによって要求される例外処理ルーチンの実行へのポイント315における移行の際に、ロックダウンレジスタのロックダウン値が再セットされる。これは、ポイント315と320の間の例外処理ルーチンの実行期間の間ロックダウン値がセットされ、よって、その例外処理ルーチンを行いながらメモリマップド制御レジスタに自由にアクセスする非意図的な一切の能力を回避することを意味する。ポイント325で例外から戻ると、図8Bのステップ425によって示すように、ロックダウンレジスタ内でロックダウン値が復元され、このことは図8Aの例の文脈では、ロックダウン値が再びクリアされ、コンテキスト切り替え例外ハンドラによってバルクアクセスが行われてから、PPBメモリアドレス空間が再ロックするされることを意味する。
図9は、使用され得るシミュレータ実装を示す。前述の例は、当該技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点で本発明を実施するが、本明細書に記載の例による命令実行環境を提供することも可能であり、命令実行環境は、コンピュータプログラムの使用により実施される。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的には、シミュレータ実装は、ホストプロセッサ515で実行してもよく、ホストプロセッサ515は、任意選択で、ホストオペレーティングシステム510を実行し、ホストオペレーティングシステム510は、シミュレータプログラム505をサポートする。いくつかの構成では、ハードウェアと提供された命令実行環境との間に複数層のシミュレーションがあってもよく、かつ/又は、複数の異なる命令実行環境が同じホストプロセッサ上に提供されていてもよい。従来、合理的な速度で実行するシミュレータ実装を提供するために強力なプロセッサが必要とされてきたが、このような手法は、例えば、互換性又は再使用の理由から別のプロセッサのネイティブコードを実行することが望まれるときなどの、ある一定の状況において正当化され得る。例えば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供してもよく、又は典型的には異なるハードウェアアーキテクチャに関連する命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬、USENIX Conference、第53~63頁に記載されている。
例が、特定のハードウェア構築又は特徴を参照して前述されている程度に、シミュレーションされた実装では、同等の機能が、好適なソフトウェア構築又は特徴によって提供されてもよい。例えば、特定の回路は、シミュレーションされた実装では、コンピュータプログラムロジックとして設けられてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実装では、ソフトウェアデータ構造として設けられてもよい。また、ハードウェア装置2内のメモリ26にアクセスするために使用される物理アドレス空間は、シミュレートされたアドレス空間としてエミュレートされ得、シミュレートされたアドレス空間は、ホストオペレーティングシステム510によって使用される仮想アドレス空間に、シミュレータ505によってマッピングされている。前述の例で言及されているハードウェア要素のうち1つ以上がホストハードウェア(例えば、ホストプロセッサ515)に存在する構成では、いくつかのシミュレートされた実装は、適切であるならば、ホストハードウェアを使用してもよい。
シミュレータプログラム505は、コンピュータ読み出し可能な記憶媒体(非一時的媒体であってもよい)に格納されてもよく、ターゲットコード500(アプリケーション、ゲストオペレーティングシステム、及びハイパーバイザを含んでもよい)への仮想ハードウェアインタフェース(命令実行環境)を提供し、この仮想ハードウェアインタフェースは、シミュレータプログラム505によってモデル化されたハードウェアアーキテクチャのハードウェアインタフェースと同じである。したがって、ターゲットコード500のプログラム命令は、シミュレータプログラム505を使用して命令実行環境内から実行されてもよく、このため、前述の装置2のハードウェア特徴を実際には有さないホストコンピュータ515は、これらの特徴をエミュレートすることができる。シミュレータプログラムは、処理パイプライン4の挙動をエミュレートするための処理プログラムロジック520と、ロックダウン値を格納するロックダウンデータ構造を含めたメモリマップド制御レジスタ30をエミュレートする、メモリマップド制御データ構造のセットを維持するための制御プログラムロジック525とを含んでもよい。システム2のアーキテクチャレジスタ6もまた、ターゲットアーキテクチャのアーキテクチャレジスタをホストハードウェア515によって使用されるメモリ空間にマッピングするための、シミュレータコード505によって維持されるデータ構造エミュレーティングプログラムロジック(図示せず)を使用してエミュレートされてもよい。よって、メモリマップド制御レジスタのセットへのアクセスをロックダウン値に応じて制御する本明細書に記載の技法を、図9の例では、シミュレータプログラム505によってソフトウェアで行うことができる。
本明細書に記載の技法を使用することにより、ソフトウェアバグを利用してメモリマップド制御レジスタの内容を変更しようと企てる攻撃者の能力を大幅に抑制することができ、よって、攻撃者がこれらのメモリマップド制御レジスタ内の制御情報を変更することによってシステムを危険にさらす見込みを低減することができる。
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成(congfiguration)」とは、ハードウェア又はソフトウェアの相互接続の構成(arrangement)又は様式を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された(configured to)」は、装置要素が、定義された動作を提供するために変更される必要があることをなんら意味しない。
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されないこと、及び添付の特許請求の範囲によって規定される本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加、及び修正が当業者によって実施され得ることが理解されるであろう。例えば、独立請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、従属請求項の特徴でなされてもよい。

Claims (24)

  1. データ処理動作を行うためにプログラムコードを実行する処理回路と、
    前記プログラムコードを実行するときに前記処理回路の動作を制御するために使用される制御情報を格納するメモリマップド制御レジスタのセットと、
    ロックダウン値を格納するロックダウンレジスタと、を含み、
    前記処理回路が、メモリアドレス空間に書き込み動作を行うためにストア命令を実行するように構成され、前記ストア命令が複数タイプからなり、
    前記処理回路が、前記ロックダウン値がセットされているときは、前記メモリマップド制御レジスタ内の前記制御情報を変更するために書き込み動作が行われることを、前記書き込み動作が前記複数タイプのストア命令の第1のサブセットからのストア命令の実行によって発生したのではない限り、防止するように構成されている、
    装置。
  2. 前記処理回路が、前記ロックダウン値がクリアであるときは、前記複数タイプのストア命令の前記第1のサブセットに加えて第2のサブセットを使用して書き込み動作を行い前記メモリマップド制御レジスタ内の前記制御情報を変更することを許可するように構成されており、前記第2のサブセットは前記第1のサブセットと重複しない、請求項1に記載の装置。
  3. 前記ロックダウン値がセットされているときは、前記処理回路が、前記複数タイプのストア命令の前記第2のサブセットからのストア命令が前記メモリマップド制御レジスタのセットに書き込み動作を行おうと試みたときに、フォルト例外を発行するように構成されている、請求項2に記載の装置。
  4. 前記処理回路が、前記ロックダウン値がセットされているときは、前記メモリマップド制御レジスタ内の前記制御情報の読み出しを、前記読み出しが前記複数タイプのロード命令の第1のサブセットからのロード命令によって発生した場合にのみ許可するように、また、前記メモリマップド制御レジスタ内の前記制御情報の読み出しを、前記読み出しが前記複数タイプのロード命令のうち前記第1のサブセットと重複しない第2のサブセットからのロード命令によって発生した場合は防止するように、更に構成されている、
    請求項1~3のいずれかに記載の装置。
  5. 前記ロックダウン値がセットされているときは、前記処理回路が、前記複数タイプのロード命令の前記第2のサブセットからのロード命令が前記メモリマップド制御レジスタのセットに読み出し動作を行おうと試みたときに、フォルト例外を発行するように構成されている、請求項4に記載の装置。
  6. 前記複数タイプのストア命令の前記第1のサブセットが制御レジスタ固有のストア命令を含み、前記処理回路が、前記制御レジスタ固有のストア命令を実行しているときは、関連する書き込み動作を前記メモリマップド制御レジスタに行うことを許可するかを決定する際に前記ロックダウン値を無視するように構成されている、請求項1~5のいずれかに記載の装置。
  7. 前記処理回路が、前記制御レジスタ固有のストア命令を実行しているときは、前記制御レジスタ固有のストア命令によって特定されたメモリアドレスが前記メモリマップド制御レジスタのセットに関連するメモリアドレス範囲の外側にある場合に、フォルト例外を発行するように構成されている、請求項6に記載の装置。
  8. 前記メモリアドレスが、前記制御レジスタ固有のストア命令によって指定されたレジスタに格納されている値及び、前記制御レジスタ固有のストア命令によって指定された即値に依存して特定される、請求項7に記載の装置。
  9. 請求項4に従属する場合に、
    前記複数タイプのロード命令の前記第1のサブセットが制御レジスタ固有のロード命令を含み、前記処理回路が、前記制御レジスタ固有のロード命令を実行しているときは、関連する読み出し動作を前記メモリマップド制御レジスタに行うことを許可するかを決定する際に前記ロックダウン値を無視するように構成されており、
    前記処理回路が、前記制御レジスタ固有のロード命令を実行しているときは、前記制御レジスタ固有のロード命令によって特定されたメモリアドレスが前記メモリマップド制御レジスタのセットに関連するメモリアドレス範囲の外側にあるときに、フォルト例外を発行するように構成されている、
    請求項1~8のいずれかに記載の装置。
  10. 請求項6に従属する場合に、
    前記ロックダウンレジスタが前記メモリマップド制御レジスタのセット内に提供され、前記処理回路が、前記ロックダウンレジスタに対応する指定されたメモリアドレスで前記制御レジスタ固有のストア命令のインスタンスを実行することによって前記ロックダウンレジスタ内の前記ロックダウン値を変更するように構成されている、
    請求項1~9のいずれかに記載の装置。
  11. 前記処理回路が、前記制御レジスタ固有のストア命令を実行して前記ロックダウン値をクリアし、1つ以上の標準アクセス命令を実行して前記メモリマップド制御レジスタにアクセスし、次いでストア命令を実行して前記ロックダウン値をセットすることによって前記メモリマップド制御レジスタへの一連のアクセスを行うように、ソフトウェアによって制御可能である、請求項10に記載の装置。
  12. 前記1つ以上の標準アクセス命令が、少なくとも1つのストアマルチプル命令又はロードマルチプル命令を含む、請求項11に記載の装置。
  13. 前記メモリマップド制御レジスタに格納された前記制御情報が、信頼されるプログラムコード及び信頼されないプログラムコードが前記メモリアドレス空間のどの領域にアクセスできるかを制御するために使用される制御情報を少なくとも含む、請求項1~12のいずれかに記載の装置。
  14. 前記処理回路が、前記信頼されるプログラムコードに前記ロックダウンストレージ内の前記ロックダウン値の更新を許可するように構成され、かつ、前記信頼されないプログラムコードと前記信頼されるプログラムコードの両方による前記メモリマップド制御レジスタへの書き込み動作の遂行を前記ロックダウン値を使用して制御するように構成されている、請求項13に記載の装置。
  15. 前記処理回路が、前記信頼されるプログラムコードに前記ロックダウンストレージ内の前記ロックダウン値の更新を許可するように構成されており、かつ、前記信頼されるプログラムコードによるメモリマップド制御レジスタへの書き込み動作の遂行を前記ロックダウン値を使用して制御するように、また信頼されないプログラムコードによる前記メモリマップド制御レジスタへの書き込み動作を許可するかを決定する際に前記ロックダウン値を無視するように構成されている、請求項13に記載の装置。
  16. 前記処理回路が、少なくとも特権状態及び非特権状態を含む複数の状態のうち1つで前記プログラムコードを実行するように構成されており、前記信頼されるプログラムコードは前記特権状態にある前記処理回路によって実行されるプログラムコードであり、前記信頼されないプログラムコードは前記非特権状態にある前記処理回路によって実行されるプログラムコードである、請求項14又は15に記載の装置。
  17. 前記処理回路が、少なくともセキュアドメイン及び低セキュアドメインを含む複数のセキュリティドメインのうち1つで前記プログラムコードを実行するように構成されており、前記信頼されるプログラムコードは前記セキュアドメインにある前記処理回路によって実行されるプログラムコードであり、前記信頼されないプログラムコードは前記低セキュアドメインにある前記処理回路によって実行されるプログラムコードである、請求項14~16のいずれかに記載の装置。
  18. 請求項16に従属する場合に、
    前記セキュリティドメインのそれぞれにおいて、前記処理回路が、少なくとも前記非特権状態及び前記特権状態を含む複数の状態のうち1つで前記プログラムコードを実行するように構成されており、
    前記ロックダウンレジスタが、前記各セキュリティドメインの前記ロックダウン値を提供するように構成されている、
    請求項17に記載の装置。
  19. 前記処理回路が、例外に関連してロックダウン値管理プロセスを行うように構成されており、前記ロックダウン値管理プロセスが、
    例外の発生時に、前記ロックダウンレジスタに現在格納されている前記ロックダウン値を保存し、前記例外を処理するために例外処理ルーチンの実行をトリガする前に、前記ロックダウンレジスタ内の前記ロックダウン値をセットすることと、
    前記例外処理ルーチンから戻った際、前記ロックダウンレジスタ内の前記ロックダウン値を前記保存されているロックダウン値に復元することと、を含む、
    請求項1~18のいずれかに記載の装置。
  20. オートロック値を格納するオートロックレジスタを更に含み、
    前記処理回路が、前記オートロック値がセットされているときにのみ、例外の発生時に、前記ロックダウン値管理プロセスに関連して前記ロックダウン値のセットを行うように構成されている、
    請求項19に記載の装置。
  21. 前記ロックダウン値管理プロセスの間に、前記ロックダウンレジスタに現在格納されている前記ロックダウン値がリンクレジスタ内のフィールドとして保存される、請求項19又は20に記載の装置。
  22. 装置内のメモリマップド制御レジスタのセットへのアクセスを制御する方法であって、
    データ処理動作を実行するために処理回路上でプログラムコードを実行することと、
    前記メモリマップド制御レジスタのセット内に、前記プログラムコードを実行するときに前記処理回路の動作を制御するために使用される制御情報を格納することと、
    ロックダウンレジスタ内にロックダウン値を格納することと、
    メモリアドレス空間に書き込み動作を行うために、前記処理回路でストア命令を実行することであって、前記ストア命令が複数タイプからなることと、
    前記ロックダウン値がセットされているときには、前記メモリマップド制御レジスタ内の前記制御情報を変更するために書き込み動作が行われることを、前記書き込み動作が前記複数タイプのストア命令の第1のサブセットからのストア命令の処理回路による実行によって発生したのではない限り、防止することと、
    を含む、方法。
  23. 命令実行環境を提供するためにホストデータ処理装置を制御するコンピュータプログラムであって、
    プログラムコードを実行してデータ処理動作を行う処理プログラムロジックと、
    前記プログラムコードを実行するときに前記処理プログラムロジックの動作を制御するために使用される制御情報を格納するメモリマップド制御データ構造のセットを維持し、またロックダウン値を格納するロックダウンデータ構造を維持する制御プログラムロジックと、を含み、
    前記処理プログラムロジックが、メモリアドレス空間に書き込み動作を行うためにストア命令を実行するように構成され、前記ストア命令は複数タイプからなり、
    前記処理プログラムロジックが、前記ロックダウン値がセットされているときには、前記メモリマップド制御データ構造内の前記制御情報を変更するために書き込み動作が行われることを、前記書き込み動作が前記複数タイプのストア命令の第1のサブセットからのストア命令の実行によって発生したのではない限り、防止するように構成されている、
    コンピュータプログラム。
  24. 請求項23に記載の前記コンピュータプログラムを格納する、コンピュータ可読記憶媒体。
JP2022546038A 2020-01-30 2020-12-21 メモリマップド制御レジスタのセットへのアクセスを制御する装置及び方法 Pending JP2023512029A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2001276.1 2020-01-30
GB2001276.1A GB2591490B (en) 2020-01-30 2020-01-30 An apparatus and method for controlling access to a set of memory mapped control registers
PCT/GB2020/053326 WO2021152282A1 (en) 2020-01-30 2020-12-21 An apparatus and method for controlling access to a set of memory mapped control registers

Publications (1)

Publication Number Publication Date
JP2023512029A true JP2023512029A (ja) 2023-03-23

Family

ID=69800229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022546038A Pending JP2023512029A (ja) 2020-01-30 2020-12-21 メモリマップド制御レジスタのセットへのアクセスを制御する装置及び方法

Country Status (9)

Country Link
US (1) US11989425B2 (ja)
EP (1) EP4097585A1 (ja)
JP (1) JP2023512029A (ja)
KR (1) KR20220127325A (ja)
CN (1) CN115039071A (ja)
GB (1) GB2591490B (ja)
IL (1) IL294605A (ja)
TW (1) TW202131191A (ja)
WO (1) WO2021152282A1 (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130977B1 (en) 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Controlling access to a control register of a microprocessor
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US7506121B2 (en) * 2005-12-30 2009-03-17 Intel Corporation Method and apparatus for a guest to access a memory mapped device
GB2448151B (en) * 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
EP2631787A3 (en) * 2011-04-07 2016-04-06 VIA Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9720843B2 (en) * 2012-12-28 2017-08-01 Intel Corporation Access type protection of memory reserved for use by processor logic
US10768936B2 (en) * 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10664306B2 (en) * 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US11783064B2 (en) * 2017-07-10 2023-10-10 Intel Corporation Techniques to provide hardware enforced protection environment for a system management mode
US11341230B1 (en) * 2019-12-12 2022-05-24 EMC IP Holding Company LLC Maintaining dual-party authentication requirements for data retention compliance

Also Published As

Publication number Publication date
KR20220127325A (ko) 2022-09-19
WO2021152282A1 (en) 2021-08-05
US11989425B2 (en) 2024-05-21
GB202001276D0 (en) 2020-03-18
EP4097585A1 (en) 2022-12-07
GB2591490B (en) 2022-03-02
TW202131191A (zh) 2021-08-16
US20230056039A1 (en) 2023-02-23
CN115039071A (zh) 2022-09-09
GB2591490A (en) 2021-08-04
IL294605A (en) 2022-09-01

Similar Documents

Publication Publication Date Title
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
JP7432586B2 (ja) スタック・ポインタを検証すること
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
US20220366037A1 (en) Domain transition disable configuration parameter
JP2020521225A (ja) 機能ドメインを管理するための装置及び方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
JP2023547065A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
TW202318210A (zh) 用於處理密封能力之技術
US11989425B2 (en) Apparatus and method for controlling access to a set of memory mapped control registers
US12067400B2 (en) Intermodal calling branch instruction
TW202435061A (zh) 位址相依檢查
TW202418067A (zh) 堆疊指標切換有效性檢查
JP2024538674A (ja) 封止されたケイパビリティを操作するための技法
GB2618116A (en) Exception return state lock parameter
CN113420287A (zh) 一种抵御基于高速缓存的侧信道攻击的方法
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20220805

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220808

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231214