TW201737150A - 時變位址空間佈局隨機化 - Google Patents

時變位址空間佈局隨機化 Download PDF

Info

Publication number
TW201737150A
TW201737150A TW106107191A TW106107191A TW201737150A TW 201737150 A TW201737150 A TW 201737150A TW 106107191 A TW106107191 A TW 106107191A TW 106107191 A TW106107191 A TW 106107191A TW 201737150 A TW201737150 A TW 201737150A
Authority
TW
Taiwan
Prior art keywords
system service
versions
version
service
identifier
Prior art date
Application number
TW106107191A
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 TW201737150A publication Critical patent/TW201737150A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Abstract

實施例包括用於時變位址空間佈局隨機化之計算裝置、設備及藉由設備實施的方法。該設備可啟動一系統服務之第一複數個版本且將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者。該設備可自一第一應用程式接收執行該系統服務之一第一請求。該設備可自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本,且使用該系統服務之該第一版本的資料來執行該系統服務。

Description

時變位址空間佈局隨機化
駭客將多種策略用於攻擊包括行動裝置之計算裝置。許多策略涉及嘗試識別應用程式之記憶體佈局,使得系統服務中之已知弱點可藉由知道服務在記憶體中位於何處而被利用。此等攻擊可實現目標為系統服務之「控制劫持攻擊(control hijack attack)」,諸如傳回導向式程式化(return oriented programming,ROP)。ROP攻擊之目標為權限升級及隨後的益處。此等攻擊常常使用攻擊者窮盡性探索程序位址空間以發現易受損的或小工具(gadget)程式碼/資料位置的蠻力戰術。蠻力戰術可導致攻擊的受害者系統服務崩潰。另一形式之攻擊利用資訊洩漏。此等技術利用格式字串弱點來取得一定資訊(例如,傳回位址及藉此某些程式庫函數位置)。易受損程序之資訊洩漏可危害另一程序,特定言之使用動態碎片程式庫之程序。攻擊可將數個技術組合以更有效地發現供一或多個程序使用的位址空間之可利用弱點。 位址空間佈局隨機化(Address Space Layout Randomization,ASLR)係藉由在運行時間將程式之不同區段儲存在記憶體中之隨機選擇位置中及使用位址空間圖來實現程式執行而保護應用程式免於侵入攻擊的熟知技術。ASLR提供抵禦並非由習知應用程式映射(其中程式區段係在特定固定(例如,相連)位置處載入)提供之黑客行為的保護。ASLR使得攻擊者難以在主動地運行之程序之位址空間中找到不同程式碼位置。然而,ASLR仍然可受攻擊。即使當應用程式碼使用ASLR進行隨機化時,蠻力攻擊中藉由攻擊者聚集之資訊可在重新初始化受害者系統服務後使用,此係因為同一位址空間可使用。
各種實施例之方法及設備提供用於一計算裝置上之時變位址空間佈局隨機化的設備及方法,包括啟動一系統服務之第一複數個版本,及將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者。各種實施例可進一步包括自一第一應用程式接收執行該系統服務之一第一請求,自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本,及使用該系統服務之該第一版本的資料來執行該系統服務。 一些實施例可進一步包括自該第一應用程式接收執行該系統服務之一第二請求,自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第二版本,及使用該系統服務之該第二版本的資料來執行該系統服務。 一些實施例可包括將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者。該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符可不同。各種實施例可進一步包括使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符,及儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務識別符的該等關聯。各種實施例可進一步包括使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局關聯。各種實施例可進一步包括儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該等隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局的該等關聯。 在一些實施例中,執行該系統服務之該第一請求包括該系統服務識別符,且自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本可包括自與該系統服務識別符關聯的該系統服務之該第一複數個版本隨機地選擇該系統服務之該第一版本。各種實施例可進一步包括為該第一應用程式提供該系統服務之該第一版本之一第一系統服務版本識別符,及自該第一應用程式接收具有該第一系統服務版本識別符的執行該系統服務之該第一版本之一請求。 一些實施例可進一步包括使用該第一系統服務版本識別符與該第一系統服務版本之該隨機虛擬位址空間佈局之間的一關聯,定位該第一系統服務版本之一隨機虛擬位址。此等實施例可進一步包括將該第一系統服務版本之該隨機虛擬位址轉譯為該系統服務之該第一版本的該資料儲存所在之一實體位址,及擷取該系統服務之該第一版本的該資料。 一些實施例可進一步包括將一處理識別符指派給該系統服務之該第一複數個版本中之每一者。在此等實施例中,用於該系統服務之該第一複數個版本中之每一者的該處理識別符可相同。在此等實施例中,對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者、將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者及使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符可進行。 一些實施例可進一步包括接收為該系統服務之該第一版本之一執行的動態產生程式碼分配程式碼緩衝空間的一請求,隨機地選擇一程式碼緩衝位址,及判定與該程式碼緩衝位址關聯的一程式碼緩衝空間是否足夠大且可用於儲存該動態產生程式碼。此等實施例可進一步包括回應於判定該程式碼緩衝空間足夠大以儲存該動態產生程式碼,在該程式碼緩衝位址處儲存該動態產生程式碼。 一些實施例可進一步包括自一第二應用程式接收執行該系統服務之一第二請求,偵測來自該第二應用程式的執行該系統服務之該第二請求係對該系統服務之一攻擊,及啟動該系統服務之第二複數個版本。此等實施例可進一步包括將一隨機虛擬位址空間佈局指派給該系統服務之該第二複數個版本中之每一者。該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局與該系統服務之該第二複數個版本中之每一者的該隨機虛擬位址空間佈局可不同。此等實施例可進一步包括自該系統服務之該第一複數個版本及該系統服務之該第二複數個版本隨機地選擇該系統服務之一第二版本,及使用該系統服務之該第二版本的資料來執行該系統服務。 在一些實施例中,啟動一系統服務之第一複數個版本可包括在具有不同指令集架構的複數個異質處理器核心中之一者上啟動該系統服務之該第一複數個版本中的該系統服務之多個版本中之每一者。在此等實施例中,自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本可包括隨機地選擇該複數個異質處理器核心中之一第一異質處理器核心,該系統服務之該第一版本在該第一異質處理器核心上啟動。在此等實施例中,使用該系統服務之該第一版本的資料來執行該系統服務可包括由該第一異質處理器核心執行該系統服務。此等實施例可進一步包括將來自該第一應用程式的執行該系統服務之該第一請求傳送至該第一異質處理器核心,接收由該第一異質處理器核心進行的該系統服務之該執行的一輸出,及將該輸出傳回至該第一應用程式。 各種實施例可包括一種計算裝置,其具有一啟動器、以通信方式連接至該啟動器之一映射器、以通信方式連接至該啟動器之一請求協調器,及以通信方式連接至該請求協調器之一處理器。該啟動器、該映射器、該請求協調器及該處理器可經組態以執行以上概述之實施例方法中之一或多者的操作。 各種實施例可包括一計算裝置,該計算裝置具有用於執行以上概述之實施例方法中之一或多者之功能的構件。 各種實施例可包括非暫時性處理器可讀儲存媒體,其上儲存有處理器可執行指令,該等指令經組態以使一計算裝置之一處理器執行以上概述之實施例方法中之一或多者的操作。
將參看隨附圖式來詳細描述各種實施例。在任何可能之處,貫穿圖式將使用相同參考數字指代相同或類似部分。對特定實例及實施進行之參考為出於說明之目的,且並不意欲限制申請專利範圍之範疇。 術語「計算裝置」及「行動計算裝置」在本文中可互換地使用,以指以下項中之任一個或全部:蜂巢式電話、智慧型電話、個人或行動多媒體播放器、個人資料助理(PDA)、膝上型電腦、平板電腦、可轉換之膝上型電腦/平板電腦(2合1電腦)、智慧筆記型電腦、超級本、迷你筆記型電腦、掌上型電腦、無線電子郵件接收器、具備多媒體網際網路能力之蜂巢式電話、行動遊戲控制台、無線遊戲控制器,及包括記憶體及多核心可程式化處理器之類似個人電子裝置。術語「計算裝置」可進一步指固定計算裝置,包括個人電腦、桌上型電腦、一體式電腦、工作站、超級電腦、大型電腦、嵌入型電腦、伺服器、本籍電影院電腦及遊戲控制台。 各種實施例包括方法,及實施此等方法以用於藉由亦隨機化供應用程式在時間維度中使用的系統服務之位址空間佈局來防止位址空間佈局隨機化(Address Space Layout Randomization,ASLR)攻擊的系統及裝置。各種實施例可包括啟動系統服務之多個版本,其中系統服務之每一版本具有可隨機地進行選擇的不同位址空間佈局,且應用程式對系統服務之每一請求可經引導至系統服務版本的隨機選擇之系統服務版本。 一般而言,時變ASLR可在系統開機時或在系統開機之後回應於對系統服務之第一請求而創建系統服務之各種版本。系統服務之每一版本可經指派隨機產生的位址空間佈局。用於每一系統服務之每一位址空間佈局可儲存用於實施對應系統服務之項目,包括儲存程序重疊、堆積(heap)、資料及函數指標或程式庫記憶體圖。用於系統服務之每一版本的位址空間可在虛擬位址空間中創建,且每一虛擬位址空間可將至系統服務之程式碼(例如,用於系統服務之程式碼程式庫)的不同記憶體映射儲存於實體位址空間中。請求協調器可經實施以接收對系統服務之請求,以及隨機地指派系統服務之各種版本中之一者以執行所請求之系統服務。 為了使ASLR時變,每當接收到對相同系統服務之請求時,請求協調器可做出對應於所請求之系統服務的至系統服務之數個版本中之一者的隨機指派。此被稱為時變ASLR,且藉由關於對系統服務之每一請求隨機地指派不同版本之系統服務來實現。當各種實施例之時變ASLR經實施時,對於攻擊者提交的對系統服務之每一請求,進行蠻力攻擊之攻擊者將觀察到不同的虛擬位址空間。又,漏泄之資訊將變得更難以使用,此係因為系統服務之一個版本的所獲得資訊將不適用於系統服務之另一版本。此將使對系統服務之成功蠻力攻擊所需的嘗試的數目大大增加。 在一些實施例中,請求協調器可經組態以藉由監視請求以辨識反常的請求型樣來偵測或懷疑一攻擊。當偵測到或懷疑一攻擊時,請求協調器可創建系統服務(或多個系統服務)之新複本且使用隨機位址空間佈局來儲存該等新複本,由此進一步增大ASLR系統中之隨機性。 對於粗粒度之時變ASLR,堆積、堆疊、可執行體、共用程式庫等之開始位置可關於同一系統服務之變化版本改變。在一實例系統中,使用者空間組件(諸如,啟動器)可啟動同一系統服務之多個版本。每一版本可作為具有不同位址空間佈局之單獨程序而啟動。不同版本可包括於程序群組中且可與同一程序群組識別符(程序群組ID)相關聯。內核空間映射函數可使用程序群組ID來辨識作為系統服務之版本的所有程序,且將每一程序映射至不同的隨機位址空間佈局。 在創建程序及映射階段期間,內核程式碼可確保:隨機產生的新位址不與系統服務之現有版本中中任一者衝突。系統服務之每一版本可經指派一系統服務版本識別符(諸如,控點、標籤或其他參考),其用以唯一地辨識系統服務之版本及物體之實際位址。 由系統執行之應用程式可使用查找方法來查找系統服務,以擷取用於系統服務或程序之一版本的一系統服務版本識別符。請求協調器可將對應於所請求之系統服務之一版本的一隨機選擇之系統服務版本識別符傳回至請求應用程式。應用程式可在其對系統服務之所有調用中使用此系統服務版本識別符。請求協調器可傳回不同的隨機選擇之系統服務版本識別符以用於針對相同系統服務之查找方法之不同執行。 對於細粒度之時變ASLR,在具有虛擬機內之動態產生程式碼之系統服務中,動態程式碼之不同片段在程式碼緩衝器中之位置可定位於程式碼緩衝器中之隨機位置處(包括程式碼緩衝器之開始處)。程式碼緩衝器中之動態程式碼的隨機化可藉由隨機記憶體分配器使用內建式程式碼程式庫之記憶體分配函數來實施,或以類似方式藉由內核之隨機記憶體分配器來實施。在任一個例中,該隨機記憶體分配器可維持識別系統服務之版本的系統服務版本識別符及用於關於系統服務之每一版本的動態程式碼之經指派緩衝位址之一清單。當藉由該等系統服務版本識別符識別的系統服務之一不同版本嘗試分配大小為n位元組之緩衝位址時,隨機記憶體分配器可遍歷針對每一版本之清單且判定是否存在未用於系統服務之一版本的緩衝位址,且為該等系統服務版本識別符指派一未使用的緩衝位址。 圖1說明一系統,該系統包括適合於與各種實施例一起使用的與遠端計算裝置50通信之計算裝置10。計算裝置10可包括系統單晶片(SoC) 12,其具有處理器14、記憶體16、通信介面18及儲存記憶體介面20。該計算裝置可進一步包括諸如有線或無線數據機之通信組件22、儲存記憶體24、天線26以用於建立無線通信鏈路。處理器14可包括多種硬體核心中之任一者,例如,數個處理器核心。 術語「系統單晶片」(SoC)在本文中用以指通常(但非排他地)包括硬體核心、記憶體及通信介面的一組互連電子電路。硬體核心可包括多種不同類型的處理器,諸如通用處理器、中央處理單元(CPU)、數位信號處理器(DSP)、圖形處理單元(GPU)、加速處理單元(APU)、輔助處理器、單核心處理器及多核心處理器。硬體核心可進一步體現其他硬體及硬體組合,諸如場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、其他可程式化邏輯裝置、離散閘邏輯、電晶體邏輯、效能監視硬體、看門狗硬體及時間參考。積體電路可經組態以使得積體電路之組件駐存於單塊半導體材料(諸如,矽)上。 SoC 12可包括一或多個處理器14。計算裝置10可包括多於一個SOC 12,由此增加處理器14及處理器核心的數目。計算裝置10亦可包括不與SoC 12相關聯之處理器14。個別處理器14可為多核心處理器,如下文參看圖2所描述。處理器14可出於特定目的而各自經組態為可與計算裝置10之其他處理器14相同或不同。具有相同或不同組態的處理器14及處理器核心中之一或多者可分組在一起。處理器14或處理器核心之群組可被稱為多處理器叢集。 SoC 12之記憶體16可為經組態用於儲存資料及處理器可執行碼以供藉由處理器14存取的揮發性或非揮發性記憶體。計算裝置10及/或SoC 12可包括經組態以用於各種目的之一或多個記憶體16。一或多個記憶體16可包括揮發性記憶體,諸如隨機存取記憶體(RAM)或主記憶體,或快取記憶體。此等記憶體16可經組態以臨時保持有限量的以下資料:自資料感測器或子系統接收之資料、基於多種因素預期未來存取而自非揮發性記憶體載入至記憶體16的自非揮發性記憶體請求之資料及/或處理器可執行碼指令,及/或由處理器14產生且經臨時儲存以供未來快速存取(而非儲存於非揮發性記憶體中)的中間處理資料及/或處理器可執行碼指令。 記憶體16可經組態以至少臨時地儲存自另一記憶體裝置(諸如,另一記憶體16或儲存記憶體24)載入至記憶體16的資料及處理器可執行碼,以供藉由處理器14中之一或多者存取。載入至記憶體16之資料或處理器可執行碼可回應於藉由處理器14執行功能而予以載入。回應於功能之執行將資料或處理器可執行碼載入至記憶體16可起因於對記憶體16的不成功或錯過的記憶體存取請求,此係因為所請求之資料或處理器可執行碼不位於記憶體16中。回應於錯過,可進行至另一記憶體16或儲存記憶體24之記憶體存取請求,以將所請求之資料或處理器可執行碼自另一記憶體16或儲存記憶體24載入至記憶體裝置16。回應於功能之執行而將資料或處理器可執行碼載入至記憶體16可起因於對另一記憶體16或儲存記憶體24之記憶體存取請求,且資料或處理器可執行碼可載入至記憶體16以供稍後存取。 記憶體16可經組態以至少暫時地儲存自原始資料源裝置(諸如,感測器或子系統)載入至記憶體16的原始資料。原始資料可自原始資料源裝置串流傳輸至記憶體16且由記憶體儲存,直至原始資料可由機器學習加速器接收且處理為止,如本文中參看圖3至圖19進一步所描述。 儲存記憶體介面20及儲存記憶體24可一致工作,以允許計算裝置10將資料及處理器可執行碼儲存於非揮發性儲存媒體上。儲存記憶體24可更類似記憶體16之實施例進行組態,其中儲存記憶體24可儲存資料或處理器可執行碼,以供藉由處理器14中之一或多者存取。非揮發性的儲存記憶體24可甚至在計算裝置10之電力已被切斷之後保留資訊。當電力恢復且計算裝置10重啟時,儲存於儲存記憶體24上之資訊可能可用於計算裝置10。儲存記憶體介面20可控制對儲存記憶體24之存取,且允許處理器14自儲存記憶體24讀取資料及將資料寫入至該儲存記憶體。 計算裝置10之組件中的一些或全部可以不同方式配置及/或組合,同時仍為必要功能提供服務。此外,計算裝置10可不限於組件中之每一者中的一者,且每一組件之多個個例可包括於計算裝置10之各種組態中。 圖2說明適合於實施一實施例之多核心處理器14。多核心處理器14可具有複數個均質的或異質的處理器核心200、201、202、203。處理器核心200、201、202、203可為均質的,此係因為單一處理器14之處理器核心200、201、202、203可經組態用於相同目的且具有相同或類似效能特性。舉例而言,處理器14可為通用處理器,且處理器核心200、201、202、203可為均質的通用處理器核心。替代地,處理器14可為圖形處理單元或數位信號處理器,且處理器核心200、201、202、203可分別為均質的圖形處理器核心或數位信號處理器核心。為了易於參考,術語「處理器」及「處理器核心」可在本文中互換地使用。 處理器核心200、201、202、203可為異質的,此係因為單一處理器14之處理器核心200、201、202、203可經組態用於不同目的及/或具有不同效能特性。此等異質處理器核心之異質性可包括不同指令集架構、管線、操作頻率等。此等異質處理器核心之一實例可包括被稱為「大小核(big.LITTLE)」架構之物,其中較慢的低功率處理器核心可與較強大的及功率短缺之處理器核心耦接。在類似實施例中,SoC 12可包括數個均質的或異質的處理器14。 在圖2中所說明之實例中,多核心處理器14包括四個處理器核心200、201、202、203 (亦即,處理器核心0、處理器核心1、處理器核心2及處理器核心3)。為易於解釋,本文中之實例可指圖2中所說明的四個處理器核心200、201、202、203。然而,圖2中所說明且本文中所描述之四個處理器核心200、201、202、203僅作為一實例而提供,且絕非意欲將各種實施例限制為四核心處理器系統。計算裝置10、SoC 12或多核心處理器14可個別地或以組合包括少於或多於本文中所說明且描述之四個處理器核心200、201、202、203的處理器核心。 圖3說明根據一些實施例的儲存於記憶體中的產生系統服務之各種版本的時變ASLR之非限制性實例。圖3中之圖300包括一水平軸線,不同計算裝置係沿著該水平軸線指定,例如,計算裝置D1、D2,直至Dx,其中「x」為任何整數值。圖300亦包括一豎直軸線,其表示增加之時間及所表示時間中的不同系統服務請求。在圖300中標繪了回應於不同系統服務請求在不同時間指派的不同計算裝置中之每一者上所請求的多個系統服務之各種版本310至336。舉例而言,計算裝置D1說明為隨時間作出針對單一系統服務(S1)之多個系統服務請求及作為回應接收系統服務S1之不同版本(SV1-1 314、SV1-2 312、SV1-3 310,直至SV1-N 316,其中「N」為任何整數值)。在各種實施中,系統服務S1之不同版本310至316中之每一者可回應於針對系統服務S1之系統服務請求而隨機指派,且可位於與系統服務S1之其他版本310至316不同的虛擬記憶體位址處。 圖300進一步說明計算裝置D2隨時間作出針對單一系統服務(S1)之多個系統服務請求及作為回應接收系統服務S1之不同版本(SV1-1 320、SV1-2 326、SV1-3 324,直至SV1-M 322,其中「M」為任何整數值)。如同計算裝置D1一樣,在各種實施中,系統服務S1之不同版本320至326中之每一者可回應於針對系統服務S1之系統服務請求而隨機指派,且可位於與系統服務S1之其他版本320至326不同的虛擬記憶體位址處。由於系統服務S1之不同版本320至326之隨機指派,圖300中之實例說明計算裝置D2之系統服務S1之不同版本320至326係隨時間以不同於計算裝置D1之系統服務S1之不同版本310至316的次序指派。儘管系統服務S1之不同版本310至316及320至326共用系統服務版本識別符(例如,SV1-1、SV1-2、SV1-3),但系統服務S1之相應經識別版本310至316及320至326中之每一者的單獨實施可不同。舉例而言,系統服務S1之相應經識別版本310至316及320至326的每一實施可經指派不同的隨機虛擬位址空間佈局,且可含有用於系統服務S1在其各別計算裝置D1或D2上之不同實施或版本310至316及320至326的不同資料。 圖300進一步說明計算裝置Dx隨時間作出針對多個系統服務(S1及S2)之多個系統服務請求及作為回應接收系統服務S1及S2之不同版本(SV1-1 336、SV1-2 332、SV2-1 334,直至SV2-Q 330,其中「Q」為任何整數值)。圖300中之實例說明由計算裝置D1及D2請求之相同系統服務S1亦由計算裝置D3請求。系統服務S1之不同版本332及336可以相同方式不同於系統服務S1之不同版本310至316及320至326。系統服務S2之不同版本330及334可以類似方式經隨機指派虛擬位址空間佈局,含有用於系統服務S2之版本310至316及320至326之不同實施的不同資料,且回應於針對系統服務S2之系統服務請求而隨機選擇。 圖3中所說明之實例係非限制性的,且計算裝置可具有任何數目個系統服務之任何數目個版本。系統服務之各種版本可回應於針對對應系統服務之多個系統服務請求而經指派任何次數。 圖4A說明適合於實施各種實施例的實例時變ASLR系統。計算裝置可包括各種形式之實體記憶體400,諸如參看圖1所描述之記憶體16及儲存記憶體24。實體記憶體400可儲存各種系統服務之程式碼,諸如用於系統服務S1 402之程式碼。 計算裝置可嘗試在各種時間存取用於系統服務S1 402之程式碼。舉例而言,執行於計算裝置上之開機程序404可嘗試在開機時間期間存取用於系統服務S1 402之程式碼。執行於計算裝置上之應用程式406亦可嘗試在計算裝置通電且能夠執行應用程式406的任何時間期間存取用於系統服務S1 402之程式碼。 為了實施時變ASLR,系統服務之多個版本310至316可藉由啟動器408回應於開機程序404或應用程式406進行之系統服務請求而啟動。在各種實施中,計算裝置可經預先程式化,使得開機程序404作出對任何數目個系統服務之系統服務請求,從而導致彼等系統服務之各種版本310至316的啟動。 在各種實施中,應用程式406可作出對已經啟動之系統服務的系統服務請求,且系統服務之各種版本可能已經啟動。在各種實施中,當系統服務之超過一個版本已存在時,啟動器408可避免啟動系統服務之其他版本。在各種實施中,當系統服務之一或多個版本已經存在時,啟動器408可啟動系統服務之有限數目個版本。 在各種實施中,應用程式406可作出對不具有當時已啟動的系統服務之版本的系統服務之系統服務請求。舉例而言,所請求之系統服務可能在應用程式之系統服務請求之前在計算裝置之通電工作階段期間尚未請求。類似地,在計算裝置之通電工作階段期間所啟動的系統服務之先前版本可能已出於各種原因(諸如,缺乏使用、有限記憶體空間、有限計算裝置電力及其他替換策略及演算法)而捨棄。當在應用程式406之系統服務請求時沒有所請求之系統服務之版本存在時,啟動器408可啟動所請求之系統服務之指定數目個版本。 如本文中所描述,啟動器408可回應於來自多個源之系統服務請求且可啟動所請求之系統服務之指定數目個版本。所請求之系統服務之版本的數目可基於預先程式化之值、所請求之系統服務的量測或預期用途、所請求之系統服務的優先權或漏洞、計算裝置之狀態(包括記憶體空間及電力可用性)或偵測到或疑似的對系統服務之威脅而改變,如本文中參考請求協調器412所進一步描述。系統服務之每一版本可藉由啟動器408而與同一系統服務之其他版本中之每一者與同一程序群組識別符(ID)相關聯。程序群組識別符可定義包括具有相同程序群組識別符的所請求之系統服務之版本310至316的程序群組416。 啟動器408可啟動系統服務之不同版本以於指定異質處理器上運行。舉例而言,已啟動的系統服務之第一版本可經組態以由計算裝置之CPU來執行,且已啟動的系統服務之第二版本可經組態以由計算裝置之DSP來執行。啟動器408可啟動系統服務之不同版本以由任何類型之處理器來執行。待於異質處理器上執行的系統服務之各種版本可藉由需要不同指令集以用於供不同處理器實施該等版本而幫助使來自攻擊者之系統服務混亂。嘗試藉由使用來自第二處理器之已執行版本之資料來執行第一處理器之系統服務之版本的攻擊者不能提供正確資料或正確格式之資料,以使用用於第一處理器之指令集來執行系統服務之版本。 計算裝置可包括映射器410,該映射器可經組態以將系統服務之各種版本310至316映射至虛擬記憶體414。映射器410可經組態以隨機地選擇虛擬記憶體位址空間佈局以用於系統服務之各種版本310至316,且將系統服務之各種版本310至316映射至可用於儲存系統服務之版本310至316的隨機選擇之虛擬位址空間佈局。映射器410可回應於先前隨機選擇而隨機地選擇一不同虛擬位址空間佈局以用於系統服務之版本310至316,從而產生不可用於儲存系統服務之版本310至316的虛擬位址空間佈局。映射器410亦可使虛擬位址空間佈局與用於系統服務之對應版本310至316的系統服務版本識別符關聯,且儲存關聯資訊以用於回應於一系統服務請求而指派及定位系統服務之版本310至316。映射器410亦可提供系統服務之各種版本310至316之虛擬位址空間佈局至實體記憶體400中之對應系統服務402之實體位址的映射。系統服務之各種版本310至316至對應系統服務402的映射可用以將系統服務之版本310至316之資料提供至系統服務402以用於執行系統服務402。 映射器410亦可將用於系統服務之版本310至316的虛擬位址空間佈局映射至系統服務之版本310至316之實體位址,系統服務之版本310至316之資料在該等實體位址儲存。系統服務之版本310至316之資料可包括用於實施系統服務之版本310至316的堆積、堆疊、可執行碼、共用程式庫等。計算裝置可使用系統服務之版本310至316之虛擬位址空間佈局來擷取系統服務之版本310至316之資料,且使用系統服務之版本310至316之資料來執行系統服務402。在一些實施中,系統服務之版本310至316之資料可包括用於在實體記憶體400中定位系統服務402之參考,諸如指標。 計算裝置可包括請求協調器412,該請求協調器可經組態以接收來自應用程式406之系統服務請求。系統服務請求可針對特定系統服務,諸如系統服務S1 402。請求協調器412可使用包括於系統服務請求中的系統服務之系統服務識別符(例如,名稱、控點、標籤或其他參考)來匹配所請求之系統服務與系統服務之版本310至316。請求協調器412可隨機地選擇系統服務之版本310至316中之一者以在執行所請求之系統服務時使用。請求協調器412可擷取系統服務之隨機選擇的版本310至316之虛擬位址(諸如,隨機選擇的虛擬位址空間佈局之開始虛擬位址),以定位及擷取系統服務之版本310至316之資料。針對經組態以由指定處理器執行的系統服務之隨機選擇版本310至316,請求協調器412可隨機地選擇具有系統服務之一版本的異質處理器,且可使用處理器間訊息來發送及接收訊息(包括所接收之系統服務請求及由異質處理器執行之系統服務之版本的輸出)至及自異質處理器上之版本及發佈系統服務請求的開機程序404或應用程式406。 在各種實施中,系統服務之已啟動版本之變化數目可在不同活動狀態中。活動狀態可包括喚醒狀態、睡眠狀態及各種準喚醒/準睡眠狀態。在喚醒狀態中,系統服務之版本可由請求協調器412隨機地可選擇以供執行所請求之系統服務使用。在睡眠狀態中,系統服務之版本可能不可選擇,或不比較高活動狀態版本更容易由請求協調器412隨機地可選擇以供執行所請求之系統服務使用。在各種準喚醒/準睡眠狀態中之一者中,系統服務之版本可由請求協調器412隨機地可選擇以供執行所請求之系統服務使用。請求協調器412可相對於處於較低層級準喚醒/準睡眠狀態或睡眠狀態下的系統服務之版本優先排序處於喚醒狀態下或較高準喚醒/準睡眠狀態下的系統服務之版本。處於準喚醒/準睡眠狀態下的系統服務之版本與處於喚醒狀態下之版本相比可能較不快速可存取及/或需要更多電力達到喚醒狀態以便執行。類似地,處於睡眠狀態下的系統服務之版本與準喚醒/準睡眠狀態版本相比可耗用更多時間及/或更多電力達到喚醒狀態。 請求協調器412可視各種因素而控制系統服務之版本是否處於喚醒狀態、準喚醒/準睡眠狀態或睡眠狀態下。舉例而言,此等因素可包括處理器、計算裝置及/或應用程式之活動狀態、計算裝置之電力狀態、對系統服務之新近及/或預期調用的數目及/或處理器、計算裝置及/或應用程式之威脅狀態。基於各種因素對系統服務作出多個調用的可能愈高,請求協調器412可控制在喚醒狀態及/或準喚醒/準睡眠狀態下的系統服務之版本的數目愈大。使用該等實例因素,處理器、計算裝置及/或應用程式之活動狀態愈高,可處於喚醒狀態及/或準喚醒/準睡眠狀態下的系統服務之版本的數目愈大。類似地,對系統服務之新近及/或預期調用的數目愈大,可處於喚醒狀態及/或準喚醒/準睡眠狀態下的系統服務之版本的數目愈大。可用於計算裝置之電力愈多,可處於喚醒狀態及/或準喚醒/準睡眠狀態下的系統服務之版本的數目愈大。又,處理器、計算裝置及/或應用程式之威脅狀態愈高(指示漏洞或可能攻擊),可處於喚醒狀態及/或準喚醒/準睡眠狀態下的系統服務之版本的數目愈大。 可存在針對系統服務之版本的總數目、處於喚醒狀態下的版本之數目、處於準喚醒/準睡眠狀態下的版本之數目及/或處於睡眠狀態下的版本之數目的極限集合。該等極限可視用以控制全部及處於各種狀態下的系統服務之版本的數目的特徵改變。該等特徵可包括預定極限或可基於各種因素而指派極限。 在一些實施中,請求協調器412可偵測或懷疑旨在所請求之系統服務的潛在攻擊。請求協調器412可偵測不尋常的存取型樣及系統服務請求者。回應於偵測或懷疑潛在攻擊,請求協調器412可將警示信號發送至啟動器408,從而提示啟動器408啟動及/或增加所請求之系統服務之更多版本之活動狀態。所請求之系統服務的另外啟動及/或增加之活動狀態版本可起作用以藉由針對系統服務之無關執行產生不同資料之更多視圖而進一步使來自攻擊者之系統服務混亂。額外資料及資料中的一致性之缺乏幫助阻止攻擊者獲得可用以利用系統服務之資料,此係因為使用來自一個執行之資料不可對應於回應於惡意系統服務請求而使用系統服務之不同版本的稍後執行。使用惡意系統服務請求中之此非對應資料可導致執行系統服務之無效嘗試,從而防止系統服務之執行。 圖4B說明適合於實施一些實施例的具有動態程式碼產生系統之時變ASLR系統的實例。計算裝置可包括實施於使用者空間或內核空間中之記憶體分配器420,及用於儲存動態產生程式碼以用於執行系統服務的程式碼緩衝器424。記憶體分配器420可經組態以儲存與對應於用於執行關聯系統服務之動態產生程式碼之程式碼緩衝位址關聯的系統服務版本識別符之清單422(或經組態以連結一個資料與另一資料之其他資料結構)。 系統服務之版本310至316之執行可導致用於系統服務402之動態產生程式碼。動態產生程式碼可儲存於程式碼緩衝器424中以用於存取所產生程式碼供使用在系統服務之稍後執行中使用,而不必再次動態地產生程式碼。記憶體分配器420可接收用於儲存動態產生程式碼之參數,包括對應系統服務之系統服務版本識別符,及動態產生程式碼之大小。記憶體分配器420可遍歷程式碼緩衝器424以尋找具有足夠大小及可用性以儲存動態產生程式碼之位置。記憶體分配器420可使用各種演算法或型樣來遍歷程式碼緩衝器424,包括程式碼緩衝位址之隨機選擇。在找到足夠大的位置後,記憶體分配器420可比較程式碼緩衝器424中之位置之位址與清單422,以判定該位置之任何位址是否已經與系統服務版本識別符相關聯。不與系統服務版本識別符相關聯之位置可為用於儲存動態產生程式碼之可用位置。於在程式碼緩衝器424中之找到足夠大且可用的位置後,記憶體分配器420可提供程式碼緩衝位址以用於將動態程式碼儲存於該程式碼緩衝器424之動態程式碼位置(例如,動態程式碼位置1至Y)中,且更新清單422以反映動態產生程式碼在程式碼緩衝位址處之儲存。程式碼緩衝位址可與系統服務之版本310至316之其他資料一起儲存,系統服務之版本關於其他資料之執行導致動態產生程式碼。 圖5說明適合於實施執行一系統服務之一版本之一些實施例的實例時變ASLR系統。該系統可包括使用者空間500及內核空間516。在使用者空間500中,多個系統服務程序(例如,系統服務S1程序508a、508b)可經實施以用於執行系統服務之不同版本,例如,系統服務S1程序508a可執行系統服務版本SV1-1且系統服務S1程序508b可執行系統服務版本SV1-2。每一系統服務程序508a、508b可包括用於執行對應系統服務程序508a、508b之程式碼的系統服務執行緒集區510a、510b。在啟動系統服務之版本後,系統服務程序508a、508b可發送註冊信號530a、530b,以向請求協調器412或系統服務管理器登記系統服務之對應版本。 請求協調器412可經組態以登記系統服務之版本且將系統服務之指派版本提供至請求應用程式406。在一些實施中,應用程式406可在使用者空間500中執行。請求協調器412可包括時變ASLR上下文管理器504,以供處置用以使系統服務與系統服務之版本關聯的資訊之儲存及更新,及對系統服務之版本的隨機選擇。時變ASLR上下文管理器504可使用註冊表506或經組態以連結一個資料與多個其他資料之其他資料結構來使系統服務識別符與系統服務之多個版本之連結程式參考(控點或標籤)或物件關聯。註冊表506可包括用於每一系統服務識別符之一或多個輸入項,從而使系統服務識別符與至少一個連結程式參考/物件關聯。圖5中之非限制性實例展示用於與連結程式參考之清單關聯的系統服務識別符(系統服務S1)之輸入項,連結程式參考每一者對應於系統服務之不同版本,包括針對系統服務版本SV1-1之B1、針對系統服務版本SV1-2之B2,直至BN,其中「N」為任何整數值。 內核空間516之功能可藉由計算裝置之處理器(例如,圖1及圖2中之處理器14)來實施。內核空間516可包括映射表520或經組態以連結一個資料與多個其他資料之其他資料結構,以使系統服務之多個版本之連結程式參考與系統服務之版本之物件的擁有者程序及虛擬位址關聯。當系統服務之版本經啟動時,映射表520可經填充且經更新。圖5中之非限制性實例展示映射表520中的用於註冊表506之連結程式參考之輸入項。連結程式參考B1在映射表520中與擁有者程序Pi及虛擬位址VA1關聯。類似地,連結程式參考B2與擁有者程序Pj及虛擬位址VA2關聯,且連結程式參考BN與擁有者程序Pk及虛擬位址VAN關聯。 應用程式406之應用程式程序512可使用所請求之系統服務之系統服務識別符來發送針對系統服務之版本的請求532。請求協調器412可接收針對系統服務之版本的請求532。時變ASLR上下文管理器504可在註冊表506中隨機地選擇與所請求之系統服務之系統服務識別符關聯的連結程式參考中之一者。 在一些實施中,時變ASLR上下文管理器504可追蹤所請求之系統服務之版本至應用程式406的先前指派,且可隨機地選擇先前未提供至應用程式406之連結程式參考。時變ASLR上下文管理器504可避免指派先前已提供之連結程式參考。舉例而言,時變ASLR上下文管理器504可藉由在隨機選擇之前忽視先前已提供之連結程式參考來避免指派先前已提供之連結程式參考。作為另一實例,時變ASLR上下文管理器504可藉由回應於隨機地選擇先前已提供之連結程式參考而進行後續隨機選擇來避免指派先前已提供之連結程式參考。 請求協調器412可將隨機選擇之連結程式參考傳回至應用程式406。應用程式406可接收與所請求之系統服務之系統服務識別符關聯的隨機選擇之連結程式參考,且使用該連結程式參考來調用所請求之系統服務534。 應用程式406之服務管理器代理514可與內核空間516介接以存取所請求之系統服務之版本。服務管理器代理514可為連結程式參考提供對所請求之系統服務之版本的調用536。內核空間516中之連結程式驅動程式518可接收對所請求之系統服務之版本的調用536,從而使用連結程式參考來定位與連結程式參考關聯的所請求之系統服務之版本之物件的虛擬位址。連結程式驅動程式518可與用於所請求之系統服務之版本的對應系統服務程序508a、508b通信。在通信時,連結程式驅動程式518可請求使用來自與連結程式參考關聯之虛擬位址的所請求之系統服務之版本的資料來執行所請求之系統服務538之版本。 對應系統服務程序508a、508b可在藉由系統服務程序508a、508b使用系統服務之指定版本的資料之執行完成後傳回所請求之系統服務之執行的結果540。連結程式驅動程式518可將結果542轉遞至服務管理器代理514,服務管理器代理可將結果544a轉遞至應用程式程序512。 圖6說明適合於實施執行一系統服務之多個版本之一實施例的實例時變ASLR系統。圖6中所示之實例類似於上文參看圖5所描述之實例。兩個實例共用相同組件,且表示執行系統服務之第一請求的通信信號532a、534a、536a、538a、540a、542a及544a可對應於參看圖5所描述之通信信號532、534、536、538、540、542及544。圖6中所示之實例進一步包括執行系統服務之第二請求。 應用程式程序512可使用所請求之系統服務之系統服務識別符來發送針對同一系統服務之版本的第二請求532b。請求協調器412可接收針對系統服務之版本的第二請求532b。時變ASLR上下文管理器504可在註冊表506中隨機地選擇與所請求之系統服務之系統服務識別符關聯的連結程式參考中之一者。如參看圖5所描述,時變ASLR上下文管理器504可追蹤所請求之系統服務之版本至應用程式406的先前指派,例如,針對執行系統服務之第一請求的第一指派。時變ASLR上下文管理器504可隨機地選擇先前未提供至應用程式406之第二連結程式參考。請求協調器412可將隨機選擇之第二連結程式參考傳回至應用程式406。 應用程式406可接收與所請求之系統服務之系統服務識別符關聯的隨機選擇之第二連結程式參考,且使用該第二連結程式參考來調用所請求之系統服務534b。服務管理器代理514可與內核空間516介接以存取所請求之系統服務之版本,從而為第二連結程式參考提供對所請求之系統服務之版本的調用536b。連結程式驅動程式518可接收對所請求之系統服務之版本的調用536b,從而使用第二連結程式參考來定位與第二連結程式參考關聯的所請求之系統服務之版本之物件的虛擬位址。連結程式驅動程式518可與用於所請求之系統服務之版本的對應系統服務程序508b通信。在通信時,連結程式驅動程式518可請求使用來自與第二連結程式參考關聯之虛擬位址的所請求之系統服務之版本的資料來執行所請求之系統服務之版本538b。 對應系統服務程序508b可在藉由系統服務程序508b使用系統服務之指定版本的資料之執行完成後傳回所請求之系統服務之執行的結果540b。連結程式驅動程式518可將結果542b轉遞至服務管理器代理514,服務管理器代理可將結果544b轉遞至應用程式程序512。 圖7說明適合於實施針對多個應用程式執行一系統服務之多個版本版本之一實施例的實例時變ASLR系統。圖7中所示之實例類似於上文參看圖5及圖6所描述之實例。所有該等實例共用相同組件,但圖7中所說明之實例包括多個應用程式406a、406b、多個應用程式程序512a、512b及多個服務管理器代理514a、514b。第一應用程式406a可對應於參看圖5及圖6所描述之應用程式406。第二應用程式406b可為可與第一應用程式406a調用相同系統服務之任何應用程式。此外,圖6及圖7之實例共用通信信號532a、532b、534a、534b、536a、536b、538a、538b、540a、540b、542a、542b、544a及544b。然而,在圖7中所說明之實例中,通信信號532a、534a、536a、538a、540a、542a及544a可與第一應用程式406a的執行系統服務之第一請求相關,且通信信號532b、534b、536b、538b、540b、542b及544b可與第二應用程式406b的執行系統服務之第二請求相關。 在各種實施中,如同同一應用程式的執行同一系統服務之多個請求一樣,請求協調器412可經組態以避免將所請求之系統服務之同一版本指派給執行系統服務之連續請求,不管請求應用程式是否相同或不同。避免使用系統服務之同一版本(即使執行系統服務之請求來源於不同應用程式)可幫助在抵禦ASLR之嘗試中使用多個應用程式使來自攻擊者之系統服務混亂。 請求協調器412可自第二應用程式406b之第二應用程式程序512b接收針對系統服務之版本的第二請求532b。時變ASLR上下文管理器504可在註冊表506中隨機地選擇與所請求之系統服務之系統服務識別符關聯的連結程式參考中之一者。時變ASLR上下文管理器504可追蹤所請求之系統服務之版本至所有應用程式406a、406b之先前指派。時變ASLR上下文管理器504可隨機地選擇先前未提供至應用程式406a之第二連結程式參考。請求協調器412可將隨機選擇之第二連結程式參考傳回至應用程式406b。 第二應用程式406b可接收與所請求之系統服務之系統服務識別符關聯的隨機選擇之第二連結程式參考,且使用該第二連結程式參考來調用所請求之系統服務534b。第二服務管理器代理514b可與內核空間516介接以存取所請求之系統服務之版本,從而為第二連結程式參考提供對所請求之系統服務之版本的調用536b。連結程式驅動程式518可接收對所請求之系統服務之版本的調用536b,從而使用第二連結程式參考來定位與第二連結程式參考關聯的所請求之系統服務之版本之物件的虛擬位址。連結程式驅動程式518可與用於所請求之系統服務之版本的對應系統服務程序508b通信,以請求使用來自與第二連結程式參考關聯之虛擬位址的所請求之系統服務之版本的資料來執行所請求之系統服務之版本538b。 對應系統服務程序508b可在藉由系統服務程序508b使用系統服務之指定版本的資料之執行完成後傳回所請求之系統服務之執行的結果540b。連結程式驅動程式518可將結果542b轉遞至第二服務管理器代理514b,第二服務管理器代理可將結果544b轉遞至應用程式程序512b。 圖8說明適合於實施執行一系統服務之多個版本之一實施例的具有物件管理器之實例時變ASLR系統。圖8中所示之實例類似於上文參看圖5及圖6所描述之實例。所有該等實例共用相同組件,但圖8中之實例包括應用程式406之物件管理器800。此外,圖6及圖8之實例共用通信信號536a、536b、538a、538b、540a、540b、542a及542b。 應用程式406之應用程式程序512可使用所請求之系統服務之系統服務識別符來發送執行系統服務之請求802a、802b。物件管理器800可接收執行系統服務之請求802a、802b,且發送針對系統服務之版本的請求804a、804b,包括系統服務識別符。物件管理器800可個別地回應於接收執行系統服務之請求802a、802b中之一者而發送針對系統服務之版本的每一請求804a、804b。請求協調器412可接收針對系統服務之版本的請求804a、804b。 時變ASLR上下文管理器504可回應於針對系統服務之版本的請求804a、804b中之一者而隨機地選擇與註冊表506中的所請求之系統服務之系統服務識別符關聯的第一連結程式參考。如參看圖5所描述,時變ASLR上下文管理器504可追蹤所請求之系統服務之版本至應用程式406的先前指派,例如,對用於執行系統服務之第一請求804a的第一連結程式參考的第一指派。時變ASLR上下文管理器504可回應於針對系統服務之版本的請求804a、804b中之另一者而隨機地選擇先前未提供至應用程式406的第二連結程式參考。請求協調器412可將隨機選擇之連結程式參考個別地傳回至應用程式406。 物件管理器800可接收隨機選擇之連結程式參考,且將具有各別隨機選擇之連結程式參考的執行系統服務806a、806b之請求發送至服務管理器代理514。服務管理器代理514b可與內核空間516介接以存取所請求之系統服務之版本,從而為連結程式參考提供對所請求之系統服務之版本的調用536a、536b。 連結程式驅動程式518可接收對所請求之系統服務之版本的調用536a、536b,從而使用連結程式參考來定位與連結程式參考關聯的所請求之系統服務之版本之物件的虛擬位址。連結程式驅動程式518可與用於所請求之系統服務之版本的對應系統服務程序508a、508b通信,從而請求使用來自與連結程式參考關聯之虛擬位址的所請求之系統服務之版本的資料來執行所請求之系統服務之版本538a、538b。 對應系統服務程序508a、508b可在藉由系統服務程序508a、508b使用系統服務之指定版本的資料之執行完成後傳回所請求之系統服務之執行的結果540a、540b。連結程式驅動程式518可將結果542a、542b轉遞至服務管理器代理514,服務管理器代理可將結果808a、808b轉遞至物件管理器800。物件管理器800可將結果810a、810b轉遞至應用程式程序512。 圖9說明根據一實施例的用於實施時變ASLR之方法900。方法900可在計算裝置中以在處理器(例如,圖1及圖2中之處理器14)、通用硬體、專用硬體或處理器與專用硬體之組合(諸如,包括其他個別組件之時變ASLR系統內的執行軟體之處理器)中執行的軟體來實施。為包含各種實施例中所允用的替代性組態,實施方法900之硬體在本文中被稱為「計算裝置」。 在區塊902中,計算裝置可接收啟動或執行系統服務之請求。啟動或執行系統服務之請求可包括系統服務之系統服務識別符。 在區塊902中接收到的啟動系統服務之請求可來源於由計算裝置執行之開機程序。啟動系統服務之請求可用於啟動系統服務,使得該服務將可供回應於執行系統服務之請求而稍後執行。換言之,啟動系統服務之請求可提示計算裝置啟動系統服務而不執行系統服務。 在區塊902中接收的執行系統服務之請求亦可來源於由計算裝置執行之應用程式。在系統服務在請求時未啟動之情況下,執行系統服務之此請求可提示計算裝置啟動系統服務。 在判定區塊904中,計算裝置可判定所請求之系統服務是否已啟動。在一些實施中,計算裝置可檢查(例如,在參看圖5至圖8所描述之註冊表506中的)記錄,以判定具有與系統服務識別符關聯的系統服務之版本的系統服務識別符、系統服務版本識別符、連結程式參考或物件之記錄是否存在。 在一些實施中,在計算裝置之操作期間的任何時間,在可選區塊918中,計算裝置可偵測對任何系統服務之攻擊或懷疑對任何系統服務之攻擊。在各種實施中,計算裝置可藉由辨識對系統服務之不尋常的存取或請求型樣及請求者來偵測或懷疑對系統服務之攻擊。 回應於在區塊918中偵測或懷疑對系統服務之攻擊,或回應於判定所請求之系統服務並非已啟動(亦即,判定區塊904=「否」),在區塊906中,計算裝置可啟動系統服務之多個版本。計算裝置可啟動系統服務之任何數目個版本。在各種實施中,經啟動的任何系統服務之數個版本可與另一系統服務之數個版本相同或不同。經啟動的系統服務之版本的數目可預先程式化或取決於數個因素,包括系統服務之預期或量測用途、系統服務之優先權或漏洞、計算裝置之狀態(包括記憶體空間及電力可用性)及對系統服務之攻擊的偵測或懷疑。 在區塊908中,計算裝置可將系統服務版本識別符、連結程式參考或物件指派給系統服務之每一版本。系統服務版本識別符、連結程式參考或物件可起作用以唯一地識別系統服務之版本。 在區塊910中,計算裝置可將隨機虛擬記憶體位址空間佈局指派給系統服務之每一版本。系統服務之每一版本的隨機虛擬記憶體位址空間佈局可映射至用於執行系統服務之版本的資料儲存所在之實體記憶體位置。該資料可包括堆疊、堆積(heap)、資料、可執行碼、函數指標或程式庫記憶體圖等。在一些實施中,系統服務之每一版本的隨機虛擬記憶體位址空間佈局亦可映射至用於執行系統服務之程式碼之實體記憶體位置。在一些實施中,該資料可包括至用於執行系統服務之程式碼之實體記憶體位置的指標。區塊910中的用於將隨機虛擬記憶體位址空間佈局指派給系統服務之每一版本的實例方法1000將參看圖10來描述。 在區塊912中,計算裝置可使系統服務之每一版本的系統服務識別符、系統服務版本識別符、連結程式參考或物件與系統服務之每一版本的隨機虛擬記憶體位址空間佈局關聯且儲存前述各者。在一些實施中,系統服務之版本的系統服務版本識別符、連結程式參考或物件的指派可藉由計算裝置以使系統服務之版本的系統服務版本識別符、連結程式參考或物件與系統服務之識別符關聯的方式記錄。舉例而言,相關性的記錄可為參看圖5至圖8所描述之註冊表506之部分。在一些實施中,隨機虛擬記憶體位址至系統服務之版本的指派可藉由計算裝置以使系統服務之版本的系統服務版本識別符、連結程式參考或物件與隨機虛擬記憶體位址關聯的方式記錄。舉例而言,相關性的記錄可為參看圖5至圖8所描述之映射表520之部分。 於在區塊912中使系統服務、系統服務之版本及系統服務之版本之隨機虛擬位址的所有關係關聯且儲存該等關係之後,或回應於判定所請求之系統服務已啟動(亦即,判定區塊904=「是」),在區塊914中,計算裝置可隨機地選擇系統服務之版本。隨機選擇可使用偽隨機演算法來實施。 在一些實施中,區塊914中之隨機選擇可回應於藉由各種或單一應用程式在一時間段或臨限數目個針對系統服務之請求內選擇系統服務之同一版本特定次數而執行多次。 在一些實施中,區塊914中之隨機選擇可包括自排除當前正使用或近來已使用的系統服務之版本的系統服務之一組版本進行選擇。新近使用可藉由各種或單一應用程式對系統服務之版本在一時間段內的使用或對系統服務之版本在臨限數目個針對系統服務之請求內的使用來判定。 在區塊916中,計算裝置可為請求者提供系統服務之隨機選擇版本的系統服務版本識別符、連結程式參考或物件。 圖10說明根據一實施例的用於實施時變ASLR中的虛擬記憶體位址空間佈局至系統服務之版本的隨機指派的實例方法1000。方法1000可在計算裝置中以在處理器(例如,圖1及圖2中之處理器14)、通用硬體、專用硬體、或處理器與專用硬體之組合(諸如,包括其他個別組件之時變ASLR系統內的執行軟體之處理器)中執行的軟體來實施。為包含各種實施例中所允用的替代性組態,實施方法1000之硬體在本文中被稱為「計算裝置」。 在區塊1002中,計算裝置可將同一程序群組識別符(ID)指派給系統服務之每一版本。 在區塊1004中,計算裝置可將系統服務之版本儲存在實體記憶體中之一位置(一實體位址)處。在一些實施中,某些記憶體裝置或記憶體裝置之分割區可經指定用於儲存系統服務之該等版本。計算裝置可將系統服務之版本儲存於實體記憶體中之未使用位置中,或藉由根據各種記憶體替換策略覆寫儲存於實體記憶體中之位置中的當前資料而儲存於實體記憶體中之已使用位置中。 在區塊1006中,計算裝置可隨機地選擇用於系統服務之版本的虛擬位址空間佈局。在一些實施中,計算裝置可實施偽隨機選擇演算法以用於選擇虛擬位址空間佈局。在一些實施中,用於其他用途之虛擬位址(例如,指派給同一或其他系統服務之其他版本的虛擬位址空間佈局之虛擬位址)可自用以隨機地選擇虛擬位址空間佈局以用於系統服務之版本的一組虛擬位址排除。 在可選判定區塊1008中,計算裝置可判定隨機選擇之虛擬位址空間佈局是否可用。在一些實施中,計算裝置可比較隨機選擇之虛擬位址空間佈局與其他已使用虛擬位址,以判定隨機選擇之虛擬位址空間佈局是否已用於另一目的。 回應於判定隨機選擇之虛擬位址空間佈局不可用(亦即,可選判定區塊1008=「否」),在區塊1006中,計算裝置可隨機地選擇用於系統服務之版本的虛擬位址空間佈局。 回應於判定隨機選擇之虛擬位址空間佈局可用(亦即,可選判定區塊1008=「是」),在區塊1010中,計算裝置可將用於系統服務之版本的隨機選擇之虛擬位址空間佈局映射至系統服務之版本儲存所在的實體位址。 在判定區塊1012中,計算裝置可判定系統服務之更多版本是否留待儲存於實體記憶體中且經指派隨機虛擬位址空間佈局。計算裝置可使用同一系統服務之版本共用的程序群組識別符來判定系統服務之更多版本是否剩餘。當具有同一程序群組識別符之版本在佇列中剩餘以用於隨機虛擬位址空間佈局之儲存及指派時,計算裝置可認識到有系統服務之版本剩餘。 回應於判定系統服務之更多版本留待儲存於實體記憶體中且經隨機虛擬位址空間佈局(亦即,判定區塊1012=「是」),如所描述,計算裝置可在區塊1014中選擇具有相同處理器識別符的系統服務之未儲存版本,在區塊1004中將系統服務之版本儲存在實體記憶體中之一位置處,且在區塊1006中隨機地選擇用於系統服務之版本的虛擬位址空間。 在一些實施中,計算系統服務之所有版本可能已儲存於記憶體中。因此,回應於判定沒有系統服務之更多版本留待儲存於實體記憶體中且經指派隨機虛擬位址空間佈局(亦即,判定區塊1012=「否」),在如參看圖9所描述的方法900之區塊912中,計算裝置可使系統服務之每一版本的系統服務識別符、系統服務版本識別符、連結程式參考或物件與系統服務之每一版本的隨機虛擬記憶體位址空間佈局關聯且儲存前述各者。在各種實施例中,區塊912中之操作可不考慮判定區塊1012之結果而執行,且可與方法1000之各種區塊1002至1014之操作同時執行。 圖11說明根據一實施例的用於使用時變ASLR來實施系統服務執行之方法1100。方法1100可在計算裝置中以在處理器(例如,圖1及圖2中之處理器14)、通用硬體、專用硬體、或處理器與專用硬體之組合(諸如,包括其他個別組件之時變ASLR系統內的執行軟體之處理器)中執行的軟體來實施。為包含各種實施例中所允用的替代性組態,實施方法1100之硬體在本文中被稱為「計算裝置」。 方法1100可為參看圖9所描述之方法900之實施的延續,其中系統服務之請求者為應用程式。在區塊1102中,計算裝置可自應用程式接收對系統服務之一版本之一請求,包括系統服務之版本的系統服務版本識別符、連結程式參考或物件。 在區塊1104中,計算裝置可定位系統服務之版本之虛擬位址,諸如該系統服務之版本的隨機選定虛擬位址空間佈局之開始虛擬位址。在各種實施中,計算裝置可使用系統服務之版本的系統服務版本識別符、連結程式參考或物件來找到系統服務的系統服務版本識別符、連結程式參考或物件與虛擬位址關聯的記錄。舉例而言,計算裝置可搜尋參看圖5至圖8所描述之映射表520的記錄。 在區塊1106中,計算裝置可將系統服務版本之虛擬位址轉譯為系統服務之版本的資料儲存所在的實體記憶體中之位置之實體位址。在此操作中,計算裝置可使用如本文中參看圖10所描述的在區塊1010中針對系統服務之版本所產生的虛擬位址至實體位址映射。 在區塊1108中,計算裝置可自實體位址擷取用於執行的系統服務之版本的資料。 在區塊1110中,計算裝置可使用所擷取資料來執行系統服務。計算裝置可使用該資料來提供用於執行系統服務之變數、條件及程式碼注入或替代。 在區塊1112中,計算裝置可將系統服務之執行的結果傳回至應用程式。 圖12說明根據一實施例的用於使用具有動態程式碼產生之時變ASLR來實施系統服務執行之方法1200。方法1200可在計算裝置中以在處理器(例如,圖1及圖2中之處理器14)、通用硬體、專用硬體、或處理器與專用硬體之組合(諸如,包括其他個別組件之時變ASLR系統內的執行軟體之處理器)中執行的軟體來實施。為包含各種實施例中所允用的替代性組態,實施方法1200之硬體在本文中被稱為「計算裝置」。 在各種實施中,系統服務之先前執行可產生動態產生程式碼,其可在系統服務的後續執行中使用且改良系統服務之執行效率。在區塊1202中,計算裝置可接收為來自系統服務之一版本之動態產生程式碼分配程式碼緩衝空間的一請求。系統服務之不同版本可產生不同的動態產生程式碼,其可在系統服務之版本的後續執行中使用。 在區塊1204中,計算裝置可遍歷程式碼緩衝器,從而搜尋用於儲存動態產生程式碼之空白程式碼緩衝空間。在各種實施中,計算裝置可使用各種演算法及型樣來遍歷程式碼緩衝器,包括隨機地選擇程式碼緩衝器之位址。計算裝置可選擇程式碼緩衝器之一位址,以檢查該位址是否與可用且足夠大以儲存動態產生程式碼的程式碼緩衝空間相關聯。足夠大以儲存動態產生程式碼的程式碼緩衝空間可為尺寸至少為動態產生程式碼之大小且包括選定位址的任何程式碼緩衝空間。 在判定區塊1206中,計算裝置可判定與選定程式碼緩衝位址相關聯之程式碼緩衝空間是否可用於來自系統服務之版本的動態產生程式碼。在各種實施中,判定經識別的程式碼緩衝空間是否可使用可包括判定該程式碼緩衝空間是否可用且足夠大以用於儲存動態產生程式碼。計算裝置可藉由以下操作來判定程式碼緩衝空間是否可用以及足夠大:比較程式碼緩衝空間與清單或經組態以連結一個資料與另一資料之其他資料結構;使系統服務之版本的系統服務版本識別符、連結程式參考或物件與程式碼緩衝器記憶體位址關聯。舉例而言,計算裝置可比較程式碼緩衝空間與如參看圖4B所描述之清單422的記錄。可用且足夠大之程式碼緩衝空間可為程式碼緩衝空間之位址不與關聯於其他動態產生程式碼之清單中之程式碼緩衝位址衝突的程式碼緩衝空間。 回應於判定與選定程式碼緩衝位址相關聯之程式碼緩衝空間可用於來自系統服務之版本的動態產生程式碼(亦即,判定區塊1206=「是」),在區塊1208中,計算裝置將來自系統服務之版本的動態產生程式碼在經識別的程式碼緩衝位址儲存於程式碼緩衝器中。 在區塊1210中,計算裝置可更新清單或經組態以連結一個資料與另一資料之其他資料結構,以指示來自系統服務之版本的所儲存之動態產生程式碼的程式碼緩衝位址不可用或經使用。 回應於判定與系統服務之版本關聯的程式碼緩衝空間不可用於來自系統服務之版本的動態產生程式碼(亦即,判定區塊1206=「否」),在判定區塊1212中,計算裝置可判定程式碼緩衝器是否經遍歷。在各種實施例中,為了遍歷程式碼緩衝器,計算裝置可檢查可用且足夠大以儲存動態產生程式碼之程式碼緩衝空間的每一個程式碼緩衝位址。在各種實施例中,為了遍歷程式碼緩衝器,計算裝置可檢查足夠的程式碼緩衝位址,使得剩餘程式碼緩衝位址不能與程式碼緩衝器空間關聯,從而有足夠空間來儲存動態產生程式碼。 回應於判定程式碼緩衝器未經遍歷(亦即,判定區塊1212=「否」),在區塊1204中,計算裝置可繼續遍歷程式碼緩衝器,從而搜尋用於儲存動態產生程式碼之空白程式碼緩衝空間。 回應於判定程式碼緩衝器經遍歷(亦即,判定區塊1212=「是」),在區塊1214中,計算裝置可捨棄來自系統服務之版本的動態產生程式碼或將動態產生程式碼儲存於其他記憶體中。 各種實施例(包括(但不限於)上文參看圖1至圖12所描述之實施例)可實施於廣泛多種的包括行動計算裝置之計算系統中,適合於與各種實施例一起使用的計算系統之實例在圖13中說明。行動計算裝置1300可包括耦接至觸控螢幕控制器1304及內部記憶體1306之處理器1302。處理器1302可為經指定用於一般或特定處理任務之一或多個多核心積體電路。內部記憶體1306可為揮發性或非揮發性記憶體,且亦可為安全及/或加密記憶體,或不安全及/或未加密之記憶體,或其任何組合。可利用之記憶體類型的實例包括(但不限於)DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM,及嵌入型DRAM。觸控螢幕控制器1304及處理器1302亦可耦接至觸控螢幕面板1312,諸如電阻感測觸控螢幕、電容感測觸控螢幕、紅外線感測觸控螢幕等。另外,計算裝置1300之顯示器不必具有觸控螢幕能力。 行動計算裝置1300可具有用於發送及接收通信的一或多個無線電信號收發器1308 (例如,花生(Peanut)、藍芽、紫蜂(Zigbee)、Wi-Fi、RF無線電)及天線1310,前述各者彼此耦接及/或耦接至處理器1302。收發器1308及天線1310可與上文所提及之電路一起使用,以實施各種無線傳輸協定堆疊及介面。行動計算裝置1300可包括使得能夠經由蜂巢式網路通信且耦接至處理器的蜂巢式網路無線數據機晶片1316。 行動計算裝置1300可包括耦接至處理器1302之周邊裝置連接介面1318。周邊裝置連接介面1318可經單一地組態以接受一種連接,或可經組態以接受各種類型之實體及通信連接(共同的或專用的),諸如通用串列匯流排(USB)、FireWire、Thunderbolt或PCIe。周邊裝置連接介面1318亦可耦接至經類似組態之周邊裝置連接埠(未圖示)。 行動計算裝置1300亦可包括用於提供音訊輸出之揚聲器1314。行動計算裝置1300亦可包括用於含有本文中所描述之組件之全部或一些的外殼1320,其由塑膠、金屬或材料之組合建構。行動計算裝置1300可包括耦接至處理器1302之電源1322,諸如拋棄式或可再充電電池。可再充電電池亦可耦接至周邊裝置連接埠以自行動計算裝置1300外部之來源接收充電電流。行動計算裝置1300亦可包括用於接收使用者輸入之實體按鈕1324。行動計算裝置1300亦可包括用於接通及斷開行動計算裝置1300之電源按鈕1326。 各種實施例(包括(但不限於)上文參看圖1至圖12所描述之實施例)可實施於廣泛多種的包括膝上型電腦1400之計算系統中,計算系統之實例說明於圖14中。許多膝上型電腦包括充當電腦之指標裝置之觸控板觸控表面1417,且因此可接收類似於在配備有觸控螢幕顯示器及上文所描述之計算裝置上實施之彼等手勢的拖曳(拖曳)、捲動(scroll)及撥動(flick)手勢。膝上型電腦1400將通常包括耦接至揮發性記憶體1412及大容量非揮發性記憶體(諸如,快閃記憶體之磁碟機1413)的處理器1411。另外,電腦1400可具有用於發送及接收電磁輻射之一或多個天線1408,天線可連接至耦接至處理器1411之無線資料鏈路及/或蜂巢式電話收發器1416。電腦1400亦可包括耦接至處理器1411之軟碟驅動機1414及緊密光碟(CD)驅動機1415。在筆記型電腦組態中,電腦殼體包括觸控板1417、鍵盤1418及顯示器1419,其均耦接至處理器1411。計算裝置之其他組態可包括所熟知的耦接至處理器(例如,經由通用串列匯流排(USB)輸入端)之電腦滑鼠或軌跡球,其亦可結合各種實施例而使用。 各種實施例(包括(但不限於)上文參看圖1至圖12所描述之實施例)亦可實施於固定計算系統(諸如,多種可購得伺服器中之任一者)中。實例伺服器1500說明於圖15中。此伺服器1500通常包括耦接至揮發性記憶體1502及大容量非揮發性記憶體(諸如,磁碟機1504)之一或多個多核心處理器組合件1501。如圖15中所說明,多核心處理器組合件1501可藉由將其插入至組合件之機架中而添加至伺服器1500。伺服器1500亦可包括耦接至處理器1501之軟碟驅動機、緊密光碟(CD)或數位影音光碟(DVD)光碟驅動機1506。伺服器1500亦可包括耦接至多核心處理器組合件1501以用於建立與網路1505之網路介面連接的網路存取埠1503,該網路諸如耦接至其他廣播系統電腦及伺服器之區域網路、網際網路、公眾交換電話網路及/或蜂巢式資料網路(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE,或任何其他類型之蜂巢式資料網路)。 用於在可程式化處理器上執行以用於進行各種實施例之操作的電腦程式碼或「程式碼」可以諸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、結構化查詢語言(例如,交易SQL)、Perl之高階程式化語言或以各種其他程式化語言進行編寫。如本申請案中使用的儲存於電腦可讀儲存媒體上之程式碼或程式可指機器語言程式碼(諸如,物件程式碼),其格式可由處理器理解。 前述方法描述及程序流程圖係僅作為說明性實例而提供,且並不意欲要求或暗示各種實施例之操作必須以所呈現之次序來執行。如熟習此項技術者將瞭解,前述實施例中之操作的次序可以任何次序執行。諸如「此後」、「接著」、「隨後」等之詞並不意欲限制操作之次序;此等詞僅用以引導讀者閱讀方法之描述。此外,對呈單數形式之申請專利範圍元件之任何參考(例如,使用冠詞「一」或「該」)不應解釋為將元件限於單數形式。 結合各種實施例而描述的各種說明性邏輯區塊、模組、電路及演算法操作可實施為電子硬體、電腦軟體或兩者之組合。為清楚地說明硬體與軟體之此互換性,已在上文就各種說明性組件、區塊、模組、電路及操作之功能性對其加以大體描述。此功能性實施為硬體或軟體取決於特定應用及強加於整個系統之設計約束。熟習此項技術者可針對每一特定應用以變化之方式實施所描述功能性,但該等實施決策不應被解釋為致使脫離申請專利範圍之範疇。 用以實施結合本文中所揭示之實施例所描述的各種說明性邏輯、邏輯區塊、模組及電路的硬體可藉由通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其經設計以執行本文中所描述之功能之任何組合來實施或執行。通用處理器可為微處理器,但在替代方案中,處理器可為任何習知之處理器、控制器、微控制器或狀態機。處理器亦可實施為計算裝置之組合,例如,一DSP與一微處理器之組合、複數個微處理器、一或多個微處理器結合DSP核心或任何其他此組態。替代地,一些操作或方法可由特定於給定功能之電路來執行。 在一或多個實施例中,所描述功能可在硬體、軟體、韌體或其任何組合中實施。若實施於軟體中,則該等功能可作為一或多個指令或程式碼儲存於非暫時性電腦可讀媒體或非暫時性處理器可讀媒體上。本文中所揭示之方法或演算法之操作可體現於處理器可執行軟體模組中,該處理器可執行軟體模組可駐存於非暫時性電腦可讀或處理器可讀儲存媒體上。非暫時性電腦可讀或處理器可讀儲存媒體可為任何可由電腦或處理器存取之儲存媒體。借助於實例但非限制,此類非暫時性電腦可讀或處理器可讀媒體可包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其他光碟儲存裝置、磁碟儲存裝置或其他磁性儲存裝置,或可用於以指令或資料結構形式儲存所要程式碼且可由電腦存取之任何其他媒體。如本文所使用之磁碟及光碟包括緊密光碟(CD)、雷射光碟、光學光碟、數位多功能光碟(DVD)、軟碟及藍光光碟,其中磁碟通常以磁性方式再現資料,而光碟用雷射以光學方式再現資料。以上各者之組合亦包括於非暫時性電腦可讀及處理器可讀媒體之範疇內。另外,方法或演算法之操作可作為程式碼及/或指令中之一者或任何組合或集合而駐存於可併入至電腦程式產品中之非暫時性處理器可讀媒體及/或電腦可讀媒體上。 提供對所揭示實施例之先前描述以使任何熟習此項技術者能夠製造或使用申請專利範圍。熟習此項技術者將易於瞭解對此等實施例之各種修改,且本文中所定義之一般原理可應用於其他實施例及實施而不脫離申請專利範圍之範疇。因此,本揭露內容不意欲限於本文中所描述之實施例及實施,而應符合與以下申請專利範圍及本文中所揭示之原理及新穎特徵一致的最廣範疇。
10‧‧‧計算裝置
12‧‧‧系統單晶片(SoC)
14‧‧‧處理器
16‧‧‧記憶體
18‧‧‧通信介面
20‧‧‧儲存記憶體介面
22‧‧‧通信組件
24‧‧‧儲存記憶體
26‧‧‧天線
200‧‧‧處理器核心
201‧‧‧處理器核心
202‧‧‧處理器核心
203‧‧‧處理器核心
300‧‧‧圖
310‧‧‧系統服務之版本
312‧‧‧系統服務之版本
314‧‧‧系統服務之版本
316‧‧‧系統服務之版本
320‧‧‧系統服務之版本
322‧‧‧系統服務之版本
324‧‧‧系統服務之版本
326‧‧‧系統服務之版本
330‧‧‧系統服務之版本
332‧‧‧系統服務之版本
334‧‧‧系統服務之版本
336‧‧‧系統服務之版本
400‧‧‧實體記憶體
402‧‧‧系統服務S1
404‧‧‧開機程序
406‧‧‧應用程式
406a‧‧‧第一應用程式
406b‧‧‧第二應用程式
408‧‧‧啟動器
410‧‧‧映射器
412‧‧‧請求協調器
414‧‧‧虛擬記憶體
416‧‧‧程序群組
420‧‧‧記憶體分配器
422‧‧‧清單
424‧‧‧程式碼緩衝器
500‧‧‧使用者空間
504‧‧‧時變ASLR上下文管理器
506‧‧‧註冊表
508a‧‧‧系統服務S1程序
508b‧‧‧系統服務S1程序
510a‧‧‧系統服務執行緒集區
510b‧‧‧系統服務執行緒集區
512‧‧‧應用程式程序
512a‧‧‧應用程式程序
512b‧‧‧第二應用程式程序
514‧‧‧服務管理器代理
514a‧‧‧服務管理器代理
514b‧‧‧第二服務管理器代理
516‧‧‧內核空間
518‧‧‧連結程式驅動程式
520‧‧‧映射表
530a‧‧‧註冊信號
530b‧‧‧註冊信號
532‧‧‧針對系統服務之版本的請求/通信信號
532a‧‧‧通信信號
532b‧‧‧針對系統服務之版本的第二請求/通信信號
534‧‧‧所請求之系統服務/通信信號
534a‧‧‧通信信號
534b‧‧‧所請求之系統服務/通信信號
536‧‧‧對所請求之系統服務之版本的調用/通信信號
536a‧‧‧對所請求之系統服務之版本的調用/通信信號
536b‧‧‧對所請求之系統服務之版本的調用/通信信號
538‧‧‧所請求之系統服務之版本之執行/通信信號
538a‧‧‧所請求之系統服務之版本之執行/通信信號
538b‧‧‧所請求之系統服務之版本之執行/通信信號
540‧‧‧結果/通信信號
540a‧‧‧通信信號/結果
540b‧‧‧通信信號/結果
542‧‧‧結果/通信信號
542a‧‧‧通信信號/結果
542b‧‧‧結果/通信信號
544‧‧‧通信信號
544a‧‧‧結果/通信信號
544b‧‧‧結果/通信信號
800‧‧‧物件管理器
802a‧‧‧執行系統服務之請求
802b‧‧‧執行系統服務之請求
804a‧‧‧針對系統服務之版本的請求
804b‧‧‧針對系統服務之版本的請求
806a‧‧‧執行系統服務之請求
806b‧‧‧執行系統服務之請求
808a‧‧‧結果
808b‧‧‧結果
810a‧‧‧結果
810b‧‧‧結果
900‧‧‧用於實施時變ASLR之方法
902‧‧‧區塊
904‧‧‧判定區塊
906‧‧‧區塊
908‧‧‧區塊
910‧‧‧區塊
912‧‧‧區塊
914‧‧‧區塊
916‧‧‧區塊
918‧‧‧可選區塊
1000‧‧‧用於實施時變ASLR中的虛擬記憶體位址空間佈局至系統服務之版本的隨機指派的實例方法
1002‧‧‧區塊
1004‧‧‧區塊
1006‧‧‧區塊
1008‧‧‧可選判定區塊
1010‧‧‧區塊
1012‧‧‧判定區塊
1014‧‧‧區塊
1100‧‧‧用於使用時變ASLR來實施系統服務執行之方法
1102‧‧‧區塊
1104‧‧‧區塊
1106‧‧‧區塊
1108‧‧‧區塊
1110‧‧‧區塊
1112‧‧‧區塊
1200‧‧‧用於使用具有動態程式碼產生之時變ASLR來實施系統服務執行之方法
1202‧‧‧區塊
1204‧‧‧區塊
1206‧‧‧判定區塊
1208‧‧‧區塊
1210‧‧‧區塊
1212‧‧‧判定區塊
1214‧‧‧區塊
1300‧‧‧行動計算裝置
1302‧‧‧處理器
1304‧‧‧觸控螢幕控制器
1306‧‧‧內部記憶體
1308‧‧‧無線電信號收發器
1310‧‧‧天線
1312‧‧‧觸控螢幕面板
1314‧‧‧揚聲器
1316‧‧‧蜂巢式網路無線數據機晶片
1318‧‧‧周邊裝置連接介面
1320‧‧‧外殼
1322‧‧‧電源
1324‧‧‧實體按鈕
1326‧‧‧電源按鈕
1400‧‧‧膝上型電腦
1408‧‧‧天線
1411‧‧‧處理器
1412‧‧‧揮發性記憶體
1413‧‧‧磁碟機
1414‧‧‧軟碟驅動機
1415‧‧‧緊密光碟(CD)驅動機
1416‧‧‧無線資料鏈路及/或蜂巢式電話收發器
1417‧‧‧觸控板觸控表面
1418‧‧‧鍵盤
1419‧‧‧顯示器
1500‧‧‧伺服器
1501‧‧‧多核心處理器組合件
1502‧‧‧揮發性記憶體
1503‧‧‧網路存取埠
1504‧‧‧磁碟機
1505‧‧‧網路
1506‧‧‧軟碟驅動機、緊密光碟(CD)或數位影音光碟(DVD)光碟驅動機
D1‧‧‧計算裝置
D2‧‧‧計算裝置
Dx‧‧‧計算裝置
併入本文中且構成本說明書之部分的隨附圖式說明各種實施例之實例實施例,且連同上文給出之一般描述及下文給出之詳細描述用以解釋申請專利範圍之特徵。 圖1為說明適合於實施一實施例之計算裝置的組件方塊圖。 圖2為說明適合於實施一實施例之實例多核心處理器的組件方塊圖。 圖3為說明產生系統服務之各種版本的時變位址空間佈局隨機化之實例的圖形圖。 圖4A為說明適合於實施一實施例的實例時變位址空間佈局隨機化系統的組件區塊及發信圖。 圖4B為說明適合於實施一實施例的具有動態程式碼產生系統之實例時變位址空間佈局隨機化系統的組件區塊及發信圖。 圖5為說明適合於實施執行一系統服務之一版本之一實施例的實例時變位址空間佈局隨機化系統的組件區塊及發信圖。 圖6為說明適合於實施執行一系統服務之多個版本之一實施例的實例時變位址空間佈局隨機化系統的組件區塊及發信圖。 圖7為說明適合於實施針對多個應用程式執行一系統服務之多個版本版本之一實施例的實例時變位址空間佈局隨機化系統的組件區塊及發信圖。 圖8為說明適合於實施執行一系統服務之多個版本之一實施例的具有物件管理器之實例時變位址空間佈局隨機化系統的組件區塊及發信圖。 圖9為說明根據一實施例的用於實施時變位址空間佈局隨機化之方法的程序流程圖。 圖10為說明根據一實施例的用於實施時變位址空間佈局隨機化中的虛擬記憶體位址空間佈局至系統服務之版本的隨機指派的方法的程序流程圖。 圖11為說明根據一實施例的用於使用時變位址空間佈局隨機化來實施系統服務執行之方法的程序流程圖。 圖12為說明根據一實施例的用於使用具有動態程式碼產生之時變位址空間佈局隨機化來實施系統服務執行之方法的程序流程圖。 圖13為說明適合於與各種實施例一起使用之實例行動計算裝置的組件方塊圖。 圖14為說明適合於與各種實施例一起使用之實例行動計算裝置的組件方塊圖。 圖15為說明適合於與各種實施例一起使用之實例伺服器的組件方塊圖。
310‧‧‧系統服務之版本
312‧‧‧系統服務之版本
314‧‧‧系統服務之版本
316‧‧‧系統服務之版本
400‧‧‧實體記憶體
402‧‧‧系統服務S1
404‧‧‧開機程序
406‧‧‧應用程式
408‧‧‧啟動器
410‧‧‧映射器
412‧‧‧請求協調器
414‧‧‧虛擬記憶體
416‧‧‧程序群組

Claims (36)

  1. 一種用於一計算裝置上之時變位址空間佈局隨機化的方法,其包含: 啟動一系統服務之第一複數個版本; 將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者; 自一第一應用程式接收執行該系統服務之一第一請求; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本;及 使用該系統服務之該第一版本的資料來執行該系統服務。
  2. 如請求項1之方法,其進一步包含: 自該第一應用程式接收執行該系統服務之一第二請求; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第二版本;及 使用該系統服務之該第二版本的資料來執行該系統服務。
  3. 如請求項1之方法,其進一步包含: 將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者,其中該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符係不同的; 使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符; 儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務識別符的該等關聯; 使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局關聯;及 儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局的該等關聯。
  4. 如請求項3之方法,其中: 執行該系統服務之該第一請求包括該系統服務識別符; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本包含自與該系統服務識別符關聯的該系統服務之該第一複數個版本隨機地選擇該系統服務之該第一版本; 該方法進一步包含: 為該第一應用程式提供該系統服務之該第一版本之一第一系統服務版本識別符;及 自該第一應用程式接收具有該第一系統服務版本識別符的執行該系統服務之該第一版本之一請求。
  5. 如請求項4之方法,其進一步包含: 使用該第一系統服務版本識別符與該第一系統服務版本之該隨機虛擬位址空間佈局之間的一關聯,定位該第一系統服務版本之一隨機虛擬位址; 將該第一系統服務版本之該隨機虛擬位址轉譯為該系統服務之該第一版本的該資料儲存所在之一實體位址;及 擷取該系統服務之該第一版本的該資料。
  6. 如請求項3之方法,其進一步包含將一處理識別符指派給該系統服務之該第一複數個版本中之每一者, 其中用於該系統服務之該第一複數個版本中之每一者的該處理識別符係相同的,且 其中對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者、將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者及使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符進行。
  7. 如請求項1之方法,其進一步包含: 接收為該系統服務之該第一版本之一執行的動態產生程式碼分配程式碼緩衝空間的一請求; 隨機地選擇一程式碼緩衝位址; 判定與該程式碼緩衝位址關聯的一程式碼緩衝空間是否足夠大且可用於儲存該動態產生程式碼;及 回應於判定該程式碼緩衝空間足夠大以儲存該動態產生程式碼,在該程式碼緩衝位址處儲存該動態產生程式碼。
  8. 如請求項1之方法,其進一步包含: 自一第二應用程式接收執行該系統服務之一第二請求; 偵測來自該第二應用程式的執行該系統服務之該第二請求係對該系統服務之一攻擊; 啟動該系統服務之第二複數個版本; 將一隨機虛擬位址空間佈局指派給該系統服務之該第二複數個版本中之每一者,其中該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局與該系統服務之該第二複數個版本中之每一者的該隨機虛擬位址空間佈局不同; 自該系統服務之該第一複數個版本及該系統服務之該第二複數個版本隨機地選擇該系統服務之一第二版本;及 使用該系統服務之該第二版本的資料來執行該系統服務。
  9. 如請求項1之方法,其中: 啟動一系統服務之第一複數個版本包含在具有不同指令集架構的複數個異質處理器核心中之一者上啟動該系統服務之該第一複數個版本中的該系統服務之多個版本中之每一者; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本包含隨機地選擇該複數個異質處理器核心中之一第一異質處理器核心,該系統服務之該第一版本在該第一異質處理器核心上啟動; 使用該系統服務之該第一版本的資料來執行該系統服務包含由該第一異質處理器核心執行該系統服務;且 該方法進一步包含: 將來自該第一應用程式的執行該系統服務之該第一請求傳送至該第一異質處理器核心; 接收由該第一異質處理器核心進行的該系統服務之該執行的一輸出;及 將該輸出傳回至該第一應用程式。
  10. 一種計算裝置,其包含: 一啟動器,其經組態以執行包含啟動一系統服務之第一複數個版本的操作; 一映射器,其以通信方式連接至該啟動器且經組態以執行包含將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者的操作; 一請求協調器,其以通信方式連接至該啟動器且經組態以執行包含以下各者的操作: 自一第一應用程式接收執行該系統服務之一第一請求; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本;及 一處理器,其以通信方式連接至該請求協調器且經可執行指令組態以執行包含使用該系統服務之該第一版本的資料來執行該系統服務的操作。
  11. 如請求項10之計算裝置,其中: 該請求協調器經組態以執行進一步包含以下各者的操作: 自該第一應用程式接收執行該系統服務之一第二請求;及 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第二版本;且 該處理器經可執行指令組態以執行進一步包含使用該系統服務之該第二版本的資料來執行該系統服務的操作。
  12. 如請求項10之計算裝置,其中: 該啟動器經組態以執行進一步包含將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者的操作,其中該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符係不同的; 該請求協調器經組態以執行進一步包含以下各者的操作: 使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符;及 儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務識別符的該等關聯;且 該處理器經可執行指令組態以執行進一步包含以下各者的操作: 使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局關聯;及 儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局的該等關聯。
  13. 如請求項12之計算裝置,其中: 該請求協調器經組態以執行操作,以使得: 自該第一應用程式接收執行該系統服務之該第一請求包含接收該系統服務識別符; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本包含自與該系統服務識別符關聯的該系統服務之該第一複數個版本隨機地選擇該系統服務之該第一版本;且 該處理器經可執行指令組態以執行進一步包含以下各者的操作: 為該第一應用程式提供該系統服務之該第一版本之一第一系統服務版本識別符;及 自該第一應用程式接收具有該第一系統服務版本識別符的執行該系統服務之該第一版本之一請求。
  14. 如請求項13之計算裝置,其中該處理器經可執行指令組態以執行進一步包含以下各者的操作: 使用該第一系統服務版本識別符與該第一系統服務版本之該隨機虛擬位址空間佈局之間的一關聯,定位該第一系統服務版本之一隨機虛擬位址; 將該第一系統服務版本之該隨機虛擬位址轉譯為該系統服務之該第一版本的該資料儲存所在之一實體位址;及 擷取該系統服務之該第一版本的該資料。
  15. 如請求項12之計算裝置,其中: 該啟動器經組態以執行進一步包含將一處理識別符指派給該系統服務之該第一複數個版本中之每一者的操作,其中用於該系統服務之該第一複數個版本中之每一者的該處理識別符係相同的; 該映射器經組態以執行操作,以使得對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者進行; 該啟動器經組態以執行操作,以使得對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者進行;且 該處理器經可執行指令組態以執行操作,以使得對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符進行。
  16. 如請求項10之計算裝置,其進一步包含一記憶體分配器,該記憶體分配器以通信方式連接至該請求協調器且經組態以執行包含以下各者的操作: 接收為該系統服務之該第一版本之一執行的動態產生程式碼分配程式碼緩衝空間的一請求; 隨機地選擇一程式碼緩衝位址; 判定與該程式碼緩衝位址關聯的一程式碼緩衝空間是否足夠大且可用於儲存該動態產生程式碼;及 回應於判定該程式碼緩衝空間足夠大以儲存該動態產生程式碼,在該程式碼緩衝位址處儲存該動態產生程式碼。
  17. 如請求項10之計算裝置,其中: 該請求協調器經組態以執行進一步包含以下各者的操作: 自一第二應用程式接收執行該系統服務之一第二請求; 偵測來自該第二應用程式的執行該系統服務之該第二請求係對該系統服務之一攻擊; 該啟動器經組態以執行進一步包含啟動該系統服務之第二複數個版本的操作; 該映射器經組態以執行進一步包含將一隨機虛擬位址空間佈局指派給該系統服務之該第二複數個版本中之每一者的操作,其中該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局與該系統服務之該第二複數個版本中之每一者的該隨機虛擬位址空間佈局不同; 該請求協調器經組態以執行進一步包含自該系統服務之該第一複數個版本及該系統服務之該第二複數個版本隨機地選擇該系統服務之一第二版本的操作;且 該處理器經可執行指令組態以執行進一步包含使用該系統服務之該第二版本的資料來執行該系統服務的操作。
  18. 如請求項10之計算裝置,其中: 該啟動器經組態以執行操作,以使得啟動一系統服務之第一複數個版本包含在具有不同指令集架構的複數個異質處理器核心中之一者上啟動該系統服務之該第一複數個版本中的該系統服務之多個版本中之每一者; 該請求協調器經組態以執行操作,以使得自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本包含隨機地選擇該複數個異質處理器核心中之一第一異質處理器核心,該系統服務之該第一版本在該第一異質處理器核心上啟動; 該處理器為該第一異質處理器核心,且經可執行指令組態以執行操作,以使得使用該系統服務之該第一版本的資料來執行該系統服務包含由該第一異質處理器核心執行該系統服務;且 該請求協調器經組態以執行進一步包含以下各者的操作: 將來自該第一應用程式的執行該系統服務之該第一請求傳送至該第一異質處理器核心; 接收由該第一異質處理器核心進行的該系統服務之該執行的一輸出;及 將該輸出傳回至該第一應用程式。
  19. 一種計算裝置,其包含: 用於啟動一系統服務之第一複數個版本的構件; 用於將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者的構件; 用於自一第一應用程式接收執行該系統服務之一第一請求的構件; 用於自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本的構件;及 用於使用該系統服務之該第一版本的資料來執行該系統服務的構件。
  20. 如請求項19之計算裝置,其進一步包含: 用於自該第一應用程式接收執行該系統服務之一第二請求的構件; 用於自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第二版本的構件;及 用於使用該系統服務之該第二版本的資料來執行該系統服務的構件。
  21. 如請求項19之計算裝置,其進一步包含: 用於將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者的構件,其中該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符係不同的; 用於使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符的構件; 用於儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務識別符的該等關聯的構件; 用於使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局關聯的構件;及 用於儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局的該等關聯的構件。
  22. 如請求項21之計算裝置,其中: 執行該系統服務之該第一請求包括該系統服務識別符;且 用於自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本的構件包含用於自與該系統服務識別符關聯的該系統服務之該第一複數個版本隨機地選擇該系統服務之該第一版本的構件, 該計算裝置進一步包含: 用於為該第一應用程式提供該系統服務之該第一版本之一第一系統服務版本識別符的構件;及 用於自該第一應用程式接收具有該第一系統服務版本識別符的執行該系統服務之該第一版本之一請求的構件。
  23. 如請求項22之計算裝置,其進一步包含: 用於使用該第一系統服務版本識別符與該第一系統服務版本之該隨機虛擬位址空間佈局之間的一關聯,定位該第一系統服務版本之一隨機虛擬位址的構件; 用於將該第一系統服務版本之該隨機虛擬位址轉譯為該系統服務之該第一版本的該資料儲存所在之一實體位址的構件;及 用於擷取該系統服務之該第一版本的該資料的構件。
  24. 如請求項21之計算裝置,其進一步包含用於將一處理識別符指派給該系統服務之該第一複數個版本中之每一者的構件,其中用於該系統服務之該第一複數個版本中之每一者的該處理識別符係相同的, 其中: 用於將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者的構件包含用於對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將該隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者的構件; 用於將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者的構件包含用於對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將該系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者的構件;且 用於使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至一系統服務之該系統服務識別符的構件包含用於對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之該系統服務識別符的構件。
  25. 如請求項19之計算裝置,其進一步包含: 用於接收為該系統服務之該第一版本之一執行的動態產生程式碼分配程式碼緩衝空間的一請求的構件; 用於隨機地選擇一程式碼緩衝位址的構件; 用於判定與該程式碼緩衝位址關聯的一程式碼緩衝空間是否足夠大且可用於儲存該動態產生程式碼的構件;及 用於回應於判定該程式碼緩衝空間足夠大以儲存該動態產生程式碼,在該程式碼緩衝位址處儲存該動態產生程式碼的構件。
  26. 如請求項19之計算裝置,其進一步包含: 用於自一第二應用程式接收執行該系統服務之一第二請求的構件; 用於偵測來自該第二應用程式的執行該系統服務之該第二請求係對該系統服務之一攻擊的構件; 用於啟動該系統服務之第二複數個版本的構件; 用於將一隨機虛擬位址空間佈局指派給該系統服務之該第二複數個版本中之每一者的構件,其中該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局與該系統服務之該第二複數個版本中之每一者的該隨機虛擬位址空間佈局不同; 用於自該系統服務之該第一複數個版本及該系統服務之該第二複數個版本隨機地選擇該系統服務之一第二版本的構件;及 用於使用該系統服務之該第二版本的資料來執行該系統服務的構件。
  27. 如請求項19之計算裝置,其中: 用於啟動一系統服務之第一複數個版本的構件包含用於在具有不同指令集架構的複數個異質處理器核心中之一者上啟動該系統服務之該第一複數個版本中的該系統服務之多個版本中之每一者的構件; 用於自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本的構件包含用於隨機地選擇該複數個異質處理器核心中之一第一異質處理器核心的構件,該系統服務之該第一版本在該第一異質處理器核心上啟動; 用於使用該系統服務之該第一版本的資料來執行該系統服務的構件包含用於由該第一異質處理器核心執行該系統服務的構件;且 該計算裝置進一步包含: 用於將來自該第一應用程式的執行該系統服務之該第一請求傳送至該第一異質處理器核心的構件; 用於接收由該第一異質處理器核心進行的該系統服務之該執行的一輸出的構件;及 用於將該輸出傳回至該第一應用程式的構件。
  28. 一種非暫時性處理器可讀儲存媒體,其上儲存有處理器可執行指令,該等處理器可執行指令經組態以使一計算裝置之一處理器執行操作,該等操作包含: 啟動一系統服務之第一複數個版本; 將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者; 自一第一應用程式接收執行該系統服務之一第一請求; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本;及 使用該系統服務之該第一版本的資料來執行該系統服務。
  29. 如請求項28之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 自該第一應用程式接收執行該系統服務之一第二請求; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第二版本;及 使用該系統服務之該第二版本的資料來執行該系統服務。
  30. 如請求項28之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者,其中該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符係不同的; 使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符; 儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務識別符的該等關聯; 使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局關聯;及 儲存該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符與該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局之一對應隨機虛擬位址空間佈局的該等關聯。
  31. 如請求項30之非暫時性處理器可讀儲存媒體,其中: 執行該系統服務之該第一請求包括該系統服務識別符; 該等所儲存之處理器可執行指令經組態以使該處理器執行操作,以使得自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本包含自與該系統服務識別符關聯的該系統服務之該第一複數個版本隨機地選擇該系統服務之該第一版本;且 該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 為該第一應用程式提供該系統服務之該第一版本之一第一系統服務版本識別符;及 自該第一應用程式接收具有該第一系統服務版本識別符的執行該系統服務之該第一版本之一請求。
  32. 如請求項31之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 使用該第一系統服務版本識別符與該第一系統服務版本之該隨機虛擬位址空間佈局之間的一關聯,定位該第一系統服務版本之一隨機虛擬位址; 將該第一系統服務版本之該隨機虛擬位址轉譯為該系統服務之該第一版本的該資料儲存所在之一實體位址;及 擷取該系統服務之該第一版本的該資料。
  33. 如請求項30之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行進一步包含將一處理識別符指派給該系統服務之該第一複數個版本中之每一者的操作,其中用於該系統服務之該第一複數個版本中之每一者的該處理識別符係相同的,且 其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,以使得對於經指派該處理識別符的該系統服務之該第一複數個版本中之每一者,將一隨機虛擬位址空間佈局指派給該系統服務之該第一複數個版本中之每一者、將一系統服務版本識別符指派給該系統服務之該第一複數個版本中之每一者及使該系統服務之該第一複數個版本中之每一者的該系統服務版本識別符關聯至該系統服務之一系統服務識別符進行。
  34. 如請求項28之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 接收為該系統服務之該第一版本之一執行的動態產生程式碼分配程式碼緩衝空間的一請求; 隨機地選擇一程式碼緩衝位址; 判定與該程式碼緩衝位址關聯的一程式碼緩衝空間是否足夠大且可用於儲存該動態產生程式碼;及 回應於判定該程式碼緩衝空間足夠大以儲存該動態產生程式碼,在該程式碼緩衝位址處儲存該動態產生程式碼。
  35. 如請求項28之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 自一第二應用程式接收執行該系統服務之一第二請求; 偵測來自該第二應用程式的執行該系統服務之該第二請求係對該系統服務之一攻擊; 啟動該系統服務之第二複數個版本; 將一隨機虛擬位址空間佈局指派給該系統服務之該第二複數個版本中之每一者,其中該系統服務之該第一複數個版本中之每一者的該隨機虛擬位址空間佈局與該系統服務之該第二複數個版本中之每一者的該隨機虛擬位址空間佈局不同; 自該系統服務之該第一複數個版本及該系統服務之該第二複數個版本隨機地選擇該系統服務之一第二版本;及 使用該系統服務之該第二版本的資料來執行該系統服務。
  36. 如請求項28之非暫時性處理器可讀儲存媒體,其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,以使得: 啟動一系統服務之第一複數個版本包含在具有不同指令集架構的複數個異質處理器核心中之一者上啟動該系統服務之該第一複數個版本中的該系統服務之多個版本中之每一者; 自該系統服務之該第一複數個版本隨機地選擇該系統服務之一第一版本包含隨機地選擇該複數個異質處理器核心中之一第一異質處理器核心,該系統服務之該第一版本在該第一異質處理器核心上啟動;且 使用該系統服務之該第一版本的資料來執行該系統服務包含由該第一異質處理器核心執行該系統服務,且 其中該等所儲存之處理器可執行指令經組態以使該處理器執行操作,該等操作進一步包含: 將來自該第一應用程式的執行該系統服務之該第一請求傳送至該第一異質處理器核心; 接收由該第一異質處理器核心進行的該系統服務之該執行的一輸出;及 將該輸出傳回至該第一應用程式。
TW106107191A 2016-03-31 2017-03-06 時變位址空間佈局隨機化 TW201737150A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/087,198 US10013554B2 (en) 2016-03-31 2016-03-31 Time varying address space layout randomization

Publications (1)

Publication Number Publication Date
TW201737150A true TW201737150A (zh) 2017-10-16

Family

ID=58358838

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106107191A TW201737150A (zh) 2016-03-31 2017-03-06 時變位址空間佈局隨機化

Country Status (9)

Country Link
US (2) US10013554B2 (zh)
EP (1) EP3437008A1 (zh)
JP (1) JP2019513270A (zh)
KR (1) KR20180125976A (zh)
CN (1) CN108885661A (zh)
BR (1) BR112018069707A2 (zh)
CA (1) CA3016005A1 (zh)
TW (1) TW201737150A (zh)
WO (1) WO2017172164A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015185071A1 (en) * 2014-06-04 2015-12-10 Giesecke & Devrient Gmbh Method for enhanced security of computational device with multiple cores
US10268601B2 (en) 2016-06-17 2019-04-23 Massachusetts Institute Of Technology Timely randomized memory protection
US10191791B2 (en) * 2016-07-02 2019-01-29 Intel Corporation Enhanced address space layout randomization
US10310991B2 (en) * 2016-08-11 2019-06-04 Massachusetts Institute Of Technology Timely address space randomization
US10481816B2 (en) * 2017-10-18 2019-11-19 Western Digital Technologies, Inc. Dynamically assigning data latches
GB2568527B (en) 2017-11-20 2020-04-15 Trustonic Ltd Address layout varying process
US11070373B2 (en) * 2018-02-21 2021-07-20 Ebay Inc. Masked key hopping
KR102186221B1 (ko) * 2018-11-29 2020-12-03 한국전자통신연구원 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치
US11681794B2 (en) 2021-04-07 2023-06-20 Oracle International Corporation ASLR bypass

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
GB0504326D0 (en) * 2005-03-02 2005-04-06 Symbian Software Ltd Dual mode operating system for a computing device
US8756363B2 (en) * 2011-07-07 2014-06-17 Oracle International Corporation Efficient storage of memory version data
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment

Also Published As

Publication number Publication date
BR112018069707A2 (pt) 2019-02-05
US20170286674A1 (en) 2017-10-05
JP2019513270A (ja) 2019-05-23
US10013554B2 (en) 2018-07-03
EP3437008A1 (en) 2019-02-06
CN108885661A (zh) 2018-11-23
WO2017172164A1 (en) 2017-10-05
CA3016005A1 (en) 2017-10-05
US20180314825A1 (en) 2018-11-01
KR20180125976A (ko) 2018-11-26

Similar Documents

Publication Publication Date Title
TW201737150A (zh) 時變位址空間佈局隨機化
JP6903682B2 (ja) 仮想リソースビューを使用するデータ保護
CN107636625B (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
TWI610172B (zh) 用於經由集合和通道來靈活地將快取記憶體劃分成分量快取記憶體的方法和裝置
CN106537360B (zh) 用于具有动态分区的共享高速缓存的方法和装置
US20160253497A1 (en) Return Oriented Programming Attack Detection Via Memory Monitoring
CN111033466B (zh) 对闪存进行分区以及实现具有映像升级能力的灵活引导
CN111143242B (zh) 一种缓存预取方法和装置
US10503656B2 (en) Performance by retaining high locality data in higher level cache memory
US20150269091A1 (en) Secure support for i/o in software cryptoprocessor
US11954051B2 (en) Managed NAND Flash memory region control against endurance hacking
JP2017519294A (ja) フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc)
JP5976225B2 (ja) スティッキー抜去エンジンを伴うシステムキャッシュ
CN112825041A (zh) 一种内存隔离的装置、内存隔离方法和相关设备
US20210349995A1 (en) Systems and Methods for Protecting Cache and Main-Memory from Flush-Based Attacks
JP7264806B2 (ja) キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法
US9542318B2 (en) Temporary cache memory eviction
KR102411770B1 (ko) 전자 장치를 보호하기 위한 장치 및 방법
US20160103612A1 (en) Approximation of Execution Events Using Memory Hierarchy Monitoring