TW202411864A - 減輕基於處理器的設備中的指標認證碼(pac)攻擊 - Google Patents
減輕基於處理器的設備中的指標認證碼(pac)攻擊 Download PDFInfo
- Publication number
- TW202411864A TW202411864A TW112130664A TW112130664A TW202411864A TW 202411864 A TW202411864 A TW 202411864A TW 112130664 A TW112130664 A TW 112130664A TW 112130664 A TW112130664 A TW 112130664A TW 202411864 A TW202411864 A TW 202411864A
- Authority
- TW
- Taiwan
- Prior art keywords
- pointer
- processor
- instruction
- invalid
- determining
- Prior art date
Links
Images
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/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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Advance Control (AREA)
- Pinball Game Machines (AREA)
Abstract
本文公開了減輕基於處理器的設備中的指標認證碼(PAC)攻擊。就此而言,在一些示例性方面中,基於處理器的設備的處理器被配置為決定用於認證指標的指標認證指令正被推測性地執行。處理器還被配置為:響應於決定指標認證指令正被推測性地執行,基於指標的簽名來決定指標無效。處理器還被配置為:響應於決定指標無效,執行減輕動作。
Description
本申請主張享受於2022年9月12日提交的名稱為“減輕基於處理器的設備中的PACMAN攻擊”的美國臨時專利申請序列號63/375,331的優先權,其內容透過引用整體併入本文。
概括地說,本公開內容的技術涉及基於處理器的設備中的指標認證,具體而言,本公開內容的技術涉及基於在推測性執行期間對指標簽名的重複嘗試的授權來減輕攻擊的可能性。
記憶體損壞漏洞(memory corruption vulnerability)展現了影響現代基於處理器的設備的一個長期安全問題。記憶體損壞漏洞可以包括記憶體損壞故障(memory corruption bug)(例如,越界寫入和讀取、釋放後使用和雙倍釋放故障、以及整數溢出和下溢),以及利用這樣的故障的記憶體損壞攻擊。特別值得關注的是被稱為“控制流程劫持攻擊”的記憶體損壞攻擊,其修改儲存在記憶體中的碼指標,以改變執行進程的程式流程。使用控制流程劫持攻擊的攻擊者可以改變執行進程用於重定向進程的執行的碼指標,以及導致攻擊者提供的潛在有害碼被執行。
為了保護指標的完整性以及抵禦控制流程劫持攻擊,一些現代基於處理器的設備實現了包括指標簽名指令和指標認證指令的指令集架構(ISA)。使用這樣的指令和相關的底層硬體,進程可以使用稱為指標認證碼(PAC)的加密雜湊(cryptographic hash)對指標進行簽名,指標認證碼是使用指標產生的,並且被儲存在指標的未使用位元中。PAC然後可以稍後用作指標的簽名,以驗證指標沒有被不正確地修改,以及如果指標被篡改則引發軟體可見的架構異常(architectural exception)。以這種方式,攻擊者在執行對指標的未經授權的修改時所面臨的困難可以顯著增加。
然而,研究人員最近提出了一種類型的攻擊,在本文中稱為PAC攻擊,以及也被稱為“PACMAN攻擊”,這種攻擊可以使攻擊者使用可以避免引發架構異常的技術來窮舉(brute-force)指標的簽名。為了實現這一點,PAC攻擊使用推測性執行路徑來嘗試驗證指標簽名,以及使用微架構側通道(例如,對快取、變換後備緩衝區(translation lookaside buffer)(TLB)、功能單元和網路單晶片的內容做出的改變,即使推測性執行路徑被壓碎(squash),這些改變也會保留)來洩露經嘗試的簽名驗證的結果。以這種方式,理論上,使用PAC攻擊的攻擊者甚至可以在ISA提供指標簽名指令和指標認證指令的基於處理器的設備上執行成功的控制流程劫持攻擊。
詳細描述中公開的方面包括減輕基於處理器的設備中的指標認證碼(PAC)攻擊。還公開了相關的裝置、方法和計算機可讀媒體。在這方面,在本文公開的一些示例性方面中,基於處理器的設備的處理器(例如,使用減輕電路)決定認證指標的指標認證指令正在被推測性地執行。在推測性地執行指標驗證指令並且決定指標無效時,處理器執行減輕動作。如本文所使用的,作為非限制性示例,“指標認證指令”是指顯式認證指令,例如ARM指令AUT,和/或包括認證微操作和另一微操作(例如加載微操作或分支微操作)的組合的指令。用語“PAC攻擊”和“PACMAN攻擊”在本文中用於指嘗試使用指標認證指令的推測性執行來嘗試驗證指標簽名,以及隨後使用微架構側通道來洩露經嘗試的簽名驗證的結果。
在一些示例性方面中,減輕動作包括修改指標的簽名以指示指標有效(即使指標實際上無效),並且還引發微架構異常以觸發管線(pipeline)清除。此程序將防止關於指標的真實有效性的任何資訊導致攻擊者可能偵測到的微架構副作用。根據一些方面,可以立即觸發管線清除,而一些方面可以提供,當指標認證指令準備好引退(retirement)時觸發管線清除。在一些方面中,管線清除可以僅清除比指標認證指令年輕的指令,在這種情況下,處理器將提供用於重新執行指標認證指令的機制,以獲得關於指標的有效性的真實結果。一些方面可以提供,指標認證指令本身也被清除。在這樣的方面中,設置與指標認證指令相關聯的指示器,使得處理器可以決定指標認證指令的後續迭代何時不再是推測性的。當指標認證指令的後續迭代被決定為不再是推測性的時候,如果指標的簽名指示指標無效,則處理器透過修改指標的簽名來觸發無效位址架構異常,從而以傳統方式執行指標認證。以這種方式,這樣的方面可以透過防止經由微架構側通道的關於指標的真實有效性的洩露來使經嘗試的PAC攻擊的效力降級(即,透過不將指標標記為有效,這導致攻擊者對指標簽名的窮舉猜測總是返回相同的結果,無論猜測是正確的還是不正確的)。
根據一些方面,由處理器執行的減輕動作可以包括修改指標的簽名以指示指標無效,以及遞增無效指標計數器的值。在這樣的方面中的處理器然後可以決定無效指標計數器的值是否超過無效指標計數閾值。如果是,則處理器引發架構異常,以指示可能的攻擊。因此,這樣的方面提供了針對窮舉PAC攻擊的保護,窮舉PAC攻擊通常需要在正確猜測PAC之前進行大量的指標認證指令推測性執行。
在另一方面中,提供了一種基於處理器的設備。基於處理器的設備包括處理器,該處理器包括執行管線電路。處理器被配置為決定用於認證指標的指標認證指令正被推測性地執行。處理器還被配置為:響應於決定指標認證指令正被推測性地執行,基於指標的簽名來決定指標無效。處理器還被配置為:響應於決定指標無效,執行減輕動作。
在另一方面中,提供了一種基於處理器的設備。基於處理器的設備包括用於決定用於認證指標的指標認證指令正被推測性地執行的構件。基於處理器的設備還包括用於響應於決定指標認證指令正被推測性地執行,基於指標的簽名來決定指標無效的構件。基於處理器的設備還包括用於響應於決定指標無效而執行減輕動作的構件。
在另一方面中,提供了一種用於減輕PAC攻擊的方法。該方法包括:由基於處理器的設備的處理器決定用於認證指標的指標認證指令正被推測性地執行。該方法還包括,響應於決定指標認證指令正被推測性地執行,基於指標的簽名決定指標無效。該方法還包括,響應於決定指標無效,執行減輕動作。
在另一示例性實施例中,提供了一種其上儲存有計算機可執行指令的非暫時性計算機可讀媒體。當由處理器執行時,計算機可執行指令使處理器決定用於認證指標的指標認證指令正被推測性地執行。所述計算機可執行指令還使得所述處理器響應於決定所述指標認證指令正被推測性地執行,基於所述指標的簽名來決定所述指標無效。計算機可執行指令還使得處理器響應於決定指標無效而執行減輕動作。
現在參考圖式,描述本公開內容的若干示例性方面。詞語“示例性”在本文中用於意指“用作示例、實例或說明”。本文中被描述為“示例性的”任何方面不一定被解釋為優選於其它方面或者比其它方面有優勢。
詳細描述中公開的方面包括減輕基於處理器的設備中的指標認證碼(PAC)攻擊。還公開了相關的裝置、方法和計算機可讀媒體。在這方面,在本文公開的一些示例性方面中,基於處理器的設備的處理器(例如,使用減輕電路)決定認證指標的指標認證指令正在被推測性地執行。在推測性地執行指標認證指令並且決定指標無效時,處理器執行減輕動作。如本文所使用的,作為非限制性示例,“指標認證指令”是指顯式認證指令,例如ARM指令AUT,和/或包括認證微操作和另一微操作(例如加載微操作或分支微操作)的組合的指令。用語“PAC攻擊”和“PACMAN攻擊”在本文中用於指嘗試使用指標認證指令的推測性執行來嘗試驗證指標簽名,以及隨後使用微架構側通道來洩露經嘗試的簽名驗證的結果。
在一些示例性方面中,減輕動作包括修改指標的簽名以指示指標有效(即使指標實際上無效),並且還引發微架構異常以觸發管線(pipeline)清除。此程序將防止關於指標的真實有效性的任何資訊導致攻擊者可能偵測到的微架構副作用。根據一些方面,可以立即觸發管線清除,而一些方面可以提供,當指標認證指令準備好引退(retirement)時觸發管線清除。在一些方面中,管線清除可以僅清除比指標認證指令年輕的指令,在這種情況下,處理器將提供用於重新執行指標認證指令的機制,以獲得關於指標的有效性的真實結果。一些方面可以提供,指標認證指令本身也被清除。在這樣的方面中,設置與指標認證指令相關聯的指示器,使得處理器可以隨後決定指標認證指令的後續迭代何時不再是推測性的。當指標認證指令的後續迭代被決定為不再是推測性的時候,如果指標的簽名指示指標無效,則處理器透過修改指標的簽名來觸發無效位址架構異常,從而以傳統方式執行指標認證。
根據一些方面,由處理器執行的減輕動作可以包括修改指標的簽名以指示指標無效,以及遞增無效指標計數器的值。在這樣的方面中的處理器然後可以決定無效指標計數器的值是否超過無效指標計數閾值。如果是,則處理器引發架構異常,以指示可能的攻擊。
在這方面,圖1是包括處理器102的示例性基於處理器的設備100的示意圖。處理器102(在本文中也稱為“處理器核心”或“中央處理單元(CPU)核心”)可以是循序或亂序處理器(OoP),和/或可以是由基於處理器的設備100提供的多個處理器102中的一者。圖1的處理器102提供了指令處理電路104,指令處理電路104包括一個或多個指令管線I
0-I
N,用於處理由提取電路110從指令記憶體(圖1中配圖文字為“指令記憶體”)108提取的指令106以供執行。作為非限制性示例,指令記憶體108可以被提供在基於處理器的設備100中的系統記憶體中或作為系統記憶體的一部分。在圖1的處理器102中還提供了指令快取(圖1中配圖文字為“指令快取”)112,以對從指令記憶體108提取的指令106進行快取,以減少提取電路110中的延遲。
在圖1的示例中,提取電路110被配置為在提取的指令106F到達要執行的執行電路(圖1中配圖文字為“執行電路”)114之前,將指令106作為提取的指令106F提供到指令處理電路104中的要預處理的一個或多個指令管線I
0-I
N中。為了在執行電路114執行所提取的指令106F之前增加流通量,跨越指令處理電路104的不同處理電路或階段來提供指令管線I
0-I
N,以在可以並行地執行的一系列步驟中預處理和處理所提取的指令106F。
圖1的指令處理電路104還包括解碼電路118,該解碼電路118被配置為將提取電路110提取的經提取的指令106F解碼為經解碼的指令106D,以決定所需的指令類型和動作,這可以決定經解碼的指令106D應該放在哪個指令管線I
0-I
N中。在圖1的示例中,經解碼的指令106D被放置在指令管線I
0-I
N中的一個或多個指令管線中,以及然後被提供給指令處理電路104中的重命名電路120。重命名電路120被配置為決定在經解碼的指令106D中的任何暫存器名稱是否應該被重命名,以解耦將防止平行或亂序處理的任何暫存器依賴性。
圖1中的處理器102中的指令處理電路104還包括暫存器存取電路(圖1中配圖文字為“RACC電路”)122。暫存器存取電路122被配置為基於映射到經解碼的指令106D的來源暫存器運算元的暫存器映射表(RMT)(未示出)中的邏輯暫存器的映射條目來存取實體暫存器檔案(PRF)(未示出)中的實體暫存器,以從執行電路114中的經執行的指令106E取得所產生的值。暫存器存取電路122還被配置為提供從經執行的指令106E取得的所產生的值作為要執行的經解碼的指令106D的來源暫存器運算元。
指令處理電路104另外包括指令管線I
0-I
N中的排程器電路(圖1中配圖文字為“排程器電路”)124。排程器電路124被配置為將經解碼的指令106D儲存在保留條目(未示出)中,直到用於經解碼的指令106D的全部來源暫存器運算元是可用的。排程器電路124然後向執行電路114發出準備執行的經解碼的指令106D。在指令處理電路104中還提供寫入電路126,以將從經執行的指令106E產生的值寫回或提交到區域記憶體、快取記憶體或系統記憶體。
繼續參考圖1,指令處理電路104還包括分支預測器電路128,分支預測器電路128被配置為推測性地預測所提取的分支指令的結果,該分支指令控制與指令控制流程路徑中的採取路徑(taken path)或未採取路徑相對應的指令是否被提取到指令管線I
0-I
N中以供執行。所提取的分支指令可以是分支指令130,該分支指令130包括要由指令處理電路104解析以決定應當採用哪個指令控制流程路徑的條件。透過使用推測性地預測的執行路徑,在指令處理電路104可以繼續處理經提取的指令106F之前,分支指令130的結果不必在執行中由執行電路114解析。分支預測器電路128做出的預測可以作為分支預測132提供給提取電路110,以用於將要提取的下一指令106決定為經提取的指令106F。
圖1的指令處理電路104通信地耦接到重新排序緩衝器(ROB)134,該重新排序緩衝器134能夠亂序執行經提取的指令106F。ROB 134包含ROB條目(未示出),ROB條目被分配給正在由指令處理電路104處理但尚未提交的每個指令106。每個ROB以程式順序按順序地被分配給指令106,並且當最初分配ROB條目時,識別用於每個指令106的ROB 134中的每個ROB條目的位置的ROB索引被報告回指令處理電路104。ROB 134還包括指向從其中讀取關於最舊未提交指令106在提交時的資訊的ROB條目的ROB索引的讀指標(未示出),以及指示向其中寫入關於最年輕的未提交的指令106的資訊的最後的ROB條目的ROB索引的寫指標(未示出)。
圖1的基於處理器的設備100可以包括已知數位邏輯元件、半導體電路、處理核心和/或記憶體結構中的任何一者,以及其他元件或其組合。本文所描述的方面不限於元件的任何特定排列,並且所公開的技術可以容易地擴展到半導體晶粒或封裝上的各種結構和佈局。應當理解的是,基於處理器的設備100的一些方面可以包括除了圖1中所示的元件之外的元件,和/或可以包括圖1中示出的元件中的更多或更少的元件。例如,基於處理器的設備100還可以包括一個或多個CPU、處理器核心、快取、控制器、通信匯流排和/或持久儲存設備,為了清楚起見,圖1中省略了這些。
如上所述,諸如圖1的基於處理器的設備100之類的基於處理器的設備可能容易受到控制流程劫持攻擊,攻擊者可以透過控制流程劫持攻擊來修改在記憶體中儲存的碼指標,以改變執行進程的程式流程。為了抵禦這種攻擊,基於處理器的設備100實現了一種指令集架構(ISA),該架構提供指標簽名指令和指標認證指令(未示出),其操作將在下文參考圖2進行更詳細的討論。儘管使用了這樣的指標簽名和認證指令,但傳統的基於處理器的設備可能容易受到PAC攻擊(或“PACMAN攻擊”)的影響,該攻擊可以使攻擊者能夠透過使用推測性執行路徑來嘗試驗證PAC,以及隨後使用微架構側通道來洩露經嘗試的PAC驗證的結果,從而窮舉指標的PAC。作為PAC攻擊的一部分,對推測性執行路徑的使用將在下文關於圖3進行更詳細的討論。
因此,為了減輕PAC攻擊,基於處理器的設備100的處理器102提供修改指標認證指令的執行方式的減輕電路136。要理解的是,雖然減輕電路136被圖示為處理器102的單獨元件,但是在一些方面中,減輕電路136可以被整合到處理器102的一個或多個其他元件中,例如指令處理電路104。在示例性操作中,處理器102使用減輕電路136決定用於認證指標的指標認證指令正被推測性地執行。作為非限制性示例,這可以透過例如與指令處理電路104的元件通信的減輕電路136來實現。響應於決定指標認證指令正被推測性地執行,減輕電路136基於指標的簽名決定指標無效。在決定指標無效時,減輕電路136執行減輕動作。
在一些示例性方面中,減輕動作包括減輕電路136修改指標的簽名以指示指標是有效的(即,即使指標實際上是無效的),並且還引發微架構異常(配圖文字為“微架構異常”)138以觸發管線清除。管線清除確保指標認證指令不會因架構上的不兼容的結果而引退(即,在指標無效時指示指標有效)。微架構異常138是由處理器102下面的ISA以軟體不可見的方式實現的異常,並且可以包括例如由減輕電路136發送給ROB 134的信號。透過不將指標標記為無效(以及從而導致攻擊者對指標簽名的窮舉猜測總是返回相同的結果,無論猜測是正確的還是不正確的),減輕電路136可以防止經由微架構側通道的關於指標的真實有效性的任何洩漏。一些方面可以規定立即觸發管線清除,而在一些方面中,當指標認證指令準備好引退時觸發管線清除。
在一些方面中,處理器102可以將指標認證指令保持在指令排程器(未示出)中,直到指標認證指令引退,此時處理器102在指標認證指令到達ROB 134的頭部時重新執行指標認證指令。一些方面可以規定,當指標認證指令在ROB 134的頭部時,處理器102可以發起新的微碼序列以執行GPR校正。
一些方面可以規定指標認證指令本身也被清除,在這種情況下,設置與指標認證指令相關聯的指示器140(例如,作為非限制性示例,透過儲存指標認證指令的位址或識別符)。使用指示器140,減輕電路136可以決定指標認證指令的後續迭代何時不再是推測性的(例如,透過在再次遇到指標認證指令時檢查指示器140的值)。當指標認證指令的後續迭代被決定為不再是推測性的時,如果指標的簽名指示指標無效,則減輕電路136透過修改指標的簽名來觸發無效位址架構異常,從而以傳統方式執行指標認證。在一些方面中,處理器102可以透過例如決定指標認證指令的後續迭代是等待處理器102執行的最舊指令,在不使用諸如指示器140之類的指示器的情況下決定指標認證指令的後續迭代不再是推測性的。
要注意的是,在成功地識別可以用於篡改指標的有效簽名之前,PAC攻擊可能需要大量重複的失敗嘗試。因此,一些示例性方面可以規定,由減輕電路136執行的減輕動作可以包括修改指標的簽名以指示指標無效(即,以傳統方式),以及遞增無效指標計數器(圖1中配圖文字為“無效指標計數器”)142的值。在這樣的方面中,減輕電路136然後決定無效指標計數器142的值是否超過無效指標計數閾值(圖1中配圖文字為“無效指標計數閾值”)144。如果是,則減輕電路136引發架構異常(圖1中配圖文字為“架構異常”)146(即軟體可見異常),以指示可能的攻擊。以這種方式,可以在攻擊者能夠識別有效簽名之前偵測PAC攻擊。
圖2是示出分別使用指標簽名指令200和指標認證指令202對指標進行簽名和認證的操作的方塊圖,指標簽名指令200和指標認證指令202由支援指標認證的ISA(諸如ARM)提供。在圖2中,指標204包括位址206,位址206識別記憶體中的位置,該位置表示例如分支指令的目標位址,或者資料儲存在記憶體中的位置。為了防止對指標204的未經授權的修改,執行進程可以首先執行指標簽名指令200來對指標204進行簽名。在執行指標簽名指令200時,指標204的加密雜湊被產生以及被用作用於指標204的簽名208(也稱為指標認證碼或PAC)。如圖2的箭頭210所示,簽名208使用傳統上未使用的位元來儲存在指標204內。在一些示例性方面中,可以基於指標204的位址206和由密鑰和程式指定的鹽(salt)組成的上下文值(未示出)來計算簽名208。
指標204可以隨後由執行進程透過執行指標認證指令202來驗證,如箭頭212所示。當指標認證指令202被執行時,針對指標204產生與儲存在指標204中的簽名208相比較的重新計算的簽名(未示出)。如果簽名208與重新計算的簽名匹配,則儲存簽名208的位元被清除(即,透過將它們設置為零值(0)),並且指標204可以以傳統方式使用。然而,如果簽名208與重新計算的簽名不匹配,則簽名208內的一些位元被設置為造成對指標204的任何解參照(de-referencing)(例如,嘗試存取在指標204中儲存的記憶體位址處儲存的資料)以觸發無效位址架構異常。由箭頭214指示了透過執行指標認證指令202來更新簽名208。
圖3示出了成功和失敗的指標認證的不同執行路徑,這可能在PAC攻擊期間推測性地進行。在圖3中,碼摘錄300包括加載暫存器(LDR)指令302,該指令將潛在損壞的指標從暫存器R1指定的位置加載到暫存器R0中;指標認證(AUT)指令304,該指令嘗試驗證在暫存器R0中儲存的指標;以及LDR指令306,該指令將來自暫存器R0中的指標所指定的位置的值加載到暫存器R2中。方塊308示出了如果暫存器R0中的指標被成功驗證(如配圖文字為通過的箭頭所示)的結果。在這種情況下,儲存了在暫存器R0中儲存的指標的簽名310的位元被清除(即,透過將簽名310設置為如方塊308中所見的值0000),並且LDR指令306在由指標指示的位置處變換、提取和儲存資料。這些操作留下了微架構副作用,例如對快取、變換後備緩衝區(TLB)、功能單元和網路單晶片的內容做出的改變。在方塊312中,示出了暫存器R0中的指標的失敗驗證的結果(如配圖文字為失敗的箭頭所示)。在這種情況下,儲存簽名310的特定位元被修改(即,在該示例中,透過將簽名310設置為值8000,如方塊312中可見),以造成對在暫存器R0中儲存的指標的後續解參照,從而觸發無效位址架構異常。此外,可以留下與方塊308的成功認證所產生的微架構副作用不同的其他微架構副作用。
PAC攻擊利用推測性執行來嘗試窮舉指標的簽名。如上所述,使用指標認證指令(諸如圖2的指標認證指令202)意味著攻擊者必須識別有效簽名(例如,圖2中的簽名208)以便修改指標(諸如圖2中的指標204)。此外,如上所述,圖3的方塊308和312中所示的不同結果轉化為攻擊者可能觀察到的不同微架構副作用(例如,對快取、變換後備緩衝區(TLB)、功能單元和網路單晶片的內容做出的改變,即使推測性執行路徑被壓碎,這些改變也會保留)。因此,PAC攻擊導致對指標認證指令的執行發生在推測性執行路徑上,例如由預測錯誤的分支導致的執行路徑,以防止由失敗的指標認證導致的無效位址架構異常導致攻擊被識別。攻擊者可以重複嘗試認證(以及觀察由此產生的微架構副作用),直到識別出有效的簽名,此時攻擊者可以利用有效的簽名製造惡意指標(malicious pointer)。
因此,為了說明圖1的基於處理器的設備100用於減輕PAC攻擊的示例性操作,圖4提供了說明示例性操作400的流程圖。為了清楚起見,在描述圖4時參考了圖1和圖2的元素。示例性操作400從圖4開始,處理器(例如,圖1的處理器102)決定用於認證指標(例如,圖2的指標204)的指標認證指令(例如,圖2中的指標認證指令202)正被推測性地執行(方塊402)。處理器102接下來基於指標204的簽名(例如,圖2的簽名208)來決定指標204無效(方塊404)。然後,處理器102響應於決定指標認證指令202正被推測性地執行並且決定指標204無效,執行減輕動作(方塊406)。要理解的是,示例性操作400中的一些示例性操作可以按照不同於圖4所示的順序執行。
在一些方面中,圖4的方塊406中用於執行減輕動作的操作可以包括處理器102引發微架構異常以觸發管線清除。在這方面,圖5A和圖5B提供了說明根據這樣的方面的用於執行圖4的方塊406的減輕動作的示例性操作500的流程圖。為了清楚起見,在描述圖5A和圖5B時參考了圖1和圖2的元素。要理解的是,示例性操作500中的一些示例性操作可以按照不同於圖5A和圖5B所示的順序執行,和/或可以省略。
在圖5A中,示例性操作500開始於處理器102修改指標204的簽名208以指示指標204是有效的(方塊502)。處理器102隨後引發微架構異常以觸發管線清除,例如圖1的微架構異常138(方塊504)。一些方面可以提供,方塊504的用於引發微架構異常138以觸發管線清除的操作可以包括引發微架構異常138以引發立即的管線清除(方塊506)。根據一些方面,方塊504的用於引發微架構異常138以觸發管線清除的操作可以包括當指標認證指令202準備引退時,引發微架構異常138以引發管線清除(方塊508)。
在一些方面中,處理器102隨後執行管線清除(方塊510)。一些方面可以提供,方塊510的用於執行管線清除的操作可以包括清除比指標認證指令202年輕的全部指令(方塊512)。如上文更詳細地討論的,這樣的方面可以提供用於指標認證指令202被重新執行以從對指標204的授權的嘗試恢復正確結果的機制。根據一些方面,方塊510的用於執行管線清除的操作還可以包括清除指標認證指令202(方塊514)。這些方面中的示例性操作500可以在圖5B的方塊516處繼續。
現在參考圖5B,在清除指標認證指令202之後,示例性操作500繼續,處理器102設置與指標認證指令202相關聯的指示器(例如,圖1的指示器140)(方塊516)。隨後,響應於指示器140被設置,處理器102決定指標認證指令202的後續迭代不再是推測性的(方塊518)。在決定指標認證指令202的後續迭代不再是推測性的之後,處理器102執行一系列指令(方塊520)。處理器102基於指標204的簽名208決定指標204無效(方塊522)。響應於決定指標204無效,處理器102修改指標204以觸發無效位址架構異常(即,以傳統方式)(方塊524)。
一些方面可以提供,圖4的方塊406的用於執行減輕動作的操作包括追蹤無效指標的出現,以及如果超過閾值則引發架構異常。在這方面,圖6提供了說明根據這樣的方面的用於執行圖4的方塊406的減輕動作的示例性操作600的流程圖。為了清楚起見,在描述圖6時參考了圖1和圖2的元素。要理解的是,示例性操作600中的一些示例性操作可以按照不同於圖6所示的順序執行,和/或可以省略。
示例性操作600從圖6開始,處理器102遞增無效指標計數器的值,例如圖1的無效指標計數器142(方塊602)。然後,處理器102決定無效指標計數器142的值超過無效指標計數閾值,例如圖1的無效指標計數閾值144(方塊604)。響應於決定無效指標計數器142的值超過無效指標計數閾值144,處理器102引發架構異常(例如,圖1的架構異常146)以指示可能的攻擊(方塊606)。
根據本文公開的各方面的減輕PAC攻擊可以在任何基於處理器的設備中提供或整合到任何基於處理器的設備中。示例包括但不限於機上盒、娛樂單元、導航設備、通信設備、固定位置資料單元、行動位置資料單元、全球定位系統(GPS)設備、行動電話、蜂巢式電話、智慧型電話、對話發起協定(SIP)電話、平板電腦、平板手機、伺服器、計算機、攜帶式計算機、行動計算設備、膝上型計算機、穿戴式計算設備(例如,智慧型手錶、健康或健身追蹤器、眼鏡等)、桌上型計算機、個人數位助理(PDA)、監視器、計算機監視器、電視、調諧器、無線電單元、衛星無線電單元、音樂播放器、數位音樂播放器、攜帶式音樂播放器、數位視頻光碟(DVD)播放器、攜帶式數位視頻播放器、汽車、車輛組件、航空電子系統、無人機和多旋翼機。
在這方面,圖7示出了基於處理器的設備700的示例,其可以包括圖1中所示的基於處理器的設備100。在該示例中,基於處理器的設備700包括處理器702,處理器702可以包括圖1的處理器102,並且包括一個或多個中央處理單元(圖7中配圖文字為“中央處理單元”)704,其也可以被稱為CPU核心或處理器核心。圖7的處理器702還包括減輕電路706,其在功能上與圖1的減輕電路136相對應。處理器702可以具有耦接到處理器702的快取記憶體708,用於快速存取暫時儲存的資料。處理器702耦接到系統匯流排710,並且可以相互耦接被包括在基於處理器的設備700中的主設備和從設備。眾所周知,處理器702透過在系統匯流排710上交換位址、控制和資料資訊來與這些其他設備通信。例如,作為從設備的示例,處理器702可以將匯流排事務請求傳送到記憶體控制器712。儘管圖7中未示出,但可以提供多個系統匯流排710,其中每個系統匯流排710組成不同的結構。
其他主設備和從設備可以連接到系統匯流排710。如圖7所示,作為示例,這些設備可以包括記憶體系統714,該記憶體系統714包括記憶體控制器712和記憶體陣列716、一個或多個輸入設備718、一個和多個輸出設備720、一個或者多個網路介面設備722和一個或多個顯示控制器724。輸入設備718可以包括任何類型的輸入設備,包括但不限於輸入鍵、開關、語音處理器等。輸出設備720可以包括任何種類的輸出設備,包括但不限於音頻、視頻、其他視覺指示器等。網路介面設備722可以是被配置為允許與網路726交換資料的任何設備。網路726可以是任何類型的網路,包括但不限於有線或無線網路、私人或公共網路、區域網路(LAN)、無線區域網路(WLAN)、廣域網路(WAN)、藍牙™ 網路和互聯網。網路介面設備722可以被配置為支援所需的任何類型的通信協定。
處理器702還可以被配置為透過系統匯流排710存取顯示控制器724,以控制被發送到一個或多個顯示器728的資訊。顯示控制器724經由一個或多個視頻處理器730將資訊發送到顯示器728以進行顯示,視頻處理器730將要顯示的資訊處理成適合顯示器728的格式。顯示器728可以包括任何類型的顯示器,包括但不限於陰極射線管(CRT)、液晶顯示器(LCD)、電漿顯示器等。
圖7中的基於處理器的設備700可以包括一組指令(圖7中配圖文字為“指令”)732,處理器702可以根據指令針對任何所需的應用程式執行一組指令。指令732可以儲存在記憶體陣列716、處理器702和/或快取記憶體708中,其中的每一者可以包括非暫時性計算機可讀媒體的示例。指令732在其執行期間還可以完全或至少部分地駐留在記憶體陣列716內和/或處理器702內。指令732還可以透過網路726被發送或接收,使得網路726可以包括計算機可讀媒體的示例。
儘管在本文的示例性實施例中將計算機可讀媒體描述為單個媒體,但用語“計算機可讀媒體”應被理解為包括儲存一個或多個指令集732的單個媒體或多個媒體(例如,集中式或分布式資料庫,和/或相關聯的快取和伺服器)。用語“計算機可讀媒體”還應被視為包括能夠儲存、編碼或攜帶用於由處理設備執行的指令集並且使得處理設備執行本文公開的實施例的方法中的任何一種或多種方法的任何媒體。因此,用語“計算機可讀媒體”應包括但不限於固態記憶體、光學媒體和磁性媒體。
本領域技術人員將進一步理解的是,結合本文公開的各方面描述的各種說明性邏輯區塊、模組、電路和演算法可以實現為電子硬體、被儲存在記憶體或另一計算機可讀媒體中並由處理器或其他處理設備執行的指令、或兩者的組合。本文公開的記憶體可以是任何類型和大小的記憶體,並且可以被配置為儲存所需的任何類型的資訊。為了清楚地說明這種互換性,上文圍繞各種說明性的組件、方塊、模組、電路和步驟的功能,已經對它們進行了一般性描述。如何實現這樣的功能取決於特定的應用、設計選擇和/或施加在整個系統上的設計限制。技術人員可以針對每個特定的應用,以變通的方式來實現所描述的功能性,但是這樣的實現決策不應當被解釋為造成脫離本公開內容的範圍。
結合本文中公開的方面描述的各種說明性的邏輯區塊、模組和電路可以利用以下各項來實現或者執行:處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、現場可編程閘陣列(FPGA)或者其它可編程邏輯設備、離散的閘或者電晶體邏輯、離散的硬體部件或者被設計為執行本文中描述的功能的其任意組合。處理器可以是微處理器,但是在替代方案中,處理器可以是任何常規的處理器、控制器、微控制器或狀態機。處理器還可以實現為計算設備的組合(例如,DSP與微處理器的組合、多個微處理器、一個或多個微處理器結合DSP核心、或者任何其它這樣的配置)。
本文公開的方面可以體現在硬體和被儲存在硬體中的指令中,並且可以駐留在例如隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電可編程ROM(EPROM)、電可擦除可編程唯讀記憶體(EEPROM)、暫存器、硬碟、可移式磁碟、CD-ROM、或本領域已知的任何其他形式的計算機可讀媒體。示例性儲存媒體耦接到處理器,使得處理器可以從儲存媒體讀取資訊和向儲存媒體寫入資訊。或者,儲存媒體可以整合到處理器中。處理器和儲存媒體可以駐留在ASIC中。ASIC可以駐留在遠程站中。或者,處理器和儲存媒體可以作為離散組件駐留在遠程站、基地台或伺服器中。
還應注意的是,本文的任何示例性方面中所描述的操作步驟被描述以提供示例和討論。所描述的操作可以在除了所示序列之外的許多不同序列中執行。此外,在單個操作步驟中描述的操作實際上可以在多個不同步驟中執行。此外,可以組合在示例性方面中討論的一個或多個操作步驟。應當理解的是,流程圖中所示的操作步驟可以進行許多不同的修改,這對於本領域技術人員來說是顯而易見的。本領域技術人員還將理解的是,資訊和信號可以是使用各種不同的技術和方法中的任何一者來表示的。例如,在遍及上文的描述中提及的資料、指令、命令、資訊、信號、位元、符號和碼片可以透過電壓、電流、電磁波、磁場或粒子、光場或粒子或者其任何組合來表示。
提供本公開內容的前述描述,以使得本領域技術人員能夠實現或使用本公開內容。對本公開內容的各種修改對於本領域的技術人員來說將是顯而易見的,而且這裡定義的通用原則也可以應用於其他變體。因此,本公開內容不旨在受限於本文描述的示例和設計,而是要符合與本文所公開的原則和新穎性特徵相一致的最寬的範圍。
在以下編號的條款中描述了實現方式示例。
1、一種基於處理器的設備,包括:
處理器,其被配置為:
決定用於認證指標的指標認證指令正被推測性地執行;
基於所述指標的簽名來決定所述指標無效;以及
響應於決定用於認證所述指標的所述指標認證指令正被推測性地執行並且決定所述指標無效,執行減輕動作。
2、根據條款1所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為進行以下操作來執行所述減輕動作:
修改所述指標的所述簽名以指示所述指標是有效的;以及
引發微架構異常以觸發管線清除。
3、根據條款2所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為引發所述微架構異常以觸發立即的管線清除來引發所述微架構異常以觸發管線清除。
4、根據條款2-3中任一項所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為在所述指標認證指令準備引退時引發所述微架構異常以觸發管線清除來引發所述微架構異常以觸發管線清除。
5、根據條款2-4中任一項所述的基於處理器的設備,其中,所述處理器還被配置為執行所述管線清除。
6、根據條款5所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為清除比所述指標認證指令年輕的全部指令來執行所述管線清除。
7、根據條款5-6中任一項所述的基於處理器的設備,其中,所述處理器還被配置為透過被配置為清除所述指標認證指令來執行所述管線清除。
8、根據條款7所述的基於處理器的設備,其中,所述處理器還被配置為:
設置與所述指標認證指令相關聯的指示器;
響應於所述指示器被設置,決定所述指標認證指令的後續迭代不再是推測性的;以及
響應於決定所述指標認證指令的所述後續迭代不再是推測性的:
基於所述指標的所述簽名,決定所述指標無效;以及
響應於決定所述指標無效,修改所述指標的所述簽名以觸發無效位址架構異常。
9、根據條款1-8中任一項所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為進行以下操作來執行所述減輕動作:
遞增無效指標計數器的值;
決定所述無效指標計數器的所述值超過無效指標計數閾值;以及
響應於決定所述無效指標計數器的所述值超過所述無效指標計數閾值,引發架構異常以指示可能的攻擊。
10、 根據條款1-9中任一項所述的基於處理器的設備,整合到從由以下各項組成的組選擇的設備中:機上盒;娛樂單元;導航設備;通信設備;固定位置資料單元;行動位置資料單元;全球定位系統(GPS)設備;行動電話;蜂巢式電話;智慧型手機;對話發起協定(SIP)電話;平板電腦;平板手機;伺服器;計算機;攜帶式計算機;行動計算設備;穿戴式計算設備;桌上型計算機;個人數位助理(PDA);監視器;計算機監視器;電視機;調諧器;無線電單元;衛星無線電單元;音樂播放器;數位音樂播放器;攜帶式音樂播放器;數位視頻播放器;視頻播放器;數位視頻光碟(DVD)播放器;攜帶式數位視頻播放器;汽車;車輛組件;航空電子系統;無人機;以及多旋翼機。
11、一種基於處理器的設備,包括:
用於決定用於認證指標的指標認證指令正被推測性地執行的構件;
用於基於所述指標的簽名來決定所述指標無效的構件;以及
用於響應於決定所述指標認證指令正被推測性地執行並且決定所述指標無效來執行減輕動作的構件。
12、 一種用於減輕基於處理器的設備中的指標認證碼(PAC)攻擊的方法,所述方法包括:
由所述基於處理器的設備的處理器決定用於認證指標的指標認證指令正被推測性地執行;
基於所述指標的簽名來決定所述指標無效;以及
響應於決定所述指標認證指令正被推測性地執行並且決定所述指標無效,執行減輕動作。
13、根據條款12所述的方法,其中,執行所述減輕動作包括:
修改所述指標的簽名以指示所述指標是有效的;以及
引發微架構異常以觸發管線清除。
14、根據條款13所述的方法,其中,引發所述微架構異常以觸發管線清除包括:引發所述微架構異常以觸發立即的管線清除。
15、根據條款13-14中任一項所述的方法,其中,引發所述微架構異常以觸發管線清除包括:當所述指標認證指令準備引退時,引發所述微架構異常以觸發管線清除。
16、根據條款13-15中任一項所述的方法,還包括執行所述管線清除。
17、根據條款16所述的方法,其中,執行所述管線清除包括:清除比所述指標認證指令年輕的全部指令。
18、根據條款17所述的方法,其中,執行所述管線清除包括:清除所述指標認證指令。
19、根據條款18所述的方法,還包括:
設置與所述指標認證指令相關聯的指示器;
響應於所述指示器被設置,決定所述指標認證指令的後續迭代不再是推測性的;以及
響應於決定所述指標認證指令的所述後續迭代不再是推測性的:
基於所述指標的簽名來決定所述指標無效;以及
響應於決定所述指標無效,修改所述指標的所述簽名以觸發無效位址架構異常。
20、根據條款12-19中任一項所述的方法,其中,執行所述減輕動作包括:
遞增無效指標計數器的值;
決定所述無效指標計數器的所述值超過無效指標計數閾值;以及
響應於決定所述無效指標計數器的所述值超過所述無效指標計數閾值,引發架構異常以指示可能的攻擊。
21、一種在其上儲存有計算機可執行指令的非暫時性計算機可讀媒體,當由處理器執行時,所述計算機可執行指令透過使所述處理器進行以下操作來提供針對第一快取記憶體設備的基於位置的預提取:
決定用於認證指標的指標認證指令正被推測性地執行;
基於所述指標的簽名來決定所述指標無效;以及
響應於決定所述指標認證指令正被推測性地執行並且決定所述指標無效,執行減輕動作。
22、根據條款21所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器進行以下操作來使所述處理器執行所述減動作:
修改所述指標的簽名以指示所述指標是有效的;以及
引發微架構異常以觸發管線清除。
23、根據條款22所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器引發所述微架構異常以觸發立即的管線清除來使所述處理器引發所述微架構異常以觸發管線清除。
24、根據條款22-23中任一項所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器在所述指標認證指令準備引退時引發所述微架構異常以觸發管線清除來使所述處理器引發所述微架構異常以觸發管線清除。
25、根據條款22-24中任一項所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令還使得所述處理器執行所述管線清除。
26、根據條款25所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器清除比所述指標認證指令年輕的全部指令來使所述處理器執行所述管線清除。
27、根據條款26所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器清除所述指標認證指令來使所述處理器執行所述管線清除。
28、根據條款27所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令還使得所述處理器:
設置與所述指標認證指令相關聯的指示器;
響應於所述指示器被設置,決定所述指標認證指令的後續迭代不再是推測性的;以及
響應於決定所述指標認證指令的所述後續迭代不再是推測性的:
基於所述指標的簽名來決定所述指標無效;以及
響應於決定所述指標無效,修改所述指標的所述簽名以觸發無效位址架構異常。
29、根據條款21-28中任一項所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器進行以下操作來使所述處理器執行所述減動作:
遞增無效指標計數器的值;
決定所述無效指標計數器的所述值超過無效指標計數閾值;以及
響應於決定所述無效指標計數器的所述值超過無效指標計數閾值,引發架構異常以指示可能的攻擊。
100:基於處理器的設備
102:處理器
104:指令處理電路
106:指令
106D:經解碼的指令
106E:經執行的指令
106F:提取的指令
108:指令記憶體
110:提取電路
112:指令快取
114:執行電路
118:解碼電路
120:重命名電路
122:暫存器存取電路
124:排程器電路
126:寫入電路
128:分支預測器電路
130:分支指令
132:分支預測
134:重新排序緩衝器(ROB)
136:減輕電路
138:微架構異常
140:指示器
142:無效指標計數器
144:無效指標計數閾值
146:架構異常
200:指標簽名指令
202:指標認證指令
204:指標
206:位址
208:簽名
210:箭頭
212:箭頭
214:箭頭
300:碼摘錄
302:加載暫存器(LDR)指令
304:指標認證(AUT)指令
306:LDR指令
308:碼摘錄
310:簽名
312:碼摘錄
400:操作
402:步驟
404:步驟
406:步驟
500:操作
502:步驟
504:步驟
506:步驟
508:步驟
510:步驟
512:步驟
514:步驟
516:步驟
518:步驟
520:步驟
522:步驟
524:步驟
600:操作
602:步驟
604:步驟
606:步驟
700:基於處理器的設備
702:處理器
704:中央處理單元
706:減輕電路
708:快取記憶體
710:系統匯流排
712:記憶體控制器
714:記憶體系統
716:記憶體陣列
718:輸入設備
720:輸出設備
722:網路介面設備
724:顯示控制器
726:網路
728:顯示器
730:視頻處理器
732:指令
圖1是根據一些方面的示例性基於處理器的設備的方塊圖,該設備被配置為減輕指標認證碼(PAC)攻擊;
圖2是示出具有簽名的傳統指標的結構以及用於對指標進行簽名和認證的操作的方塊圖;
圖3是示出成功和失敗的指標認證的不同執行路徑;
圖4是示出根據一些方面的用於減輕PAC攻擊的示例性操作的流程圖;
圖5A和圖5B是示出根據一些方面的透過引發微架構異常以觸發管線清除來減輕PAC攻擊的額外的示例性操作的流程圖;
圖6是示出根據一些方面的透過追蹤無效指標的出現以及在超過閾值時引發架構異常來減輕PAC攻擊的額外的示例性操作的流程圖;和
圖7是示例性基於處理器的設備的方塊圖,該設備包括但不限於圖1的基於處理器的設備。
100:基於處理器的設備
102:處理器
104:指令處理電路
106:指令
106D:經解碼的指令
106E:經執行的指令
106F:提取的指令
108:指令記憶體
110:提取電路
112:指令快取
114:執行電路
118:解碼電路
120:重命名電路
122:暫存器存取電路
124:排程器電路
126:寫入電路
128:分支預測器電路
130:分支指令
132:分支預測
134:重新排序緩衝器(ROB)
136:減輕電路
138:微架構異常
140:指示器
142:無效指標計數器
144:無效指標計數閾值
146:架構異常
Claims (29)
- 一種基於處理器的設備,包括: 處理器,其被配置為: 決定用於認證指標的指標認證指令正被推測性地執行; 基於所述指標的簽名來決定所述指標無效;以及 響應於決定用於認證所述指標的所述指標認證指令正被推測性地執行並且決定所述指標無效,執行減輕動作。
- 根據請求項1所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為進行以下操作來執行所述減輕動作: 修改所述指標的所述簽名以指示所述指標是有效的;以及 引發微架構異常以觸發管線清除。
- 根據請求項2所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為引發所述微架構異常以觸發立即的管線清除來引發所述微架構異常以觸發管線清除。
- 根據請求項2所述的基於處理器的設備,其中所述處理器被配置為透過被配置為在所述指標認證指令準備引退時引發所述微架構異常以觸發管線清除來引發所述微架構異常以觸發管線清除。
- 根據請求項2所述的基於處理器的設備,其中,所述處理器還被配置為執行所述管線清除。
- 根據請求項5所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為清除比所述指標認證指令年輕的全部指令來執行所述管線清除。
- 根據請求項6所述的基於處理器的設備,其中,所述處理器還被配置為透過被配置為清除所述指標認證指令來執行所述管線清除。
- 根據請求項7所述的基於處理器的設備,其中,所述處理器還被配置為: 設置與所述指標認證指令相關聯的指示器; 響應於所述指示器被設置,決定所述指標認證指令的後續迭代不再是推測性的;以及 響應於決定所述指標認證指令的所述後續迭代不再是推測性的: 基於所述指標的所述簽名,決定所述指標無效;以及 響應於決定所述指標無效,修改所述指標的所述簽名以觸發無效位址架構異常。
- 根據請求項1所述的基於處理器的設備,其中,所述處理器被配置為透過被配置為進行以下操作來執行所述減輕動作: 遞增無效指標計數器的值; 決定所述無效指標計數器的所述值超過無效指標計數閾值;以及 響應於決定所述無效指標計數器的所述值超過所述無效指標計數閾值,引發架構異常以指示可能的攻擊。
- 根據請求項1所述的基於處理器的設備,整合到從由以下各項組成的組選擇的設備中:機上盒;娛樂單元;導航設備;通信設備;固定位置資料單元;行動位置資料單元;全球定位系統(GPS)設備;行動電話;蜂巢式電話;智慧型手機;對話發起協定(SIP)電話;平板電腦;平板手機;伺服器;計算機;攜帶式計算機;行動計算設備;穿戴式計算設備;桌上型計算機;個人數位助理(PDA);監視器;計算機監視器;電視機;調諧器;無線電單元;衛星無線電單元;音樂播放器;數位音樂播放器;攜帶式音樂播放器;數位視頻播放器;視頻播放器;數位視頻光碟(DVD)播放器;攜帶式數位視頻播放器;汽車;車輛組件;航空電子系統;無人機;以及多旋翼機。
- 一種基於處理器的設備,包括: 用於決定用於認證指標的指標認證指令正被推測性地執行的構件; 用於基於所述指標的簽名來決定所述指標無效的構件;以及 用於響應於決定所述指標認證指令正被推測性地執行並且決定所述指標無效來執行減輕動作的構件。
- 一種用於減輕基於處理器的設備中的指標認證碼(PAC)攻擊的方法,所述方法包括: 由所述基於處理器的設備的處理器決定用於認證指標的指標認證指令正被推測性地執行; 基於所述指標的簽名來決定所述指標無效;以及 響應於決定所述指標認證指令正被推測性地執行並且決定所述指標無效,執行減輕動作。
- 根據請求項12所述的方法,其中,執行所述減輕動作包括: 修改所述指標的簽名以指示所述指標是有效的;以及 引發微架構異常以觸發管線清除。
- 根據請求項13所述的方法,其中,引發所述微架構異常以觸發管線清除包括:引發所述微架構異常以觸發立即的管線清除。
- 根據請求項13所述的方法,其中,引發所述微架構異常以觸發管線清除包括:當所述指標認證指令準備引退時,引發所述微架構異常以觸發管線清除。
- 根據請求項13所述的方法,還包括執行管線清除。
- 根據請求項16所述的方法,其中,執行所述管線清除包括:清除比所述指標認證指令年輕的全部指令。
- 根據請求項17所述的方法,其中,執行所述管線清除包括:清除所述指標認證指令。
- 根據請求項18所述的方法,還包括: 設置與所述指標認證指令相關聯的指示器; 響應於所述指示器被設置,決定所述指標認證指令的後續迭代不再是推測性的;以及 響應於決定所述指標認證指令的所述後續迭代不再是推測性的: 基於所述指標的簽名來決定所述指標無效;以及 響應於決定所述指標無效,修改所述指標的所述簽名以觸發無效位址架構異常。
- 根據請求項12所述的方法,其中,執行所述減輕動作包括: 遞增無效指標計數器的值; 決定所述無效指標計數器的所述值超過無效指標計數閾值;以及 響應於決定所述無效指標計數器的所述值超過所述無效指標計數閾值,引發架構異常以指示可能的攻擊。
- 一種在其上儲存有計算機可執行指令的非暫時性計算機可讀媒體,當由處理器執行時,所述計算機可執行指令透過使所述處理器進行以下操作來提供針對第一快取記憶體設備的基於位置的預提取: 決定用於認證指標的指標認證指令正被推測性地執行; 基於所述指標的簽名來決定所述指標無效;以及 響應於決定所述指標認證指令正被推測性地執行並且決定所述指標無效,執行減輕動作。
- 根據請求項21所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器進行以下操作來使所述處理器執行所述減輕動作: 修改所述指標的簽名以指示所述指標是有效的;以及 引發微架構異常以觸發管線清除。
- 根據請求項22所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器引發所述微架構異常以觸發立即的管線清除來使所述處理器引發所述微架構異常以觸發管線清除。
- 根據請求項22所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器在所述指標認證指令準備引退時引發所述微架構異常以觸發管線清除來使所述處理器引發所述微架構異常以觸發管線清除。
- 根據請求項22所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令還使得所述處理器執行所述管線清除。
- 根據請求項25所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器清除比所述指標認證指令年輕的全部指令來使所述處理器執行所述管線清除。
- 根據請求項26所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器清除所述指標認證指令來使所述處理器執行所述管線清除。
- 根據請求項27所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令還使得所述處理器: 設置與所述指標認證指令相關聯的指示器; 響應於所述指示器被設置,決定所述指標認證指令的後續迭代不再是推測性的;以及 響應於決定所述指標認證指令的所述後續迭代不再是推測性的: 基於所述指標的簽名來決定所述指標無效;以及 響應於決定所述指標無效,修改所述指標的所述簽名以觸發無效位址架構異常。
- 根據請求項21所述的非暫時性計算機可讀媒體,其中,所述計算機可執行指令透過使所述處理器進行以下操作來使所述處理器執行所述減動作: 遞增無效指標計數器的值; 決定所述無效指標計數器的所述值超過無效指標計數閾值;以及 響應於決定所述無效指標計數器的所述值超過所述無效指標計數閾值,引發架構異常以指示可能的攻擊。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263375331P | 2022-09-12 | 2022-09-12 | |
US63/375,331 | 2022-09-12 | ||
US18/067,825 US20240086526A1 (en) | 2022-09-12 | 2022-12-19 | Mitigating pointer authentication code (pac) attacks in processor-based devices |
US18/067,825 | 2022-12-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202411864A true TW202411864A (zh) | 2024-03-16 |
Family
ID=90141229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112130664A TW202411864A (zh) | 2022-09-12 | 2023-08-15 | 減輕基於處理器的設備中的指標認證碼(pac)攻擊 |
Country Status (2)
Country | Link |
---|---|
US (2) | US20240086526A1 (zh) |
TW (1) | TW202411864A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20250094567A1 (en) * | 2023-09-18 | 2025-03-20 | Apple Inc. | Consistent Speculation of Pointer Authentication |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282636B1 (en) * | 1998-12-23 | 2001-08-28 | Intel Corporation | Decentralized exception processing system |
US6438673B1 (en) * | 1999-12-30 | 2002-08-20 | Intel Corporation | Correlated address prediction |
US20070061555A1 (en) * | 2005-09-15 | 2007-03-15 | St Clair Michael | Call return tracking technique |
US11630920B2 (en) * | 2018-06-29 | 2023-04-18 | Intel Corporation | Memory tagging for side-channel defense, memory safety, and sandboxing |
US11755731B2 (en) * | 2020-07-23 | 2023-09-12 | Ventana Micro Systems Inc. | Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks |
US11989280B2 (en) * | 2021-09-17 | 2024-05-21 | Microsoft Technology Licensing, Llc | Pointer authentication failure detection |
-
2022
- 2022-12-19 US US18/067,825 patent/US20240086526A1/en active Pending
-
2023
- 2023-08-15 TW TW112130664A patent/TW202411864A/zh unknown
-
2024
- 2024-04-01 US US18/623,516 patent/US20240241951A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240241951A1 (en) | 2024-07-18 |
US20240086526A1 (en) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Van Schaik et al. | CacheOut: Leaking data on Intel CPUs via cache evictions | |
Lipp et al. | Meltdown: Reading kernel memory from user space | |
Lipp et al. | Meltdown | |
US9767271B2 (en) | System and method for validating program execution at run-time | |
TWI770689B (zh) | 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體 | |
CN108427576B (zh) | 一种免受Spectre攻击的高性能推测执行算法 | |
EP3699795A1 (en) | Restricted speculative execution | |
US10255074B2 (en) | Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt | |
CN110661767A (zh) | 在微处理器架构内保护密钥和敏感数据免受攻击 | |
US20210303303A1 (en) | Speculative execution following a state transition instruction | |
US20240241951A1 (en) | Mitigating pointer authentication code (pac) attacks in processor-based devices | |
CN112149125A (zh) | 使用与高速缓存行有关的存储器所有权位防止信任域访问 | |
Kim et al. | Reinforcing meltdown attack by using a return stack buffer | |
US11340901B2 (en) | Apparatus and method for controlling allocation of instructions into an instruction cache storage | |
EP4193252B1 (en) | Mitigation of return stack buffer side channel attacks in a processor | |
WO2024059407A1 (en) | Mitigating pointer authentication code (pac) attacks in processor-based devices | |
CN119836629A (zh) | 减轻基于处理器的设备中的指针认证码(pac)攻击 | |
CN111241599A (zh) | 一种处理器芯片安全依赖的动态识别及维护方法 | |
CN119051838B (zh) | 侧信道攻击的防护方法、装置、存储介质及电子设备 | |
US12164921B2 (en) | Comparing hash values computed at function entry and exit for increased security | |
US12008149B2 (en) | Method and system for on demand control of hardware support for software pointer authentification in a computing system | |
TWI864746B (zh) | 用於亂序執行處理器電路之檢測方法及相關檢測裝置 | |
US20230078985A1 (en) | Checker and checking method for prossor circuit | |
US20230418937A1 (en) | Privileged Firmware Mode Protection | |
Chang et al. | Detection of Sensitive Information Based on Transient Data in Store Buffer and Cache |