TWI342492B - Method of providing extended memory protection - Google Patents

Method of providing extended memory protection Download PDF

Info

Publication number
TWI342492B
TWI342492B TW099114963A TW99114963A TWI342492B TW I342492 B TWI342492 B TW I342492B TW 099114963 A TW099114963 A TW 099114963A TW 99114963 A TW99114963 A TW 99114963A TW I342492 B TWI342492 B TW I342492B
Authority
TW
Taiwan
Prior art keywords
protection
memory
address
record
access
Prior art date
Application number
TW099114963A
Other languages
English (en)
Other versions
TW201042455A (en
Inventor
Antonio Cheng
Francis Mckeen
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201042455A publication Critical patent/TW201042455A/zh
Application granted granted Critical
Publication of TWI342492B publication Critical patent/TWI342492B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

1342492 六、發明說明: 【發明所屬之技術領域】 電腦工業近幾年來,已經受到了各種安全上之漏洞( vulnerabilities ),以及,漏洞的數目持續上升。更多這 些漏洞已經轉變爲攻擊,這犧牲受攻擊下之機器的完整性 。很多這些攻擊的原因爲當建立或修改碼時所作出的程式 規劃錯誤。
【先前技術】 已經有幾項解決方案提出。很多群體已經執行撰寫安 全碼的課程。當使用一種管理執行時間環境(MRTE )時 ,其係一種有效方案,但並未包含整個程式規劃空間。這 些努力方案都沒有想要回復漏洞、攻擊及修補的向下循環 。降低程式規劃錯誤的數目將造成安全漏洞的數量並改良 系統完整性。
一種常見漏洞爲緩衝器溢位攻擊。此攻擊的例子係當 惡意程式碼重寫儲存在一堆疊中之函數的返回位址時發生 。當自函數返回時,一修改的返回位址被推入指令指標器 (擴充指令計數器(EIP )暫存器)。此修改的返回位址 可能造成惡意程式碼的執行及/或堆疊執行錯誤。此一攻 擊典型係爲較差的程式規劃所造成,例如,未檢查緩衝器 傳送。相反地,一良好建構之程式將記億體映圖入所建構 部份中’其包含:含程式碼的文字部份、儲存初始及未初 始資料的資料段、及爲堆疊及堆(heap )所共享的部份。 -5- 1342492 該堆疊也可以用以儲存函數之傳引數呼叫、本地變數及所 選擇暫存器的値,所選擇暫存器係例如EIP暫存器。堆保 有動態變數。差的程式規劃可能造成這些區段被重寫。 其他地點也可能存在有未檢查的緩衝器。此地點的例 子爲一緩衝器溢位至堆記憶體。堆記憶體爲一種由公共池 所配置並爲一程式所用以儲存變數及其他執行時間資料的 記憶體。 因此,有需要提供更多之安全漏洞保護。 【發明內容與實施方式】 本發明的實施例提供一種機制,以標記記憶體位置爲 不可存取。如果一程式想要存取被保護的記憶體位置,則 該機制可以發出一記憶體存取違規的信號。即,依本發明 實施例之記憶體保護可以提供有關於一記億體位置的固定 大小斷點。該等位置可以藉由將該位置標示爲對於某些類 型操作爲不可存取,而加以保護。以此方式,可以發生更 安全的操作。 於各種實施例中,屬性位元被定義以提供記憶體位置 的保護。這些位元指示是否已核准存取作讀取或寫入操作 。這些屬性可以藉由對一變數提供存取控制,而提供擴充 記億體保護(EMP ) ’在部份實施例中,該變數可以被定 義爲32位元的記億體。爲EMP致能編譯器所產生之程式 將設定屬性,以提供正確之支援位準。古董程式可以藉由 不設定這些屬性位元而加以無縫地操作a -6- 1342492 應了解的是,記憶體保護的特性可能取決於架構。這 些選擇可以例如包含所提供存取保護的類型:讀取保護、 寫入保護、執行保護、或這三種的部份混合選擇;爲每一 屬性位元所涵蓋的位址範圍;混淆或重疊其他屬性的能力 ;操作位址空間:虛擬或實體;及—保護進行( protection -walk)程序*以將一位址轉譯爲對應保護値
於一實施例中,根據讀取/寫入限制加以定義了四種 狀態,每一狀態爲一位元所表示。這些狀態對應於具有四 狀態的緩衝器用途模型’即未配置、未初始、已初始、及 定鎖。此模型可以分別映圖至以下狀態’ no_read-nowrite ; no_read-write ok ; read_〇kay-write_ok :及 read_ok-no_write。例如,no_read-no_write 狀態可以藉由 設定讀取及寫入保護位元加以定義。因此’如果對有這些 保護位元設定的位置發生讀取或寫入’則產生一例外。 EMP資訊可以維持在主記憶體中,並可以直接對應 至機器中之每一可定址記憶體元件。即’每—可定址記億 體元件可以具有與之對應的一組EMP屬性。EMP資訳可 以在記憶體中被管理爲記億體中之屬性頁。這些頁在程# 之虛擬位址空間爲不可存取’但可以爲一特殊指令所存取 。屬性位元可以每一記憶體存取時檢查。如果該等位元指 示一限定存取位置’則產生一記億體存取違規。 於虛擬記憶體分頁系統中,程式在邏輯位址空間中’ 完成記億體參考。邏輯位址然後經由分段而轉換成一線性 1342492 或虛擬位址。最後’一處理機的分頁機制將該 譯爲對應於資料所儲存於實體記憶體中之實體 一虛擬位址爲主之EMP被實施與致能,則處 一轉譯由虛擬位址轉譯爲記錄在分開的EMP 間中之EMP限制記錄。 現參考第1圖,所示爲依據本發明實施例 體存取方法的流程圖。如第1圖所示,一處理 存取要求10。該資料存取要求10包含一虛擬 取大小及操作的類型(例如一讀(R )或寫( 。虛擬位址資訊被提供給一頁轉譯機制2 0及-機制3 0。這些轉譯機制將來自資料存取要求] 址資訊轉譯入實體位址空間。 如第1圖所示’爲頁轉譯機制2 0所取得 被提供給邏輯運算子2 5,其將實體位址組合 型’以存取在實體記憶體50中之資料。更明 用所取得之實體位址’在資料頁6 0中之想要彥 被取得。 然而’在取得想要資料65前,在EMP致 中’其首先決定是否資料65的記憶體位置允 例如’如果EMP被致動,則可以防止讀取或 對要求資料65的存取被限制。
即’來自資料存取要求丨〇的虛擬位址資 EMP轉譯機制3 0 ’其中虛擬位址被轉譯爲對 (有關於資料頁60之)emP頁70中之EMP 虛擬位址轉 位址。如果 理機作出另 實體位址空 之檢查記憶 機接收資料 位址、一存 W )操作) - EMP轉譯 〇的虛擬位 之實體位址 以該操作類 確地說,使 I料65可以 動的實施例 許被存取。 寫入操作, 訊被提供給 應於儲存在 或(有關於 1342492 ' 資料65的)限制記錄75的實體位址。所存取之EMP記 錄75被提供給EMP檢查機制40,其中,其可以被決定 是否允許存取所要求之資料6 5。例如,Ε Μ P記錄7 5的一 或多數位元可以表示對相關要求資料65的存取不被允許 。如果此存取並未允許’則ΕΜΡ檢查機制40可以在信號 線45上,產生一 ΕΜΡ保護違規(EPV)。因此,防止對 資料6 5的存取。 φ 因此’如果ΕΜΡ寫入保護被設定用於一給定虛擬位 址’及有一資料寫入針對該位址,則處理機可能提出一 Ε Μ Ρ保護違規(ΕΡ V )例外。Ε Μ Ρ讀取保護對資料讀取存 取,具有相同的作用。在部份實施例中,由於碼擷取之記 . 憶體讀取可能不被認爲是·資料讀取存取。於各種實施例 中,ΕΜΡ例外處理器可以被用以以安全方式自保護違規 回復。
於各種實施例中,檢查ΕΜΡ限制爲特權層次不可知 。即,如果ΕΜΡ寫入保護被設定用於一特定記憶體位置 ,則所有針對該位置的寫入將造成一 EPV例外,而不管 程式之特權層次爲何。於這些實施例中,所有頁限制仍必 須滿足對後續的參考。如果頁層次保護並不允許現行特權 層次的存取,則ΕΜΡ例外並不會發生。 -ΕΜΡ旗標可以包含在一處理機控制結構中,例如 一控制暫存器(例如控制暫存器4 ( CR4 ))。於部份實 施例中,ΕΜΡ旗標的預設設定爲零(清除),表示對於 資料存取,沒有任何ΕΜΡ限制檢查。當ΕΜΡ限制檢查被 -9- 1342492 全面去能時’處理機並不必要執行每一資料存取之虛擬位 址的EMP位址轉譯。爲了致能EMp限制檢查,EMp旗標 可以設定爲1。 Ε Μ P實體位址空間並不爲在虛擬位址空間中之軟體 程式可見。因此,一作業系統(0 s )可以防止經由正常 分頁機制而曝露Ε Μ Ρ實體位址。爲了修改£ Μ ρ限制屬性 ’軟體程式可以使用一指令’以改變記憶體屬性,例如移 動記億體限制(例如Μ Ο V M R指令),其可以將記憶體屬 性(Ε Μ Ρ限制記錄)移入至實體空間中之ε μ Ρ記億體。 ΕΜΡ保護違規(EPV )可以具有其本身例外向量識別 碼(1D )。如果一資料儲存未通過Ε Μ Ρ限制檢查,則處 理機提出一 Ε Ρ V例外。另外,Ε ρ ν例外也可以在μ Ο V M R 指令中被提出。EPV可以被認爲是一指令執行故障。所得 之中斷很準確並防止指令被執行。 當EPV例外被提起,其將—錯誤碼放在現行堆疊上 。錯誤碼可以包含若干之錯誤狀態位元。在錯誤碼中之每 一位元可以用以表示 EPV例外的不同成因。當提出一 EPV時’初始該EMP轉譯或限制檢查之源虛擬位址被儲 存在控制暫存器(例如C R2 )內之一指定位置中。 於各種實施例中,此一 Ε Μ P機制可以以各種方式加 以使用,以增加系統完整性。雖然部份實施例可以保護堆 疊變數與參數,以及堆變數,但可以了解的是,本發明的 範圍並不作如此限制。 於以下之例子中,使用在一虛擬位址模型上的一位元 -10- 1342492
組大小的分立寫入保護。於此實施例中,對於可定址資料 (在一虛擬位址空間)的每一位元組,有一與之相關的寫 入保護屬性位元。如果設定此位元,則任何寫入此位置的 嘗試可能造成一架構性例外。對於每一虛擬位址頁,作業 系統(〇 s )可以配置一保護記錄,例如在分開虛擬記憶 體位置中之對應大小(例如每一位元組1位元)的向量》 於一實施例中,每一EMP限制記錄描述用於虛擬位址之 3 2位元(4位元組)的資料存取限制。如果一資料存取涵 蓋多個4位元組資料塊,則也可以使用多EMP限制記錄 。此向量在實體記憶體中之位置可以經由一保護進行機制 加以提供。於一實施例中,此機制可能類似於頁進行機制 ’以最後輸入項指向向量基礎位址,而不是實體頁。於其 他實施例中,也可能採用不同轉譯設計,包含一具有軟體 協助的散列表。 雖然於此所述爲位元組大小之寫入保護,但在其他實 % 施例中’也可以實施讀取保護及其他保護粒度。限制記錄 也可以於此被稱爲向量。一向量可以保護以不爲正常儲存 操作所修改。例如,一特殊指令可以爲使用者應用程式所 用’以修改在一向量內之特定位元。此指令可以被稱爲” 設定/清除保護”指令。給定一虛擬位址,該特殊設定或清 除指令可以用以修改適當屬性位元,而不會造成例外。 可以藉由標示主記憶體位置,例如返回位址爲不可存 取’而保護堆疊不受到緩衝器溢位,及其他有危險之重寫 。例如’一編譯器可以輸入碼至常式之輸入項,以標示返 -11 - 1342492 回位址爲不可存取。一旦常式想要寫入傳送指定變數並進 入返回位址’則使用Ε Μ P機制,以檢出錯誤。此錯誤可 以被報告爲記憶體存取違規。結果,並不會發生寫入,一 錯誤處理器可以決定解決該錯誤的適當方法,而不像緩衝 器溢位檢測設計’其只在緩衝器已經訛誤後,才檢測一溢 位。 堆記憶體也可以以兩方式加以保護。未配置或去配置 記億體可以被標示爲未配置。對這些位置的參考將產生一 故障。再者’堆管理器可以標示主指標器及內部變數爲不 可存取。 例如’現參考第2圖,所顯示一緩衝器的方塊圖,其 可以依據本發明實施例加以使用。緩衝器可以在一資料堆 或一堆疊結構內,並且,如第2圖所示,可以包含多數資 料塊,其包含一第一資料方塊115,其爲X位元組長及第 二資料方塊125,其爲y位元長。兩方塊115及125均具 有一與之相關的方塊信頭。明確地說,方塊1 1 5包含一信 頭1 1〇及方塊1 25包含一信頭1 20。另外,一信頭1 05代 表一零位元組方塊。 於一緩衝溢位攻擊,惡意程式碼重寫來自一配置塊到 下一塊的緩衝器,並修改其中之資料。爲了避免此等緩衝 溢位’本發明之實施例可以使用保護記錄,保護每一緩衝 器塊的塊信頭。例如,第2圖之每一信頭1 05、1 1 〇及 1 20均具有與之相關的保護指示符,其係被設定以指示這 些記憶體位置爲不可存取以進行寫入及/或讀取操作。這 -12- 1342492 些保護指示符可以被儲存在一或多數保護向量或記錄中 例如第1圖之Ε Μ P記錄7 5。
爲了最小化由於保護資訊的額外記憶體存取造成之效 能損失,在一記憶體管線內,也可以包含一保護快取及一 保護轉譯旁看緩衝器(PTLB )。現參考第3圖,所示爲 一依據本發明實施例之各種管線結構的方塊圖。如第3圖 所示,一微處理機2 00可以包含各種處理機資源,以完成 保護資料的儲存及檢查。 於第3圖之實施例中,處理機200可以包含一保護快 取2 1 0,其係用以儲存位在實體記憶體中之ΕΜΡ記錄的 一次組。於此一方式中,最近或最常存取之保護資料可以 被快速取得,而不會在從記憶體階層取得資訊時,造成潛 候期。 如於第3圖所示,資料轉譯旁看緩衝器(DTLB ) 220 被顯示用以儲存資料位址轉譯的備份。同樣地,PTLB2 30 被顯示以用以儲存由一虛擬位址至最近存取保護記錄的實 體位址的轉譯。每一結構210、220及23 0均連接以接收 一例如對應於一儲存操作的虛擬位址。一實體記億體270 被連接至這些管線結構。於各種實施例中,ΕΜΡ結構可 以類似於用於分頁功能的微架構的方式加以設計。於部份 實施例中,用於ΕΜΡ及分頁的電路可以共用。 保護快取2 1 0包含一資料部份,其具有保護向量的快 取線。雖然每一快取線的長度係爲依實施限定,但該長度 可以爲資料快取線尺寸的倍數,以簡化分離位址的處理。 -13- 1342492 除了使用保護向量位址作爲查看標籤外,自管線中接收之 儲存操作的原始虛擬位址也可以用以存取保護快取2 1 0的 標籤陣列。保護向量快取線位址可以被儲存爲在快取中之 位址檢查資料。以此結構,快取查看可以平行於DTLB及 PTLB查看發生,或者,當儲存要求的虛擬位址取得時就 發生。 DTLB220係被連接以隨著一保護致能信號提供一位 址頁給保護快取210。同樣地,DTLB 2 20提供保護致能信 號給 PTLB230。 來自DTLB220及PTLB23 0的結果可以被藉由比較該 等結果與位址檢查資料,而檢查快取查看結果合格否。除 了送位址給保護快取210外,DTLB220或PTLB23 0也可 以去能該快取查看結果。於此等例子中,快取結果被放棄 ,並沒有輸出驅動。查看結果可以例如去能DTLB或 PTLB失誤、頁層次保護查看去能(DTLB/PTLB )、及處 理機狀態保護查看去能。 如果對應於一要求虛擬位址係出現在PTLB23 0中, 則EMP記錄的實體位址隨著一 PTLB擊中信號被提供給 保護快取210。如同用於一頁進行之TLB,PTLB2 3 0也可 以用以加速保護進行程序。同樣地,如同用於頁進行之 TLB,PTLB230也可以依指定方式實施。例如,其可以爲 單層或多層TLB,其也可以支援一或多數進行樹定義,並 可以利用具有軟體協助的散列表。 PTLB查看可以以進入儲存操作的虛擬頁位址開始, -14- 1342492 其可以與DTLB查看並行的方式完成。PTLB2 3 0的資料輸 出係爲用於對應頁的保護記錄的實體開始。PTLB將送出 此位址及一擊中(或致能)信號給保護快取21 0。當 DTLB22 0已經致能用於該頁的保護時,PTLB輸出只相關 於一DTLB擊中。使用隨著來自DTLB220及PTLB230的 資訊所接收之虛擬位址,保護快取2 1 0可以決定是否所要 求EMP記錄出現否。因此,一單一虛擬位址可以被用以 φ 取得用於儲存要求的實體位址(即,記憶體中之資訊)及 對應於該儲存要求之EMP記錄的實體位址的轉譯。 如果快取查看輸出並未被放棄,及所有對應於儲存要 " 求的保護位元係在其結構內被快取,則發生一快取擊中。 . 除了報告快取擊中外,保護快取2 1 0也可以在所有爲儲存 要求所涵蓋的保護位元上,執行一邏輯”或”運算。即,除 了快取實體位址轉譯外,保護快取2 1 0使用表示儲存大小 資訊的位元組遮罩,來執行位元索引。如果所組合之保護 % 被設定,則可能產生一寫入存取違規(第3圖之”寫入保 護”信號),造成一軟體可見例外,β|] EPV。因此,所組 . 合之實體位址可以使用以檢查有關於記憶體位置的記憶體 保護。 如果未發生一擊中及要求資料並未受到保護,則保護 快取2 1 0輸出一許可信號(第3圖之,,寫入允許”信號), 表示可以發生存取。 如果快取查看輸出並未被放棄,但儲存位址並不在快 取標籤陣列中或者檢查位址並不匹配DTLB/PTLB輸出, -15- 1342492 則發生一快取失誤。結果’保護快取210可以藉由隨著有 關儲存要求的必須位址資訊’而送出一失誤信號給 PTLB230,而要求一塡入操作。PTLB230然後可以初始在 記憶體270中之相關保護記錄275中之所要求快取線的記 憶體讀取。儲存操作將在快取線塡入完成時(發生於線 2 8 0 ),再存取記憶體管線。 如果PTLB查看失敗及保護被致能以用於所要求之頁 ,則發生一PTLB失誤。如果在PTLB23 0中發生一失誤( 即未出現對所要求之Ε Μ P記錄2 7 5之實體位址轉譯)’ 則產生一PTLB失誤信號’並被送至一保護失誤處理器( Ρ Μ Η ) 2 4 0。Ρ Μ Η 2 4 0可以類似於一頁失誤處理器般地操 作,以使得一保護頁進行取得對應於想要ΕΜΡ記錄的實 體位址。ΡΜΗ240執行具有原始要求位址之保護進行。 因此,如所示’ ΡΜΗ24〇初始一頁進行,其中各種頁 表可以被存取,以取得想要實體位址並將之提供至 PTLB230作儲存。於第3圖所示之實施例中,呈現了一三 層分頁架構,其包含一第一分頁結構2 52、一第二分頁結 構2 54、及一第三分頁結構25 6。此等分頁表可以對應於 一 64位元虛擬位址,包含一頁映圖層4( Ρ M L4 )表、一 頁目錄指標表、及一頁目錄。因此,ΡΜΗ 240可以提供在 —頁表內之輸入項給PTLB 2 3 0。隨後,此輸入項可以隨著 爲保護快取2 1 0所提供之位元組偏移而被使用,以存取在 實體記億體270內之想要ΕΜΡ記錄275。 當然,實際保護進行狀態機取決於保護進行演算法的 -16- 1342492 架構性選擇。於保護進行完成時,PTLB23 0可以自動地初 始一快取塡入操作,用於現行儲存操作的臨界快取線。如 上所述’在快取塡入操作完成後,儲存操作可以被重試。 因此’ PMH240可以提供在頁表內之輸入項給PTLB 23 0。 隨後’此輸入項可以隨著爲保護快取2 1 0所提供之位元組 偏移而被使用,以存取在實體記憶體270內之想要EMP 記錄2 75。
於部份實施例中,PTLB輸入項可以經由明確指令或 容量替換加以更新。雖然,對應快取線並不需要被清除, 因爲一PTLB擊中爲一快取擊中所必須,此清除可以改良 快取效率。雖然所示具有第3圖實施例之特定結構,但在 其他實施例中’保護快取210、DTLB220、及PTLB230也 可以加入單一記憶體結構中。 現參考第4圖,所示爲一種依據本發明實施例之方法 流程圖。如第4圖所示’方法3 0 0可以用以提供對給定記 憶體位置’記憶體保護。方法3 00可以藉由接收一設定保 護指令開始(方塊3 1 0 )。此一指令可以爲一編譯器所發 射’以完成特定記憶體位置的保護,例如緩衝器信頭,以 防止緩衝器溢位攻擊。 再者,可以決定想要保護的類型(例如讀取或寫入保 護)及保護記憶體的位置(方塊320)。例如,可以決定 於堆疊中之緩衝器信頭的位置。使用此位置資訊,可以存 取對應於記億體位置之保護記錄(方塊3 3 0 )。例如,此 保護記錄可以儲存於系統記億體的分開的保護頁中。最後 -17- 1342492 ,一保護記錄內之位元可以設定以對應於該記憶體位置( 方塊3 40 )。例如,保護記錄可以具有含八位元的向量, 每一位元對應於記億體的四位元組區段。因此,可以據此 設定對應於包含緩衝器信頭的四位元組方塊的給定位元。
參考第5圖,所示爲使用如第3圖所示額外管線結構 的擴充記憶體保護的實施法流程圖。如第5圖所示,方法 400可以藉由接收一儲存操作開始(方塊4 1 0 )。儲存操 作的虛擬位址可以被施加至一保護快取及 TLB (例如 DTLB 及 PTLB )(方塊 420 )。
再者,可以決定是否有一保護TLB失誤(菱形塊430 )。如果有,則發生一保護頁失誤並執行一保護頁進行機 制(方塊440 )。如果保護TLB擊中或於完成頁進行時, 再來,決定是否有一保護快取擊中(菱形塊445 )。如果 否,則可以執行一快取塡入操作(方塊4 5 0 ),並控制回 到方塊420。如上所述,快取塡入將自系統記憶體取得想 要保護記錄並將之提供至保護快取。 相反地,如果菱形塊445判斷有一保護快取擊中,則 儲存操作的保護狀態被決定(方塊4 6 0 )。例如,保護快 取或其他結構可以執行一邏輯操作,以決定是否有一或多 數對應於儲存操作的位元被設定,表示一保護狀態。因此 ’其可以決定是否相關於儲存操作的位址被保護(菱形塊 4 7 0 )。如果否’則操作被允許(方塊4 8 0 )。相反地, 如果位址被保護’則可以發出記憶體存取違規的信號(方 塊 490 )。 -18 - 1342492 於部份實施例中,依據本發明之EMP可以如同減少 程式規劃錯誤造成不要結果並確定具有曝露錯誤的程式之 受控下結束的方式’在硬體提供執行時間檢查。以此方式 ’較佳的除錯檢測及驗證可以在碼釋放前,增加錯誤的檢 測與覆蓋。
一 EMP機制可以檢查一程式的想不到行爲。例如, 此等檢查可以包含檢查變數結束後,對未配置記憶體位置 及對未初始記憶體位置的存取。該等檢查並未限定於一特 定語言或副程式。另外,一 Ε Μ P機制可以藉由保護主資 料’來維持主建築塊,例如堆的完整性。 於此方式中,藉由提供微架構支持,記憶體保護可以 以對管線一般Β的處理機中之記憶體管線的關鍵路徑最小 衝擊的方式加以實施。因此,此保護的效能損耗係遠低於 軟體爲主之重寫檢測機制。 於此一方式中,可以改良軟體完整性。作爲一使用範 例,可以作動在資料堆及堆疊結構中之改良緩衝重寫檢測 。就資料堆來說,一堆管理器可以使用保護機制,以保護 每一配置緩衝器之方塊信頭》如果一緩衝溢位攻擊由一配 置方塊想要進行至下一方塊,則保護機制會將之檢測出並 防止不想要的修改。因此,可以防止緩衝器溢位及重寫攻 擊發生,而不是在發生後才檢測出該攻擊。 以編譯器支援,軟體漏洞可以使用依據本發明實施例 之記憶體保護加以減緩。例如,保護記錄的細顆粒本質可 以用以保護其他靜態結構,例如一虛擬函數表指標,被修 -19- ^42492 改爲執行路徑再指引攻擊的一部份。於部份實施例中,也 可以將一硬體單字(canary )放置在靜態配置之可能爲湓 位源的緩衝器旁。 另外’保護記錄可以被視爲除錯斷點之無限實施法。 不同於爲少數可用除錯暫存器的限制,軟體開發者可以具 有很多想要的同時除錯段點。因此,可以對整個位址空間 ’進行細顆粒斷點檢測。因此,此檢測提供一硬體方法, 以解決某些軟體完整性問題。即,於應用程式中之未想到 行爲的檢測可以經由斷點覆蓋完成,因而,完成了 一新的 程式規劃方法。 現參考第6圖,顯示依據本發明實施例之系統方塊圖 。如第6圖所示,系統爲一多處理機系統,具有一點對點 匯流排架構,例如公用系統介面(C SI )系統,並包含一 第一處理機570及一經由點對點互連550之第二處理機 580。第一處理機5 70包含多數處理機核心5 74a及574b 、一記憶體控制器集線器(MCH ) 5 72及點對點(P-P ) 介面576及578。同樣地,第二處理機580包含相同元件 ,即處理機核心584a及584b、MCH582、及P-P介面586 及 5 88。 如第6圖所示,MCH5 72及5 82將處理機連接至個別 記憶體,即記億體532及記憶體534,其係爲本地附著至 個別處理機的主記億體的一部份。第一處理機570及第二 處理機580可以分別經由P-P介面552及554,連接至一 晶片組590。如第6圖所示,晶片組590包含P-P介面 -20- 1342492 5 9 4及5 9 8。再者,晶片組5 9 0包含一介面5 9 2 ’以將晶 片組590與一高效圖形引擎5 3 8 —起連接。於一實施例中 ,一先進圖形埠(AGP )匯流排5 3 9可以用以將圖形引擎 5 3 8連接至晶片組5 90。AGP匯流排5 3 9可以符合由美國 加州聖塔卡拉之Intel公司於1998年五月5日公佈之加速 圖形埠介面規格2 · 0版。或者,一點對點互連5 3 9可以連 接這些元件。
隨後,晶片組5 90可以經由一介面5 96連接至一第一 匯流排5 1 6。於一實施例中,第一匯流排5 1 6可以爲1 9 9 5 年六月之PCI區域匯流排規格,生產版2. 1所定義之週邊 元件互連(PCI)匯流排,或定義爲PCI Express匯流排 之匯流排或另一第三代I/O互連匯流排,但本案範圍並不 限於此。 如於第6圖所示,各種輸入/輸出(I/O)裝置514可 以伴隨一匯流排橋5 1 8連接至第一匯流排5 1 6,匯流排橋 5 1 8將第一匯流排5 1 6連接至第二匯流排5 2 0。於一實施 例中,第二匯流排5 20可以爲低腳數(LPC )匯流排。各 種裝置可以連接至第二匯流排5 2 0,包含例如鍵盤/滑鼠 522、通訊裝置526及一資料儲存單元52 8,在一實施例 中’其可以包含碼530。再者,一音訊1/0524可以連接 至第二匯流排5 2 0。當然’於其他實施例中,系統可以被 以不同方式實施,例如一單處理機系統等等。再者,雖然 顯示第6圖特定實施法,但本發明之範圍並不限於此, EMP可以實施在不同架構中》 -21 - 1342492
實施例可以被實施例在一電腦程式中,電腦程式可以 被儲存在一儲存媒體中,具有指令,以規劃一電腦系統, 以執行實施例。儲存媒體可以包含但並不限定於:任何類 型之碟片,包含軟碟、光碟、光碟唯讀記憶體(CD-ROM )、可寫光碟(CD-RW )及磁光碟;半導體裝置,例如唯 讀記憶體(ROM )、隨機存取記憶體(RAM ),例如動態 及靜態RAM、可抹除可程式唯讀記憶體(EPROM )、電 氣可抹除可程式唯讀記憶體(EEPROM )、快閃記憶體、 磁或光卡;或任何適用以儲存電子指令的媒體。其他實施 例也可以被實施爲可爲一可程式控制裝置所執行之軟體模 組。 雖然本發明已經針對有限量之實施例加以說明,但熟 習於本技藝者可以了解各種由本案導出之修改與變化。隨 附之申請專利範圍係想要涵蓋這些修改與變化,因爲這些 仍在本發明之精神與範圍內。
【圖式簡單說明】 第1圖爲依據本發明實施例之檢查記憶體存取之方法 的流程圖; 第2圖爲可以依據本發明實施例使用之緩衝器的方塊 圖, 第3圖爲依據本發明實施例之各種管線結構方塊圖: 第4圖爲依據本發明實施例之方法流程圖; 第5圖爲依據本發明另一實施例之方法流程圖;及 -22- 1342492 第6圖爲依據本發明實施例之系統的方塊圖。 【主要元件符號說明】 1 〇 :資料存取要求
2 0 :頁轉譯機制 25 :邏輯運算子 30 : EMP轉譯機制 40 : EMP檢查 4 5 :信號線 5 0 :實體記憶體 60 :資料頁 6 5 :資料 70 : EMP 頁 7 5 : Ε Μ P記錄 1 〇 5 :信頭
1 1 〇 :信頭 1 1 5 :方塊 1 2 0 :信頭 125 :方塊 200 :處理機 2 1 0 :保護快取 220 :資料轉譯旁看緩衝器 23 0 :保護轉譯旁看緩衝器 240 :保護失誤處理器 -23- 1342492 2 5 2 :第一分頁結構 25 4 :第二分頁結構 25 6 :第三分頁結構 2 70 :實體記憶體 2 7 5 : Ε Μ P 記錄 28 0 :線 514:輸入/輸出裝置 5 1 6 :第一匯流排 5 1 8 ·匯流排橋 520 :第二匯流排 522 :鍵盤/滑鼠
524 :音訊 I/O 526 :通訊裝置 528 :資料儲存單元 5 3 0 :碼 5 3 2 :記億體 5 3 4 :記億體 5 3 8 :高效圖形引擎 53 9 :先進圖形埠匯流排 570 :第一·處理機 572 :記億體控制集線器 574a,b :多處理機核心 576 :點對點介面 578 :點對點介面 1342492 • 5 8 0 :第二處理機 5 8 2 :記憶體控制集線器 5 84a,b :多處理機集線器 5 8 6 :點對點介面 5 8 8 :點對點介面 5 9 0 :晶片組 592 :介面 _ 5 94 :點對點介面 596 :介面 5 9 8 :點對點介面

Claims (1)

1342492 /。4 /月7日修正本 附件:第〇99114963號申請專利範圍修正本 民國100年1月^曰修正 七、申請專利範圍: 1·一種提供擴充記億體保護的方法,包含: 將一保護記錄的保護指示符相關於一記億體位置,該 保護記錄係不能經由一虛擬位址空間存取; 根據該保護指不符的狀態,防止對該記憶體位置的存 取; 轉譯該記憶體位置之虛擬位址成爲用於該記憶體位置 的一第一實體位址,以及成爲用於該保護記錄的一第二實 體位址;及 將該第一實體位址與該第二實體位址組合,以決定該 記億體位置的保護狀態。 2 .如申請專利範圍第1項所述之方法,更包含將該保 護記錄儲存在與該記憶體位置分開的一第二記憶體位置。 3 ·如申請專利範圍第1項所述之方法,更包含如果防 止存取,則發出一記憶體存取違規信號。 4 .如申請專利範圍第1項所述之方法,更包含配置該 保護記錄給一虛擬位址頁。 5 ·如申請專利範圍第1項所述之方法,更包含儲存該 保護記錄的備份於一第一緩衝器中。 6 .如申請專利範圍第5項所述之方法,更包含決定對 應於該保護記錄的一位址之轉譯是否出現在一第二緩衝器 1342492
中。 7.如申請專利範圍第1項所述之方法,更包含對應於 一緩衝器信頭設定一保護指示符。 8 .如申請專利範圍第7項所述之方法,更包含使用該 保護記錄防止一緩衝器溢位攻擊。 -2-
TW099114963A 2005-03-31 2006-03-30 Method of providing extended memory protection TWI342492B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/095,719 US7673345B2 (en) 2005-03-31 2005-03-31 Providing extended memory protection

Publications (2)

Publication Number Publication Date
TW201042455A TW201042455A (en) 2010-12-01
TWI342492B true TWI342492B (en) 2011-05-21

Family

ID=37072190

Family Applications (2)

Application Number Title Priority Date Filing Date
TW095111281A TWI352289B (en) 2005-03-31 2006-03-30 Apparatus of providing extended memory protection
TW099114963A TWI342492B (en) 2005-03-31 2006-03-30 Method of providing extended memory protection

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW095111281A TWI352289B (en) 2005-03-31 2006-03-30 Apparatus of providing extended memory protection

Country Status (4)

Country Link
US (2) US7673345B2 (zh)
CN (2) CN1877547B (zh)
DE (1) DE102006015106B4 (zh)
TW (2) TWI352289B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323533B2 (en) 2011-12-29 2016-04-26 Intel Corporation Supervisor mode execution protection

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631249B2 (en) * 2005-10-14 2009-12-08 Microsoft Corporation Dynamically determining a buffer-stack overrun
US8019854B2 (en) * 2005-11-25 2011-09-13 Samsung Electronics Co., Ltd. System and method of providing information on computer memory use
US20070234330A1 (en) * 2006-03-01 2007-10-04 Microsoft Corporation Prevention of executable code modification
US7958320B2 (en) * 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
US8136091B2 (en) * 2007-01-31 2012-03-13 Microsoft Corporation Architectural support for software-based protection
US8645704B2 (en) * 2007-05-07 2014-02-04 Intel Corporation Protecting caller function from undesired access by callee function
US8261065B2 (en) * 2007-05-07 2012-09-04 Intel Corporation Protecting caller function from undesired access by callee function
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8006055B2 (en) * 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
US7831640B2 (en) * 2008-04-15 2010-11-09 Microsoft Corporation Using an overflow list to process mark overflow
US7860906B2 (en) 2008-05-28 2010-12-28 Microsoft Corporation Overflow per segment
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
WO2011026092A1 (en) * 2009-08-31 2011-03-03 Telcordia Technologies, Inc. System and method for detecting and evicting malicious vehicles in a vehicle communications network
US10348753B2 (en) * 2009-08-31 2019-07-09 Vencore Labs, Inc. Detecting and evicting malicious vehicles in a vehicle communications network
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
WO2011156021A2 (en) * 2010-03-01 2011-12-15 The Trustees Of Columbia University In The City Of New York Systems and methods for detecting design-level attacks against a digital circuit
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8789042B2 (en) * 2010-09-27 2014-07-22 Mips Technologies, Inc. Microprocessor system for virtual machine execution
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US8990546B2 (en) 2011-10-31 2015-03-24 Freescale Semiconductor, Inc. Data processing system with safe call and return
US20150143071A1 (en) * 2011-12-30 2015-05-21 Ravi L. Sahita Memory event notification
US10037212B2 (en) 2012-04-20 2018-07-31 Nxp Usa, Inc. Information processing device and method for protecting data in a call stack
GB2513727B (en) 2012-06-27 2015-06-24 Nordic Semiconductor Asa Memory protection
CN103632088A (zh) * 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US9495305B1 (en) 2012-11-02 2016-11-15 David Fuchs Detecting pointer errors for memory protection
US9183161B2 (en) * 2012-12-28 2015-11-10 Intel Corporation Apparatus and method for page walk extension for enhanced security checks
US9858207B2 (en) 2013-02-06 2018-01-02 International Business Machines Corporation Page level key-based memory protection
EP2962240B1 (en) * 2013-02-28 2017-12-27 Intel Corporation Performing security operations using binary translation
DE112013006686T5 (de) * 2013-03-06 2015-11-05 Mitsubishi Electric Corp. Programmierbare Steuerung, programmierbares Steuersystem und Verfahren zum Erzeugen einer Ausführungsfehlerinformation
US20140283060A1 (en) * 2013-03-15 2014-09-18 Oracle International Corporation Mitigating vulnerabilities associated with return-oriented programming
US10061940B2 (en) 2013-07-09 2018-08-28 Andes Technology Corporation Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
JP6273733B2 (ja) * 2013-09-20 2018-02-07 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US20150113240A1 (en) * 2013-10-17 2015-04-23 International Business Machines Corporation Restricting access to sensitive data in system memory dumps
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US20160179520A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for variably expanding between mask and vector registers
CN106155577B (zh) * 2015-04-23 2019-03-26 华为技术有限公司 扩展内存的访问方法、设备以及***
US9823938B2 (en) 2015-06-18 2017-11-21 Intel Corporation Providing deterministic, reproducible, and random sampling in a processor
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
US10296464B2 (en) 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for dynamic profiling in a processor
US10304155B2 (en) * 2017-02-24 2019-05-28 Advanced Micro Devices, Inc. Delta color compression application to video
US10565354B2 (en) * 2017-04-07 2020-02-18 Intel Corporation Apparatus and method for protecting content in virtualized and graphics environments
US10613864B2 (en) * 2018-03-16 2020-04-07 Texas Instruments Incorporated Processor with hardware supported memory buffer overflow detection
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction
WO2019196721A1 (en) * 2018-04-11 2019-10-17 Beijing Didi Infinity Technology And Development Co., Ltd. Methods and apparatuses for processing data requests and data protection
US10809924B2 (en) * 2018-04-12 2020-10-20 Webroot Inc. Executable memory protection
US10983923B2 (en) * 2018-10-29 2021-04-20 Sternum Ltd. Dynamic memory protection
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US10824560B2 (en) * 2019-02-18 2020-11-03 Nxp B.V. Using a memory safety violation indicator to detect accesses to an out-of-bounds or unallocated memory area
GB2591490B (en) * 2020-01-30 2022-03-02 Advanced Risc Mach Ltd An apparatus and method for controlling access to a set of memory mapped control registers
CN112000609B (zh) * 2020-07-03 2024-01-16 上海美仁半导体有限公司 芯片以及具有该芯片的家用电器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US44292A (en) * 1864-09-20 Improvement in riding-stirrups
US138263A (en) * 1873-04-29 Improvement in wagon-axle lubricators
US20010011318A1 (en) * 1997-02-27 2001-08-02 Vishram P. Dalvi Status indicators for flash memory
DE19828056A1 (de) 1998-06-24 1999-12-30 Bosch Gmbh Robert Speicherüberwachungssystem
US6795905B1 (en) * 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US8051301B2 (en) 2001-11-13 2011-11-01 Advanced Micro Devices, Inc. Memory management system and method providing linear address based memory access security
JP2003233534A (ja) 2002-02-07 2003-08-22 Hitachi Ltd メモリシステム
CA2425006C (en) * 2002-04-17 2012-06-05 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP4302641B2 (ja) 2002-11-18 2009-07-29 エイアールエム リミテッド デバイスによるメモリへのアクセスの制御
RU2005115088A (ru) 2002-11-18 2006-01-20 Арм Лимитед (Gb) Управление доступом устройства к памяти
CN1447244A (zh) * 2003-04-03 2003-10-08 杭州中天微***有限公司 一种设计在cpu里的侦测缓冲区溢出的方法
US20050044292A1 (en) 2003-08-19 2005-02-24 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US20050138263A1 (en) 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323533B2 (en) 2011-12-29 2016-04-26 Intel Corporation Supervisor mode execution protection
TWI608353B (zh) * 2011-12-29 2017-12-11 英特爾股份有限公司 用於監督者模式執行保護之方法及系統、和處理器

Also Published As

Publication number Publication date
TW200708952A (en) 2007-03-01
US20060225135A1 (en) 2006-10-05
DE102006015106B4 (de) 2011-04-07
TWI352289B (en) 2011-11-11
TW201042455A (en) 2010-12-01
CN1877547A (zh) 2006-12-13
CN1877547B (zh) 2011-05-11
US7673345B2 (en) 2010-03-02
DE102006015106A1 (de) 2006-11-09
CN102129410B (zh) 2013-04-03
US8028341B2 (en) 2011-09-27
CN102129410A (zh) 2011-07-20
US20100050266A1 (en) 2010-02-25

Similar Documents

Publication Publication Date Title
TWI342492B (en) Method of providing extended memory protection
US7543131B2 (en) Controlling an I/O MMU
US7516247B2 (en) Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US7793067B2 (en) Translation data prefetch in an IOMMU
KR101572409B1 (ko) 비교 및 대체 dat 테이블 엔트리
US7480784B2 (en) Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
TWI808869B (zh) 硬體處理器及處理器
JP2005158040A (ja) 変換索引バッファのレイジー・フラッシング
KR20120096031A (ko) 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치
US20110154111A1 (en) Memory Based Hardware Breakpoints
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
JP2021512400A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP7269942B2 (ja) 複数ガード・タグ設定命令
JP2021512405A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP2021515308A (ja) デバイスをデバッグするときにメタデータにアクセスするための装置及び方法
JP7369701B2 (ja) 処理回路上で実行されるべきプログラムをデバッグするときにメタデータにアクセスする方法
CN101256480A (zh) 一种能够标记存储器中某些位置的处理器
WO2023175289A1 (en) Read-as-x property for page of memory address space
TW202340955A (zh) 使用能力約束記憶體存取之技術

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees