TW201702884A - 阻止記憶體溢出攻擊之精細粒度記憶體保護 - Google Patents
阻止記憶體溢出攻擊之精細粒度記憶體保護 Download PDFInfo
- Publication number
- TW201702884A TW201702884A TW105111919A TW105111919A TW201702884A TW 201702884 A TW201702884 A TW 201702884A TW 105111919 A TW105111919 A TW 105111919A TW 105111919 A TW105111919 A TW 105111919A TW 201702884 A TW201702884 A TW 201702884A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- read
- memory access
- write
- distinct
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本發明提供一種用以藉由定義各個指令集來保護記憶體區塊免受可執行指令之未經授權存取的方式,該等指令集被特定地繫結以在經定義記憶體區塊上操作且被禁止在其他記憶體區塊中操作。舉例而言,可執行程式碼可包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記。亦建立記憶體區塊,且每一記憶體區塊係與該複數個不同記憶體存取標記中之一者相關聯。因此,若與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊,則禁止或中止該第一讀取及/或寫入指令之執行。
Description
本申請案主張2015年4月24日在美國專利商標局提交申請之非臨時申請案第14/696,229號的優先權及權益。
本文中所揭示之各個特徵大體上係關於用於減少記憶體溢出攻擊之方法,且更特定言之,係關於一種如下之方法:其中可執行指令及記憶體區塊係與標記相關聯,使得僅在可執行指令及記憶體區塊(例如子分頁大小的記憶體區塊)二者之標記相同之情況下,該等指令才能存取該等記憶體區塊。
諸如行動電話、行動裝置、呼叫器、無線數據機、個人數位助理、平板電腦、個人資訊管理器(PIM)、個人媒體播放器、掌上型電腦、膝上型電腦或具有處理器之任何其他裝置的裝置正變得愈來愈風行且普遍存在。在此類裝置處產生、鍵入、儲存及/或接收之資料應被保護,以免受到未經授權之存取。一種此類未經授權存取之風險包括利用可執行程式碼中之現有讀取或寫入操作來破解裝置中之資訊的記憶體溢出攻擊。溢出記憶體攻擊通常涉及修改某一/些暫存器(例如位址暫存器、指標暫存器等),此導致(可執行程式碼或指令中之)讀取或寫入存取記憶體之非預期部分,從而形成記憶體溢出。
因此,需要一種阻止或禁止溢出記憶體攻擊之解決方案。
一第一特徵提供一種用於編譯具有整合式記憶體區塊保護的可執行程式碼的方法。可定義複數個記憶體存取標記。在一個實例中,該複數個記憶體存取標記可包括三種或三種以上相異類型之記憶體存取標記。同樣地,可定義特定針對每一記憶體存取標記之複數個讀取及寫入指令。舉例而言,複數個讀取及/或寫入指令中之每一讀取及/或寫入指令可與一相異記憶體存取標記相關聯。
在將原始程式碼編譯為可執行程式碼期間,可定義用於該複數個讀取及/或寫入指令之一或多個記憶體區塊。在一些實施中,記憶體區塊可為子分頁大小的記憶體區。
一或多個記憶體區塊可與對應記憶體存取標記相關聯。每一記憶體區塊僅可由與相同的對應記憶體存取標記相關聯之讀取及/或寫入指令存取。
在一個實例中,該複數個記憶體存取標記可包括三種或三種以上相異類型之記憶體存取標記。
根據一個實例,定義該複數個相異讀取及寫入指令可包括:(a)定義與第一記憶體存取標記相關聯之第一讀取及/或寫入指令;(b)定義與第二記憶體存取標記相關聯之第二讀取及/或寫入指令,其中第一讀取及/或寫入指令不能對與第二存取標記相關聯之記憶體區塊進行操作。第一記憶體存取標記可與複數個記憶體區塊相關聯。
在一個實施中,可在記憶體堆疊區或記憶體堆積區內定義一或多個記憶體區塊。
一第二特徵提供一種具有一或多個指令之非暫時性機器可讀儲存媒體,該一或多個指令在由一處理電路執行時導致該處理電路:(a)定義複數個記憶體存取標記;(b)定義特定針對每一記憶體存取標
記之複數個讀取及寫入指令;及/或(c)在將一原始程式碼編譯為一可執行程式碼期間,定義用於該複數個讀取及/或寫入指令之一或多個記憶體區塊並使一或多個記憶體區塊與一對應記憶體存取標記相關聯,其中每一記憶體區塊僅可由與一相同的對應記憶體存取標記相關聯之一讀取及/或寫入指令存取。在一些實例中,每一記憶體區塊可為一子分頁大小記憶體區。
一第三特徵提供一種在處理裝置處操作以用於逐個指令地保護記憶體區塊的方法。自一儲存裝置獲得一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯。可定義一或多個記憶體區塊,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯。在一個實例中,該可執行程式碼可為單個應用程式或處理程序。
接著可執行(或載入以用於執行)可執行程式碼中之該複數個相異讀取及/或寫入指令中之至少一些相異讀取及/或寫入指令,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之記憶體存取標記相同之記憶體存取標記相關聯的記憶體區塊。亦即,若讀取及/或寫入指令試圖存取與不同於該讀取及/或寫入指令之記憶體存取標記的記憶體存取標記相關聯的記憶體區塊,則禁止或中止該讀取及/或寫入指令之執行。
在一個實例中,該複數個相異讀取及寫入指令可包括:(a)與第一記憶體存取標記相關聯之第一讀取及/或寫入指令;(b)與第二記憶體存取標記相關聯之第二讀取及/或寫入指令。在第一讀取及/或寫入指令試圖存取與第二存取標記相關聯之記憶體區塊的情況下,禁止或中止該第一讀取及/或寫入指令。
可在編譯可執行程式碼時預定義一或多個記憶體區塊,或可在
執行可執行程式碼時動態地定義一或多個記憶體區塊。
一第四特徵提供一種經組態以逐個指令地保護記憶體區塊之裝置。該裝置可包括儲存裝置及處理電路。該儲存裝置可儲存一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯。該處理電路可經組態以:(a)定義一或多個記憶體區塊,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;(b)執行該可執行程式碼中之該複數個相異讀取及/或寫入指令中的至少一些相異讀取及/或寫入指令;及/或(c)其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
在另一例子中,該裝置可包括:(a)用於自一儲存裝置獲得一可執行程式碼的構件,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯;(b)用於定義一或多個記憶體區塊的構件,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;及/或(c)用於執行該可執行程式碼中之該複數個相異讀取及/或寫入指令中之至少一些相異讀取及/或寫入指令的構件,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
在又一例子中,提供一種具有一或多個指令之非暫時性機器可讀儲存媒體,該一或多個指令在由一處理電路執行時導致該處理電路:(a)自一儲存裝置獲得可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數
個相異記憶體存取標記之一個記憶體存取標記相關聯;(b)定義一或多個記憶體區塊,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;及/或(c)執行該可執行程式碼中之該複數個相異讀取及/或寫入指令中的至少一些相異讀取及/或寫入指令,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
一第五特徵提供另一種在處理裝置處操作以用於逐個指令地保護記憶體區塊的方法。可自一儲存裝置獲得一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記。可自可執行程式碼獲得與第一記憶體存取標記相關聯之第一讀取及/或寫入指令。在第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下,禁止、中止或阻斷該第一讀取及/或寫入指令之執行。在一些情況下,記憶體區塊可為子分頁大小的記憶體區。可維持定義複數個記憶體區塊中之每一者之一記憶體存取標記的一對映。
在一個實例中,該複數個不同記憶體存取標記可包括三種或三種以上相異類型之記憶體存取標記。第一記憶體存取標記可與複數個相異記憶體區塊相關聯。
一第六特徵提供一種經組態以逐個指令地保護記憶體區塊之裝置。該裝置可包括儲存裝置及處理電路。該儲存裝置可儲存一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記。處理電路可經組態以:(a)自該可執行程式碼獲得與第一記憶體存取標記相關聯之第一讀取及/或寫入指令;及/或(b)在
第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之記憶體區塊的情況下,禁止該第一讀取及/或寫入指令之執行。
在另一例子中,該裝置可包含:(a)用於自一儲存裝置獲得一可執行程式碼的構件,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記;(b)用於自該可執行程式碼獲得與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令的構件;及/或(c)用於在該第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下禁止該第一讀取及/或寫入指令之執行的構件。
在另一實例中,提供一種用於保護記憶體區塊免受未經授權存取之非暫時性機器可讀儲存媒體,該機器可讀儲存媒體具有在由一處理電路執行時使該處理電路執行以下步驟之一或多個指令:(a)自一儲存裝置獲得一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記;(b)自該可執行程式碼獲得與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令;及/或(c)在該第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下,禁止該第一讀取及/或寫入指令之執行。
102‧‧‧編譯器裝置
104‧‧‧處理裝置
106‧‧‧程式碼
108‧‧‧可執行程式碼
110‧‧‧儲存裝置
112‧‧‧處理電路
114‧‧‧記憶體裝置
202‧‧‧記憶體區
204‧‧‧記憶體區塊
206‧‧‧記憶體區塊
208‧‧‧記憶體區塊
210‧‧‧記憶體區塊
212‧‧‧記憶體區塊
214‧‧‧記憶體區塊
216‧‧‧對映表
220‧‧‧讀取及寫入指令
222‧‧‧指令讀取A及寫入A
224‧‧‧指令讀取B及寫入B
226‧‧‧指令讀取C及寫入C
302‧‧‧原始程式碼
304‧‧‧可執行程式碼
306‧‧‧可執行指令
308‧‧‧記憶體分配
310‧‧‧記憶體存取標記對映
312‧‧‧處理裝置
314‧‧‧儲存裝置
316‧‧‧處理電路
318‧‧‧記憶體裝置
320‧‧‧分頁分配表
322‧‧‧記憶體區塊
324‧‧‧記憶體區塊屬性
326‧‧‧指令
328‧‧‧指令
702‧‧‧處理裝置
704‧‧‧儲存裝置
706‧‧‧處理電路
708‧‧‧記憶體裝置
710‧‧‧指令執行模組/電路
712‧‧‧記憶體區塊設置模組/電路
714‧‧‧記憶體存取標記對映模組/電路
716‧‧‧記憶體存取標記比較器
718‧‧‧記憶體區塊
720‧‧‧記憶體區塊屬性
722‧‧‧記憶體存取標記對映
圖1係說明保護記憶體區塊免受經授權存取之方法之例示性操作環境的方塊圖。
圖2說明可如何標記憶體區塊或如何使記憶體區塊與複數個不同記憶體存取標記中之一者相關聯。
圖3係說明其中逐個指令及逐個記憶體區塊地保護記憶體區塊免
受經授權存取之例示性系統的方塊圖。
圖4係說明可由編譯器實施以提供逐指令記憶體區塊保護之方法的流程圖。
圖5係說明提供逐指令記憶體區塊保護之第二方法的流程圖。
圖6係說明提供逐指令記憶體區塊保護之第二方法的流程圖。
圖7係說明經組態以執行程式碼同時提供逐指令記憶體區塊保護之例示性處理裝置的方塊圖。
在以下描述中,給出具體細節以提供對所描述實施之透徹理解。然而,一般技術者將理解,可在無需此等具體細節之情況下實踐該等實施。舉例而言,可以方塊圖展示電路,從而避免以不必要的細節混淆該等實施。在其他情況下,可詳細展示熟知電路、結構及技術以免混淆該等實施。
詞語「例示性」在本文中用以意謂「充當實例、例子或說明」。在本文中描述為「例示性」之任何實施或實施例未必解釋為比其他實施例或實施較佳或有利。
一種特徵提供一種用以保護記憶體區塊免受未經授權的存取之方式。舉例而言,在編譯之前或與產生可執行程式碼同時,定義複數個不同記憶體存取標記。同樣地,定義特定針對每一記憶體存取標記之複數個相異的讀取及寫入指令。在讀取及/或寫入指令被應用於與不同記憶體存取標記相關聯之記憶體區塊的情況下,該讀取及/或寫入指令不能執行(或被阻止執行)。在編譯可執行程式碼期間,記憶體區塊係與複數個存取屬性中之一者相關聯。
根據第二態樣,在執行可執行程式碼期間,處理電路可確定針對第一讀取及/或寫入指令之記憶體存取標記。在與第一記憶體存取
標記相關聯之第一讀取及/或寫入指令被應用於與第二記憶體存取標記相關聯之記憶體區塊之情況下,禁止、阻斷及/或中止該第一讀取及/或寫入指令之執行。
根據第三態樣,獨立於使處理電路或作業系統建立任何應用程式相依或使用者相依安全內容脈絡或受保護記憶體區而達成對記憶體區塊之保護。亦即,在編譯可執行程式碼中使用之指令定義可由該指令存取之記憶體空間(例如,經標記記憶體區)。執行該等指令之處理電路僅遵循由該等指令建立之執行規則/協定。因此,僅在一指令及一記憶體區二者與相同記憶體存取標記相關聯之情況下,才允許該指令存取該記憶體區。此方法獨立於可由處理器及/或作業系統實施以保全或保護某些記憶體區域免受某些應用程式存取之任何其他記憶體保護機制或方法。
根據第四態樣,對記憶體區塊之保護可獨立於應用程式。亦即,可逐個指令地而非逐個應用程式地保護記憶體區塊。因此,來自同一應用程式內之不同讀取或寫入指令可能無法存取一或多個相同的記憶體區塊。舉例而言,與第一記憶體存取標記相關聯之第一讀取或寫入指令可能夠存取亦與第一記憶體存取標記相關聯之第一記憶體區塊,但即使在第一讀取或寫入指令和與第二記憶體存取標記相關聯(或不與第一記憶體存取標記相關聯)之第二讀取或寫入指令二者來源於同一執行應用程式內時,仍不允許該第二讀取或寫入指令存取第一記憶體區塊。
根據第五態樣,在子分頁大小之記憶體區塊中實施對記憶體區塊之保護。記憶體區塊大小係小於正由特定系統架構用以將記憶體分配給不同應用程式及/或處理程序的任何記憶體分頁大小。
根據第六態樣,添加記憶體存取標記屬性以定義記憶體區塊之特性。此記憶體存取標記不同於諸如讀取屬性、寫入屬性等之其他屬
性。
圖1係說明保護記憶體區塊免受經授權存取(例如,溢出記憶體攻擊)之方法之例示性操作環境的方塊圖。舉例而言,編譯器裝置102可將程式碼106編譯成可執行程式碼108。在編譯程式碼中,編譯器裝置102可使由程式碼使用/定義之每一記憶體區塊(例如,用於儲存資料及/或指令)與來自複數個不同記憶體存取標記當中之記憶體存取標記相關聯。應注意,記憶體存取標記可與(例如,記憶體分頁及/或記憶體區塊之)安全記憶體分配對不安全記憶體分配不相關。作為替代,記憶體存取標記可為用以參考一或多個記憶體區塊並將其與其他記憶體區塊區分開之邏輯建構體。同樣地,可在可執行程式碼中使用複數種相異類型之讀取及/或寫入指令,其中每一類型之讀取及/或寫入指令係與相異記憶體存取標記相關聯。在各種實例中,「標記」可為可用以使記憶體區塊與具體可執行指令(例如讀取及/或寫入指令)相關或相關聯之任何識別符、對映及/或屬性(例如,係明確的、隱含的及/或邏輯的)。舉例而言,可定義執行相同讀取/寫入操作之不同讀取/寫入指令集,但各讀取/寫入指令集特定針對及/或繫結至來自複數個不同記憶體區塊之特定記憶體區塊(或記憶體存取標記)。
在一些實施中,可在子分頁大小之記憶體區塊中實施對記憶體區塊之保護。記憶體分頁(亦稱為「分頁」或「虛擬分頁」)可為固定長度之連續記憶體區塊且通常由分頁表中之單個項描述。記憶體分頁通常相關聯於或分配給由處理電路執行之處理程序或應用程式。分頁表通常用以定義或追蹤分配及/或指派給每一處理程序或應用程式之記憶體分頁。在一些情況下,記憶體分頁可為用於記憶體作業系統中之記憶體管理的最小資料單元。記憶體區塊大小係小於由特定系統架構(例如處理電路、記憶體管理電路等)用以將記憶體分配給不同應用
程式及/或處理程序的任何記憶體分頁大小。
可將可執行程式碼載入至處理裝置104之儲存裝置110中。處理裝置104內之處理電路112接著可執行可執行程式碼,其中與第一記憶體存取標記相關聯之讀取及/或寫入指令僅可存取與相同第一記憶體存取標記相關聯之記憶體區塊。可為此目的將記憶體區塊與記憶體存取標記之對映維持於記憶體裝置114內。
圖2說明可如何標記憶體區塊或如何使記憶體區塊與複數個不同記憶體存取標記中之一者相關聯。當編譯可執行程式碼時,可針對變數、暫存器等定義記憶體區塊。編譯器確定哪些讀取/寫入指令應存取哪些記憶體區塊。因此,讀取/寫入指令係相關聯於及/或受限於僅對其預期用於之記憶體區塊進行操作。此阻止作為記憶體溢出攻擊之一部分的使用不相關讀取/寫入指令來存取非預期記憶體區塊。
在一個實例中,記憶體區202可邏輯上劃分為或配置為記憶體區塊204、206、208、210、212及214。每一記憶體區塊可為(例如)子分頁記憶體區段(例如,小於記憶體分頁大小)。每一記憶體區塊係與維持於對映表216中之標記相關聯。
對於每一記憶體存取標記,可定義不同讀取及寫入指令220或命令集。舉例而言,對於標記A,定義指令讀取A及寫入A 222,對於標記B,定義指令讀取B及寫入B 224,且對於標記C,定義指令讀取C及寫入C 226。此等指令220具體而言檢查其是否正在存取用其對應存取屬性標記或與其對應存取屬性相關聯之記憶體區塊。此等指令220僅在其將要存取之記憶體區塊係用其對應存取屬性識別/標記的情況下繼續或執行。舉例而言,若調用寫入A指令以在用標記B標記之記憶體區塊中寫入或儲存資料,則寫入A指令失敗且不繼續。在一些實施中,讀取及寫入操作亦可稱為載入及儲存操作。另外,在某些實施
中,可定義特定針對每一存取標記之其他指令。針對記憶體區塊之標記可儲存至記憶體區塊對標記對映表216中。
在預期操作下,讀取/寫入指令將僅能夠存取其原先被分配至之記憶體區塊。然而,在記憶體溢出攻擊中,攻擊者可將讀取/寫入指令改變用途以存取非預期記憶體區塊。本文中說明之記憶體存取標記之使用藉由使用標記以使特定讀取/寫入指令僅繫結至其原先預期用於之記憶體區塊而阻止對記憶體區塊之此類非預期存取。
在將原始程式碼編譯為可執行程式碼時,編譯器可經組態以識別哪些原始程式碼讀取及/或寫入指令應存取哪些記憶體區塊,且接著將相異讀取及/或寫入指令(例如相異類別及/或類型之指令)用於經識別之每一或多個相異記憶體區塊。舉例而言,經識別之每一記憶體區塊可與相異的記憶體存取標記相關聯。同樣地,被允許存取一特定記憶體區塊之一或多個指令亦與和該特定記憶體區塊之記憶體存取標記相同的記憶體存取標記相關聯。以此方式,可執行程式碼(或其中之指令)受限於僅對預定或預關聯記憶體區塊進行操作。若一指令試圖存取不與該指令相關聯之記憶體區塊,則處理電路中止該指令之執行。在一個實施中,逐個指令地限制對記憶體區塊之存取,使得僅允許單個讀取及/或寫入指令(來自複數個相異的讀取及/或寫入指令當中)存取每一記憶體區塊。另外,不准許單個(讀取/寫入)指令存取所有記憶體區塊(例如,該單個指令不與其明確地相關聯之記憶體區塊)。
在一個實例中,每一8字組記憶體區塊可標示或標記為受保護或未受保護的(例如,兩標記方法)。定義用於存取受保護及未受保護記憶體之單獨的載入/讀取及儲存/寫入指令。在例示性實施中,受保護區域可用作記憶體之未受保護區域之間的「防護」區塊當處理程序正在迴圈中存取未受保護記憶體時,若其越過未受保護區塊之末端且
試圖存取受保護區塊,則指令將失敗,此係因為記憶體存取屬性(受保護)不再匹配存取指令(與未受保護相關聯)。類似地,對受保護記憶體操作之處理程序無法經過鄰近的未受保護記憶體區塊。
在更為複雜的部署中,受保護區塊亦可用以儲存後設資料或控制流程資料。舉例而言,在堆疊上,編譯器可將堆疊指標及傳回位址(以及其他所儲存暫存器)置放至受保護區塊中,使得其更難以被覆寫。類似地,在堆積(heap)上,可將堆積後設資料置放於受保護區塊中。該方法可與現有程式碼完全回溯相容(例如,藉由簡單地將所有記憶體皆標示為未受保護)。
圖3係說明其中逐個指令及逐個記憶體區塊地保護記憶體區塊免受經授權存取之例示性系統的方塊圖。舉例而言,編譯器裝置可將原始程式碼302編譯成可執行程式碼304。在編譯原始程式碼302中,編譯器裝置形成可執行指令306、記憶體分配308及/或記憶體存取標記對映310。在一個實例中,指令306可包括可執行相同操作中之一些操作(例如,讀取/寫入A、讀取/寫入B、讀取/寫入C等)的相異指令326。然而,相異指令中之每一者可明確地繫結至記憶體區塊。舉例而言,可執行程式碼304可定義指令306使用之每一記憶體區塊(例如,用於儲存資料及/或指令)或使該每一記憶體區塊與來自複數個不同記憶體存取標記當中之記憶體存取標記相關聯。每一指令326可與不同記憶體存取標記相關聯,使得僅准許具有與特定記憶體區塊之記憶體存取標記相同的記憶體存取標記之彼等指令存取彼記憶體區塊。舉例而言,讀取A及/或寫入A指令可與第一記憶體存取標記A相關聯,而讀取B及/或寫入B指令可與第二記憶體存取標記B相關聯。
在散發給處理裝置312後,可執行程式碼304可儲存於儲存裝置314中,處理電路316可執行來自儲存裝置314之可執行程式碼304。在各種實例中,處理電路316可包括一個以上處理器、記憶體控制器、
輸入/輸出介面等。記憶體裝置318亦可耦接至處理裝置312。在一個實例中,處理電路可在記憶體裝置318中設置分頁分配表320,該分頁分配表逐個應用程式及/或處理程序地分配記憶體分頁。可執行程式碼304亦可使得處理電路316在記憶體裝置318中逐個指令地設置記憶體區塊322及記憶體區塊屬性324。
在一個實例中,對於每一記憶體區塊322(例如區塊A、區塊B、…、區塊N),定義一組記憶體區塊屬性324。該組屬性324可包括(例如)唯讀屬性、記憶體存取標記屬性等。唯讀屬性可定義對應記憶體區塊是否係由特定應用程式及/或處理程序唯讀的。記憶體存取標記屬性可指示允許哪個呼叫指令讀取及/或寫入至對應記憶體區塊。以此方式,每一記憶體區塊繫結至特定指令328且無法被與其他記憶體存取標記相關聯之指令存取。
應注意,記憶體存取標記可與(例如,記憶體分頁及/或記憶體區塊之)安全記憶體分配對不安全記憶體分配不相關。作為替代,記憶體存取標記可為用以參考一或多個記憶體區塊並將其與其他記憶體區塊區分開之邏輯建構體。同樣地,可在可執行程式碼中使用複數種相異類型之讀取及/或寫入指令,其中每一類型之讀取及/或寫入指令係與相異記憶體存取標記相關聯。
在一個實例中,在子分頁大小之記憶體區塊中實施對記憶體區塊之保護。記憶體區塊大小係小於正由分頁分配表320用以將記憶體分配給不同應用程式及/或處理程序之任何記憶體分頁大小。
另外,將記憶體存取標記用以繫結記憶體區塊與指令可獨立於使處理裝置312(或在其中執行之作業系統)建立任何應用程式相依或使用者相依安全內容脈絡或受保護記憶體區。亦即,僅在一可執行指令與一記憶體區塊二者係與相同記憶體存取標記相關聯之情況下,才允許彼指令存取該記憶體區塊。以此方式,可逐個指令地而非逐個應
用程式地保護記憶體區塊322。因此,來自同一應用程式/處理程序內之不同讀取或寫入指令可能無法存取一或多個相同的記憶體區塊。舉例而言,與第一記憶體存取標記(例如標記A)相關聯之第一讀取或寫入指令(例如讀取/寫入A)可能夠存取亦與第一記憶體存取標記(例如標記A)相關聯之第一記憶體區塊(例如區塊C)。但即使在第一讀取或寫入指令(例如讀取/寫入A)與第二讀取或寫入指令(例如讀取/寫入B)二者來源於同一執行應用程式或處理程序內時,仍不允許與第二記憶體存取標記(例如標記B)相關聯或不與第一記憶體存取標記(例如標記A)相關聯之第二讀取或寫入指令(例如讀取/寫入B)存取第一記憶體區塊(例如區塊C)。
圖4係說明可由編譯器實施以提供逐指令記憶體區塊保護之方法的流程圖。獲得原始程式碼402。在編譯原始程式碼之前或與之同時,可定義(例如產生、計算等)複數個記憶體存取標記404。定義特定針對每一記憶體存取標記之複數個讀取及/或寫入指令406。舉例而言,複數個讀取及/或寫入指令中之每一讀取及/或寫入指令可與相異記憶體存取標記相關聯。
在將原始程式碼編譯為可執行程式碼期間,定義用於複數個讀取及/或寫入指令且與對應記憶體存取標記相關聯之一或多個記憶體區塊,其中每一記憶體區塊僅可由與相同的對應記憶體存取標記相關聯之讀取及/或寫入指令存取408。舉例而言,若記憶體區塊係與第一記憶體存取標記相關聯,則該記憶體區塊僅可由亦與該第一記憶體存取標記相關聯之指令(例如讀取/寫入指令)存取(例如,讀取或寫入)。亦即,在一指令被應用於與不同於該指令之記憶體存取標記的記憶體存取標記相關聯的記憶體區塊之情況下,阻止該指令執行(例如,執行讀取或寫入操作)。複數個讀取及/或寫入指令中之每一讀取及/或寫
入指令可與相異的記憶體存取標記相關聯。複數個讀取及/或寫入指令可用於自原始程式碼產生可執行程式碼。
在替代實施中,並非編譯器定義一或多個記憶體區塊,而是可在(例如由處理電路)執行可執行程式碼時動態地定義及/或建立一或多個記憶體區塊。
在一個實施中,編譯器可經組態以在將原始程式碼編譯成可執行程式碼時識別哪些原始程式碼讀取及/或寫入指令應存取哪些記憶體區塊。接著,將相異讀取及/或寫入指令(例如,相異類別及/或類型之指令)用於經識別之每一或多個相異記憶體區塊。如先前所述,經識別之每一記憶體區塊可與相異的記憶體存取標記相關聯。同樣地,被允許存取一特定記憶體區塊之一或多個指令亦與和該特定記憶體區塊之記憶體存取標記相同的記憶體存取標記相關聯。以此方式,可執行程式碼(或其中之指令)受限於僅對預定或預關聯記憶體區塊進行操作。
可儲存可執行程式碼410以用於散發及/或傳輸。複數個記憶體存取標記可包括三種或三種以上相異類型之記憶體存取標記。
在一個實例中,定義複數個相異讀取及寫入指令可包括定義與第一記憶體存取標記相關聯之第一讀取及/或寫入指令以及定義與第二記憶體存取標記相關聯之第二讀取及/或寫入指令。第一讀取及/或寫入指令不能或被阻止在與第二存取標記相關聯之記憶體區塊上操作,且反之亦然。
在一個實例中,每一記憶體存取標記可與一或多個不同記憶體區塊相關聯。
記憶體區塊可為子分頁記憶體區(例如,區塊小於記憶體分頁大小)。即使在來自第一應用程式/處理程序之第一指令(例如讀取A/寫入A)能夠存取第一記憶體區塊(例如,自其讀取/向其寫入)時,仍阻止來
自同一第一應用程式/處理程序但與不同記憶體存取標記相關聯之第二相異指令(例如讀取B/寫入B)存取第一記憶體區塊。
在各種實例中,可在記憶體堆疊區或記憶體堆積區內定義記憶體區塊。
圖5係說明提供逐指令記憶體區塊保護之第一方法的流程圖。可自儲存裝置獲得可執行程式碼,該可執行程式碼包括複數個相異讀取及/或寫入指令,其中每一讀取及/或寫入指令係相關聯於來自複數個相異記憶體存取標記之一個記憶體存取標記502。在各種實例中,複數個相異讀取及/或寫入指令可解釋為相異類別之讀取及/或寫入指令、相異類型之讀取及/或寫入指令等。
接著定義一或多個記憶體區塊,其中每一記憶體區塊係與複數個相異記憶體存取標記中之一者相關聯504。記憶體區塊之此類定義可根據可執行程式碼(例如,由可執行程式碼預定義)或可在執行可執行程式碼時由處理電路動態地定義。每一記憶體區塊可為子分頁大小的記憶體區(例如,區塊小於記憶體分頁)。
執行可執行程式碼中之複數個相異讀取及/或寫入指令中的至少一些相異讀取及/或寫入指令,其中每一所執行之讀取及/或寫入指令受限於僅存取與和所執行之讀取及/或寫入指令之記憶體存取標記相同的記憶體存取標記相關聯之記憶體區塊506。舉例而言,此類限制可由執行可執行程式碼之處理電路施加。在准許存取記憶體區塊之前,處理電路可驗證(例如,使用屬性、記憶體存取標記對映表等)尋求存取彼記憶體區塊之指令係與和彼記憶體區塊之記憶體存取標記相同的記憶體存取標記相關聯。否則,若讀取及/或寫入指令試圖存取與不同於該讀取及/或寫入指令之記憶體存取標記的記憶體存取標記相關聯的記憶體區塊,則禁止或中止該讀取及/或寫入指令之執行
508。
圖6係說明提供逐指令記憶體區塊保護之第二方法的流程圖。可自儲存裝置獲得可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記602。在一個實例中,複數個不同記憶體存取標記可包括三種或三種以上相異類型之記憶體存取標記。此類存取記憶體標記可相異於及/或不同於諸如唯讀屬性之一般屬性。
作為執行可執行程式碼604之一部分,獲得與第一記憶體存取標記相關聯之第一讀取及/或寫入指令606。第一記憶體存取標記可與複數個相異記憶體區塊相關聯,其中該複數個相異記憶體區塊全部皆與同一記憶體存取標記相關聯。舉例而言,第一複數個相異記憶體區塊可包括第一子組之記憶體區塊以及第二子組之記憶體區塊,其中第一及第二子組之記憶體區塊可在連續或非連續記憶體區中。
在一些情況下,記憶體區塊可為子分頁記憶體區。在一些實例中,在獲得第一讀取及/或寫入指令之後,做出關於哪個記憶體存取標記與第一讀取及/或寫入指令相關聯之判定。做出關於正在由第一讀取及/或寫入指令存取之記憶體區塊是否與第一記憶體存取標記相關聯之判定608。
在第一讀取及/或寫入指令試圖存取與不同記憶體存取標記(不同於第一讀取及/或寫入指令)相關聯的記憶體區塊的情況下,禁止或中止第一讀取及/或寫入指令之執行610。舉例而言,可確定第一讀取及/或寫入指令尋求存取與第二記憶體存取標記相關聯之記憶體區塊。
否則,執行第一讀取及/或寫入指令612。可針對可執行程式碼中之某些或所有指令重複此處理程序614。
對映可維持於記憶體裝置中,該對映定義針對複數個記憶體區
塊中之每一者的記憶體存取標記。
圖7係說明經組態以執行程式碼同時提供逐指令記憶體區塊保護之例示性處理裝置的方塊圖。
處理裝置702可包括儲存裝置704、處理電路706及/或記憶體裝置708。
儲存裝置704可用以儲存可執行程式碼。可執行程式碼可包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記。
處理電路706可包括指令執行模組/電路710、記憶體區塊設置模組/電路712、記憶體存取標記對映模組/電路714及/或記憶體存取標記比較器716。指令執行模組/電路710可用以執行由可執行程式碼定義之指令。記憶體區塊設置模組/電路712可用以根據可執行程式碼建立記憶體區塊718(在記憶體裝置708內)。記憶體存取標記對映模組/電路714可用以將記憶體區塊對映至記憶體存取標記。記憶體存取標記比較器716可用以將與一指令相關聯之記憶體存取標記與正被存取之記憶體區塊的記憶體存取標記進行比較。
記憶體裝置708可包括記憶體區塊718、記憶體區塊屬性720(例如,其可定義針對每一記憶體區塊之記憶體存取標記)、及/或用以將記憶體存取標記對映至記憶體區塊之記憶體存取標記對映722。
圖7中之模組/電路可用以實施圖5及圖6中(及其他處)描述之一或多個特徵。舉例而言,指令執行模組/電路710可自可執行程式碼獲得與第一記憶體存取標記相關聯之第一讀取及/或寫入指令。指令執行模組/電路710可使用記憶體存取標記對映模組/電路714及/或記憶體存取標記比較器716確定:(a)第一讀取及/或寫入指令係與第一記憶體存取標記相關聯,或(b)第一讀取及/或寫入指令尋求存取與第二記憶體存取標記相關聯之記憶體區塊。
在第一讀取及/或寫入指令試圖存取與不同記憶體存取標記相關聯之記憶體區塊的情況下,指令執行模組/電路710可禁止第一讀取及/或寫入指令之執行。在一些實施中,記憶體區塊係子分頁大小的記憶體區。
圖1、圖2、圖3、圖4、圖5、圖6及/或圖7中所說明之組件、步驟、特徵及/或功能中的一或多者可經重新佈置及/或組合為單個組件、步驟、特徵或功能,或以若干組件、步驟或功能體現。亦可在不背離本發明之範疇之情況下添加額外元件、組件、步驟及/或功能。圖1、圖3及圖7中說明之設備、裝置和/或組件可經組態以執行圖2、圖4、圖5及/或圖6中描述之方法、特徵或步驟中的一或多者。本文中描述之新穎演算法亦可有效地實施於軟體中及/或嵌入於硬體中。
此外,應注意,至少一些實施經描述為處理程序,該處理程序經描繪為流程圖、結構圖或方塊圖。儘管流程圖可能將操作描述為順序處理程序,但許多操作可並行地或同時執行。另外,可重新佈置操作之次序。當處理程序之操作完成時,該處理程序終止。處理程序可對應於方法、函式、程序、次常式、子程式等。當處理程序對應於函式時,處理程序之終止對應於函式傳回至呼叫函式或主函式。
此外,實施例可藉由硬體、軟體、韌體、中間軟體、微碼或其任何組合實施。當以軟體、韌體、中間軟體或微碼實施時,用以執行必要任務之程式碼或碼段可儲存於機器可讀媒體(諸如儲存媒體或其他儲存器)中。處理器可以執行必要任務。碼段可表示程序、函式、子程式、程式、常式、次常式、模組、軟體套件、類別,或指令、資料結構或程式陳述式的任何組合。一個碼段可藉由傳遞及/或接收資訊、資料、引數、參數或記憶體內容耦合至另一碼段或硬體電路。可經由包括記憶體共用、訊息傳遞、符記傳遞、網路傳輸等任何合適的方式傳遞、轉發或傳輸資訊、引數、參數、資料等。
術語非暫時性「機器可讀媒體」、「電腦可讀媒體」及/或「處理器可讀媒體」可包括(但不限於)攜帶型或固定儲存裝置、光學儲存裝置,以及能夠儲存、容納或攜載指令及/或資料之各種其他非暫時性媒體。因此,本文中描述之各種方法可以部分或完全地由可儲存於「機器可讀媒體」、「電腦可讀媒體」及/或「處理器可讀媒體」中且由一或多個處理器、機器及/或裝置執行之指令及/或資料來實施。
結合本文中所揭示之實例描述的方法或演算法可以處理單元、程式設計指令或其他指示(direction)之形式直接體現於硬體、可由處理器執行之軟體模組或兩者之組合中,且可含於單個裝置中或跨越多個裝置而分佈。軟體模組可駐存於RAM記憶體(隨機存取記憶體)、快閃記憶體、ROM記憶體(唯讀記憶體)、EPROM記憶體(可抹除可程式化唯讀記憶體)、EEPROM記憶體(電子可抹除可程式化唯讀記憶體)、暫存器、硬碟、抽取式磁碟、CD-ROM,或此項技術中已知之任何其他形式的儲存媒體中。儲存媒體可耦接至處理器,以使得處理器可自儲存媒體讀取資訊及向儲存媒體寫入資訊。在替代方案中,儲存媒體可整合至處理器。
熟習此項技術者將進一步瞭解,結合本文中所揭示之實施例描述的各種說明性邏輯區塊、模組、電路及演算法步驟可實施為電子硬體、電腦軟體或兩者之組合。為了清楚地說明硬體與軟體之此可互換性,各種說明性組件、區塊、模組、電路及步驟已在上文大體按其功能性加以描述。此功能性實施為硬體抑或軟體取決於特定應用及強加於整個系統上之設計約束。
本文中所描述之實施例之各種特徵可在不背離本發明之範疇的情況下實施於不同系統中。應注意,前述實施例僅為實例,且不應解釋為限制本發明。實施例之描述意欲為說明性的,且不限制申請專利範圍之範疇。因而,本發明之教示可容易應用於其他類型之裝置,且
許多替代例、修改及變化對於熟習此項技術者而言將顯而易見。
302‧‧‧原始程式碼
304‧‧‧可執行程式碼
306‧‧‧可執行指令
308‧‧‧記憶體分配
310‧‧‧記憶體存取標記對映
312‧‧‧處理裝置
314‧‧‧儲存裝置
316‧‧‧處理電路
318‧‧‧記憶體裝置
320‧‧‧分頁分配表
322‧‧‧記憶體區塊
324‧‧‧記憶體區塊屬性
326‧‧‧指令
328‧‧‧指令
Claims (35)
- 一種方法,其包含:定義複數個記憶體存取標記;定義特定針對每一記憶體存取標記之複數個讀取及寫入指令;及在將一原始程式碼編譯為一可執行程式碼期間,定義用於該複數個讀取及/或寫入指令之一或多個記憶體區塊並使一或多個記憶體區塊與一對應記憶體存取標記相關聯,其中每一記憶體區塊僅可由與一相同的對應記憶體存取標記相關聯之一讀取及/或寫入指令存取。
- 如請求項1之方法,其中該複數個記憶體存取標記包括三種或三種以上相異類型之記憶體存取標記。
- 如請求項1之方法,其中該複數個讀取及/或寫入指令中之每一讀取及/或寫入指令係與一相異記憶體存取標記相關聯。
- 如請求項1之方法,其中定義該複數個相異讀取及寫入指令包括:定義與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令;定義與一第二記憶體存取標記相關聯之一第二讀取及/或寫入指令;其中該第一讀取及/或寫入指令不能對與該第二存取標記相關聯之一記憶體區塊進行操作。
- 如請求項4之方法,其中該第一記憶體存取標記係與複數個記憶體區塊相關聯。
- 如請求項1之方法,其中一記憶體區塊係一子分頁大小的記憶體 區。
- 如請求項1之方法,其中可在一記憶體堆疊區或一記憶體堆積區內定義該一或多個記憶體區塊。
- 一種具有一或多個指令之非暫時性機器可讀儲存媒體,該一或多個指令在由一處理電路執行時導致該處理電路:定義複數個記憶體存取標記;定義特定針對每一記憶體存取標記之複數個讀取及寫入指令;及在將一原始程式碼編譯為一可執行程式碼期間,定義用於該複數個讀取及/或寫入指令之一或多個記憶體區塊並使一或多個記憶體區塊與一對應記憶體存取標記相關聯,其中每一記憶體區塊僅可由與一相同的對應記憶體存取標記相關聯之一讀取及/或寫入指令存取。
- 一種方法,其包含:自一儲存裝置獲得一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯;定義一或多個記憶體區塊,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;及執行該可執行程式碼中之該複數個相異讀取及/或寫入指令中的至少一些相異讀取及/或寫入指令,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之該記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
- 如請求項9之方法,其中在一讀取及/或寫入指令試圖存取與不同於該讀取及/或寫入指令之該記憶體存取標記的一記憶體存取標 記相關聯的一記憶體區塊的情況下,禁止或中止該讀取及/或寫入指令之執行。
- 如請求項9之方法,其中一記憶體區塊係一子分頁大小的記憶體區。
- 如請求項9之方法,其中該可執行程式碼係針對一單個應用程式或處理程序。
- 如請求項9之方法,其中該複數個相異讀取及寫入指令包括:與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令;及與一第二記憶體存取標記相關聯之一第二讀取及/或寫入指令;其中在該第一讀取及/或寫入指令試圖存取與該第二存取標記相關聯之一記憶體區塊的情況下,禁止或中止該第一讀取及/或寫入指令。
- 如請求項9之方法,其中在編譯該可執行時預定義該一或多個記憶體區塊,或在執行該可執行程式碼時動態地定義該一或多個記憶體區塊。
- 一種裝置,其包含:一儲存裝置,其儲存一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯;一處理電路,其耦接至該儲存裝置,該處理電路經組態以:定義一或多個記憶體區塊,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;及執行該可執行程式碼中之該複數個相異讀取及/或寫入指令 中的至少一些相異讀取及/或寫入指令,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之該記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
- 一種裝置,其包含:用於自一儲存裝置獲得一可執行程式碼的構件,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯;用於定義一或多個記憶體區塊的構件,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;及用於執行該可執行程式碼中之該複數個相異讀取及/或寫入指令中之至少一些相異讀取及/或寫入指令的構件,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之該記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
- 一種具有一或多個指令之非暫時性機器可讀儲存媒體,該一或多個指令在由一處理電路執行時導致該處理電路:自一儲存裝置獲得可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係與來自複數個相異記憶體存取標記之一個記憶體存取標記相關聯;定義一或多個記憶體區塊,其中每一記憶體區塊係與該複數個相異記憶體存取標記中之一者相關聯;及執行該可執行程式碼中之該複數個相異讀取及/或寫入指令中的至少一些相異讀取及/或寫入指令,其中每一所執行之讀取及/或寫入指令受限於僅存取與和該所執行之讀取及/或寫入指令之 該記憶體存取標記相同的記憶體存取標記相關聯之一記憶體區塊。
- 一種方法,其包含:自一儲存裝置獲得一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記;自該可執行程式碼獲得與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令;及在該第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下,禁止該第一讀取及/或寫入指令之執行。
- 如請求項18之方法,其進一步包含:確定該第一讀取及/或寫入指令係與該第一記憶體存取標記相關聯。
- 如請求項18之方法,其進一步包含:確定該第一讀取及/或寫入指令是否尋求存取與一第二記憶體存取標記相關聯之一記憶體區塊。
- 如請求項18之方法,其進一步包含:維持定義複數個記憶體區塊中之每一者之一記憶體存取標記的一對映。
- 如請求項18之方法,其中該複數個不同記憶體存取標記包括三種或三種以上相異類型之記憶體存取標記。
- 如請求項18之方法,其中該第一記憶體存取標記係與複數個相異記憶體區塊相關聯,其中該複數個相異記憶體區塊全部皆與同一記憶體存取標記相關聯。
- 如請求項18之方法,其中一記憶體區塊係一子分頁大小的記憶 體區。
- 一種裝置,其包含:一儲存裝置,其儲存一可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令係特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記;一處理電路,其耦接至該儲存裝置,該處理電路經組態以:自該可執行程式碼獲得與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令;及在該第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下,禁止該第一讀取及/或寫入指令之執行。
- 如請求項25之裝置,其中該處理電路進一步經組態以:確定該第一讀取及/或寫入指令係與該第一記憶體存取標記相關聯。
- 如請求項25之裝置,其中該處理電路進一步經組態以:確定該第一讀取及/或寫入指令是否尋求存取與一第二記憶體存取標記相關聯之一記憶體區塊。
- 如請求項25之裝置,其中該處理電路進一步經組態以:將一對映維持於一記憶體裝置中,該對映定義複數個記憶體區塊中之每一者的一記憶體存取標記。
- 如請求項25之裝置,其中該複數個不同記憶體存取標記包括三種或三種以上相異類型之記憶體存取標記。
- 如請求項25之裝置,其中該第一記憶體存取標記係與複數個相異記憶體區塊相關聯,其中該複數個相異記憶體區塊全部皆與同一記憶體存取標記相關聯。
- 如請求項25之裝置,其中一記憶體區塊係一子分頁大小的記憶體區。
- 一種裝置,其包含:用於自一儲存裝置獲得一可執行程式碼的構件,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記;用於自該可執行程式碼獲得與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令的構件;及用於在該第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下禁止該第一讀取及/或寫入指令之執行的構件。
- 一種用於保護記憶體區塊免受未經授權存取之非暫時性機器可讀儲存媒體,該機器可讀儲存媒體具有在由一處理電路執行時使該處理電路執行以下步驟之一或多個指令:自一儲存裝置獲得可執行程式碼,該可執行程式碼包括複數個相異讀取及寫入指令,其中每一讀取及/或寫入指令特定針對來自複數個不同記憶體存取標記之一個記憶體存取標記;自該可執行程式碼獲得與一第一記憶體存取標記相關聯之一第一讀取及/或寫入指令;及在該第一讀取及/或寫入指令試圖存取與一不同記憶體存取標記相關聯之一記憶體區塊的情況下,禁止該第一讀取及/或寫入指令之執行。
- 如請求項33之非暫時性機器可讀儲存媒體,該機器可讀儲存媒體進一步具有在由一處理電路執行時導致該處理電路執行以下步驟之一或多個指令: 將一對映維持於一記憶體裝置中,該對映定義複數個記憶體區塊中之每一者的一記憶體存取標記。
- 如請求項33之非暫時性機器可讀儲存媒體,該機器可讀儲存媒體進一步具有在由一處理電路執行時導致該處理電路執行以下步驟之一或多個指令:確定該第一讀取及/或寫入指令係與該第一記憶體存取標記相關聯。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/696,229 US20160313938A1 (en) | 2015-04-24 | 2015-04-24 | Fine grained memory protection to thwart memory overrun attacks |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW201702884A true TW201702884A (zh) | 2017-01-16 |
Family
ID=55806896
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105111919A TW201702884A (zh) | 2015-04-24 | 2016-04-15 | 阻止記憶體溢出攻擊之精細粒度記憶體保護 |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US20160313938A1 (zh) |
| EP (1) | EP3286653A1 (zh) |
| JP (1) | JP2018514860A (zh) |
| KR (1) | KR20170139547A (zh) |
| CN (1) | CN107533515A (zh) |
| TW (1) | TW201702884A (zh) |
| WO (1) | WO2016172012A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI688861B (zh) * | 2018-09-18 | 2020-03-21 | 新唐科技股份有限公司 | 資料處理裝置及其資料保護方法 |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3916568B1 (en) * | 2020-05-29 | 2024-07-17 | ARM Limited | Tag checking apparatus and method |
| KR102902870B1 (ko) * | 2023-12-12 | 2025-12-23 | 부산대학교 산학협력단 | 임베디드 시스템의 힙 메모리 공간 안전성을 보장하기 위한 방법 및 이를 이용하는 임베디드 시스템 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201137660A (en) * | 2009-12-23 | 2011-11-01 | Ibm | Method and system for protecting an operating system against unauthorized modification |
| US9345597B2 (en) * | 2013-07-09 | 2016-05-24 | Abbott Cardiovascular Systems Inc. | Polymeric stent with structural radiopaque marker |
| US11132300B2 (en) * | 2013-07-11 | 2021-09-28 | Advanced Micro Devices, Inc. | Memory hierarchy using page-based compression |
-
2015
- 2015-04-24 US US14/696,229 patent/US20160313938A1/en not_active Abandoned
-
2016
- 2016-04-15 EP EP16718192.4A patent/EP3286653A1/en not_active Withdrawn
- 2016-04-15 WO PCT/US2016/027956 patent/WO2016172012A1/en not_active Ceased
- 2016-04-15 CN CN201680021421.XA patent/CN107533515A/zh active Pending
- 2016-04-15 TW TW105111919A patent/TW201702884A/zh unknown
- 2016-04-15 JP JP2017552134A patent/JP2018514860A/ja active Pending
- 2016-04-15 KR KR1020177030393A patent/KR20170139547A/ko not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI688861B (zh) * | 2018-09-18 | 2020-03-21 | 新唐科技股份有限公司 | 資料處理裝置及其資料保護方法 |
| US11455401B2 (en) | 2018-09-18 | 2022-09-27 | Nuvoton Technology Corporation | Data-processing device and data-protection method thereof |
Also Published As
| Publication number | Publication date |
|---|---|
| CN107533515A (zh) | 2018-01-02 |
| US20160313938A1 (en) | 2016-10-27 |
| WO2016172012A1 (en) | 2016-10-27 |
| JP2018514860A (ja) | 2018-06-07 |
| EP3286653A1 (en) | 2018-02-28 |
| KR20170139547A (ko) | 2017-12-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6652491B2 (ja) | 目標メモリ・アドレスに対応するメモリ属性ユニットの領域を特定するための領域特定演算 | |
| KR102095614B1 (ko) | 메모리 보호 | |
| CN103329139B (zh) | 在具有随机分配的存储范围的安全系统中支持jit的系统和方法 | |
| US10877903B2 (en) | Protected memory area | |
| TW201702884A (zh) | 阻止記憶體溢出攻擊之精細粒度記憶體保護 | |
| US20220129542A1 (en) | Deterministic trusted execution container through managed runtime language metadata | |
| US10740454B2 (en) | Technologies for USB controller state integrity protection with trusted I/O | |
| CN116635855A (zh) | 基于执行上下文管理可执行代码对数据内存的访问的装置和方法 | |
| US11150887B2 (en) | Secure code patching | |
| CN120011048B (zh) | 资源管理方法、装置、电子设备及可读存储介质 | |
| CN120011049B (zh) | 资源安全管理方法、资源安全管理系统以及芯片 | |
| CN112580023B (zh) | 影子栈管理方法及装置、介质、设备 | |
| CN106485138B (zh) | 一种Java卡防攻击方法及装置 | |
| CN110569205A (zh) | 安全系统单芯片及其操作方法 | |
| WO2017020194A1 (zh) | 一种文件系统保护方法、装置及存储设备 |