+

TW201643763A - 經認證之控制堆疊 - Google Patents

經認證之控制堆疊 Download PDF

Info

Publication number
TW201643763A
TW201643763A TW105103186A TW105103186A TW201643763A TW 201643763 A TW201643763 A TW 201643763A TW 105103186 A TW105103186 A TW 105103186A TW 105103186 A TW105103186 A TW 105103186A TW 201643763 A TW201643763 A TW 201643763A
Authority
TW
Taiwan
Prior art keywords
control
control information
information input
external memory
authentication
Prior art date
Application number
TW105103186A
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 TW201643763A publication Critical patent/TW201643763A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一種產生一控制堆疊之方法包括:回應於一或多個函數呼叫而將複數個控制資訊輸入項寫入至在一處理器內部之一控制堆疊緩衝器中;及回應於該控制堆疊緩衝器已滿且接收到一另外函數呼叫而進行以下操作:將該複數個控制資訊輸入項寫入至在該處理器外部之一外部記憶體;及將對應於該另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器。

Description

經認證之控制堆疊
本發明係關於經認證之控制堆疊,且更特定地係關於用於產生控制堆疊之技術。
電腦軟體可易受變更該軟體之操作的攻擊。舉例而言,諸如軟體蠕蟲或病毒之惡意探索(如此命名係因為其惡意探索軟體中之漏洞)可變更現有軟體程式碼、插入新程式碼,及/或使現有程式碼之執行次序自原始預期次序變更以誘發並非如所預期之原始程式碼之部分的操作。在沒有關於軟體中之可接受入口點之任何管制的情況下,惡意探索可將執行導向至軟體中之任何點,從而促進非預期軟體執行序列,此係因為整個軟體程式碼可供惡意探索使用。
處理器架構通常包括用於資料及控制流程兩者之堆疊。堆疊含有追蹤針對通過程式之呼叫路徑中之每一呼叫之啟動記錄的堆疊框架。啟動記錄通常含有由每一函數(本機變數、參數等等)使用之資料以及控制資訊(傳回位址、堆疊指標等等),該等資料以及控制資訊用以在呼叫及傳回期間參考資料及/或維護程式控制流程。具體言之,傳回位址在函數呼叫期間被推送至堆疊上,且被呼叫函數將含有其本機變數之堆疊框架分配於包括任何本機資料緩衝器之堆疊上。實施錯誤及未經驗證輸入可造成程式溢位堆疊上之緩衝器且覆寫控制資料(例如,傳回位址、框架指標)。此又允許藉由操縱外部輸入而劫持程 式之控制流程。
為了保護免受此等堆疊超載攻擊(stack-smashing attack),已提議若干安全防護功能。一種技術為軟體堆疊保護(Software Stack Protection;SSP),其中由編譯程式將防護值(或堆疊密探(stack canary))插入於緊接於傳回位址之堆疊上,且在函數傳回之前驗證防護值。此方法使用橫越針對以此方式所保護之每一程式之建置循環的改變。現有軟體被建置有支援堆疊密探之編譯程式。為了使密探值對於每一執行而言為隨機的,提供對隨機數產生器之存取。提供錯誤復原處理常式以允許自堆疊超載攻擊之復原。除了針對每一程式所涉及之複雜度以外,此技術亦具有大小及效能附加項,此係因為受到保護之每一函數係運用產生密探且執行檢查之程式碼予以檢測。另一技術為堆疊重影(A Stack Ghost),其檢測OS核心設陷處理常式,該等處理常式在暫存器窗口溢位情形時被調用以隨著其寫入至記憶體而保護應用程式傳回位址,從而檢查任何惡意覆寫。此技術不需要應用程式層級啟用或程式碼大小成本,但依賴於架構中之支援暫存器窗口。另一技術包括將陰影堆疊架構儲存於記憶體之單獨受保護區域中。或者藉由重複控制資訊來維護陰影堆疊。針對所有執行緒而分配及管理單獨記憶體,從而引入複雜度。
一種產生一控制堆疊之實例方法包括:回應於一或多個函數呼叫而將複數個控制資訊輸入項寫入至在一處理器內部之一控制堆疊緩衝器中;及回應於該控制堆疊緩衝器已滿且接收到一另外函數呼叫而進行以下操作:將該複數個控制資訊輸入項寫入至在該處理器外部之一外部記憶體;及將對應於該另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器。
此方法之實施可包括以下特徵中之一或多者。該方法進一步包 括使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤。該方法進一步包括將該認證標籤之一各別部分與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存至該外部記憶體。該複數個控制資訊輸入項包括兩個以上控制資訊輸入項,且其中判定該認證標籤包含將一函數應用於該複數個控制資訊輸入項中之全部。該方法進一步包括:使用儲存於該外部記憶體中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;判定該認證驗證程式匹配於該認證標籤;及基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
又或替代地,此方法之實施可包括以下特徵中之一或多者。將該複數個控制資訊輸入項寫入至該外部記憶體包括伴隨將該複數個控制資訊輸入項配置於該外部記憶體之一第一區域中而將該複數個控制資訊輸入項寫入至該外部記憶體,該外部記憶體之該第一區域實體上自儲存對應於該等控制資訊輸入項之程式資料的該外部記憶體之一第二區域位移。將該複數個控制資訊輸入項寫入至該外部記憶體包括伴隨該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複而將該複數個控制資訊輸入項寫入至該外部記憶體,且其中該等堆疊框架儲存於該外部記憶體中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。該方法進一步包括:判定該複數個控制資訊輸入項之至少該等主要部分匹配於該等堆疊框架控制資訊輸入項之至少該等主要部分;及基於該複數個控制資訊輸入項之至少該等主要部分匹配於該等堆疊框架控制資訊輸入項之至少該等主要部分而將該複數個控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
一種實例計算系統包括:一處理器,其含有一控制堆疊緩衝 器;及一外部記憶體,其在該處理器外部且以通信方式耦接至該處理器;其中該處理器經組態以進行以下操作:藉由將一控制資訊輸入項寫入至該控制堆疊緩衝器中而對一函數呼叫作出回應;對一控制框架填充該控制堆疊緩衝器作出回應,該控制框架包含複數個控制資訊輸入項,且藉由將該控制框架寫入至該外部記憶體且藉由將對應於一另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器而接收該另外函數呼叫。
此計算系統之實施可包括以下特徵中之一或多者。該處理器經進一步組態以使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤。該處理器經進一步組態以將該認證標籤之一各別部分與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存至該外部記憶體。該複數個控制資訊輸入項包括兩個以上控制資訊輸入項,且其中該處理器經組態以藉由將一函數應用於該複數個控制資訊輸入項中之全部而判定該認證標籤。該處理器經進一步組態以進行以下操作:使用儲存於該外部記憶體中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;判定該認證驗證程式匹配於該認證標籤;及基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
又或替代地,此計算系統之實施可包括以下特徵中之一或多者。該處理器經組態以藉由形成一分割堆疊而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項配置於該外部記憶體之一第一區域中,該外部記憶體之該第一區域實體上與儲存對應於該等控制資訊輸入項之程式資料的該外部記憶體之一第二區域分離。該處理器經組態以藉由形成一陰影堆疊而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架 中之堆疊框架控制資訊輸入項之主要部分的重複,且其中該等堆疊框架儲存於該外部記憶體中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
另一實例計算系統包括:用於儲存一控制堆疊緩衝器的構件;用於儲存程式資料及控制資料的構件;用於藉由將一控制資訊輸入項寫入至該控制堆疊緩衝器中而對一函數呼叫作出回應的構件;及用於對一控制框架填充該控制堆疊緩衝器作出回應的構件,該控制框架包含複數個控制資訊輸入項,且藉由將該控制框架寫入至該等用於儲存程式資料及控制資料的構件且藉由將對應於一另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器而接收該另外函數呼叫。
此計算系統之實施可包括以下特徵中之一或多者。該系統進一步包括經組態以使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤的認證構件。該等用於儲存程式資料及控制資料的構件進一步用於與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存該認證標籤之一各別部分。該複數個控制資訊輸入項包含兩個以上控制資訊輸入項,且其中該等認證構件經組態以藉由將一函數應用於該複數個控制資訊輸入項中之全部而判定該認證標籤。該等認證構件經進一步組態以進行以下操作:使用儲存於該等用於儲存程式資料及控制資料的構件中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;及判定該認證驗證程式匹配於該認證標籤;其中該系統進一步包含用於基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該等儲存構件寫入至該控制堆疊緩衝器的構件。
又或替代地,此計算系統之實施可包括以下特徵中之一或多者。該等用於儲存程式資料及控制資料的構件進一步用於藉由形成一分割堆疊而寫入該控制框架,其中該複數個控制資訊輸入項配置於該 等用於儲存程式資料及控制資料的構件之一第一區域中,該等用於儲存程式資料及控制資料的構件之該第一區域實體上與儲存對應於該等控制資訊輸入項之程式資料的該等用於儲存程式資料及控制資料的構件之一第二區域分離。該等用於儲存程式資料及控制資料的構件進一步用於藉由形成一陰影堆疊而寫入該控制框架,其中該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複,且其中該等堆疊框架儲存於該等用於儲存程式資料及控制資料的構件中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
一種實例非暫時性處理器可讀儲存器件包括處理器可讀指令,該等處理器可讀指令經組態以致使一處理器進行以下操作:藉由將一控制資訊輸入項寫入至該處理器中之一控制堆疊緩衝器中而對一函數呼叫作出回應;對一控制框架填充該控制堆疊緩衝器作出回應,該控制框架包含複數個控制資訊輸入項,且藉由將該控制框架寫入至以通信方式耦接至該處理器且實體上與該處理器分離之一外部記憶體且藉由將對應於一另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器而接收該另外函數呼叫。
此儲存器件之實施可包括以下特徵中之一或多者。該等指令經進一步組態以致使該處理器使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤。該等指令經進一步組態以致使該處理器將該認證標籤之一各別部分與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存至該外部記憶體。該複數個控制資訊輸入項包括兩個以上控制資訊輸入項,且其中該等經組態以致使該處理器判定該認證標籤的指令經組態以致使該處理器藉由將一函數應用於該複數個控制資訊輸入項中之全部而判定該認證標籤。該等指令經進一步組態以致使該處理器進 行以下操作:使用儲存於該外部記憶體中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;判定該認證驗證程式匹配於該認證標籤;及基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
又或替代地,此儲存器件之實施可包括以下特徵中之一或多者。該等經組態以致使該處理器將該控制框架寫入至該外部記憶體的指令經組態以致使該處理器藉由形成一分割堆疊而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項配置於該外部記憶體之一第一區域中,該外部記憶體之該第一區域實體上與儲存對應於該等控制資訊輸入項之程式資料的該外部記憶體之一第二區域分離。該等經組態以致使該處理器將該控制框架寫入至該外部記憶體的指令經組態以致使該處理器藉由形成一陰影堆疊而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複,且其中該等堆疊框架儲存於該外部記憶體中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
本文中所描述之項目及/或技術可提供以下能力中之一或多者、及/或未提及之其他能力。用於控制傳送之傳迴路徑可在執行之前予以有效地驗證。可(例如)藉由分離控制資料及程式資料而抑制堆疊超載惡意探索攻擊。可使用針對堆疊溢出(溢位)及堆疊填充(運用資料來填入堆疊)之認證而在硬體層級處提供陰影或分割控制/資料堆疊架構。可以低複雜度向陰影或分割控制/資料堆疊架構提供簡單管理。可(例如)藉由增加用於控制資料認證之區塊大小、縮減認證頻率及/或在要徑外執行傳迴路徑控制資料認證而以可調式且透通之方式維護控制流程完整性。可縮減用於判定針對控制資料之訊息認證程式碼的計算附加項。可提供其他能力,且根據本發明之每一實施並非皆必須提 供所論述之能力中之任一者,更不用說全部。另外,可有可能藉由除了所提到之手段以外的手段來達成上文所提到之效應,且所提到之項目/技術可未必得到所提到之效應。
10‧‧‧通信系統
12‧‧‧計算器件
14‧‧‧基地收發器台(BTS)
16‧‧‧網路
18‧‧‧伺服器
20‧‧‧存取點(AP)
22‧‧‧惡意探索源
50‧‧‧計算系統
52‧‧‧處理器
54‧‧‧控制堆疊緩衝器(CSB)
56‧‧‧外部記憶體
58‧‧‧軟體
60‧‧‧認證器
70‧‧‧處理器模組
72‧‧‧控制堆疊緩衝器模組
74‧‧‧認證模組
76‧‧‧控制框架模組
78‧‧‧堆疊記憶體
80‧‧‧程式堆疊
82‧‧‧控制資料輸入項
84‧‧‧經修改之控制資料輸入項
86‧‧‧控制資料主體
88‧‧‧認證標籤部分
90‧‧‧認證標籤
92‧‧‧控制資料
94‧‧‧程式資料
102‧‧‧內部控制堆疊
104‧‧‧外部控制堆疊
150‧‧‧處理程序
152‧‧‧階段
154‧‧‧階段
圖1為通信系統之示意圖。
圖2為圖1所展示之計算系統的方塊圖。
圖3為圖2所展示之計算系統的功能方塊圖。
圖4至圖5為控制堆疊緩衝器及分割程式堆疊之簡化圖。
圖6為包括認證標籤之控制資料輸入項的簡化圖。
圖7為產生控制堆疊之處理程序的方塊流程圖。
本發明論述用於產生控制堆疊之技術。舉例而言,處理器可具有儲存對應於軟體程式之最近函數呼叫之最近傳回位址的內部控制堆疊緩衝器。控制堆疊緩衝器可用於所有函數傳回。若控制堆疊緩衝器已滿且另一函數被呼叫(溢位),或若存在上下文切換,則控制堆疊緩衝器內容可被寫入至外部(相對於處理器)記憶體,且用於另一函數之傳回位址或其他上下文可被寫入至控制堆疊緩衝器。控制堆疊緩衝器內容可被頁面寫入至外部記憶體,其中控制堆疊緩衝器之所有內容皆被寫入至外部記憶體,從而清空控制堆疊緩衝器。控制堆疊緩衝器內容可被寫入至一程式堆疊,該程式堆疊呈不將相同資料儲存於該程式堆疊中之堆疊框架中的分割堆疊配置,或呈將相同資料儲存於該程式堆疊中之堆疊框架中的陰影堆疊配置。可基於控制堆疊緩衝器而判定認證標籤,且可與外部記憶體中之控制堆疊緩衝器內容相關聯地儲存認證標籤。若藉由使控制堆疊緩衝器中之所有傳回位址被使用(反向溢位)而清空控制堆疊緩衝器,或若存在上下文切換,則可將控制資料自外部記憶體寫入至控制堆疊緩衝器。若使用認證標籤,則可在將儲 存於外部記憶體中之傳回位址寫入至控制堆疊緩衝器之前重新判定認證標籤且比較該認證標籤與儲存於外部記憶體中之認證標籤。若經儲存之認證標籤與經重新判定之認證標籤匹配,則可將傳回位址自外部記憶體寫入至控制堆疊緩衝器,且否則不將傳回位址自外部記憶體寫入至控制堆疊緩衝器。若使用陰影堆疊,則可比較陰影堆疊中之傳回位址與程式堆疊中之傳回位址,且若該兩組傳回位址匹配,則僅將(例如)陰影堆疊中之傳回位址寫入至控制堆疊緩衝器。可使用其他技術,包括但不限於下文所論述之技術。
參看圖1,通信系統10包括計算器件12、基地收發器台(BTS)14、網路16、伺服器18、存取點(AP)20,及惡意探索源22。系統10為通信系統之處在於系統10之組件可(例如)經由網路16、BTS 14(及/或未圖示之一或多個BTS)及/或一或多個存取點20而彼此直接地或間接地通信。雖然惡意探索通常係經由通信網路(諸如圖1所展示之網路16)及計算器件12中之網路介面而引入至計算器件中,但本文中所論述之技術同等地適用於幫助防止攻擊之成功,在攻擊之成功中,惡意探索係經由其他手段(例如,至含有惡意探索之外部記憶體的連接)而引入至計算器件。所展示之實例計算器件12包括行動電話、桌上型電腦、膝上型電腦及平板電腦。可使用又其他計算器件,而無論為當前現有的抑或在未來開發的。
參看圖2,計算器件12中之一者的實例包含計算系統50,其包括:包括控制堆疊緩衝器54之處理器52、包括(視情況)軟體58之外部記憶體56,及認證器60。處理器52較佳地為智慧型硬體器件,例如,諸如由ARM®、Intel® Corporation或AMD®製造或設計之中央處理單元(CPU)的CPU、微控制器、特殊應用積體電路(ASIC)等等。處理器52可包含可分佈於計算器件12中之多個單獨物理實體。控制堆疊緩衝器54在處理器52內部,且受信任為不易受溢位攻擊/惡意探索。控制 堆疊緩衝器54儲存最近函數呼叫之傳回位址。外部記憶體56在處理器52外部,且可包括隨機存取記憶體(RAM)及/或唯讀記憶體(ROM)。記憶體54為可儲存軟體58之處理器可讀儲存媒體,軟體58為處理器可讀的處理器可執行軟體程式碼,其含有經組態以在執行時致使處理器52執行本文中所描述之各種功能的指令(但該描述可僅指處理器52執行該等功能)。替代地,軟體58可不由處理器52直接地執行,而是可經組態以致使處理器52(例如,在編譯及執行時)執行功能。處理器52以通信方式耦接至外部記憶體56及認證器60。認證器60可以硬體、以韌體、由處理器52或由處理器52及軟體58或由此等者中之任一者之組合實施。另外,除了如圖1所展示之計算器件12以外,本文中所論述之技術亦可應用於含有具有處理器可讀指令之記憶體的任何器件,該等處理器可讀指令具有相對於一或多個惡意探索之一或多個漏洞。因此,舉例而言,圖1所展示之網路16的伺服器18、BTS 14、存取點20及組件(例如,路由器、閘道器等等)可包括圖2所展示之組件(及圖3所展示之模組/構件),以及含有具有處理器可讀指令之記憶體的任何其他器件,該等處理器可讀指令具有相對於一或多個惡意探索之一或多個漏洞。
參看圖3,同時參考圖2,計算系統50包括:包括控制堆疊緩衝器模組72(用於儲存控制堆疊緩衝器的構件)之處理器模組70(處理構件)、認證模組74(認證構件),及控制框架模組76(用於儲存程式資料及控制資料的構件)。處理器模組70包括用於將控制資料寫入至控制堆疊緩衝器的構件,及用於將控制框架寫入至用於儲存程式資料及控制資料的構件的構件。模組70、72為可分別由處理器52及控制堆疊緩衝器54實施之功能模組。認證模組74為可由認證器60實施之功能模組。控制框架模組76為可由外部記憶體56及關聯硬體及/或韌體及/或處理器52及儲存於記憶體56中之軟體58實施的功能模組。因此,對執 行或經組態以執行一功能之模組70、72、74、76中之任一者的參考為執行或經組態以執行該功能之對應裝置的速記。
亦參看圖4至圖5,形成控制堆疊102、104及程式堆疊80。控制堆疊102、104含有用於由處理器52執行之程式的控制資料,且被分割成兩個部分:在控制堆疊緩衝器54中之內部控制堆疊102,及在外部記憶體56中處於堆疊記憶體78中之外部控制堆疊104。控制資料包括傳回位址及/或框架指標及/或其他控制資訊。程式堆疊80包括程式資料,該等程式資料包括本機變數、引數等等;且程式堆疊80亦可包括一些控制資料,例如,框架指標。計算系統50之作業系統將控制指標(CP)(單獨架構暫存器)指向程式資料中之目前程式位置,此處在圖4所展示之實例中指向程式堆疊80中之程式資料的頂部。
控制堆疊緩衝器模組72經組態以自處理器52接收控制資料、將控制資料儲存於控制堆疊緩衝器(CSB)54中、將控制資料區塊自CSB 54發送至外部記憶體56,及自外部記憶體56接收控制資料區塊。CSB 54及外部控制堆疊104在啟動時為空的,且程式堆疊80亦為空的。隨著由處理器52以軟體程式執行函數呼叫,處理器52將控制資料提供至控制堆疊緩衝器模組72。控制堆疊緩衝器模組72經組態以接收控制資料且將此等控制資料寫入至控制堆疊緩衝器54。舉例而言,如圖4所展示,控制堆疊緩衝器模組72可將傳回位址寫入至CSB 54中作為控制資料輸入項82。在此實例中,控制資料為傳回位址,但此僅為一實例,且代替傳回位址或除了傳回位址以外,諸如框架指標等等之其他控制資料亦可儲存於CSB 54中。模組72經組態以藉由自CSB 54移除控制資料且將新控制資料輸入項寫入至CSB 54中而對處理器52在CSB 54已滿時使新控制資料輸入項儲存於CSB 54中作出回應,或對上下文切換(亦即,正由處理器52執行之程式或程式之部分的改變)作出回應。CSB 54在CSB 54之內容待發送至控制框架模組76的情況下已 「滿」,即使CSB 54中之額外儲存空間可用亦如此。然而,通常,將在將內容發送至控制框架模組76之前使用CSB 54之整個儲存空間。模組72將多個控制資料輸入項82且較佳地將所有控制資料輸入項82頁面寫入至控制框架模組76。因此,模組72可藉由將CSB 54之內容發送至控制框架模組76而清空CSB 54。如圖5所展示,模組72已藉由將傳回位址1至傳回位址8發送至控制框架模組76且將傳回位址9寫入至CSB 54而清空CSB 54。相反地,當模組72藉由使用CSB 54中之控制資料而清空CSB 54時,模組72可自控制框架模組76擷取控制資料區塊。因此,若圖5中之傳回位址9由處理器模組70使用,則模組72可請求下一傳回位址區塊且自控制框架模組76接收傳回位址1至傳回位址8,自圖5轉至圖4。在圖4至圖5所展示之實例中,CSB具有八個控制資料輸入項82之容量,儘管CSB 54之其他容量也可使用。
控制堆疊緩衝器模組72較佳地但未必經由認證模組74而將控制資料輸入項82之區塊發送至控制框架模組76。認證模組74經組態成以使得安全性資訊極不可能被偶然重新建立之方式或即使供導出安全性資訊之控制資料輸入項82為吾人所知亦自控制資料輸入項82中之一或多者導出安全性資訊。安全性資訊極不可能被重新建立之處在於重新建立或再生安全性資訊於計算上昂貴,從而使重新建立該資訊所需要之資源(時間、計算能量等等)太大而無法適當化,即使有可能適當化亦如此。為了產生安全性資訊,認證模組74可(例如)將一函數應用於控制資料輸入項82中之一或多者且較佳地應用於控制資料輸入項82中之全部,以判定安全性資訊。此函數之一實例為雜湊函數。認證模組74經組態成使得嘗試在計算系統50中產生惡意探索之實體難以(若並非不可能)存取認證模組74且尤其是存取由認證模組74應用的包括與控制資料輸入項82雜湊之任何雜湊值之函數。
作為一實例,認證模組74經組態以基於來自CSB 54之多個控制 資料輸入項82而產生認證標籤。較佳地,認證模組74使用自CSB 54清空之所有控制資料輸入項82以便判定認證標籤。認證標籤為密碼編譯安全訊息認證程式碼(MAC)。認證模組74可使用多種技術中之任一者來判定認證標籤。舉例而言,認證模組74可將雜湊函數應用於控制資料輸入項82,從而使用雜湊值以判定認證標籤。認證標籤可具有多種長度中之任一者(其可基於諸如CSB大小之其他因素),且可儲存於外部記憶體56中之多個位置中。舉例而言,CSB 54之大小可為快取行之倍數,且認證標籤大小可被設定為兩個位元乘以CSB 54中之控制資料輸入項82之數量。因此,對於八(8)個輸入項82之CSB大小(每四個位元組長),且在32位元組快取行的情況下,對於認證標籤將存在16個位元,每輸入項兩個位元。可增加CSB 54之大小以容納較大認證標籤。
認證模組74經組態以將具有控制資料輸入項82之認證標籤提供至控制框架模組76。舉例而言,認證模組74可在將控制資料輸入項82提供至控制框架模組76之前將認證標籤組合至控制資料輸入項82中。因此,認證模組74可產生如圖6所展示的經修改之控制資料輸入項84,其中經修改之控制資料輸入項84中之每一者包括一控制資料主體86及一認證標籤部分88。替代地,認證模組74可將控制資料主體86(此處為傳回位址主體)及對應認證標籤部分88分離地提供至控制框架模組76。
控制框架模組76經組態以接收控制資料主體86及認證標籤部分88,且將經修改之控制資料輸入項84儲存於外部控制堆疊104中。模組76可分離地接收控制資料主體86及認證標籤部分88,且將其組合以形成經修改之控制資料輸入項84。替代地,模組76可接收經修改之控制資料輸入項84,其中控制資料主體86與認證標籤部分88已經組合。在任一狀況下,模組76經組態以將經修改之控制資料輸入項84儲存於 外部控制堆疊104中,亦即,與認證標籤部分88相關聯地儲存控制資料主體86,使得可在設法將控制資料主體86傳回至內部控制堆疊102的情況下擷取認證標籤部分88。經修改之控制資料輸入項84被寫入至外部控制堆疊104,如圖5所展示。如圖6所展示,在此實例中,認證標籤部分88附加至控制資料主體86,例如,佔據經修改之控制資料輸入項84之兩個最低有效位元。另外在此實例中,出於說明性目的,在圖6中運用兩數位識別符來標記認證標籤部分88。識別符之第一數位對應於認證標籤編號,且識別符之第二數位對應於傳回位址。因此,標籤11對應於用於傳回位址1的認證標籤1之部分。所有認證標籤部分88之組合構成認證標籤90。
如圖5所展示,控制框架模組76經組態以將自控制堆疊緩衝器模組72接收之控制資料92儲存於外部控制堆疊104中,控制資料92實體上自儲存於程式堆疊80中之程式資料94位移。控制框架模組76經組態以將程式資料94之堆疊框架儲存於一或多個實體位置中,且至少最初將控制資料92儲存於實體上自儲存程式資料94之位置位移的一或多個其他實體位置中。控制資料92及程式資料94之末端可最終在外部控制堆疊104及程式堆疊80到達彼此的情況下配置於鄰近實體位置中,但堆疊104、80開始於經位移位置(亦即,由記憶體位置分離)中。因此,將不可能(若並非不可能)使程式資料中之溢位影響控制資料92。因此,程式資料94中之溢位不可能變更(若不受到變更禁止)控制資料94,因此縮減(若不消除)堆疊超載惡意探索之可能性。圖5所展示之實例僅僅為一實例,此係因為可使用眾多其他記憶體儲存組態。舉例而言,控制框架模組76可在堆疊記憶體78中之鄰近實體位置處開始程式資料94及控制資料92,且使控制資料92及程式資料94在相對方向(亦即,彼此實體上遠離)上增長。又其他組態係可能的且可被使用。
如圖4至圖5所展示,控制框架模組76經組態以將程式資料94儲存 於堆疊框架中。在此實例中,每一堆疊框架包括本機變數、框架指標及引數,但不包括傳回位址。儲存於CSB 54中(或被儲存為控制資料92)之控制資料不儲存於堆疊框架中的此組態被稱作分割堆疊組態。亦即,控制資料92經儲存為實體上與程式資料94分離,且僅駐留於堆疊記憶體78之控制資料92中,而不駐留於堆疊記憶體78之程式資料94中。替代地,控制資料92可包括於程式資料94中。儲存於CSB 54中(或被儲存為控制資料92)之控制資料亦儲存於堆疊框架中的此組態被稱作陰影堆疊組態。舉例而言,傳回位址可儲存於控制資料92中,且亦儲存於程式資料94之各別堆疊框架中,例如,在框架指標與第一引數之間。
控制框架模組76經進一步組態以將經修改之控制資料輸入項84提供至認證模組74。控制框架模組76經組態以藉由提供對應於認證標籤90的經修改之控制資料輸入項84之區塊而對自認證模組74接收請求(例如,回應於CSB 54中之反向溢位或上下文切換)作出回應。控制框架模組76相應地調整控制指標,從而回應於提供回應於CSB 54之反向溢位的控制資料而將控制指標移動至下一控制資料區塊,或回應於上下文切換而儲存控制指標以供未來參考。
認證模組74經進一步組態以判定外部控制堆疊104中之控制資料是否已在將控制資料自外部控制堆疊104提供至控制堆疊緩衝器模組72之前被修改。認證模組74經組態以回應於將控制資料自外部控制堆疊104寫入至CSB 54中之內部控制堆疊102的期望(例如,請求)而驗證控制資料完整性,例如,回應於CSB 54中之反向溢位或上下文切換。為了驗證控制資料完整性,認證模組74可向控制框架模組76請求用於認證標籤90之經修改之控制資料輸入項84、判定經重新計算之認證標籤(亦被稱作認證驗證程式),且判定經重新計算之認證標籤是否匹配於儲存於外部控制堆疊104中之認證標籤90。對於待自外部控制 堆疊104寫入至CSB 54中之內部控制堆疊102中的控制資料,認證模組74重新計算應用於控制資料以產生認證標籤90之函數,此時使用控制資料主體86來計算該函數以判定經重新計算之認證標籤。為了重新計算函數,認證模組74經組態以自控制框架模組76接收控制資料且將函數應用於經接收之控制資料。認證模組74經組態以將用以判定認證標籤90之函數應用於自控制框架模組76接收之控制資料主體86以判定經重新計算之認證標籤。認證模組74經進一步組態以比較經重新計算之認證標籤與自控制框架模組76接收之認證標籤90,以判定經重新計算之認證標籤是否匹配於認證標籤90。認證模組74經組態以藉由將控制資料輸入項86提供至控制堆疊緩衝器模組72而對指示經重新計算之認證標籤匹配於認證標籤90的此比較作出回應。認證模組74經組態以藉由抑制將控制資料輸入項86發送至控制堆疊緩衝器模組72且藉由向處理器模組70提供控制資料完整性已因為已修改控制資料主體86中之至少一者而損失的警告而對指示經重新計算之認證標籤不匹配於認證標籤90的此比較作出回應。
參看圖7,同時進一步參考圖1至圖6,產生控制堆疊之處理程序150包括所展示之階段。然而,處理程序150僅為一實例而非限制性的。可(例如)藉由添加、移除、重新配置、組合、同時地執行多個階段及/或將單一階段分割成多個階段來更改處理程序150。
在階段152處,處理程序150包括回應於一或多個函數呼叫而將複數個控制資訊輸入項寫入至在處理器內部之控制緩衝器中。控制堆疊緩衝器模組72藉由將控制資料輸入項82寫入至在處理器52內部之CSB 54中而對一或多個函數呼叫作出回應。寫入控制資料輸入項82直至CSB 54已滿。在CSB 54填充之前,可回應於函數完成或以其他方式使用各別控制資料輸入項82中之控制資料而自CSB 54移除控制資料輸入項82中之一或多者。
在階段154處,處理程序150包括回應於控制緩衝器已滿且接收到另外函數呼叫而進行以下操作:將複數個控制資訊輸入項寫入至在處理器外部之外部記憶體;及將對應於另外函數呼叫之另外控制資訊輸入項寫入至控制緩衝器。控制堆疊緩衝器模組72藉由將控制資料輸入項82頁面寫入至外部記憶體56而對CSB 54已滿且接收到另外控制資料輸入項82以供儲存於CSB 54中作出回應。舉例而言,控制堆疊緩衝器模組72較佳地經由認證模組74而將內部控制堆疊102中之控制資料輸入項82之區塊頁面寫入至外部記憶體56,亦即,藉由將控制資料輸入項82之區塊發送至控制框架模組76。
處理程序150可進一步包括使用複數個控制資訊輸入項中之至少第一控制資訊輸入項及第二控制資訊輸入項來判定認證標籤。舉例而言,認證模組74自控制堆疊緩衝器模組72接收控制資料輸入項82之區塊,且使用控制資料輸入項82中之至少兩者來判定認證標籤。認證模組74可使用自控制堆疊緩衝器模組72接收之所有控制資料輸入項82以判定認證標籤90。處理程序150可包括將認證標籤之各別部分與控制資訊輸入項中之每一者相關聯地儲存至外部記憶體。認證模組74結合控制框架模組76可將認證標籤部分88與對應控制資料主體86相關聯地儲存至外部記憶體56。處理程序150可進一步包括使用儲存於外部記憶體中之第一控制資訊輸入項及第二控制資訊輸入項來判定認證驗證程式、判定認證驗證程式匹配於認證標籤,及基於認證驗證程式匹配於認證標籤而將第一控制資訊輸入項自外部記憶體寫入至控制堆疊緩衝器。舉例而言,認證模組74藉由自控制框架模組76擷取經修改之控制資料輸入項84而對(1)CSB 54中之新反向溢位條件或(2)上下文切換作出回應。認證模組74藉由重新計算認證標籤來判定認證驗證程式,且比較認證驗證程式與認證標籤(例如,認證標籤90)。另外,回應於如由認證模組74所判定之認證驗證程式匹配於認證標籤,認證模組74 將至少控制資料主體86發送至控制堆疊緩衝器模組72,控制堆疊緩衝器模組72將控制資料主體86寫入至CSB 54中之內部控制堆疊102。
將複數個控制資訊輸入項寫入至外部記憶體可包含伴隨將複數個控制資訊輸入項配置於外部記憶體之第一區域中而將複數個控制資訊輸入項寫入至外部記憶體,外部記憶體之第一區域實體上自儲存對應於控制資訊輸入項之程式資料的外部記憶體之第二區域位移。控制框架模組76可將外部控制堆疊104儲存於堆疊記憶體78中之實體上自程式堆疊80位移的位置中。另外,複數個控制資訊輸入項可被寫入至外部記憶體,其中複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複,其中堆疊框架儲存於外部記憶體中且至少在被原始寫入時含有對應於堆疊框架控制資訊輸入項之程式資料。舉例而言,控制框架模組76可將堆疊框架儲存於程式堆疊80中,堆疊框架包括作為控制資料主體86而儲存於外部控制堆疊104中之控制資料作為陰影堆疊。另外,處理程序150可進一步包括判定複數個控制資訊輸入項之至少主要部分匹配於堆疊框架控制資訊輸入項之至少主要部分,及基於複數個控制資訊輸入項之至少主要部分匹配於堆疊框架控制資訊輸入項之至少主要部分而將複數個控制資訊輸入項自外部記憶體寫入至控制堆疊緩衝器。舉例而言,認證模組74可經組態以且可判定儲存於外部控制堆疊104中之控制資料主體86匹配於程式堆疊80之對應堆疊框架中的對應控制資料。認證模組74可經組態以且可在外部控制堆疊104中之控制資料主體86不匹配於堆疊框架中之對應控制資料的情況下抑制將控制資料主體86遞送至控制堆疊緩衝器模組72。相反地,認證模組74可經組態以且可在外部控制堆疊104中之控制資料主體86匹配於堆疊框架中之對應控制資料的情況下將控制資料主體86發送至控制堆疊緩衝器模組72,且控制堆疊緩衝器模組72可將經接收之控制資料主體86寫入至CSB 54作為內 部控制堆疊102。
其他考慮
其他實例及實施係在本發明及隨附申請專利範圍之範疇及精神內。舉例而言,歸因於軟體之性質,可使用由處理器、硬體、韌體、硬連線或此等者中之任一者之組合執行的軟體來實施上文所描述之功能。實施功能之特徵亦可實體上位於各種位置處,包括經分佈成使得功能之部分實施於不同實體位置處。又,如本文中所使用,包括申請專利範圍中所使用,「中之至少一者」前之項目清單中所使用的「或」指示分離性清單,使得(例如)「A、B或C中之至少一者」之清單意謂單獨A,或單獨B,或單獨C,或AB,或AC,或BC,或ABC(亦即,A及B及C),或與一個以上同一特徵之組合(例如,AA、AAB、ABBC等等)。
作為另一實例實施,代替將外部控制堆疊104儲存為單獨實體,控制框架模組76可以分散方式儲存外部控制堆疊104。在此狀況下,經修改之控制資料輸入項84將儲存於具有各別堆疊框架之程式堆疊80中。控制框架模組76將經組態以找到外部控制堆疊104且將外部控制堆疊104遞送至認證模組74,且認證模組74將經組態以判定控制資料完整性,如上文所論述。
如本文中所使用,包括申請專利範圍中所使用,除非另有陳述,否則功能或操作係「基於」項目或條件之陳述意謂該功能或操作係基於所陳述之項目或條件,且可基於除了所陳述之項目或條件以外的一或多個項目及/或條件。
另外,資訊被發送或傳輸「至」實體之指示或將資訊發送或傳輸「至」實體之陳述並不要求完成通信。此等指示或陳述包括資訊係自發送實體傳送,但不到達資訊之預期接收端。即使不實際上接收資訊,預期接收端仍可被稱作接收實體,例如,接收執行環境。
可根據特定要求而作出實質變化。舉例而言,亦可使用自訂硬體,及/或可以硬體、軟體(包括攜帶型軟體,諸如小程式等等)或此兩者實施特定元件。另外,可使用至諸如網路輸入/輸出器件之其他計算器件的連接。
如本文中所使用,術語「機器可讀媒體」及「電腦可讀媒體」係指參與提供致使機器以特定方式操作之資料的任何媒體。在使用電腦系統的情況下,各種電腦可讀媒體可涉及到將指令/程式碼提供至處理器以供執行,及/或可用以儲存及/或攜載此等指令/程式碼(例如,作為信號)。在許多實施中,電腦可讀媒體為實體及/或有形儲存媒體。此媒體可採取許多形式,包括但不限於非揮發性媒體及揮發性媒體。非揮發性媒體包括(例如)光碟及/或磁碟。揮發性媒體包括但不限於動態記憶體。
常見形式之實體及/或有形電腦可讀媒體包括(例如)軟性磁碟、可撓性磁碟、硬碟、磁帶,或任何其他磁性媒體、CD-ROM、任何其他光學媒體、打孔卡、紙帶、具有孔圖案之任何其他實體媒體、RAM、PROM、EPROM、FLASH-EPROM、任何其他記憶體晶片或卡匣、如下文中所描述之載波,或可供電腦讀取指令及/或程式碼之任何其他媒體。
各種形式之電腦可讀媒體可涉及到將一或多個指令之一或多個序列攜載至一或多個處理器以供執行。僅僅作為實例,可最初將指令攜載於遠端電腦之磁碟及/或光碟上。遠端電腦可將指令載入至其動態記憶體中,且經由傳輸媒體而將指令作為信號發送以由電腦系統接收及/或執行。
上文所論述之方法、系統及器件為實例。各種組態可在適當時省略、取代或添加各種程序或組件。舉例而言,在替代組態中,可以不同於所描述之次序的次序來執行方法,且可添加、省略或組合各種步 驟。又,可在各種其他組態中組合關於某些組態所描述之特徵。可以相似方式組合組態之不同態樣及元件。又,技術演進,且因此,元件中之許多者為實例且並不限制本發明或申請專利範圍之範疇。
在描述中給出特定細節以提供對實例組態(包括實施)之透徹理解。然而,可在無此等特定細節的情況下實踐組態。舉例而言,已在無不必要之細節的情況下展示熟知電路、處理程序、演算法、結構及技術以便避免混淆組態。此描述僅提供實例組態,且並不限制申請專利範圍之範疇、適用性或組態。實情為,該等組態之先前描述提供用於實施所描述之技術的描述。可在不脫離本發明之精神或範疇的情況下對元件之功能及配置進行各種改變。
又,可將組態描述為被描繪為流程圖或方塊圖之處理程序。雖然每一者可將操作描述為依序處理程序,但可並行地或同時地執行操作中之許多者。另外,可重新配置操作之次序。處理程序可具有圖中未包括之額外階段或功能。此外,可由硬體、軟體、韌體、中間軟體、微碼、硬體描述語言或其任何組合實施方法之實例。當以軟體、韌體、中間軟體或微碼予以實施時,用以執行任務之程式碼或程式碼區段可儲存於諸如儲存媒體之非暫時性電腦可讀媒體中。處理器可執行所描述之任務。
諸圖所展示及/或本文中論述為彼此連接或通信之組件(功能的或其他)以通信方式耦接。亦即,其可直接地或間接地連接以實現其間之通信。
在已描述若干實例組態的情況下,可在不脫離本發明之精神的情況下使用各種修改、替代構造及等效者。舉例而言,以上元件可為較大系統之組件,其中其他規則可優先於或以其他方式修改本發明之應用。又,可在考慮以上元件之前、期間或之後進行數種操作。因此,以上描述並不約束申請專利範圍之範疇。
另外,可揭示一種以上發明。
150‧‧‧處理程序
152‧‧‧階段
154‧‧‧階段

Claims (29)

  1. 一種產生一控制堆疊之方法,該方法包含:回應於一或多個函數呼叫而將複數個控制資訊輸入項寫入至在一處理器內部之一控制堆疊緩衝器中;及回應於該控制堆疊緩衝器已滿且接收到一另外函數呼叫而進行以下操作:將該複數個控制資訊輸入項寫入至在該處理器外部之一外部記憶體;及將對應於該另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器。
  2. 如請求項1之方法,其進一步包含使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤。
  3. 如請求項2之方法,其進一步包含將該認證標籤之一各別部分與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存至該外部記憶體。
  4. 如請求項2之方法,其中該複數個控制資訊輸入項包含兩個以上控制資訊輸入項,且其中判定該認證標籤包含將一函數應用於該複數個控制資訊輸入項中之全部。
  5. 如請求項2之方法,其進一步包含:使用儲存於該外部記憶體中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;判定該認證驗證程式匹配於該認證標籤;及基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
  6. 如請求項1之方法,其中將該複數個控制資訊輸入項寫入至該外部記憶體包含伴隨將該複數個控制資訊輸入項配置於該外部記憶體之一第一區域中而將該複數個控制資訊輸入項寫入至該外部記憶體,該外部記憶體之該第一區域實體上自儲存對應於該等控制資訊輸入項之程式資料的該外部記憶體之一第二區域位移。
  7. 如請求項6之方法,其中將該複數個控制資訊輸入項寫入至該外部記憶體包含伴隨該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複而將該複數個控制資訊輸入項寫入至該外部記憶體,且其中該等堆疊框架儲存於該外部記憶體中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
  8. 如請求項7之方法,其進一步包含:判定該複數個控制資訊輸入項之至少該等主要部分匹配於該等堆疊框架控制資訊輸入項之至少該等主要部分;及基於該複數個控制資訊輸入項之至少該等主要部分匹配於該等堆疊框架控制資訊輸入項之至少該等主要部分而將該複數個控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
  9. 一種計算系統,其包含:一處理器,其含有一控制堆疊緩衝器;及一外部記憶體,其在該處理器外部且以通信方式耦接至該處理器;其中該處理器經組態以進行以下操作:藉由將一控制資訊輸入項寫入至該控制堆疊緩衝器中而對一函數呼叫作出回應;對一控制框架填充該控制堆疊緩衝器作出回應,該控制框 架包含複數個控制資訊輸入項,且藉由將該控制框架寫入至該外部記憶體且藉由將對應於一另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器而接收該另外函數呼叫。
  10. 如請求項9之系統,其中該處理器經進一步組態以使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤。
  11. 如請求項10之系統,其中該處理器經進一步組態以將該認證標籤之一各別部分與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存至該外部記憶體。
  12. 如請求項10之系統,其中該複數個控制資訊輸入項包含兩個以上控制資訊輸入項,且其中該處理器經組態以藉由將一函數應用於該複數個控制資訊輸入項中之全部而判定該認證標籤。
  13. 如請求項10之系統,其中該處理器經進一步組態以進行以下操作:使用儲存於該外部記憶體中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;判定該認證驗證程式匹配於該認證標籤;及基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
  14. 如請求項9之系統,其中該處理器經組態以藉由形成一分割堆疊而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項配置於該外部記憶體之一第一區域中,該外部記憶體之該第一區域實體上與儲存對應於該等控制資訊輸入項之程式資料的該外部記憶體之一第二區域分離。
  15. 如請求項9之系統,其中該處理器經組態以藉由形成一陰影堆疊 而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複,且其中該等堆疊框架儲存於該外部記憶體中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
  16. 一種計算系統,其包含:用於儲存一控制堆疊緩衝器的構件;用於儲存程式資料及控制資料的構件;用於藉由將一控制資訊輸入項寫入至該控制堆疊緩衝器中而對一函數呼叫作出回應的構件;及用於對一控制框架填充該控制堆疊緩衝器作出回應的構件,該控制框架包含複數個控制資訊輸入項,且藉由將該控制框架寫入至該等用於儲存程式資料及控制資料的構件且藉由將對應於一另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器而接收該另外函數呼叫。
  17. 如請求項16之系統,其進一步包含經組態以使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤的認證構件。
  18. 如請求項17之系統,其中該等用於儲存程式資料及控制資料的構件進一步用於與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存該認證標籤之一各別部分。
  19. 如請求項17之系統,其中該複數個控制資訊輸入項包含兩個以上控制資訊輸入項,且其中該等認證構件經組態以藉由將一函數應用於該複數個控制資訊輸入項中之全部而判定該認證標籤。
  20. 如請求項17之系統,其中該等認證構件經進一步組態以進行以 下操作:使用儲存於該等用於儲存程式資料及控制資料的構件中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;及判定該認證驗證程式匹配於該認證標籤;其中該系統進一步包含用於基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該等儲存構件寫入至該控制堆疊緩衝器的構件。
  21. 如請求項16之系統,其中該等用於儲存程式資料及控制資料的構件進一步用於藉由形成一分割堆疊而寫入該控制框架,其中該複數個控制資訊輸入項配置於該等用於儲存程式資料及控制資料的構件之一第一區域中,該等用於儲存程式資料及控制資料的構件之該第一區域實體上與儲存對應於該等控制資訊輸入項之程式資料的該等用於儲存程式資料及控制資料的構件之一第二區域分離。
  22. 如請求項16之系統,其中該等用於儲存程式資料及控制資料的構件進一步用於藉由形成一陰影堆疊而寫入該控制框架,其中該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複,且其中該等堆疊框架儲存於該等用於儲存程式資料及控制資料的構件中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
  23. 一種非暫時性處理器可讀儲存器件,其包含處理器可讀指令,該等處理器可讀指令經組態以致使一處理器進行以下操作:藉由將一控制資訊輸入項寫入至該處理器中之一控制堆疊緩衝器中而對一函數呼叫作出回應; 對一控制框架填充該控制堆疊緩衝器作出回應,該控制框架包含複數個控制資訊輸入項,且藉由將該控制框架寫入至以通信方式耦接至該處理器且實體上與該處理器分離之一外部記憶體且藉由將對應於一另外函數呼叫之一另外控制資訊輸入項寫入至該控制堆疊緩衝器而接收該另外函數呼叫。
  24. 如請求項23之儲存器件,其中該等指令經進一步組態以致使該處理器使用該複數個控制資訊輸入項中之至少一第一控制資訊輸入項及一第二控制資訊輸入項來判定一認證標籤。
  25. 如請求項24之儲存器件,其中該等指令經進一步組態以致使該處理器將該認證標籤之一各別部分與該第一控制資訊輸入項及該第二控制資訊輸入項中之每一者相關聯地儲存至該外部記憶體。
  26. 如請求項24之儲存器件,其中該複數個控制資訊輸入項包含兩個以上控制資訊輸入項,且其中該等經組態以致使該處理器判定該認證標籤的指令經組態以致使該處理器藉由將一函數應用於該複數個控制資訊輸入項中之全部而判定該認證標籤。
  27. 如請求項24之儲存器件,其中該等指令經進一步組態以致使該處理器進行以下操作:使用儲存於該外部記憶體中之至少該第一控制資訊輸入項及該第二控制資訊輸入項來判定一認證驗證程式;判定該認證驗證程式匹配於該認證標籤;及基於該認證驗證程式匹配於該認證標籤而將該第一控制資訊輸入項自該外部記憶體寫入至該控制堆疊緩衝器。
  28. 如請求項23之儲存器件,其中該等經組態以致使該處理器將該控制框架寫入至該外部記憶體的指令經組態以致使該處理器藉由形成一分割堆疊而將該控制框架寫入至該外部記憶體,其中 該複數個控制資訊輸入項配置於該外部記憶體之一第一區域中,該外部記憶體之該第一區域實體上與儲存對應於該等控制資訊輸入項之程式資料的該外部記憶體之一第二區域分離。
  29. 如請求項23之儲存器件,其中該等經組態以致使該處理器將該控制框架寫入至該外部記憶體的指令經組態以致使該處理器藉由形成一陰影堆疊而將該控制框架寫入至該外部記憶體,其中該複數個控制資訊輸入項之至少主要部分為寫入於堆疊框架中之堆疊框架控制資訊輸入項之主要部分的重複,且其中該等堆疊框架儲存於該外部記憶體中且至少在被原始寫入時含有對應於該等堆疊框架控制資訊輸入項之程式資料。
TW105103186A 2015-02-02 2016-02-01 經認證之控制堆疊 TW201643763A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/612,067 US9672351B2 (en) 2015-02-02 2015-02-02 Authenticated control stacks

Publications (1)

Publication Number Publication Date
TW201643763A true TW201643763A (zh) 2016-12-16

Family

ID=55359743

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105103186A TW201643763A (zh) 2015-02-02 2016-02-01 經認證之控制堆疊

Country Status (6)

Country Link
US (1) US9672351B2 (zh)
EP (1) EP3254222A2 (zh)
JP (1) JP2018506784A (zh)
CN (1) CN107209826B (zh)
TW (1) TW201643763A (zh)
WO (1) WO2016126523A2 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104238953A (zh) * 2013-06-13 2014-12-24 中兴通讯股份有限公司 直接表的存储方法和装置
US9606855B1 (en) 2016-01-06 2017-03-28 International Business Machines Corporation Caller protected stack return address in a hardware managed stack architecture
US9495237B1 (en) 2016-01-06 2016-11-15 International Business Machines Corporation Detection of corruption of call stacks
US10228992B2 (en) 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US9582274B1 (en) 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US10120745B2 (en) * 2016-01-06 2018-11-06 International Business Machines Corporation Providing instructions to protect stack return addresses in a hardware managed stack architecture
US9514301B1 (en) 2016-01-06 2016-12-06 International Business Machines Corporation Interlinking modules with differing protections using stack indicators
US9576128B1 (en) 2016-01-06 2017-02-21 International Business Machines Corporation Interlinking routines with differing protections using stack indicators
US10157268B2 (en) * 2016-09-27 2018-12-18 Microsoft Technology Licensing, Llc Return flow guard using control stack identified by processor register
US10740452B2 (en) * 2017-09-15 2020-08-11 Arm Limited Call path dependent authentication
US10185595B1 (en) * 2018-06-04 2019-01-22 Confia Systems, Inc. Program verification using hash chains
CN110598406B (zh) * 2018-06-12 2022-08-23 杨力祥 一种数据保护方法及计算装置
CN112100954B (zh) * 2020-08-31 2024-07-09 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质
US11372969B1 (en) * 2021-09-17 2022-06-28 Polyverse Corporation Randomized canary and shadow stack for JIT-ROP defense

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5107457A (en) 1989-04-03 1992-04-21 The Johns Hopkins University Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack
JP3634379B2 (ja) 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
US6138238A (en) * 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US6167504A (en) 1998-07-24 2000-12-26 Sun Microsystems, Inc. Method, apparatus and computer program product for processing stack related exception traps
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US8060743B2 (en) 2003-11-14 2011-11-15 Certicom Corp. Cryptographic method and apparatus
JP2006203564A (ja) 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US8407763B2 (en) 2006-04-28 2013-03-26 Bae Systems Information And Electronic Systems Integration Inc. Secure network interface device
EP1870829B1 (en) 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
US8196110B2 (en) * 2007-11-30 2012-06-05 International Business Machines Corporation Method and apparatus for verifying a suspect return pointer in a stack
US8117660B2 (en) * 2008-06-19 2012-02-14 Microsoft Corporation Secure control flows by monitoring control transfers
US8837741B2 (en) 2011-09-12 2014-09-16 Qualcomm Incorporated Systems and methods for encoding exchanges with a set of shared ephemeral key data
US9165138B2 (en) 2012-07-11 2015-10-20 Leviathan Security Group, Inc. Mitigation of function pointer overwrite attacks

Also Published As

Publication number Publication date
CN107209826B (zh) 2020-06-09
CN107209826A (zh) 2017-09-26
US20160224784A1 (en) 2016-08-04
EP3254222A2 (en) 2017-12-13
JP2018506784A (ja) 2018-03-08
US9672351B2 (en) 2017-06-06
WO2016126523A3 (en) 2016-09-29
WO2016126523A2 (en) 2016-08-11

Similar Documents

Publication Publication Date Title
TW201643763A (zh) 經認證之控制堆疊
US11848914B2 (en) High-throughput data integrity via trusted computing
CN112988764B (zh) 数据存储方法、装置、设备和存储介质
CN113785548B (zh) 用于实施数据中心中的有效载荷安全性策略的证明服务
US9215251B2 (en) Apparatus, systems, and methods for managing data security
TW201617957A (zh) 鑑別變數之管理技術
EP2932690B1 (en) Copy offload for disparate offload providers
CN107430555B (zh) 用于存储器保护的高速缓存和数据组织
CN110008737B (zh) 区块链中实现隐私保护的方法、节点和存储介质
CN112035144A (zh) 区块链系统的升级方法、装置、计算机设备及存储介质
CN113157635A (zh) 在fpga上实现高效合约调用的方法及装置
WO2020037623A1 (zh) 可抗量子区块链账户系统的扩容方法、装置以及系统
US9118625B2 (en) Anti-malware system, method of processing data in the same, and computing device
EP2863329A1 (en) Establishing physical locality between secure execution environments
WO2024006144A1 (en) Security subsystem for execution verification
US11811948B2 (en) Flexible security enclave for protecting data at rest and in motion
WO2024188223A1 (zh) 基于安全虚拟化的硬件可信根代理交互方法和网络设备
US20230418985A1 (en) Security subsystem for remote attestation
CN117332831A (zh) 分布式神经网络加速器系统
US20220342996A1 (en) Information processing apparatus, method of controlling the same, and storage medium
CN114817936B (zh) 基于异构内存的内存全加密管理方法、装置、设备及介质
US20230418936A1 (en) Security subsystem for execution verification
TW202441402A (zh) 用於機密計算的保護ats免受惡意裝置的侵害
KR20230075548A (ko) 트러스티드 컴퓨팅 시스템 및 이의 증명 방법
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载