TWI811456B - 用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體 - Google Patents
用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體 Download PDFInfo
- Publication number
- TWI811456B TWI811456B TW108134526A TW108134526A TWI811456B TW I811456 B TWI811456 B TW I811456B TW 108134526 A TW108134526 A TW 108134526A TW 108134526 A TW108134526 A TW 108134526A TW I811456 B TWI811456 B TW I811456B
- Authority
- TW
- Taiwan
- Prior art keywords
- stack
- exception
- domain
- security
- processing
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 22
- 238000004590 computer program Methods 0.000 title claims description 18
- 238000012545 processing Methods 0.000 claims abstract description 204
- 230000004044 response Effects 0.000 claims abstract description 62
- 230000009471 action Effects 0.000 claims abstract description 47
- 230000008859 change Effects 0.000 claims abstract description 39
- 230000001960 triggered effect Effects 0.000 claims abstract description 33
- 230000007704 transition Effects 0.000 claims description 92
- 238000012795 verification Methods 0.000 claims description 40
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 3
- 239000004744 fabric Substances 0.000 claims description 2
- 230000006870 function Effects 0.000 description 93
- 238000007667 floating Methods 0.000 description 23
- 230000004224 protection Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 230000002159 abnormal effect Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 238000005259 measurement Methods 0.000 description 5
- 230000007123 defense Effects 0.000 description 4
- 230000001681 protective effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
Classifications
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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
- G06F21/54—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 by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
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)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Stereo-Broadcasting Methods (AREA)
Abstract
一種設備包含:處理電路4,用於在至少包括安全域及較不安全域的複數個安全域的一個安全域中執行資料處理;以及記憶體存取檢查電路22,用於取決於安全性屬性資料檢查是否允許記憶體存取,該安全性屬性資料指示哪個域與靶位址相關聯。回應於程式流從較不安全域中的處理到具有與安全域相關聯的位址的靶指令的給定改變:當靶指令係與指示到安全域的有效進入點的閘道器指令不同的指令時,觸發故障。當靶指令係該閘道器指令時,觸發堆疊指標驗證動作以驗證使用已選堆疊指標暫存器中儲存的已選堆疊指標是否係安全的。
Description
本技術係關於資料處理領域。
處理電路可以支援在至少包括安全域及較不安全域的數個安全域的一個安全域中執行資料處理。這可以允許保護敏感資料或與安全域相關聯的代碼而不由在較不安全域中操作的較不安全代碼不恰當地存取。
至少一些實例提供了一種設備,包含:處理電路,用於在至少包括安全域及較不安全域的複數個安全域的一個安全域中執行資料處理;記憶體存取檢查電路,用於取決於安全性屬性資料檢查是否允許記憶體存取,該安全性屬性資料指示複數個安全域中的哪個安全域與記憶體存取的靶位址相關聯;以及至少一個堆疊指標,用於將指示堆疊資料結構的堆疊指標儲存在記憶體中;其中:回應於程式流從較不安全域中處理到具有與安全域相關聯的指令位址的靶指令的給定改變:當靶指令係與指示到安全域的有效進入點的閘道器指令不同的指令時,處理電路
經配置為觸發故障;並且當靶指令係該閘道器指令時,處理電路經配置為觸發堆疊指標驗證動作,以驗證使用已選堆疊指標暫存器中儲存的已選堆疊指標是否係安全的。
至少一些實例提供了一種用於處理電路的資料處理方法,該處理電路能夠在至少包括安全域及較不安全域的複數個安全域的一個安全域中執行資料處理,對此檢查是否允許記憶體存取係取決於指示複數個安全域的哪個安全域與記憶體存取的靶位址相關聯的安全性屬性資料;該方法包含,回應於程式流從較不安全域中的處理到具有與安全域相關聯的指令位址的靶指令的給定改變:決定靶指令是否係指示到安全域的有效進入點的閘道器指令;當靶指令係與該閘道器指令不同的指令時,觸發故障;以及當該靶指令係該閘道器指令時,觸發堆疊指標驗證動作以驗證使用已選堆疊指標暫存器中儲存的已選堆疊指標是否係安全的。
至少一些實例提供了一種用於控制主資料處理設備以提供用於執行指令的指令執行環境的電腦程式;該電腦程式包含:處理程式邏輯,用於支援在至少包括安全域及較不安全域的複數個安全域的一個安全域中的資料處理;記憶體存取檢查程式邏輯,用於取決於安全性屬性資料檢查是否允許記憶體存取,該安全性屬性資料指示複數個安全域中的哪個安全域與記憶體存取的靶位址相關聯;以及暫存器模仿程式邏輯,用於控制對主資料處理設備的記憶體的存取,以模擬對由電腦程式模擬的靶
架構的經模擬架構暫存器的存取,該等經模擬架構暫存器包含用於將指示堆疊資料結構的堆疊指標儲存在記憶體中的至少一個堆疊指標暫存器;其中:回應於程式流從較不安全域中的處理到具有與安全域相關聯的指令位址的靶指令的給定改變:當靶指令係與指示到安全域的有效進入點的閘道器指令不同的指令時,處理程式邏輯經配置為觸發故障;以及當靶指令係該閘道器指令時,處理程式邏輯經配置為觸發堆疊指標驗證動作以驗證使用與該等經模擬的架構暫存器的已選堆疊指標暫存器相關聯的已選堆疊指標是否係安全的。
電腦可讀取儲存媒體可儲存上文描述的電腦程式。儲存媒體可以是非暫時性儲存媒體。
2:資料處理系統
4:處理電路
6:記憶體系統
8:擷取級
10:解碼級
12:執行級
14:暫存器
16:通用(整數)暫存器
18:浮點暫存器
20:控制暫存器
22:記憶體存取檢查電路
24:安全性屬性單元(SAU)
26:記憶體保護單元(MPU)
28:異常控制電路
30:堆疊指標選擇值
31:特權控制值
32:控制暫存器
34:配置暫存器
38:限制暫存器
39:限制暫存器
50:完整性簽名
100:步驟
102:步驟
104:步驟
106:步驟
108:步驟
110:步驟
112:步驟
114:步驟
116:步驟
118:步驟
120:步驟
122:步驟
124:步驟
126:步驟
200:經模擬的位址空間/靶代碼
210:模擬器程式
220:主作業系統
230:主處理器
235:處理程式邏輯
240:記憶體存取檢查程式邏輯
242:MPU程式邏輯
244:SAU程式邏輯
255:暫存器模仿程式邏輯
本技術的進一步態樣、特徵及優點將從結合附圖閱讀的實例之以下描述顯而易見,其中:第1圖示意性示出了具有支援安全及較不安全域的處理電路的資料處理系統的實例;第2圖圖示了處理電路的不同域及操作模式的實例;第3圖圖示了處理電路的暫存器的實例;第4圖圖示了第一異常堆疊訊框的數個實例,該第一異常堆疊訊省去與被叫方暫存器相關聯的架構狀態,並且省去完整性簽名;
第5圖圖示了第二異常堆疊訊框的實例,該第二異常堆疊訊框包括來自被叫方暫存器的額外架構狀態並且包括完整性簽名;第6圖係示出由資料處理設備支援的不同異常進入轉換的表;第7圖係圖示由資料處理設備支援的數個不同異常返回轉換的表;第8圖圖示了期望偵測到的域/模式轉換的潛在不恰當序列;第9圖示出了重入情境的實例,其中函數被首次呼叫、中途中斷、並且隨後再次呼叫而未完成函數代碼從首次呼叫函數剩餘的部分;第10圖圖示了包括回應於閘道器指令而觸發堆疊指標驗證動作的資料處理方法;以及第11圖圖示了可以使用的模擬器實例。
資料處理設備可具有處理電路,該處理電路支援在至少包括安全域及較不安全域的數個安全域的一個安全域中的資料處理。可提供記憶體存取檢查電路以取決於安全性屬性資料檢查是否允許記憶體存取,該安全性屬性資料指示哪個域係與記憶體存取的靶位址相關聯。例如,當在較不安全域中操作時,記憶體存取檢查電路可防止對與安全域相關聯的位址的記憶體存取,而當在安全域中操作時,可允許處理電路存取與安全域及較不安全域二
者相關聯的位址。可提供至少一個堆疊指標暫存器以將指示堆疊資料結構的堆疊指標儲存在記憶體中。例如,當處置異常時,堆疊資料結構可以用於保存及恢復架構狀態。
在下文論述的技術中,回應於程式流從較不安全域中的處理到具有與安全域相關聯的指令位址的靶指令的給定改變:當靶指令係與指示到安全域的有效進入點的閘道器指令不同的指令時,處理電路觸發故障;以及當靶指令係閘道器指令時,處理電路觸發堆疊指標驗證動作以驗證使用已選堆疊指標暫存器中儲存的已選堆疊指標是否係安全的。
閘道器指令可用於標記到安全域的有效進入點。藉由觸發故障,若在程式流從較不安全域到具有與安全域相關聯的指令位址的靶指令的改變之後,靶指令不係閘道器指令,則此舉藉由觸發分支到在記憶體的安全區域中儲存的安全代碼內的任意點來防止能控制在較不安全域中處理的代碼的攻擊者違反安全性。觸發檢查靶指令是否係閘道器指令的程式流的給定改變可係程式流的連續改變(其中執行一連串指令而不跨指定為較不安全及指定為安全的位址之間的邊界分支,無分支)或程式流的不連續改變(例如,藉由分支或其他指令導致的,或藉由異常進入或返回事件導致的,該異常進入或返回事件導致對指示表示當前執行點的指令位址的程式計數器進行更新)。
另一方面,在程式流的給定改變之後,當靶指令係閘道器指令時,處理電路可觸發堆疊指標驗證動作以
驗證使用已選堆疊指標暫存器中儲存的已選堆疊指標是否係安全的。此舉可防範某些攻擊,該等攻擊試圖操縱在安全域內使用的堆疊指標以試圖允許在較不安全域中操作的不安全代碼影響在安全域中執行哪些指令。藉由回應於閘道器指令而觸發堆疊指標驗證動作,此舉可以確保每次安全域從較不安全域進入時,觸發堆疊指標驗證動作。因為若所執行的下一指令係與閘道器指令不同的任何指令,故障將在程式流的給定改變之後出現,這意味著可以信任閘道器指令以實施額外的安全性檢查,即使在閘道器指令之後待在安全域中執行的代碼的剩餘部分係已經由攻擊者呼叫的惡意代碼時亦是如此。因此,閘道器指令可以觸發驗證使用已選堆疊指標是否安全的動作,從而防範試圖誤用堆疊指標的攻擊。回應於閘道器指令而觸發堆疊指標驗證動作,而非基於不直接由監控某些安全域轉換的指令觸發的邏輯,對硬體系統設計者而言亦可以更簡單地在微架構中實施。
在一些實例中,設備可包含用於儲存相應堆疊指標的兩個或多個堆疊指標暫存器。當需要堆疊存取時存取哪個堆疊指標暫存器可取決於處理電路的當前安全域及/或當前操作模式,並且在一些情況下亦基於例如在控制暫存器中儲存的架構狀態。
例如,在一些情況下,系統可包含至少兩個堆疊指標暫存器,該等堆疊指標暫存器包括可在安全域中存取的安全堆疊指標暫存器及可在安全域及較不安全域二
者中存取的較不安全堆疊指標暫存器。當處置異常時哪個堆疊指標暫存器用於提供保存/恢復架構狀態的堆疊指標可取決於在異常進入或異常返回轉換中涉及的域而選擇。藉由提供單獨的安全及較不安全堆疊指標暫存器,此舉可以防止較不安全代碼能夠識別或修改記憶體的哪個區域包含由安全域使用的堆疊結構。因此,在一些情況下,已選堆疊指標暫存器可係安全堆疊指標暫存器。
更具體而言,一些實例可具有處理電路,在給定安全域內,該處理電路支援複數個模式的一個模式中的處理。該等模式可包括用於異常處理的處置器模式及用於背景處理的線程模式。分離線程及處置模式可以用於簡化對處理電路可存取哪個架構狀態進行管理,這可以簡化異常處理並且確保異常處置所需的某一狀態不可用於例如線程模式中的背景處理。因此,對存取記憶體區域的控制及處理電路可存取哪些架構暫存器的控制可基於處理電路的當前安全域及當前模式的組合,並且在一些情況下亦基於架構的其他控制參數。
在支援線程及處置器模式的系統中,則堆疊指標暫存器可包括用於儲存處理堆疊指標的處理堆疊指標暫存器及用於儲存主堆疊指標的主堆疊指標暫存器。可存在處理及主堆疊指標暫存器的安全及較不安全分組版本,因此在一些情況下,可存在至少四個不同的堆疊指標暫存器(安全主堆疊指標、安全處理堆疊指標、較不安全主堆疊指標及較不安全處理堆疊指標)。大體上,當在處
置器模式中操作時可選擇主堆疊指標暫存器。當處於線程模式時,可基於在控制暫存器中儲存的堆疊指標選擇值來選擇處理堆疊指標暫存器及主堆疊指標暫存器中的一個。在提供包括上文描述的四個堆疊指標暫存器的分組堆疊指標暫存器的架構中,對此回應於閘道器指令執行堆疊指標驗證動作的已選堆疊指標暫存器可係安全主堆疊指標暫存器或安全處理堆疊指標暫存器。
可以不同方式執行堆疊指標驗證動作。在一個實例中,堆疊指標驗證動作可包含觸發許可檢查以檢查是否許可載入請求,該載入請求請求從已選堆疊指標暫存器中儲存的已選堆疊指標導出的靶位址載入一值。在一些實施方式中,此許可檢查可藉由向靶位址發佈實際載入請求來觸發。或者,許可檢查可藉由發佈另一類型的記憶體存取請求(諸如儲存請求)來觸發,或藉由發佈規定靶位址的許可檢查請求來觸發,該許可檢查請求實際上不觸發對記憶體的存取,而是控制記憶體存取檢查電路返回是否許可對靶位址的存取的指示。
這似乎與直覺相反:當遇到閘道器指令時,觸發記憶體許可檢查是否有從堆疊指標導出的位址係有用的,這是因為閘道器指令在標記到安全域的有效進入點方面的功能似乎不會請求在記憶體中存取任何值。然而,藉由觸發許可檢查是否有從已選堆疊指標暫存器中儲存的已選堆疊指標導出的靶位址,該許可檢查可以用作檢查使用已選堆疊指標是否係安全的。例如,處理電路可經配置
為在數個特權位準的一個特權位準處操作。若可用於回應於閘道器指令觸發的靶位址的已選存取許可集合規定了禁止已選特權位準存取靶位址,則記憶體存取檢查電路可以觸發故障。因此,閘道器指令可用於引動由記憶體存取檢查電路實施的基於特權的記憶體許可檢查,以提供驗證已選堆疊指標是否安全的方式。
特定而言,已選特權位準可係與處理相關聯的特權位準,該處理係在程式流的給定改變時在處理電路的安全域及當前操作模式的組合中。例如,若將安全域及當前模式的組合定義為無特權,則記憶體存取檢查電路可檢查已選存取許可集合是否指示將允許由無特權代碼執行從已選堆疊指標導出的靶位址,並且若不允許無特權代碼存取彼位址,則可觸發故障。此舉可防範攻擊,其中攻擊者可試圖使用無特權代碼來操縱指向記憶體的特權區域中的堆疊資料結構的堆疊指標。
用於檢查是否允許回應於載入請求來存取從已選堆疊指標導出的靶位址的已選存取許可集合可包含當處理電路的當前域係安全域時可用於靶位址的存取許可集合。在一些實例中,記憶體存取檢查電路可維持分別用於安全及較不安全域的分離的存取許可資料集合。因此,即使在當前域仍為較不安全域時間執行閘道器指令(儘管將閘道器指令儲存在記憶體的安全區域中,可能尚未觸發域切換),閘道器指令可觸發使用與安全域相關聯
的存取許可的許可檢查,以提供驗證使用可以稍後從安全域存取的堆疊指標是否係安全的。
在一些實例中,在由閘道器指令觸發的許可檢查中檢查的靶位址可以藉由將某一偏移添加到已選堆疊指標來從已選堆疊指標導出。在其他實例中,靶位址可僅等於已選堆疊指標本身。
在一個實例中,處理電路亦可回應於閘道器指令而執行重入檢查。當從已選堆疊指標導出的靶位址載入的值係至少一個完整性簽名值之一時,重入檢查可包含觸發故障。完整性簽名值可係預定位元圖案,該位元圖案可用於賦能對記憶體中的堆疊資料結構的一些完整性檢查。在一些實施方式中,可存在對兩個或多個不同的完整性簽名值的支援(例如,一者用於異常堆疊訊框,且另一者用於函數堆疊訊框)。在此種情況下,導致觸發故障的完整性簽名值可以係此等完整性簽名值中的特定完整性簽名值(例如,用於異常堆疊訊框的完整性簽名值),或故障可由此等完整性簽名值的任一者觸發。
此種重入檢查可用於提供防範重入情境的架構保護,在重入情境中呼叫某一函數僅一次,函數中途中斷,並且隨後在某一連串事件(例如,包括域轉換、模式轉換、異常進入或返回事件、函數呼叫函數返回的事件)之後,函數結束,直至在未首先完成函數代碼從首次呼叫函數剩餘的部分的情況下第二次呼叫。在此種重入情境中執行一些類型的函數代碼可能不安全,這是因為若在再次
呼叫函數之前未完全完成函數的先前執行個體,則該等代碼類型可能給出錯誤結果。例如,函數可實施需要關於呼叫相同函數的其他執行個體自動地完成的操作集合。儘管函數代碼本身可以經重新設計為安全的以防範重入,但如此操作可以導致代碼複雜性顯著增加、可以引入額外的安全漏洞、使維護更艱難並且增加代碼大小,這可係不當的。或者,即使發生重入,與將軟體設計為安全不同,另一方法可以係提供軟體,該軟體包括用於偵測重入並且若偵測到重入防止再次執行函數的指令序列。然而,此舉仍可以係不當的,因為此種偵測重入的軟體可容易出錯、增加代碼大小並且降低效能。防止重入的另一選項可以係嘗試降低函數將中途中斷的可能性,例如藉由在關鍵操作的持續期間提升函數的優先權以防止中斷或搶佔彼函數的異常。然而,此舉可能不在所有使用情況中起作用,因為優先權提升可能僅可用於某些特權位準,並且此種優先權提升可顯著干擾中斷時延,這可係不當的。
已經認識到,通常在重入情境中,這可通常在一系列異常轉換之後,該等異常轉換導致完整性簽名值存在於由已選堆疊指標暫存器中的已選堆疊指標指示的相關堆疊資料結構上。因此,藉由回應於閘道器指令而觸發載入從已選堆疊指標導出的位址,並且當所載入的值匹配至少一個完整性簽名值的至少一個時觸發故障,這提供了防範此種重入的架構防禦。此舉可以顯著降低程式設計師或編譯者在提供達成其意欲結果的軟體時的負擔。
藉由使用由閘道器指令觸發的載入來執行重入檢查,此舉確保重入檢查可以在每次進入安全域時執行。這可係與直覺相反:與針對較不安全域相比,重入檢查針對安全域係更為相關的,因為重入本身不係增強在安全域與較不安全域之間的邊界的問題(更確切地重入的主要風險係軟體代碼可能不達成其意欲結果,而非安全性問題)。然而,認識到,用於重入的軟體修復可導致引入安全漏洞的二次風險,該等安全漏洞可以被攻擊者利用。因此,藉由為重入檢查提供此種架構支援,此舉避免需要程式師或編譯者提供用於防止或偵測重入的軟體修復,該等軟體修復減少彼等軟體修復無意地引入安全漏洞的機會。因此,回應於閘道器指令而觸發重入檢查係特別有用的,因為此舉確保任何安全函數可以具有歸因於存在閘道器指令而在架構中自動地觸發的防範重入檢查的防禦,該閘道器指令標記到安全域中的安全進入點。
當回應於閘道器指令而執行重入檢查時,用於重入檢查以從靶位址獲得值的載入請求亦可用作用於堆疊指標驗證動作的許可檢查的觸發器。因此,觸發載入可出於兩種目的:堆疊指標驗證動作及重入檢查。
然而,可能不總是需要此種重入檢查。針對一些安全函數,程式代碼可係使得已經安全地防範重入,例如,因為該程式代碼不依賴於需要自動更新的共享變數。因此,在一些實例中,架構可提供重入檢查賦能值(例如,在控制暫存器中儲存),該重入檢查賦能值規定是賦能還
是去能重入檢查。回應於當靶指令係閘道器指令時程式流的給定改變,基於重入檢查賦能值規定賦能還是去能重入檢查,處理電路可決定是否回應於閘道器指令執行重複檢查。因此,若重入檢查不與執行的特定函數相關,則可以去能重入檢查。
然而,甚至當重入檢查賦能值規定去能重入檢查時,當閘道器指令從安全記憶體擷取並且係在程式流從較不安全域的給定改變之後執行的靶指令時,處理電路仍可觸發許可檢查以回應於閘道器指令來檢查是否許可對靶位址的載入請求。儘管吾人可能期望若去能重入檢查,則不需要針對靶位址執行許可檢查,這是因為不需要檢查載入值是否匹配完整性簽名值,即使去能重入檢查,靶位址的許可檢查仍可用於驗證使用已選堆疊指標是否安全,以提供對安全性的一些攻擊形式的防範。
在去能重入檢查的情況下,存在用於觸發針對堆疊指標驗證執行許可檢查的不同選項。一種方法可以係無論如何仍發佈載入請求,儘管因為已經去能重入檢查,不需要從記憶體載入的值。此舉可以更簡單地在微架構中實施,因為其意味著無論重入檢查是賦能還是去能,經觸發以執行堆疊指標驗證動作的請求可以係相同的。
然而,另一選項將係當執行重入檢查時藉由發佈載入請求來觸發許可檢查,但當不執行重入檢查時,則不同類型的請求可以用於觸發針對堆疊指標驗證動作的許可檢查。例如,不同類型的請求可以係位址檢查請求,
其請求在不觸發記憶體存取的情況下執行許可檢查。此舉可以改進效能,因為藉由省去實際載入靶位址,這可以節約時間及功率並且節省原本用於其他記憶體存取操作的記憶體存取頻寬。
設備可具有用於處置異常及異常返回的異常控制電路。回應於異常條件,異常控制電路可執行至少基於處理電路的當前安全域(並且在一些情況下亦基於當前模式)選擇的數個異常進入轉換之一。針對至少異常進入轉換的子集,異常控制電路可觸發將包括至少一個完整性簽名值之一的堆疊訊框保存到由至少一個堆疊指標暫存器中儲存的堆疊指標識別的堆疊資料結構。例如,對此保存包括完整性簽名值的堆疊訊框的異常進入轉換的子集可包含從安全域到較不安全域的轉換。
另一方面,針對異常返回條件,數個異常返回轉換之一可至少基於與異常返回條件相關聯的安全域來選擇。針對至少異常返回轉換的子集,異常控制電路可執行完整性簽名檢查,用於從針對彼異常返回轉換選擇的給定堆疊資料結構存取堆疊訊框,並且當在存取堆疊訊框中的預定位置處的值與至少一個完整性簽名值的該一個完整性簽名值之間偵測到不匹配時,觸發故障。因此,針對異常返回轉換,針對至少一些異常返回轉換,可需要完整性簽名存在於堆疊資料結構上以避免觸發故障。此完整性簽名值之包括可以提供防範攻擊的保護,其中攻擊者試圖以導致在返回安全域時恢復不適當堆疊訊框的方式偽造
某一連串異常進入或返回轉換或函數呼叫或返回(此處攻擊者可試圖使用堆疊訊框中的不匹配來觸發安全域對來自安全域中的位址的代碼進行處理,該等位址係基於由攻擊者控制的較不安全代碼提供的資訊來選擇)。使用完整性簽名值可以允許偵測不適當轉換序列以防範此種攻擊。
因此,在一些異常返回轉換時,完整性簽名值可需要呈現為已經執行異常及異常返回的有效序列的指示(缺乏完整性簽名值可在某些異常返回轉換時觸發故障)。相比之下,針對重入檢查,當在堆疊上的預定位置處的值不匹配完整性簽名值時,可觸發故障,這是因為在此情況下完整性簽名值可係在不期望重入的情況下執行相同函數的先前中斷的執行個體之後已經再次呼叫某一安全函數的標誌。因此,重入檢查可被看作與直覺相反的,因為當偵測到完整性簽名(通常用作已經適當地處置堆疊的標誌)時,該等重入檢查觸發故障,這與吾人期望的情況相反。儘管本發明關於在先前中斷的呼叫相同函數之後偵測函數重入來描述,將瞭解本發明亦可防範不同形式的重入,其中在先前中斷呼叫的第一函數之後呼叫第二安全函數。因為常見不同函數共享及修改相同狀態,可期望保護函數重入到安全域的任何組合。
在支援重入檢查的情況下,從已選堆疊指標導出靶位址的可係使得相對於已選堆疊指標,靶位址對應於期望將完整性簽名值儲存於此處的位址。例如,若完整性簽名值以與堆疊指標呈某一偏移來位於堆疊訊框上的一
點處,則當回應於閘道器指令而導出靶位址時,可將相同偏移添加到已選堆疊指標。然而,在一些架構中,為了避免需要執行添加堆疊指標及偏移(其可增加時延),可將完整性簽名值儲存在堆疊訊框上的對應於堆疊指標本身的位址處,並且因此在此情況下靶位址可簡單地等於已選堆疊指標。
此種檢查完整性簽名是否存在的技術可用於在某一連串異常進入及返回轉換之後出現重入情境的情況。然而,當已經在相同函數的首次及後續呼叫之間的某個點處使用函數呼叫時,亦可以出現重入情境,並且因此有時載入從已選堆疊指標導出的靶位址可以存取堆疊訊框,該堆疊訊框回應於執行的函數呼叫而已保存到記憶體。針對函數呼叫,可以完全不保存完整性簽名值,或者可以將不同完整性簽名值保存到回應於異常進入轉換的子集而保存的一者,或者與針對異常的完整性簽名值相比,針對函數呼叫的完整性簽名值可處於相對於堆疊指標的不同偏移。在此等情況的任一者中,檢查載入值是否匹配用於異常的給定完整性簽名值可能不足以偵測所有重入情境。在在沒有完整性簽名用於函數呼叫的一些實例中,可期望確保在靶位址處的值不可無意地匹配完整性簽名值,因為當尚未發生重入時,這可無意地觸發重入檢查故障。為了賦能此效果,一些實施例可將函數返回位址置於靶位址處並且選擇不為可執行位址的完整性簽名值,由此確保函數返回位址可以絕不無意地匹配完整性簽名。在
一些實施例中,回應於函數呼叫而將堆疊訊框保存到記憶體可由處理器自動地執行,並且僅可回應於呼叫較不安全函數的安全函數發生。
因此,在一些實例中,當用於決定哪個堆疊指標暫存器用於堆疊或拆疊架構狀態的堆疊指標選擇值具有預定值時,重入檢查亦可包含觸發故障。堆疊指標選擇值具有預定值的事實可以係正發生重入的另一指示符,並且因此當賦能重入檢查時,則當堆疊指標選擇值具有預定值時觸發故障可以提供防範重入檢查的進一步保護。
例如,如上文論述,處理電路可支援處置器模式及線程模式。當處於線程模式時,堆疊指標選擇值可控制在處理堆疊資料結構與主堆疊資料結構之間的選擇。當堆疊指標選擇值具有第一值時,可選擇由處理堆疊指標暫存器中儲存的堆疊指標識別的處理堆疊資料結構來用於回應於在線程模式中發生的異常條件而保存架構狀態。當異常條件在線程模式中發生並且堆疊指標選擇值具有第二值時,可選擇由主堆疊指標暫存器中儲存的堆疊指標識別的主堆疊資料結構。當異常條件在處置器模式中發生時,則無論堆疊指標選擇值的當前值如何,可使用主堆疊資料結構。將瞭解,如上文所描述,可提供處理及主堆疊資料結構的安全及較不安全版本,並且因此使用哪個版本可取決於與在異常發生之前執行的背景處理相關聯的安全域。
因此,針對重入檢查,在一些實例中,當堆疊指標選擇值具有上文描述的第二值時,可觸發故障,該第二值指示應當使用主堆疊資料結構的線程模式。再者,這可係正發生重入的標誌。藉由當執行重入檢查並且堆疊指標選擇值具有第二值時,回應於閘道器指令而觸發故障,此舉提供了防範重入的架構防禦以簡化代碼開發並且因此減少歸因於試圖處理軟體中的重入的安全漏洞的機會。
特定而言,此方法可在以下架構中使用:其中回應於至少一個安全線程模式至安全處置器模式異常進入轉換,異常控制電路可將堆疊指標選擇值更新為第二值。此舉可係採取為防禦另一類型的安全性攻擊的動作,該安全性攻擊可利用以下事實:當異常觸發安全到安全域轉換時,可省去在從安全域到較不安全域的轉換時執行的某些保護性量測,諸如保存/清除架構暫存器狀態及保存如上文論述的完整性簽名值。儘管省去此種保護性量測可以改進效能並且因為系統已經在安全域中並且可以信任,當從安全線程模式轉換為安全處置器模式時可為合理的,若攻擊者能夠偽造不適當的函數進入及返回條件異常的序列,使得在返回安全線程模式時,存取缺乏完整性簽名的堆疊訊框,則此舉可以引入一些安全漏洞。儘管將通常期望線程模式存取處理堆疊資料結構,藉由回應於至少一個安全線程模式到安全處置器模式異常進入的轉換而將堆疊指標選擇值切換為第二值,此舉意味著若處理電路經由此等不適當轉換序列之一返回到安全線程模式並且
堆疊指標選擇值仍具有第二值,則可存取主堆疊資料結構,而非處理堆疊資料結構,這可以導致未通過其他安全性檢查。此種將堆疊指標選擇值設定為第二值可以用於重入檢查,因為通常在該情況下,當中間函數呼叫用作一連串轉換的一部分時,導致重入情境,其中在完成呼叫函數的先前執行個體之前從較不安全域再次呼叫安全函數,該一連串轉換亦將已包括至少一個安全線程模式至安全處置器模式異常進入轉換,其中將堆疊指標選擇值設定為第二值。
當存在程式流從安全域中的處理到具有與安全域相關聯的指令位址的閘道器指令的改變時,可省去上文描述的重入檢查。因此,可針對從較不安全域到安全記憶體中儲存的閘道器指令的轉換執行重入檢查,但當程式流從安全域切換到此閘道器指令時,不需要該重入檢查。如上文論述,僅可當存在從安全域到較不安全域的轉換時執行保存完整性簽名值,並且因此在程式流從安全域到閘道器指令的切換時,堆疊資料結構可能不包括完整性簽名值。這意味著當安全函數呼叫其他安全函數時,在從重入檢查中的已選堆疊指標導出的位址處的值可以係任意值。藉由回應於程式流從安全域到與安全域相關聯的位址中儲存的閘道器指令的改變而省去重入檢查,此舉在堆疊上的值意外地發生匹配完整性簽名的情況下避免意外觸發故障。
除觸發完整性檢查之外,閘道器指令亦可具有觸發當前安全域從較不安全域到安全域的切換的函數。因此,當在程式流的給定改變之後的靶指令係閘道器指令時,至少一個安全性檢查(例如,重入檢查(若賦能)、及/或用於監督域之間的邊界的任何其他安全性檢查)可回應於閘道器指令而執行,並且若通過至少一個安全性檢查,則處理電路可觸發當前安全域從較不安全域到安全域的切換。
在上文論述的實例中,回應於在程式流的給定改變之後的閘道器指令而觸發的堆疊指標驗證動作可包含觸發許可檢查以檢查是否許可載入從已選堆疊指標導出的靶位址。此方法具有以下優點:其可以在執行堆疊指標驗證動作(例如,發佈載入請求)時與重入檢查共享一些額外負擔,出於上文給出的原因這可係有用的。此外,其意味著仍可以支援其中當呼叫到安全線程模式中時堆疊指標選擇值具有第二值的某些有效用例。在一些實施例中,若執行重入檢查,則仍可檢查堆疊指標選擇值,並且若堆疊指標選擇值係第二值,則出現故障。若去能重入檢查,則可能不執行重入檢查。此外,可能不在程式流從安全域到記憶體的安全區域中儲存的閘道器指令的安全到安全改變時執行重入檢查。
然而,在另一實例中,當偵測到程式流的給定改變並且靶指令係閘道器指令時,堆疊指標驗證動作可包含若堆疊指標選擇值具有第二值,則觸發故障。此舉可提
供防範攻擊的另一方式,該等攻擊旨在操縱安全主堆疊指標,以試圖觸發安全域執行不適當的代碼序列。注意到,與在上文論述的第一方法不同,在第一方法中當執行重入檢查時對堆疊指標選擇值執行檢查,而當省去重入檢查時不對堆疊指標選擇值執行檢查,利用第二方法,不論是否執行重入檢查,可回應於閘道器指令檢查堆疊指標選擇值。因此,此舉提供用於檢查在程式流的給定改變之後使用已選堆疊指標是否安全的替代實施例。藉由回應於保證在到安全域的有效切換時存在的閘道器指令而觸發此動作(若不存在閘道器指令,則在執行任何後續指令之前將觸發故障),這使微架構設計更為簡單,因為該等動作需要檢查堆疊指標選擇值可以由指令解碼器回應於識別閘道器指令而觸發。
無論使用堆疊指標驗證動作的哪個變型,不需要針對在控制流的給定改變之後遇到閘道器指令的所有執行個體觸發堆疊指標驗證動作。在一些情況下,當在程式流的給定改變時處理電路處於預定操作模式時,可觸發堆疊指標驗證動作。例如,預定模式可以係線程模式。當處理電路處於與預定操作模式不同的操作模式時,可以省去堆疊指標驗證動作。這可係有用的,因為當進入線程模式時上文論述的基於堆疊指標的攻擊類型可係最為可能的,並且當進入處置器模式時可能不成為問題。儘管當處於處置器模式時可總是通過與堆疊指標驗證動作相關聯的檢查(至少針對以下實施例:其中堆疊指標驗證動作包
含觸發從已選堆疊指標導出的靶位址的許可檢查,其中來自處置器模式的存取可大體通過存取許可的基於特權的檢查,因為可預設將處置器模式定義為特權的),出於效能原因,可較佳地省去觸發堆疊指標驗證動作以節約處理功率並且出於其他原因賦能釋放資源。例如,在堆疊指標驗證動作包括觸發載入請求的實施例中,當處理電路處於處置器模式時省去堆疊指標驗證動作可釋放載入佇列中的時槽,該時槽可以用於其他記憶體存取。因此,將堆疊指標驗證動作限制為預定模式(諸如線程模式)可以改進效能。類似地,歸因於需要支援多個巢套異常處置器,可在處置器模式中需要對安全重入的支援。一些實施例可由此當處於處置器模式時抑制重入檢查,因為針對處置器模式代碼,可期望代碼已經安全地防範重入,並且因此不需要進一步的在架構位準防範重入的保護。
可提供一種模擬器電腦程式以用於控制主資料處理設備以提供用於執行指令的指令執行環境。電腦程式可包含處理程式邏輯及記憶體存取檢查程式邏輯,該等邏輯在功能上對應於上文論述的處理電路及記憶體存取檢查電路。此外,程式可具有暫存器模仿程式邏輯,用於控制對主設備的記憶體的存取以模擬對電腦程式模擬的靶架構的經模擬架構暫存器的存取。經模擬的架構暫存器可包括如上文描述的至少一個堆疊指標暫存器。處理程式邏輯可回應於在模擬器上執行的靶代碼的閘道器指令而觸發堆疊指標驗證動作。因此,可將此種模擬器電腦程式
呈現到模擬器電腦程式上執行的軟體,這係與由實際硬體設備提供的指令環境類似的指令環境,儘管可能不存在執行模擬器電腦程式的主電腦中提供此等特徵的任何實際硬體。上文論述的硬體架構的功能可藉由提供程式邏輯(諸如指令集或資料結構)來模仿,該程式邏輯賦能一般主電腦來執行靶代碼,該靶代碼意欲以與在實際上具有彼等特徵的設備上達成的結果相容的方式在具有上文論述的特徵的設備上執行。用於控制主資料處理設備的模擬器電腦程式可在儲存媒體上儲存。此儲存媒體可係非暫時性儲存媒體。
第1圖示意性示出了包括處理電路4的資料處理系統2的實例,該處理電路用於回應於從記憶體系統6擷取的指令而執行資料處理。記憶體系統6可包括快取記憶體(例如,一或多個位準的資料快取記憶體及/或指令快取記憶體)以及主記憶體。處理電路4包括處理管線,該處理管線包括數個管線級,例如,包括用於擷取待從記憶體系統6執行的指令的擷取級8、用於解碼擷取的指令以產生用於控制剩餘管線級執行資料處理的控制信號的解碼級10、以及用於執行解碼的指令以執行資料處理操作的執行級12。提供暫存器14來用於儲存輸入運算元,用於由管線4處理的指令。暫存器14包括數種類型的暫存器,包括用於儲存整數值的通用(整數)暫存器16、用於儲存浮點值的浮點暫存器18以及用於儲存控制參數的
控制暫存器20,該等控制參數用於控制由處理電路4執行指令及其他操作,諸如異常處置、安全性檢查等。
將瞭解,第1圖所示的管線級係簡化表示,並且亦可以提供其他類型的管線級,諸如用於執行暫存器重命名的重命名級、當其需要的運算元可用時用於佇列等待執行的指令並且發佈該等指令用於執行的發佈級、以及用於處置指令承諾並且將結果寫回暫存器14的寫回級。管線可以係有序或無序管線。
系統2亦包括記憶體存取檢查電路22,用於基於針對記憶體位址空間的各個區域規定的屬性資料來檢查是否許可對記憶體系統6的存取。記憶體存取檢查電路包括安全性屬性單元(security attribute unit;SAU)24,用於儲存安全域定義資料,該資料定義與記憶體位址空間的各個相應區域相關聯的安全域。基於安全性屬性資料,安全性屬性單元24可取決於處理電路的操作的當前安全域及與包括記憶體存取的靶位址的該區域相關聯的安全域來檢查是否允許記憶體存取。在其他實施例中,SAU可能不直接儲存安全域定義資料,而是存取在其他地方儲存的安全域定義資料,以便執行記憶體存取檢查。在一些系統中,安全域定義資料可儲存在記憶體系統6中,或可係系統2中的其他地方的配置暫存器。處理電路4可在操作的當前安全域中操作,該當前安全域可大體對應於與當前正執行的指令位址相關聯的安全域(儘管可存在一些異常,例如,當處置域之間的轉換時)。當指
令從由SAU 24規定為在一個域中的區域中的位址分支到與不同域相關聯的區域中的位址時,此舉可觸發其中正操作處理電路4的當前安全域的轉換。在其他實施例中,此種分支可能不直接觸發當前安全域的轉換,而是觸發額外安全性檢查,諸如是否存在閘道器指令,在此等實施例中,閘道器指令本身可觸發當前安全域的改變。大體上,儘管在安全域中操作,處理電路可存取與安全域及較不安全域二者相關聯的記憶體區域中的資料,而當在較不安全域中操作時,處理電路可存取與較不安全域相關聯的區域中的資料,但可能不許可該處理電路存取位址空間的區域中的資料,SAU 24將該位址空間規定為與安全域相關聯。此舉賦能保護敏感資料來防範來自在較不安全域中操作的代碼的未授權存取。
此外,記憶體存取檢查電路可包括記憶體保護單元(memory protection unit;MPU)26,該記憶體保護單元檢查對記憶體系統6的記憶體存取是否滿足存取許可,例如,存取許可可規定允許處理電路4的哪些特權位準存取記憶體的給定區域,或可規定位址空間的記憶體區域可以由讀取及寫入操作二者存取還是係禁止寫入的唯讀區域。例如,由MPU 26使用的存取許可可由更高特權的過程(諸如超管理器或作業系統)規定以控制允許較低特權的過程(諸如應用)存取記憶體的哪些區域,以及如何(唯讀或讀/寫)存取該等區域。由MPU 26提供的許可可與由SAU 24提供的彼等正交,使得允許給定
記憶體存取,其應當通過基於針對MPU 26及SAU 24二者定義的存取許可的檢查。儘管在第1圖中將MPU 26圖示為單個實體,在一些實例中,可提供分離的安全及較不安全MPU 26,各者與安全域中的一個相關聯,使得取決於當前域係安全域還是較不安全域(例如,區域在較不安全域中可以係唯讀的,但在安全域中係可讀且可寫的),可以針對記憶體的給定區域規定不同記憶體存取許可。
因此,如第2圖所示,處理電路4可在至少包括安全域(S)及較不安全域(LS)的數個安全域的一個安全域中支援執行資料處理。儘管第2圖圖示了僅具有兩個安全域的系統,將可能提供與不同安全性位準相關聯的三個或多個域。
此外,在給定安全域內,如第2圖所示,處理電路可在數個模式的一個模式中執行資料處理,該等模式包括用於異常處理的處置器模式(H)及用於背景處理的線程模式(T)。如第1圖所示,可提供異常控制電路28以控制異常處置操作,包括異常進入轉換及異常返回轉換,以及在此種轉換期間的任何保存/恢復架構狀態。將異常處置分為專用處置器模式H可以用於簡化管理允許由處理電路存取哪些暫存器(例如,用於異常處置的一些暫存器可在處置器模式H中存取,但在線程模式T中可能不可存取)。大體上,當在處置器模式H中操作時,則可預設處理電路4以假設具有更高特權的操作模式,使得根據與
最低特權位準不同的特權位準的某一位準控制對記憶體及暫存器的存取,而在線程模式T中,取決於在控制暫存器20中儲存的其他架構狀態,處理電路可具有數個不同特權位準中的一個特權位準。
因此,如第2圖所示,安全域及操作處理電路4的模式的組合可決定處理電路4如何執行處理的態樣。第2圖圖示了此等模式的四個不同組合,包括:
●安全線程模式(針對安全域及線程模式的組合的縮寫)
●較不安全線程模式(較不安全域及線程模式的組合)
●安全處置器模式(安全域及處置器模式的組合)以及
●較不安全處置器模式(較不安全域及處置器模式的組合)。
如下文論述,回應於異常條件及異常返回條件,所執行的動作可取決於在安全域及模式的此等相應組合之間進行的特定轉換。
第3圖圖示了處理系統的一些暫存器14。將瞭解,此表示不顯示所有可能的暫存器,可提供該等暫存器並且亦可提供眾多其他暫存器。如第3圖所示,暫存器14包括通用暫存器16、浮點暫存器18、及數個控制暫存器20(在第3圖中僅圖示一些控制暫存器-亦可以提供其他暫存器)。在此實例中,提供了標記為R0-R15的16個通用暫存器以及標記為S0至S31的32個浮點暫存器。在一些實施例中,浮點暫存器18亦可包括浮點狀態及控制暫存器(floating point status and control
register;FPSCR),該控制暫存器可保存浮點旗標值、浮點捨入模式等。在一些實施例中,通用暫存器16亦可包括程式狀態暫存器(program status register;XPSR),該程式狀態暫存器可保存整數旗標值、及與當前上下文有關的其他資訊。
在通用暫存器R0-R15之中,暫存器R0-R12用於儲存通用運算元,諸如用於算術或邏輯指令的輸入運算元或用於導出位址來載入/儲存指令用於存取記憶體系統6的運算元。可能使用通用暫存器R13至R15用於此等通用運算元,但該等通用暫存器亦服務其他控制函數。
暫存器R15用作程式計數器(program counter;PC)暫存器,該程式計數器暫存器儲存提供由處理電路4到達的當前程式點的指示的程式計數器。程式計數暫存器可以由擷取級8使用以決定從記憶體系統擷取哪些指令。
暫存器R14用作鏈接暫存器(link register;LR),該鏈接暫存器用於當呼叫函數時儲存函數返回位址,使得當完成與函數相關聯的處理,則鏈接暫存器中的位址可以用於將程式流重新導引回在函數呼叫指令之後的下一指令。此外,鏈接暫存器可以在發生異常時用於儲存異常返回值,該異常返回值提供了用於在遇到對應異常返回條件時控制拆疊架構狀態的資訊。這將在下文更詳細論述。
暫存器R13用作堆疊指標暫存器,該堆疊指標暫存器提供了指示記憶體中的堆疊資料結構的位址的堆疊指標。堆疊資料結構可以用於當發生異常條件時保存架構狀態,並且用於當發生異常返回條件時恢復架構狀態。如第3圖所示,分組暫存器R13,使得在硬體中提供數個不同的實體暫存器,各者可使用暫存器區分符R13存取,而當規定R13時取決於當前安全域及處理電路的模式來選擇特定分組的暫存器。
例如,分組的堆疊指標暫存器可包括安全主堆疊指標暫存器(MSP_S)、安全處理堆疊指標暫存器(PSP_S)、較不安全主堆疊指標暫存器(MSP_LS)及較不安全處理堆疊指標暫存器(PSP_LS)。大體上,當在安全域S中時處理電路4可存取安全堆疊指標暫存器MSP_S及PSP_S,但當在較不安全域NS中時不可存取。較不安全堆疊指標暫存器MSP_LS及PSP_LS可在較不安全域中存取。大體上,期望在線程模式T內使用處理堆疊指標PSP_S或PSP_LS,並且期望在處置器模式H內使用主堆疊指標MSP_S或MSP_LS。分別為處置器模式及線程模式提供分離的主及處理堆疊可以使開發異常處置器代碼更為簡單,因為其意味著異常處置器可餘留在主堆疊上的任何資料大體上對於在異常返回之後在線程模式中運行的線程不可存取。此舉可以簡化開發異常處置器代碼,這是因為異常處置器不需要包括用於從主堆疊資料結構清除所有其資料的指令。然而,如下文將更詳細
論述,在線程模式T中的一些過程可能使用主堆疊指標,而在控制暫存器32中儲存的堆疊指標選擇值30控制當處於線程模式T時應當使用主堆疊指標還是處理堆疊指標。因此,可不僅基於當前模式(線程或處置器)及當前域(安全或較不安全)的組合,而且基於堆疊指標選擇值30來決定應當使用哪個堆疊指標。如第3圖所示,堆疊指標選擇值30可在安全性狀態之間分組,使得安全及較不安全域可以獨立地控制安全及較不安全線程模式分別使用主堆疊指標,從而使用堆疊指標選擇值30的分離的安全及較不安全版本SPSEL-S、SPSEL-LS。
大體上,在處置器模式H中操作的異常處置器或在線程模式T中操作的線程的主體內,選擇安全或不安全堆疊指標可取決於當前安全域,其中處理電路4正執行代碼。針對異常進入及返回,從由堆疊指標識別的堆疊執行狀態的堆疊及拆疊,該堆疊指標與在發生異常之前運行的背景代碼的安全域相關聯。
控制暫存器32亦可包括特權控制值31,該特權控制值控制在線程模式中執行的代碼是有特權還是無特權的。特權控制值可以針對安全及較不安全域不同地設定(例如,安全線程模式可以是無特權的,而較不安全線程模式可以是有特權的,或者反之亦然)。或者,安全及較不安全線程模式二者可以在相同特權位準下操作。將瞭解,特權控制值31僅係一個實例,並且可存在使用控制暫存器中儲存的架構狀態以控制在安全/較不安全線程模
式中分配給代碼的特權位準的其他方式。在第3圖的實例中,分組特權控制值31,使得提供分離的安全及較不安全特權控制值PRIV-S及PRIV_LS來用於控制分別在安全及較不安全域中由線程模式使用的特權位準。然而,另一方法可以係提供在域轉換時切換的單個控制位元。
如第3圖所示,控制暫存器20可包括配置暫存器34,該配置暫存器可儲存配置資料,包括可規定處理電路是否應當如下文論述回應於安全閘道器指令而執行重入檢查的重入賦能配置指示符36。
此外,控制暫存器20可包括用於規定限制位址的一或多個安全堆疊指標限制暫存器38、39,該限制位址提供對由安全堆疊指標MSP_S及PSP_S指向的安全堆疊資料結構可以增長的程度的限制。在此實例中,存在兩個限制暫存器,限制暫存器39用於安全主堆疊指標MSP_S,並且限制暫存器38用於安全處理堆疊指標PSP_S。在每個限制暫存器內的限制位址可以用於限制堆疊資料結構可以延伸多遠。若處理電路或異常控制電路28偵測到主或處理安全堆疊資料結構已經延伸超出對應的限制暫存器38、39中的限制位址(或偵測到試圖將堆疊指標更新為超出限制位址的值),則異常控制電路28可觸發待發信的故障,該故障可本身觸發異常並且隨後異常處置器可藉由採取一些恢復動作或其他措施對故障進行回應以確保安全性。此舉可以用於確保攻擊者不可以藉由導致如此多的異常、或藉由呼叫如此多的函數來破壞安
全性量測,使得堆疊資料結構延伸到用於其他資料的區域中,這可以損壞彼等其他區域中的彼資料。
處置異常進入及返回的一個態樣係堆疊及拆疊架構狀態。當發生異常條件時,在暫存器14中儲存的一些架構狀態可需要保存到記憶體,使得即使在已經進入異常之後執行的異常處置器覆寫彼等暫存器,當期望返回到在發生異常之前執行的處理時,暫存器的先前內容可以隨後從記憶體恢復。由第3圖所示的分組堆疊指標暫存器中的一個指向的堆疊資料結構可以用於保存此狀態。
出於效能原因,將可需要回應於此種異常進入事件保存的暫存器分為兩組(稱為「呼叫方」暫存器及「被叫方」暫存器)可以係有用的。呼叫方暫存器係在硬體中實施的異常控制電路28負責保存到堆疊的暫存器。因此,不需要異常處置器的軟體包括用於將呼叫方暫存器保存到堆疊資料結構的指令。
如第4圖所示,呼叫方暫存器可包括通用暫存器的子集。在此實例中,呼叫方狀態包括通用暫存器R0、R1、R2、R3及R12,鏈接暫存器LR(R14),在處理異常之後處理將返回的返回位址的指示,以及可提供用於控制條件指令的結果的條件碼的程式狀態暫存器XPSR。將瞭解,這僅係哪個暫存器狀態可以包括在呼叫方暫存器中的一個特定實例。
如在第4圖的右手部分中的基本堆疊訊框中圖示,針對不使用浮點暫存器18的任一者的過程,基本
堆疊訊框僅可包括某些整數暫存器16或控制暫存器20並且返回位址。然而,若在異常之前執行的過程亦使用浮點暫存器18,則如在第4圖的左手側上的延伸堆疊訊框中圖示,呼叫方暫存器亦可包括浮點暫存器18的子集S0-S15。浮點上下文亦可以包括額外控制暫存器,諸如用於控制浮點操作的處理的浮點狀態控制暫存器FPSCR。
如在第4圖的中間部分中圖示,延伸浮點堆疊訊框亦可能包括為額外浮點上下文保留的空間,但在處置異常進入時不實際上將浮點上下文保存到堆疊上的此保留空間。而是,可以使用惰性浮點上下文保存,其中回應於異常,在堆疊上保留空間,使得在異常進入之後產生的新堆疊指標係可預測的,但推遲將浮點上下文實際保存到此保留空間,直至在異常之後首次需要浮點狀態。以此方式,若在已經由異常處置器存取任何浮點上下文之前發生後續異常返回,則可以避免在將浮點上下文從浮點暫存器18保存到記憶體時耗費的時間及能量。
因此,第4圖中所示的所有示例堆疊訊框係呼叫方暫存器堆疊訊框(第一堆疊訊框)的實例,該呼叫方暫存器堆疊訊框包括從呼叫方暫存器保存的狀態,但不包括與被叫方暫存器相關聯的狀態。
在已經由異常控制電路28回應於異常事件將呼叫方堆疊訊框保存到堆疊之後,可開始執行異常處置代碼,並且隨後若在其執行期間已知異常處置器軟體將覆寫
此狀態,則該異常處置器軟體可將狀態從額外被叫方暫存器保存到堆疊上。然而,此種藉由異常處置器的狀態保存係藉由控制處理電路4的載入/儲存單元來執行,以回應於在異常處置器代碼中提供的載入/儲存指令而將相關資料保存到記憶體,其與異常控制電路28控制硬體中的堆疊相比,該保存可係較慢的。然而,可以有益地允許在呼叫方及被叫方暫存器狀態之間分割,使得在已經進入異常之後執行的軟體可以影響需要保存哪些暫存器。若異常處置器不會存取特定被叫方暫存器(通用暫存器R7或浮點暫存器S27,例如),則異常處置器不需要保存對應架構狀態,並且亦已經避免與完成在異常控制電路28及硬體中保存此狀態相關聯的能量及時間。可以遇到用於異常處置器的代碼寫入器或此種代碼的編譯器以在使用額外被叫方暫存器之前首先使用呼叫方暫存器,用於減少需要在軟體中保存的額外狀態的機會。
然而,若異常進入導致從安全域到較不安全域的轉換,並且在異常之前在線程模式中執行的初始背景處理處於安全域中,則若僅藉由異常控制電路28將呼叫方暫存器保存到記憶體,這可使被叫方暫存器在暫存器組14內對較不安全異常處置器可存取以在最後異常之後執行。此舉可係不當的,因為被叫方暫存器可以包括從SAU 24原本防止較不安全異常處置器存取的記憶體位址空間的安全區域導出的資訊。
由此,針對從安全域到較不安全域的某些轉換,其中先前在安全域中執行背景處理,除了保存呼叫方暫存器之外,異常控制電路28亦可將被叫方暫存器保存到相關堆疊資料結構,並且可清除已經保存的暫存器(包括呼叫方及被叫方暫存器)的上下文。因此,藉由在硬體中執行額外狀態保存,這意味著通常保存被叫方暫存器的軟體不可以存取在發生異常之前在此等暫存器中儲存的潛在安全資訊。
因此,針對某些異常進入轉換,不儲存第4圖所示的呼叫方堆疊訊框,而是可保存如第5圖所示的第二堆疊訊框(在藉由異常控制電路28的硬體控制下,亦即,不需要由處理電路4執行顯式載入/儲存指令)。再者,如第5圖的左手部分中圖示,針對不需要浮點上下文的情況,則堆疊訊框可省去任何浮點狀態的保存。在此情況下,第二堆疊訊框包括第4圖所示的呼叫方狀態並且亦包括額外被叫方狀態,該額外被叫方狀態包括暫存器R4-R11。由硬體保存的額外狀態亦可包括完整性簽名50,這將在下文更詳細描述。或者,針對亦需要保存浮點上下文的情況,則除了第4圖的左手實例中圖示的呼叫方狀態之外,如在第5圖的右手側中圖示,延伸的第二堆疊訊框亦包括額外被叫方浮點暫存器S16至S31。儘管未在第5圖中圖示,一些實施例可為被叫方及呼叫方浮點暫存器保留空間,並且以與第4圖所描述者相同的方式惰性地保存彼等暫存器。
因此,第4圖的實例中圖示的基本呼叫方堆疊訊框可係第一異常堆疊訊框的實例,並且亦包括與被叫方暫存器相關聯的額外架構狀態的第5圖的堆疊訊框實例可係第二異常堆疊訊框的實例,該第二異常堆疊訊框包括來自從第一異常堆疊訊框省去的暫存器的架構狀態資料的子集。在異常進入轉換時,異常控制電路可選擇應當由硬體保存第一及第二異常堆疊訊框的哪一個,例如取決於與在異常之前及之後執行的處理相關聯的安全域、或取決於與控制暫存器20相關聯的其他狀態資訊。是否保存浮點上下文以及是否使用惰性浮點上下文保存選項可取決於在控制暫存器20的一個控制暫存器中規定的控制參數。
當由異常控制硬體28保存呼叫方及被叫方狀態二者時,完整性簽名50包括在第二異常堆疊訊框中,但第4圖所示的第一異常堆疊訊框中缺少該完整性簽名。完整性簽名50可具有特殊保留值,該保留值不對應於可執行位址,例如若試圖從該位址擷取指令,則導致待發信的故障的位址。此完整性簽名可以用於偵測某些形式的攻擊,該攻擊可在處理電路上放置以嘗試規避由硬體提供的安全性保護,從而迫使在安全與較不安全域之間進行分割。一種可能的攻擊手段可以係攻擊者試圖執行異常進入轉換以進入處理異常,但稍後將不同類型的返回轉換偽造為期望從異常進入返回的轉換,諸如執行函數返回轉換。簽名50可位於堆疊訊框上若進行函數返回則期望儲
存函數返回位址的一位置處,並且因為完整性簽名50可具有不對應於可執行位址的特殊值,這意味著沒有有效函數返回位址可以匹配簽名。因此,若在函數返回時偵測到返回位址匹配完整性簽名50(或其對應於不可執行位址),則可以觸發故障,因為其意味著實際上回應於異常進入事件將用於執行函數返回的堆疊訊框保存至堆疊,該異常進入事件可以係正執行攻擊的指示符。此外,在從與被叫方暫存器相關聯的額外架構狀態存在於堆疊上的異常返回時,因為缺乏簽名可指示已經觸發不適當的異常進入及返回事件序列,安全性檢查的部分可係檢查在對應於完整性簽名50的堆疊中的相關偏移處的值是否具有期望值。
因此,在堆疊上提供完整性簽名係可針對某些異常進入轉換執行的保護性動作的實例。特定而言,可針對至少一種形式的安全線程模式到較不安全處置器模式異常進入轉換發生此種將完整性簽名保存到堆疊上。然而,完整性簽名50不包括在如第4圖所示的基本呼叫方堆疊訊框中,因為當亦在安全域中執行從安全域到異常處置器的異常進入時,可期望不需要保護性量測。針對在線程模式中處理安全背景處理時發生安全異常並且在處理安全異常期間不發生其他異常使得下一異常返回僅返回先前的安全背景處理的情況,在硬體中避免被叫方狀態(包括完整性簽名)可以幫助減少中斷處置時延。
然而,如第8圖所示,針對安全線程到較不安全處置器模式異常進入轉換省去保護性動作可以有時提供攻擊者可以利用的手段。第8圖圖示了以下事件序列:
1.中斷(IRQ 1)導致轉換到安全處置器模式。藉由異常控制硬體28將呼叫方保存的暫存器自動地保存至安全處理堆疊(由PSP_S指示)。為了減少中斷處置時延,未保存被叫方保存的暫存器,因此保存第4圖所示類型的第一異常堆疊訊框(省去完整性簽名)。這係可接受的,因為靶狀態係安全,因此可以信任該靶狀態不損壞此等暫存器。
2.另一中斷(IRQ 2)導致到非安全處置器模式的轉換。在此點處,硬體保留呼叫方及被叫方保存的暫存器二者,因為轉換係到非安全狀態,不能信任該狀態來處置安全值。因此,將第5圖所示類型的第二異常堆疊訊框保存到由MSP_S指示的安全主堆疊。主堆疊用作在處置器模式中的處理期間發生的此異常。
3.控制非安全域的攻擊者可以隨後偽造回到安全線程模式的異常返回或函數返回序列(而非期望的異常返回到安全處置器模式以從IRQ2返回)。因為在步驟1保存到安全處理堆疊的堆疊訊框在其堆疊上不具有完整性簽名,若在返回到安全線程模式時的拆疊試圖拆疊在步驟1保存到安全處理堆疊的僅呼叫方異常堆疊訊框,則存在安全性漏洞的可能。
在步驟1,此問題可以藉由以下操作解決:設定堆疊指標選擇值30以指示線程模式應當隨後使用主堆疊指標(main stack pointer;MSP)來用於拆疊操作,而非通常在線程模式中使用的處理堆疊指標(process stack pointer;PSP)。此舉意味著若在步驟3攻擊者偽造虛假異常返回,則拆疊將來自主堆疊並且不係未保護的處理堆疊。因為在主堆疊上的堆疊訊框實際上用於IRQ2返回(其返回到處置器模式)並且不用於返回到線程模式,其他完整性檢查可能未通過(例如,當拆疊堆疊訊框時,可在實際返回的線程與指示為意欲返回的模式的在拆疊狀態中的模式之間偵測到不匹配)。因此,可以偵測到攻擊。
第6圖係顯示可由異常控制電路支援的數個不同形式的異常進入轉換的表。如表的前四列所示,選擇哪種異常進入轉換取決於與在發生異常進入之前正執行的背景處理相關聯的安全域及模式、如由用於線程模式的堆疊指標選擇值30指示的背景處理是使用主堆疊指標還是處理堆疊指標、以及取決於與異常條件本身相關聯的安全域。例如,已經發生的異常類型可暗示其是安全還是較不安全異常,或異常可與規定哪個安全域與異常相關聯的額外控制資訊相關聯。注意到,因為若背景模式係線程模式,則僅可以使用處理堆疊指標,不存在對應於在使用處理堆疊指標的處置器模式中執行的背景處理的轉換。因
此,針對背景模式係處置器模式的情況,不存在表的行9至12的等效形式。
針對不同異常進入轉換的每一者,第6圖的表的第五列示出了使用哪個堆疊訊框格式。
針對在行5至8、11及12中指示的轉換,僅需要保存呼叫方保存的暫存器,因為正執行的背景處理係在較不安全域中並且因此若不保存被叫方暫存器,則不存在丟失敏感資訊的風險。
針對行2、4及10中顯示的轉換,背景處理係在安全域中並且用於異常的靶安全域係較不安全域並且因此被叫方保存的暫存器的額外狀態保存藉由硬體中的異常控制電路28執行以防止在此等暫存器中的資料洩露到較不安全異常處置器。
針對第8圖的行1、3及9中顯示的轉換,儘管架構可僅需要保存呼叫方暫存器,其亦可許可可選地保存被叫方暫存器(若期望)。此舉可以係有用的,因為若系統首先執行需要保存呼叫方及被叫方保存的暫存器二者的一類型的異常進入轉換,但隨後當保存被叫方暫存器時,發生較高特權異常並且因此替代地選擇不需要保存被叫方暫存器的不同異常進入,對硬體而言可較簡單地繼續保存被叫方暫存器,而非暫停保存並且必須取消已經回應於第一異常發生的與先前保存被叫方暫存器相關聯的改變。寫入鏈接暫存器R14的異常返回值可包括旗標DCRS,可將該旗標設定為指示是否遵循預設堆疊規則並
且僅呼叫方暫存器在堆疊上,或者指示是否已將被叫方暫存器放置在堆疊上。當執行異常返回時可以檢查此旗標以決定需要執行哪種拆疊,並且該旗標亦可用於決定應當基於完整性簽名執行哪種完整性檢查。置於鏈接暫存器中的此異常返回值亦可以在異常返回期間規定用於參考的其他資訊,諸如安全還是較不安全堆疊用於堆疊、指示由其執行堆疊的操作模式的旗標(以及期望對應異常返回的操作模式)、或指示堆疊訊框是標準的僅整數堆疊訊框還是延伸的浮點堆疊訊框的旗標。將瞭解,亦可以在異常返回值中指示其他資訊。
第7圖係顯示數種不同形式的異常返回轉換的表,該異常返回轉換可以由異常控制電路28用於將處理返回到在發生異常之前執行的先前處理。如表的前5列中所示,已選的特定轉換取決於與異常相關聯的安全域,當請求異常返回時堆疊指標返回、模式返回及安全性狀態返回的安全性狀態。正返回的是哪個堆疊指標、模式及安全性狀態可基於與觸發異常返回事件的異常返回指令相關聯的資訊來決定。因為由於異常發生,可以例如存在函數呼叫,這原本將導致在較不安全域與安全域之間的轉換,請求異常返回時的安全性狀態可與同初始異常相關聯的安全域不同。因此,亦可以從當發生異常時從置於鏈接暫存器中的異常返回值中的旗標決定與異常相關聯的安全域。類似於第6圖中的異常進入轉換,因為在處置器模式中不可能使用處理堆疊指標,針對第7圖,在行5、6、
11、12、17及18中不存在「返回到處置器」的等效轉換。此外,因為亦禁止此等轉換,在當前處於較不安全狀態時不存在從安全異常返回的異常返回轉換(亦即,沒有行1至6的鏡像,其中當請求異常返回時的安全性狀態係較不安全的)。儘管較不安全異常可以隨後呼叫安全函數,該安全函數隨後觸發異常返回,針對安全異常,不允許安全異常隨後呼叫觸發異常返回的較不安全函數。
針對異常返回轉換的每一者,第7圖的第六列示出了是否期望被叫方暫存器存在於與此異常相關聯的堆疊訊框上,並且因此示出了是否需要任何完整性簽名檢查來決定在堆疊訊框上的特定偏移處的值是否匹配期望的完整性簽名值。針對大部分異常返回轉換,不期望被叫方暫存器並且不檢查完整性簽名,或者期望被叫方暫存器並且執行完整性簽名檢查。然而,針對行1、3及5中顯示的轉換(其對應於從第8圖的行1、3及9的異常進入轉換,除了呼叫方暫存器之外,該等異常進入轉換可選地保存被叫方暫存器),是否期望被叫方暫存器及是否檢查完整性簽名可取決於DCRS旗標,當發生異常時,該DCRS旗已在鏈接暫存器中的異常返回值中保存。
上文關於第8圖描述了利用缺少完整性簽名的潛在攻擊,該攻擊藉由回應於安全到安全異常進入轉換設定堆疊指標選擇值30來解決。然而,為了防範另一攻擊形式,可能期望提供用於偵測一連串轉換的架構構件,在堆疊指標選擇值30指示主堆疊指標將由線程模式用作
已選堆疊指標的情境中,該等轉換導致切換回安全線程模式。
處理電路4可支援稱為閘道器指令(或「安全閘道器」指令,SG)的某一指令,當從較不安全域切換到安全域時,該指令可以用於標記到安全域中的有效進入點。在程式流從較不安全域中的處理到指令位址(SAU 24指示該指令位址與安全域相關聯)處的指令的改變時,處理電路4可檢查在改變程式流之後的靶位址處執行的第一指令是否係安全閘道器指令,並且若不是,則處理電路4可觸發故障。安全代碼的寫入器或編譯器可以標記代碼點,於此允許較不安全代碼使用安全閘道器指令呼叫到安全代碼中。此舉防止較不安全代碼能夠分支到安全代碼內的任意位置中,例如,這可以藉由允許避開一些安全性量測來導致安全漏洞。例如,若安全代碼包括密碼檢查,若不提供防範任意分支點的保護,則此舉可以允許較不安全代碼分支到安全函數超出密碼檢查的一部分,從而有效地允許避開密碼檢查,即使非安全代碼不擁有正確密碼時亦是如此。這係相對簡單化的實例,但可存在其他更複雜的實例,其中若較不安全代碼能夠分支到安全函數內的某些點,則可存在顯著安全性風險。因此,提供安全閘道器指令可以保護到安全代碼中的有效進入點,並且任何其他進入點可被視為觸發故障的無效進入點以改進安全性。
因為安全閘道器指令將通常存在於到安全域中的有效進入點處,則安全閘道器指令亦可以用於觸發對安全主堆疊指標的檢查,以檢查使用暫存器MSP_S中儲存的安全主堆疊指標是否安全。即使攻擊者為惡意安全函數提供包括安全閘道器指令的代碼,仍可以信任安全閘道器指令以觸發處理電路4對堆疊指標執行額外安全性檢查,因為即使安全線程模式代碼的剩餘部分係惡意的,攻擊者不可以避免提供安全閘道器指令,因為在進入安全線程模式代碼的點處除了安全閘道器指令之外的任何指令將觸發故障。
在一個實例中,在從較不安全域轉換時藉由安全閘道器指令觸發的堆疊指標驗證動作可簡單地檢查堆疊指標選擇值30是否等於0,從而指示應當在線程模式中使用主堆疊指標。因此,若堆疊指標選擇值等於0,這可觸發故障。此舉可防範攻擊,但可排除一些有效用例,其中仍可期望允許安全線程模式使用主堆疊指標。
由此,在下文論述的實例中,堆疊指標驗證動作可替代地涉及觸發許可檢查,以檢查記憶體存取檢查電路22是否許可載入請求,該載入請求將從堆疊指標選擇值30指示的堆疊指標導出的靶位址規定為將在安全線程模式中使用。因此,在先前已經將堆疊指標選擇值30設定為指示主堆疊指標的情況下,許可檢查可基於在安全主堆疊指標暫存器MSP_S中儲存的位址,以檢查是否許可
線程模式存取由主堆疊指標指示的堆疊資料結構,並且由此檢查使用該堆疊指標是否安全。
在一些情況下,安全閘道器指令可實際上觸發到靶位址的載入請求,以針對載入的靶位址調用由記憶體存取檢查電路22執行的許可檢查。此種載入請求亦可以用作防範重入情境的防禦,該重入情境有時可以導致不正確的處理結果。這在第9圖的實例中示出。在點1處,從較不安全狀態呼叫安全線程模式函數。在分支到安全狀態之後的第一指令應當係SG指令(否則出現故障)。在此呼叫之前,不安全狀態設置定時器中斷以在特定時間量之後觸發。不安全代碼可以針對此定時器安排以在關鍵安全操作期間觸發,該關鍵安全操作未經設計為支援重入。當觸發定時器時,將控制重新導向較不安全處置器模式。較不安全處置器模式隨後返回較不安全線程模式(去特權操作)。在點2處,較不安全線程模式再次呼叫到安全狀態中。因為當尚未完成關鍵操作時再次進入安全狀態,此舉可以導致重入攻擊,該關鍵操作未經設計為安全防範重入的。例如,關鍵操作可以係諸如更新事件計數器的操作,該事件計數器用於計數發生給定事件的次數。回應於每次發生事件,可以呼叫以下函數(其中#count表示在記憶體中儲存計數器值的位址):LDR r0,[#count] //從記憶體載入當前計數值
ADD r0,r0,#1 //將一添加到當前計數值
STR r0,[#count] //將更新的計數值儲存回記憶體。
若在載入與儲存指令之間發生定時器中斷,並且隨後在後續發生該事件時再次呼叫函數,則此舉可以導致在計數時缺少兩次事件發生之一,因為執行函數的兩種實例將讀取用於載入指令的相同初始值,並且因此儘管函數被呼叫兩次,將僅發生一次計數遞增。將瞭解,這係相對簡單的實例,並且可以提供防範重入的不安全代碼的眾多其他實例。
儘管此種重入問題可影響安全及較不安全函數二者,可能不認為提供用於檢查是否針對較不安全代碼發生重入的架構功能是合理的,因為可存在軟體技術,藉此軟體的寫入器或編譯器可以將較不安全函數設計為安全的來防範重入或包括用於偵測是否發生重入的檢查,並且儘管此舉可增加代碼或降低效能,當在較不安全域中執行代碼時可能不期望引入任何安全漏洞。然而針對安全域,此種用於偵測或防範重入的軟體技術可能引入安全漏洞,並且因此減少此種漏洞的機會,可較佳地針對是否出現重入提供架構檢查。
針對重入檢查,認識到當已經存在從安全域到較不安全域的異常進入轉換(第9圖中的實線)時或當已經存在從安全域到安全域的異常進入轉換(第9圖中的虛線)之後從安全域到較不安全域的函數呼叫時,發生針對安全線程模式函數的重入情境。在安全到較不安全異常轉
換(實線)的情況下,將期望完整性簽名值,並且因此在線程模式中再次從較不安全域呼叫安全函數(在第9圖中標記為呼叫2)時,當存在安全閘道器時,可觸發載入,從而將其靶位址規定為基於步進指標選擇值30選擇來用於安全線程模式中的已選堆疊指標。處理電路可以檢查完整性簽名50是否存在於彼位址處,並且若如此,則觸發故障,因為這將指示在對應異常返回中尚未拆疊在從安全域到較不安全域的異常進入轉換時保存到記憶體的相關堆疊訊框,其係以下指示:這是在先前未完成處理相同安全函數的先前執行個體的情況下到相同安全函數代碼中的重入情境。
另一方面,若已使用函數呼叫(第9圖中的虛線),完整性簽名50不存在於由已選堆疊指標值指示的堆疊上的位置處,但在此情況下,可以偵測到重入,因為仍將在進行第二呼叫安全線程模式的點處的堆疊指標選擇值(stack pointer selection value;SPSEL)30設定為0,從而指示將使用主堆疊指標,因為在第9圖中以虛線標記為3的轉換已導致將堆疊指標選擇值設定為0,並且在重入的情況下,尚未將堆疊指標選擇值設定回1,因為尚不存在與第9圖中標記為3的中斷相反的任何對應異常返回轉換。因此,在呼叫安全線程模式函數時具有值0的SPSEL再次係正發生重入的標誌。
因此,此重入檢查的任一方式可防止由一連串轉換導致的不正確處理結果,該等轉換導致在較早呼叫已
中斷且尚未恢復的相同函數之後在安全線程模式中呼叫安全代碼。
不總是需要針對安全閘道器指令執行此種重入檢查,該安全閘道器指令在從較不安全域呼叫之後執行。如第3圖所示,重入賦能配置位元36可在配置暫存器34中提供以控制在從較不安全域到與安全域相關聯的位址處的安全閘道器指令轉換時是否需要重入檢查。例如,若已知安全函數具有安全以防範重入的代碼,則可以去能重入檢查以改進效能並且節省功率。然而,即使去能重入檢查,安全閘道器指令仍可觸發處理電路發佈對對應於已選堆疊指標的靶位址的載入請求、或發佈觸發對靶位址的許可檢查的另一請求類型,因為這仍防範涉及操縱如上文論述的堆疊指標的一些類型的攻擊。
第10圖圖示了示出使用第1圖所示的處理設備2執行資料處理的方法的流程圖,該方法包括回應於安全閘道器指令而執行的檢查。於步驟100,獲得待處理的下一指令。於步驟102,偵測當前域是否係較不安全域,並且於步驟104,偵測是否從記憶體區域擷取下一指令,該記憶體區域由SAU 24中的屬性資料標記為與安全域相關聯。通常,在從較不安全域到從記憶體的安全區域擷取的指令的轉換時,可需要某些檢查來檢查進入安全域中是否有效。當前域係較不安全域並且從安全記憶體擷取下一指令的情況被稱為控制流的給定改變。若當前域係安全域或從記憶體的較不安全區域擷取指令,則這不係控制流
的給定改變並且不需要後續的安全性/重入檢查。若當前域係安全域或從較不安全記憶體擷取指令,則於步驟106,可以根據由彼指令表示的任何函數正常執行下一指令。
若識別了從較不安全域到從安全記憶體擷取的指令的控制流的給定改變,則於步驟108,處理電路4檢查下一指令是否係安全閘道器(secure gateway;SG)指令。若下一指令係與安全閘道器指令不同的任何指令,則於步驟110,出現安全故障。此舉確保系統僅可以在由安全閘道器指令標記的代碼處的某些點轉換到安全域。
若將指令識別為安全閘道器指令,則於步驟112,處理電路4決定當前操作模式是否係線程模式。若當前模式係處置器模式,則可省去用於重入及堆疊指標驗證的後續檢查,並且於步驟106,可正常地執行指令。針對安全閘道器指令,此種正常執行可以包括至少一個安全性檢查,用於檢查是否允許轉換到安全域中。若通過針對安全閘道器指令的所有需要的安全性檢查,則執行安全閘道器指令導致處理電路4更新規定操作的當前安全域的暫存器,使得當前域從較不安全域切換到安全域。
注意到,在當前域係安全域的情況下,亦可能遇到安全閘道器指令。這可係因為可從較不安全函數或從安全函數呼叫相同代碼。在已經處於安全域時執行安全閘
道器指令的情況下,則如上文論述,程式流將從步驟102繼續進行到步驟106。
若於步驟112,決定當前模式係線程模式,則於步驟114,回應於安全閘道器指令,處理電路4觸發記憶體存取檢查電路22執行許可檢查以決定是否許可載入請求,該載入請求請求在從已選堆疊指標導出的靶位址處從記憶體6載入資料,該已選堆疊指標由堆疊指標選擇值30指示為用於安全線程模式。特定而言,靶位址可等於在已選暫存器MSP_S或PSP_S中儲存的堆疊指標,該暫存器取決於堆疊指標選擇值30來選擇。觸發許可檢查導致MPU 26檢查靶位址以防範存取許可。MPU 26可維持分別用於安全及較不安全域的分離的記憶體屬性條目集合。針對安全閘道器指令,儘管當前域仍可係較不安全域,可檢查載入請求以防範與安全域相關聯的存取許可。再者,由安全閘道器指令觸發的載入被認為是有特權存取請求還是無特權存取請求可取決於第3圖所示的特權控制值31,該特權控制值規定從安全線程模式存取應當被視為有特權還是無特權的。
於步驟114的許可檢查可以數種不同方式觸發。在一個實例中,處理電路4可實際上發佈載入請求,從而與正執行實際載入操作的情況類似地規定靶位址。或者,可以將不同類型的請求發佈到記憶體存取檢查電路22,例如,儲存請求或位址檢查請求,該請求在不觸發對記憶體系統6的實際記憶體存取的情況下觸發許可檢
查。在執行重入檢查的情況下,發佈載入請求可最為有效(因為於步驟122將需要由此種載入請求載入的值),但當不執行重入檢查時,可以使用另一類型的請求。或者,即使去能重入檢查,仍可發佈載入請求以調用記憶體存取許可檢查,用於無論賦能還是去能重入檢查,藉由賦能發佈相同類型的請求來降低複雜性。
因此,於步驟116,基於藉由MPU 26查找記憶體存取許可,記憶體存取檢查電路22決定是否許可載入靶位址,並且若否,則於步驟118,出現記憶體保護故障。因此,若將安全線程模式視為無特權的並且與已選堆疊指標相關聯的位址導向有特權記憶體(若當前選擇主堆疊指標,則通常期望有特權記憶體),則可能不許可載入,並且記憶體故障可防止後續安全代碼以不適當或導致安全漏洞的方式操縱主堆疊指標值。
若通過許可檢查(將許可載入靶位址),則於步驟120,處理電路偵測到重入賦能配置值36是否指示賦能重入檢查。若重入檢查去能,則方法繼續進行到步驟106以如上文描述正常地執行SG指令。注意到,即使重入檢查去能,於步驟116仍觸發許可檢查以提供防範堆疊操縱攻擊的保護。
若賦能重入檢查,則方法繼續進行到步驟122。若於步驟114,尚未發佈載入請求,則可以於步驟122發佈規定靶位址的載入請求(儘管實際上,在賦能重入檢查的情況下,可以更有效地於步驟114發佈載入請求
以觸發許可檢查)。無論於步驟114還是步驟122發佈載入請求,於步驟122,處理電路4偵測到回應於到靶位址的載入請求從記憶體6載入的值是否匹配完整性簽名50,當如第5圖所示地執行被叫方狀態的額外狀態保存時,該完整性簽名將在堆疊上保存。若載入的值匹配完整性簽名,則存在重入情境並且因此於步驟124,出現安全故障以防止當尚未完成第一實例時藉由執行安全函數的第二實例導致的不正確處理結果。
此外,若賦能重入檢查,則於步驟126,處理電路檢查堆疊點選擇值30是否指示當前選擇的狀態指標係主堆疊指標,亦即,在此實例中堆疊指標選擇值是否等於0。若當前選擇的堆疊指標係主堆疊指標,則再次於步驟124,出現安全故障。若載入的值不匹配完整性簽名並且當前選擇的堆疊指標係處理堆疊指標(堆疊指標選擇值等於1),則於步驟106,因為已通過重入檢查,正常地執行SG指令。
因此,總而言之,藉由使用安全閘道器指令來觸發驗證堆疊指標值及當賦能時的重入檢查,這可以提供防範攻擊的保護以及藉由避免需要軟體偵測或緩解重入情境來改進效能。
第11圖示出可使用的模擬器實施方式。儘管先前描述的實施例關於用於操作支援相關技術的具體處理硬體的設備及方法來實施本發明,亦可能根據本文描述的實施例提供經由使用電腦程式來實施的指令執行環
境。此種電腦程式經常被稱為模擬器,考慮到其提供硬體架構的基於軟體的實施方式。模擬器電腦程式的變化包括模仿器、虛擬機、模型及二進制轉換器,包括動態二進制轉換器。通常,模擬器實施方式可在主處理器230上運行,視情況運行主作業系統220,從而支援模擬器程式210。在一些佈置中,在硬體與所提供的指令執行環境之間及/或在相同主處理器上提供的多個不同指令執行環境之間可能存在多層模擬。歷史上,已需要高效處理器提供以合理速度執行的模擬器實施方式,但此種方法可在某些情況下為合理的,諸如當需要運行另一處理器本端的代碼以獲得相容性時,或出於再用的原因。例如,模擬器實施方式可提供具有不由主處理器硬體支援的額外功能的指令執行環境,或提供通常與不同硬體架構相關聯的指令執行環境。模擬的概述在「Some Efficient Architecture Simulation Techniques」,Robert Bedichek,Winter 1990 USENIX Conference,第53頁至第63頁中給出。
就此而言,實施例先前已經在模擬實施例中參考特定硬體構造或特徵進行描述,等效功能可由適當的軟體構造或特徵提供。例如,特定電路可在模擬實施例中實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取記憶體)可在模擬實施例中實施為軟體資料結構。此外,可以將用於在硬體設備2中存取記憶體6的實體位址空間模仿為經模擬的位址空間200,藉由模擬器210將該
經模擬的位址空間映射到由主作業系統220使用的虛擬位址空間上。在先前描述的實施例中參考的一或多個硬體元件存在於主硬體(例如,主處理器230)上的佈置中,一些模擬實施例可在適當時利用主硬體。
模擬器程式210可儲存在電腦可讀取儲存媒體(其可係非暫時性媒體)上,並且向靶代碼(其可包括應用程式、作業系統及超管理器)提供程式介面(指令執行環境),該程式介面與由模擬器程式210模型化的硬體架構的應用程式介面相同。因此,靶代碼的程式指令可使用模擬器程式210在指令執行環境內執行,使得實際上不具有上文論述的設備2的硬體特徵的主電腦230可以模仿此等特徵。模擬器程式可包括處理程式邏輯235、記憶體存取檢查程式邏輯240(包括MPU程式邏輯242及SAU程式邏輯244)及異常控制程式邏輯,該等邏輯提供模擬第1圖的硬體設備2的處理管線4、記憶體存取檢查電路22(包括MPU 26及SAU 24)及異常控制電路28的行為的功能。系統2的架構暫存器14亦可使用由模擬器代碼210維護的暫存器模仿程式邏輯255模仿,用於將靶架構的架構暫存器映射到由主硬體230使用的記憶體空間上。因此,當在處理靶代碼200時在程式流的給定改變之後的靶代碼200內識別安全閘道器指令時,在上文論述的實例中由硬體中的閘道器指令觸發的安全性檢查及重入檢查可以在第11圖的實例中替代地在軟體中藉由模擬器程式210執行。
在本申請案中,詞語「經配置為……」用於意謂設備的元件具有能夠進行所定義操作的配置。在此上下文中,「配置」意味著硬體或軟體的互連的佈置或方式。例如,設備可具有提供所定義操作的專用硬體,或者處理器或其他處理裝置可經程式設計為執行該功能。「經配置為」不暗示需要以任何方式改變設備元件以便提供所定義的操作。
儘管已在本文中參考隨附圖式詳細描述了本發明的說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習該項技術者可在其中實現各種變化及修改而不脫離由隨附申請專利範圍所定義的本發明的範疇及精神。
100:步驟
102:步驟
104:步驟
106:步驟
108:步驟
110:步驟
112:步驟
114:步驟
116:步驟
118:步驟
120:步驟
122:步驟
124:步驟
126:步驟
Claims (23)
- 一種資料處理設備,包含:處理電路,用於在至少包括一安全域及一較不安全域的複數個安全域的一個安全域中執行資料處理;記憶體存取檢查電路,用於取決於安全性屬性資料檢查是否允許一記憶體存取,該安全性屬性資料指示該複數個安全域中的哪個安全域與該記憶體存取的一靶位址相關聯;以及至少一個堆疊指標暫存器,用於將指示一堆疊資料結構的一堆疊指標儲存在記憶體中,其中:回應於程式流從該較不安全域中的處理到具有與該安全域相關聯的一指令位址的一靶指令的一給定改變:當該靶指令係與指示到該安全域的一有效進入點的一閘道器指令不同的一指令時,該處理電路經配置為觸發一故障;以及當該靶指令係該閘道器指令時,該處理電路經配置為觸發一堆疊指標驗證動作以驗證使用一已選堆疊指標暫存器中儲存的一已選堆疊指標是否係安全的。
- 如請求項1所述之設備,其中該堆疊指標驗證動作包含觸發一許可檢查,以檢查是否許可一載入 請求,該載入請求請求從該已選堆疊指標暫存器中儲存的該已選堆疊指標導出的一靶位址載入一值。
- 如請求項2所述之設備,其中該處理電路經配置為在複數個特權位準的一個特權位準處操作;以及若可應用於該靶位址的一已選存取許可集合規定禁止一已選特權位準存取該靶位址,則該記憶體存取檢查電路經配置為觸發一故障。
- 如請求項3所述之設備,其中:該處理電路經配置為在複數個操作模式的一個操作模式中執行資料處理;以及該已選特權位準包含與處理相關聯的一特權位準,該處理在程式流的該給定改變時在該處理電路的該安全域及一當前操作模式的一組合中。
- 如請求項3及4中任一項所述之設備,其中該已選存取許可集合包含當該處理電路的一當前域係該安全域時可應用於該靶位址的一存取許可集合。
- 如請求項2所述之設備,其中該靶位址等於該已選堆疊指標。
- 如請求項2所述之設備,其中回應於程式流的該給定改變,當該靶指令係該閘道器指令時,該處理電路經配置為回應於該閘道器指令而執行重入檢 查;當從該靶位址載入的一值係至少一個完整性簽名值之一時,該重入檢查包含觸發一故障。
- 如請求項7所述之設備,其中回應於程式流的該給定改變,當該靶指令係該閘道器指令時:該處理電路經配置為基於規定是賦能還是去能該重入檢查的一重入檢查賦能值來決定是否回應於該閘道器指令執行該重入檢查。
- 如請求項7所述之設備,其中回應於程式流的該給定改變,當該靶指令係該閘道器指令時:該處理電路經配置為甚至當該重入檢查賦能值規定去能重入檢查時,觸發針對該靶位址的該許可檢查。
- 如請求項7所述之設備,包含異常控制電路,回應於一異常條件以執行至少基於該處理電路的一當前安全域選擇的複數個異常進入轉換的一個異常進入轉換,其中至少針對該複數個異常進入轉換的一子集,該異常控制電路經配置為觸發將包括至少一個完整性簽名值的該一個完整性簽名值的一堆疊訊框保存到由該至少一個堆疊指標暫存器的一個堆疊指標暫存器中儲存的該堆疊指標識別的一堆疊資料結構。
- 如請求項7所述之設備,包含異常控制電路,回應於一異常返回條件以執行至少基於與該異常 返回條件相關聯的一安全域選擇的複數個異常返回轉換的一個異常返回轉換,其中至少針對該複數個異常返回轉換的一子集,該異常控制電路經配置為執行完整性簽名檢查,包含從針對該異常返回轉換選擇的一給定堆疊資料結果存取一堆疊訊框,並且當在該存取的堆疊訊框中的一預定位置處的該值與該至少一個完整性簽名值的至少一個完整性簽名值之間偵測到一不匹配時,觸發一故障。
- 如請求項7所述之設備,其中當用於決定將哪個堆疊指標暫存器用於堆疊或拆疊架構狀態的一堆疊指標選擇值具有一預定值時,該重入檢查亦包含觸發一故障。
- 如請求項12所述之設備,其中:在一給定安全域內,該處理電路經配置為在複數個模式的一個模式中執行資料處理,該等模式包括用於異常處理的一處置器模式及用於背景處理的一線程模式;該設備包含回應於一異常條件觸發將架構狀態資料儲存到下列的異常控制電路:一處理堆疊資料結構,當該異常條件在該線程模式中發生並且該堆疊指標選擇值具有一第一值時,由一處理堆疊指標暫存器中儲存的一堆疊指標識別; 以及一主堆疊資料結構,當該異常條件在該線程模式中發生時並且該堆疊指標選擇值具有一第二值時,由一主堆疊指標暫存器中儲存的一堆疊指標識別;並且該預定值包含該第二值。
- 如請求項13所述之設備,其中回應於至少一個安全線程模式至安全處置器模式異常進入轉換,該異常控制電路經配置為將該堆疊指標選擇值更新為該第二值。
- 如請求項7所述之設備,其中回應於程式流從該安全域中的處理到具有與該安全域相關聯的一指令位址的一閘道器指令的一改變,該處理電路經配置為省去該重入檢查。
- 如請求項1所述之設備,其中在一給定安全域內,該處理電路經配置為在複數個模式的一個模式中執行資料處理,該等模式包括用於異常處理的一處置器模式及用於背景處理的一線程模式;該設備包含回應於一異常條件觸發將架構狀態資料儲存到下列的異常控制電路:一處理堆疊資料結構,當該異常條件在該線程模式中發生並且一堆疊指標選擇值具有一第一值時,由一處理堆疊指標暫存器中儲存的一堆疊指標識別; 以及一主堆疊資料結構,當該異常條件在該線程模式中發生並且該堆疊指標選擇值具有一第二值時,由一主堆疊指標暫存器中儲存的一堆疊指標識別;以及該堆疊指標驗證動作包含當該堆疊指標選擇值具有該第二值時觸發一故障。
- 如請求項1所述之設備,其中回應於程式流的該給定改變,當該靶指令係該閘道器指令並且通過回應於該閘道器指令而執行的至少一個安全性檢查時,該處理電路經配置為觸發該當前安全域從該較不安全域到該安全域的一切換。
- 如請求項1所述之設備,其中:回應於控制流的該給定改變,當該靶指令係該閘道器指令時,該處理電路經配置為至少當該處理電路處於一預定操作模式時觸發該堆疊指標驗證動作。
- 如請求項18所述之設備,其中在一給定安全域內,該處理電路經配置為在複數個模式的一個模式中執行資料處理,該等模式包括用於異常處理的一處置器模式及用於背景處理的一線程模式;以及該預定操作模式包含該線程模式。
- 如請求項18及19中任一項所述之設備, 回應於控制流的該給定改變,當該靶指令係該閘道器指令時,該處理電路經配置為當該處理電路處於與該預定操作模式不同的一操作模式時省去該堆疊指標驗證動作。
- 一種用於處理電路的資料處理方法,該處理電路能夠在至少包括一安全域及一較不安全域的複數個安全域的一個安全域中執行資料處理,對此檢查是否允許一記憶體存取係取決於指示該複數個安全域中的哪個安全域與該記憶體存取的一靶位址相關聯的安全性屬性資料;該方法包含以下步驟,回應於程式流從該較不安全域中的處理到具有與該安全域相關聯的一指令位址的一靶指令的一給定改變:決定該靶指令是否係指示到該安全域的一有效進入點的一閘道器指令;當該靶指令係與該閘道器指令不同的一指令時,觸發一故障;以及當該靶指令係該閘道器指令時,觸發一堆疊指標驗證動作以驗證使用一已選堆疊指標暫存器中儲存的一已選堆疊指標是否係安全的。
- 一種用於控制一主資料處理設備以提供用於執行指令的一指令執行環境的電腦程式;該電腦程 式包含:處理程式邏輯,用於支援在至少包括一安全域及一較不安全域的複數個安全域的一個安全域中的資料處理;記憶體存取檢查程式邏輯,用於取決於安全性屬性資料檢查是否允許一記憶體存取,該安全性屬性資料指示該複數個安全域的哪個安全域與該記憶體存取的一靶位址相關聯;以及暫存器模仿程式邏輯,用於控制到該主資料處理設備的一記憶體的存取,以模擬對該電腦程式模擬的一靶架構的經模擬架構暫存器的存取,該等經模擬架構暫存器包含用於將指示一堆疊資料結構的一堆疊指標儲存在記憶體中的至少一個堆疊指標暫存器;其中回應於程式流從該較不安全域中的處理到具有與該安全域相關聯的一指令位址的一靶指令的一給定改變:當該靶指令係與指示到該安全域的一有效進入點的一閘道器指令不同的一指令時,該處理程式邏輯經配置為觸發一故障;以及當該靶指令係該閘道器指令時,該處理程式邏輯經配置為觸發一堆疊指標驗證動作以驗證使用與該等經模擬架構暫存器的一已選堆疊指標暫存器相關 聯的一已選堆疊指標是否係安全的。
- 一種儲存如請求項22所述之電腦程式的電腦可讀取儲存媒體。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1816354.3 | 2018-10-08 | ||
GB1816354.3A GB2577878B (en) | 2018-10-08 | 2018-10-08 | Transition disable indicator |
GB1819123.9A GB2577947B (en) | 2018-10-08 | 2018-11-23 | Verifying stack pointer |
GB1819123.9 | 2018-11-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202029045A TW202029045A (zh) | 2020-08-01 |
TWI811456B true TWI811456B (zh) | 2023-08-11 |
Family
ID=64397424
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108134526A TWI811456B (zh) | 2018-10-08 | 2019-09-25 | 用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體 |
TW108134514A TWI808261B (zh) | 2018-10-08 | 2019-09-25 | 使用轉換禁用指示符的設備、資料處理方法、電腦程式和電腦可讀取存儲媒體 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108134514A TWI808261B (zh) | 2018-10-08 | 2019-09-25 | 使用轉換禁用指示符的設備、資料處理方法、電腦程式和電腦可讀取存儲媒體 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11354404B2 (zh) |
EP (2) | EP3864554B1 (zh) |
JP (2) | JP7364668B2 (zh) |
KR (2) | KR20210068006A (zh) |
CN (2) | CN112805709B (zh) |
GB (2) | GB2577878B (zh) |
IL (1) | IL280715A (zh) |
TW (2) | TWI811456B (zh) |
WO (2) | WO2020074853A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2589895B (en) * | 2019-12-11 | 2022-03-16 | Advanced Risc Mach Ltd | Intermodal calling branch instruction |
US11784786B2 (en) | 2020-08-14 | 2023-10-10 | Intel Corporation | Mitigating security vulnerabilities with memory allocation markers in cryptographic computing systems |
GB2611823B (en) * | 2021-10-18 | 2023-10-11 | Advanced Risc Mach Ltd | Technique for handling sealed capabilities |
US20230315457A1 (en) * | 2022-03-31 | 2023-10-05 | Mellanox Technologies, Ltd. | Processor with Instructions for Resetting Multiple Registers |
GB2623800A (en) * | 2022-10-27 | 2024-05-01 | Advanced Risc Mach Ltd | Stack pointer switch validity checking |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130205125A1 (en) * | 2012-02-08 | 2013-08-08 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
US20140075581A1 (en) * | 2012-01-10 | 2014-03-13 | Arm Limited | Secure mechanism to switch between different domains of operation in a data processor |
TW201447754A (zh) * | 2013-06-12 | 2014-12-16 | Advanced Risc Mach Ltd | 資料處理設備中之軟體函式庫之安全保護 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701493A (en) * | 1995-08-03 | 1997-12-23 | Advanced Risc Machines Limited | Exception handling method and apparatus in data processing systems |
US6363473B1 (en) | 1999-04-01 | 2002-03-26 | Compaq Information Technologies Group, L.P. | Simulated memory stack in a stackless environment |
EP1329787B1 (en) | 2002-01-16 | 2019-08-28 | Texas Instruments Incorporated | Secure mode indicator for smart phone or PDA |
GB0226874D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
JP4447471B2 (ja) * | 2002-11-18 | 2010-04-07 | エイアールエム リミテッド | 安全処理システムにおける例外タイプ |
GB2396034B (en) * | 2002-11-18 | 2006-03-08 | Advanced Risc Mach Ltd | Technique for accessing memory in a data processing apparatus |
EP1865435A1 (en) * | 2006-06-06 | 2007-12-12 | Texas Instruments France | Enhanced exception handling |
US20090292931A1 (en) * | 2008-05-24 | 2009-11-26 | Via Technology, Inc | Apparatus and method for isolating a secure execution mode in a microprocessor |
US8516577B2 (en) * | 2010-09-22 | 2013-08-20 | Intel Corporation | Regulating atomic memory operations to prevent denial of service attack |
TW201234206A (en) * | 2011-02-15 | 2012-08-16 | Ying-Hwi Chang | Digital storage device for providing data security and the operation method thereof |
US8615614B2 (en) * | 2011-11-30 | 2013-12-24 | Freescale Semiconductor, Inc. | Message passing using direct memory access unit in a data processing system |
US10210349B2 (en) * | 2012-02-08 | 2019-02-19 | Arm Limited | Data processing apparatus and method using secure domain and less secure domain |
GB2499287A (en) * | 2012-02-08 | 2013-08-14 | Advanced Risc Mach Ltd | Exception handling in data processing with different security domains |
US9213828B2 (en) * | 2012-02-08 | 2015-12-15 | Arm Limited | Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains |
US9477834B2 (en) | 2012-02-08 | 2016-10-25 | Arm Limited | Maintaining secure data isolated from non-secure access when switching between domains |
US9262320B2 (en) * | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
KR101701306B1 (ko) * | 2012-11-21 | 2017-02-01 | 애플 인크. | 액세스 제어를 관리하는 정책-기반 기법들 |
GB2525596B (en) * | 2014-04-28 | 2021-05-26 | Arm Ip Ltd | Access control and code scheduling |
US9501667B2 (en) * | 2014-06-20 | 2016-11-22 | Arm Limited | Security domain prediction |
-
2018
- 2018-10-08 GB GB1816354.3A patent/GB2577878B/en active Active
- 2018-11-23 GB GB1819123.9A patent/GB2577947B/en active Active
-
2019
- 2019-08-22 KR KR1020217004820A patent/KR20210068006A/ko active Search and Examination
- 2019-08-22 US US17/266,855 patent/US11354404B2/en active Active
- 2019-08-22 EP EP19759706.5A patent/EP3864554B1/en active Active
- 2019-08-22 CN CN201980064656.0A patent/CN112805709B/zh active Active
- 2019-08-22 JP JP2021517656A patent/JP7364668B2/ja active Active
- 2019-08-22 WO PCT/GB2019/052363 patent/WO2020074853A1/en unknown
- 2019-09-03 KR KR1020217005759A patent/KR20210060443A/ko unknown
- 2019-09-03 US US17/269,205 patent/US11727110B2/en active Active
- 2019-09-03 EP EP19766306.5A patent/EP3864555B1/en active Active
- 2019-09-03 WO PCT/GB2019/052449 patent/WO2020074854A1/en unknown
- 2019-09-03 JP JP2021517598A patent/JP7432586B2/ja active Active
- 2019-09-03 CN CN201980064661.1A patent/CN112805710A/zh active Pending
- 2019-09-25 TW TW108134526A patent/TWI811456B/zh active
- 2019-09-25 TW TW108134514A patent/TWI808261B/zh active
-
2021
- 2021-02-08 IL IL280715A patent/IL280715A/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140075581A1 (en) * | 2012-01-10 | 2014-03-13 | Arm Limited | Secure mechanism to switch between different domains of operation in a data processor |
US20130205125A1 (en) * | 2012-02-08 | 2013-08-08 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
TW201415287A (zh) * | 2012-10-01 | 2014-04-16 | Advanced Risc Mach Ltd | 用於在資料處理器的不同作業域之間切換的安全機制 |
TW201447754A (zh) * | 2013-06-12 | 2014-12-16 | Advanced Risc Mach Ltd | 資料處理設備中之軟體函式庫之安全保護 |
Also Published As
Publication number | Publication date |
---|---|
CN112805710A (zh) | 2021-05-14 |
KR20210060443A (ko) | 2021-05-26 |
TWI808261B (zh) | 2023-07-11 |
CN112805709B (zh) | 2023-08-29 |
TW202030634A (zh) | 2020-08-16 |
WO2020074854A1 (en) | 2020-04-16 |
JP7364668B2 (ja) | 2023-10-18 |
GB201816354D0 (en) | 2018-11-28 |
EP3864555A1 (en) | 2021-08-18 |
IL280715A (en) | 2021-03-25 |
US11727110B2 (en) | 2023-08-15 |
GB2577878B (en) | 2020-11-11 |
KR20210068006A (ko) | 2021-06-08 |
EP3864554A1 (en) | 2021-08-18 |
TW202029045A (zh) | 2020-08-01 |
WO2020074853A1 (en) | 2020-04-16 |
EP3864555B1 (en) | 2023-10-25 |
GB2577878A (en) | 2020-04-15 |
JP2022503921A (ja) | 2022-01-12 |
JP2022503899A (ja) | 2022-01-12 |
GB2577947A (en) | 2020-04-15 |
GB2577947B (en) | 2023-07-05 |
EP3864554B1 (en) | 2023-09-27 |
GB201819123D0 (en) | 2019-01-09 |
JP7432586B2 (ja) | 2024-02-16 |
US20210224380A1 (en) | 2021-07-22 |
US11354404B2 (en) | 2022-06-07 |
CN112805709A (zh) | 2021-05-14 |
US20210294924A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI811456B (zh) | 用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體 | |
US20220366037A1 (en) | Domain transition disable configuration parameter | |
JP2023038361A (ja) | 命令セット内の変更を制御する装置及び方法 | |
JP2023547065A (ja) | ケイパビリティを使用してメモリへのアクセスを制約するための技法 | |
KR20210137642A (ko) | 정형 검증을 이용한 i/o 커널 구현의 강화 | |
EP4073635B1 (en) | Intermodal calling branch instruction | |
JP2023512029A (ja) | メモリマップド制御レジスタのセットへのアクセスを制御する装置及び方法 | |
GB2623800A (en) | Stack pointer switch validity checking |