TW200809573A - Prevention of executable code modification - Google Patents

Prevention of executable code modification Download PDF

Info

Publication number
TW200809573A
TW200809573A TW096106790A TW96106790A TW200809573A TW 200809573 A TW200809573 A TW 200809573A TW 096106790 A TW096106790 A TW 096106790A TW 96106790 A TW96106790 A TW 96106790A TW 200809573 A TW200809573 A TW 200809573A
Authority
TW
Taiwan
Prior art keywords
executable
page
executable code
code
computer
Prior art date
Application number
TW096106790A
Other languages
English (en)
Inventor
Scott A Field
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of TW200809573A publication Critical patent/TW200809573A/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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Description

200809573 九、發明說明: 【發明所屬之技術領域】 發明係相關於一種預防可執行碼修改之方法和系 統。 【先前技術】 5曰’惡意的軟體程式碼(亦即惡意軟體malware)藉由 取知 cpu控制以及然後執行惡意的cpu指令(碼)造成對計 算系統的損害。現今解決惡意程式的方法並不是非常有 r 種解決病毋·的常見方法為使用以簽名為基礎的病毒 偵測工具。很不幸地,此方法將不會偵測到具有相同攻搫 I4生之下一種變形。因為這些病毒散佈如此快速,偵測病毒 的反制方法在終止病毒的許多類型上並不有效。因此,當 新的且更侵入性的程式碼越來越流行時,預防惡意程式石馬 的執行成為了越來越重要的問題。 同時,目前的作業系統允許無權限使用者程式碼自由 分配或修改可執行頁面。因此,如果攻擊者有能力滲透一 現存的程式(例如透過緩衝區溢流(buffer overflow)或其它 程式設計的錯誤,他們可自由修改記憶體中被滲透程式, 或從碟片或其它的媒體執行新的CPU指令。 因此,需要一種解決先前技術之缺點的系統和處理程 序。 【發明内容】 本發明内容係用以簡介本發明之特定觀念,其將於下 文之實施方式中進一步地說明。本發明說明並非意在辨識
200809573 所申請專利範圍的關鍵特徵或基礎特徵 該申請專利範圍標的範圍的輔助。 由於以上所指出的先前技術的缺點 可執行碼修改以及預防未授權碼载入之 例中’一種用於預防可執行碼修改的方 载入至§己憶體的一函式限制在一電腦的 權限圈(privileged ring)内。該方法也可 碼的頁面層級(page-level)的保護。當一 頁面被分配時或當一可執行頁面的屬性 叫一權限檢查。例如,在允許可執行頁 行頁面的屬性改變之前,該權限檢查決 派給Ο S的權限圈的權限。此外,或者 的方式,在它被载入至記憶體之前或之 碼的完整性。 可替代地,採用一種用於預防資料 (相反於只針對可執行碼),包括將載入 的一功能限制於一電腦作業系統的一權 本發明其它的優點和特徵將在以下 【實施方式】 以下說明和圖式例示一些特定的細 各種實施例徹底的暸解。一些計算和軟 細節將不贅述以避免不必要地混淆本發 那些熟知該項技藝者將會理解到他們可 之一或更多細節即能實作本發明其它實 ’也無意用作決定 ’本發明提供預防 方式。在數個實施 法'包括將可執行碼 作業系統(OS)的一 更包括執行可執行 可執行碼的可執行 被改變時,也可呼 面的分配或該可執 定是否出現一僅指 以上的另一可替代 後執行檢查可執行 頁面的修改的方法 資料頁面至記憶體 限圈。 說明。 節以提供對本發明 體技術有關的習知 明實施例。甚者, 以不需要以下所述 施例。最後,當以
200809573 下文所揭步驟和順序說明各種方法時,這樣的敘述係 提供本發明實施例的清楚的實施方式,該些步驟和步 順序不應該被視為實現本發明所必須的。 範例計算環境 請參見第1圖,所示為一方塊圖,其代表一作為 之計算裝置,其適合關於實現以上所述的步驟之用。你 電腦可執行的指令(其完成用於預防可執行碼的修改 驟和方法)可存在於和/或被執行於第1圖所示之計算 中。該計算系統環境220僅為適合的計算環境的一範 已,並無意建議任何與本發明的使用或功能的有關 制。該計算環境220也不應該解釋為需要或相關於作 例的作業環境220所述元件的任一或組合。例如一電 戲主機也可包括那些項目,例如,以下所述用於結合 以上所述步驟者。 可依據多個其它一般或特別目的之計算系統環境 態操作本發明之態樣。可適用本發明之已知計算系統 境、和/或設定的範例包括但不限制於:個人電腦、伺 腦、手持電腦或膝上裝置、多處理系統、微處理器為 的系統、機上盒、可程式化的消費性電子、網路PC、 電腦、大型主機電腦、分散式計算環境(包括以上系統 置等等)。 本發明的態樣可用一般的電腦可執行的指令(例 式模組,其透過電腦所執行)來實現。一般來說,程式 包括常式(routine)、程式、物件、元件、編譯碼、資 想要 驟的 範例 丨如, 的步 環境 例而 的限 為範 腦遊 實行 或組 、環 服電 基礎 迷你 、裝 如程 模組 料結 200809573 構等等’他們執行特殊的工作或實現特別的抽象資料類 型。本發明的態樣也可在分散式計算環境中實施,其中藉 由通訊網路而連結起來的遠多處理裝置執行著工作任務。 在一分散計异環境下,程式模組可位於包括記憶體儲存| 置的區域和遠端電腦儲存媒體中。
一用於實現本發明態樣之一示例性系統包括一以電腦 241形式呈現的一般目的計算裝置。電腦241的元件可包 括但不限制於:一處理單元259 ; —系統記憶體222 ;和一 系統匯流排22 1,其將包括該系統記憶體之各種系統元件 耦接至該處理單元259。該系統匯流排22 1可為匯流排結 構的數個類型之任何一者,包括:一記憶體匯流排或記憶 體控制器、一周邊匯流排,和一使用種種匯流排架構之任 何一者的區域匯流排。僅為示例而非限制,這樣的架構包 括工業標準架構(Industry Standard Architecture,ISA)匯流 排、微頻道架構(Micro channel Architecture,MCA)匯流 排、增強ISA(EISA)匯流排、影像電子標準協會(Video Electronics Standards Association,VESA)區域匯流排,以 及周邊元件互聯(Peripheral Component Interconnect,PCI) 匯流排(也稱為小肯板匯流排(Mezzanine bus))。 電腦241通常包括種種的電腦可讀取媒體。電腦可讀 取媒體可為任何可被電腦2 4 1所存取的可獲取的媒體,且 其包括了揮發或不揮發媒體以及可移除的和不可移除的媒 體兩種。僅為示例而非限制,可移除的媒體可包括電腦健 存媒體和通訊媒體。電腦儲存媒體包括揮發和非揮發、可 200809573 移除和不可移除的媒體兩種,其以用於儲存資 讀取的指令、資料結構、程式 一 、B “細可 —、壮如 次其貪料)的任何方法 或技街所實現。電腦健存媒體包括但不限制於: ram、 讓、EEPROM、快閃記憶體、或其它記憶體 cm'DVD或其以碟儲存 '磁卡、磁帶、磁碑儲存 或其它磁性儲存裝Ϊ ’或任何其它可用於儲存所想要的資 訊和可由電腦241存取的媒體。通訊媒體通常體現電腦可
讀取的指令、資料結構、程式模組或經調變的資料訊號(如 載波或其它傳送機制)的其它資料,且包括任何的資訊傳遞 媒體。「Μ㈣的資料訊號」意指—種以這㈣方法使它的 一或更多特徵被設定或被改變以在該訊號中將該資訊編 碼。僅為示例而非限制,通訊媒體包括有線的媒體(如有線 網路或直接接線連接(direct_wired connection)),以及無線 媒體(如聲頻、RF、紅外線或其它的無線媒體)❶以上之組 合也將落入電腦可讀取媒體之範亂裡面。 該系統記憶體222包括以揮發記憶體和/或非揮發記 憶體(如唯讀記憶體(read only memory,R〇m)223或隨機存 取記憶體(random access memory,RAM)26〇)形式存在的電 腦儲存媒體。一包含幫忙將資訊在電腦241中的元件間傳 送的基本程序(如在起動斯間)的基本輸入/輸出系統 224(basic input/output SyStem,BI0S)通常是儲存在尺〇1^ 223中。RAM 260通常包含可馬上存取和/或目前正由處理 單元25 9操作的資料和/或程式模組。為了舉例(但不是要 作為限制),第1爵說明作業系統225、應用程式226、其 9 200809573 它程式模組227,及程式資料228。 、‘』務除的雷腦練 存媒體。僅為示例而非限制,第】同>、Q M ^ 昂1圖祝明一硬碟238,复 讀取或寫入-不可移除的、非揮發性磁性媒體:機 239,其讀取或寫人可移除的、非揮發性_磁碟254和: 光碟機240,其讀取或寫入_可 Τ移除的、非揮發性的光碟 機253(如CD-ROM或其它光學媼 ’、 予媒體)。其它能用於該作為 範例的作業環境之可移除/不可銘昤、播恭从>
1』移除、撢發性/非揮發性電 腦健存媒體包括但不限制於:磁性卡、 數位卡帶、數位影像影帶、固態狀態讀、固態狀=m, 以及此相同者。該硬碟機238通常透過一不可移除的記憶 體介面(介面234)連接於系統匯流排22卜且磁碟機239與 光碟機240通常透過一可移除的記憶體介面(如介面235) 連接於系統匯流排221 〇 以上所討論和在第1圖中所說明的磁碟機和與他們相 關的電腦儲存媒體提供電腦可讀取指令、資料結構、程式 模組、和用於電腦241的其它資料。例如,在第1圖中, 以儲存作業系統258、應用程式257、其它程式模組256, 和程式資料2 5 5等功能性來說明硬碟機23 8 ^注意這些元 件可與作業系統225、應用程式226、其它程式模組227, 和程式資料228相同或是不同。給予作業系統258、應用 程式257、其它程式模組256以及程式資料255不同的數 子以至少說明他們是不同的拷貝。使用者可透過輸入裝置 (如鍵盤2 5 1、點取裝置2 5 2 (通常指滑鼠、執跡球或觸碰塾) 10 200809573 將命令和資訊輸入至電腦241中。其它裝置(示見於圖式) 可包括麥克風、搖桿、遊戲盤(game pad)、小耳朵(sateuite dish)、掃描器、或此等。這些裝置以及其它輪入裝置通常 透過一連接至系統匯流排的使用者輸入介面236連接至處 理單元2 5 9,但也可被其它的介面和匯流排結構(如平行 埠、遊戲埠或萬用序列匯流排(USB))所耦接。螢幕242或 其它類型的顯示裝置也透過一介面(如影像介面232)輕接 至該系統匯流排221。除了該螢幕以外,電腦也可包括其 它的周邊輸出裝置,例如喇叭244和印表機243,他們可 以藉由輪出周邊裝置介面233被耦接。 電腦241藉由連接至一或更多的遠端電腦(如遠端電 私246)的邏輯連線在一網路環境中運作。遠端電腦246可 為個人電腦、伺服器、路由器、網路PC、同儕裝置、或其 匕相同的網路節點,且其通常包括以上所述與電腦24 1有 關的許多或全部元件,雖然第1圖僅只有說明記憶體儲存 裝置247。第1圖所描述的邏輯連線包括區域網路(lan) 245以及廣域網路(WAN) 249,但許多連線也包括其它的網 路。這樣的網路環境在辦公室、企業規模的電腦網路、内 部網路(intiranet)和網際網路是常見到的事。 當用於LAN網路環境時,電腦241透過網路介面或轉 接器(adapter)耦接於[AN 245。當用於Wan網路環境時, 電腦241通常包括數據機25〇或其它用於建立WAN(如網 際網路)上的通訊的工具。該數據機25〇(其可為内建或外 接)’可經過使用者輸入介面2 3 6或其它適合的耦接至系統 11 200809573 匯流排221。在網路環境中,所描述之與電腦241或其部 分有關程式模組可儲存於遠端記憶體儲存裝置中。僅為示 例而非限制,第1圖說明如同停駐在記憶體裝置247上的 遠端應用程式248。將可明白,所示的網路連線是作為範 例之用’且尚可以使用用以建立電腦間的通訊的其它工具。 應可明白,這裡所說明的各種技術可以以硬體或軟體 (或在適當的時候以二者)有關的方式來實現。因此本發明 的方法或裝備’或者該些方法或裝備的態樣或部分可採用 在實體媒體(如磁碟片、CR-ROM、硬碟或任何其它機器上 的機器可讀的儲存媒體,其中當程式碼由機器载入或執行 時,該機器變成用以實踐該發明的裝備)上所具體化的程式 碼(亦即/旨令)的形式。當在可程式電腦上執行程式碼的情 ’兄计异裝置通常包括一處理器、一處理器(包含揮發性和 非揮發性記憶體和/或儲存元件)可讀取的儲存媒體、至少 一輸入裝置、且至少一駐 ^ 乂輸出裝置。一或更多程式,例如可
透過使用API、番> ,士 m U . ^ 筏使用的控制、或此等,實行或利用所 述與本發明有關# $ 。這樣的程式通常喜歡用高層級的 程序或物件導向的 梦而、的备式語言來實現,以與一電腦系統溝 通。然而,如要; 捃#程式。才〜的話,也可以組合語言或機器語言實 ^ , 所有的情況中,該語言得為編1 π > 且與硬體的實現結合在一起 為澤或翻澤^ 雖然在作為# /、 卞马靶例用的實施例中,發明 或更多獨立電腦率结^ 月的利用癌樣疋- 而可以與任何計算产供士 枣知月戚不是限於此,反 衣兄有關的方式(如網路、分散式計算環 12 200809573 境)來實行。甚者,本發明的態樣可以用複數個處理羞
裝置來實行或是跨越複數個處理晶片或裝置來實行曰E 越複數個裝置下儲存相同地也會被影響。這樣的夢置 能包括個人電腦、網路伺服器、手持裝置、超級:置 合於其它系統(如汽車和飛機)的電腦。 "" 依照可根據第1圖所提供的一般架接 兄,不可將在此所提供的系統和方法限縮解釋 計算架構。相反的,本發明不應該被限定於任何= 例,而應該要根據后附申請專利範圍來解釋它的膚 圍。 n ^ _接下來請參閱第2圖,說明-作為範例之用的網 算衣兄其中可實行許多電腦北的處理以執行上述 法。例如’因為第2圖的網路上各種客戶端使用和/或 v可執仃碼的修改,平行計算可為這樣網路環境的 份。▲知該項技藝者可瞭解到在分散式計算環境中, 可連接任何電腦或其它客戶端或飼服裝置。關於此, 、有任何數里的處理、記憶體或儲存單元的電腦系統 八有任何數里的同時發生的應用程式和處理的電 境被視為適合倍爾Μ Λ ισ便用所提供的系統和方法。 次分散式計算藉由在計算裝置和系統間的交換提供 貝源和服務的分享。這些資源和服務包括資訊交換、 案的决取健存和磁碟儲存。分散式計算利用了網路的 性的優點,# 4 b ^ 許客戶端使用他們共同的權力以使整個 得利。關於α 此種種的裝置具有關於此處所説明的處 片或 且跨 可可 或整 算環 定的 實施 和範 路計 的方 實行 一部 網路 任何 或或 腦環 電腦 對檔 連結 企業 理的 13 200809573 應用程式、物件、資源。. 第2圖提供一作為範例之用的網路或分散式計算環境 的概圖。該環境包括計算裝置271、272、276和277,以 及物件273、274和275,與資料庫278。各實體271、272、 273、 274、2 75、276、2 77和2 78可包括或利用程式、方 法、資料儲存、可程式邏輯等等。該些實體271、272、273、 274、 275、276、277和2 78可跨越相同或不同裝置(如PD A、 聲音/影像裝置、mp3播放器、個人電腦等等)的各部分。 該些實體 271 、 272 、 273 、 274 、 275 、 276 、 277 和 278 可 經由通訊網路270與另外的實體27 1、272、273、274、275、 276、277和278溝通。關於此,任何實體可能要負責資料 庫2 7 8或其它儲存元件的維護與更新j 此網路270本身可能包括其它提供服務給第2圖的系 統的计鼻實體’且本身可能代表多個互相連結的網路。根 據本發明的一態樣,各實體271、272、273、274、275、 2 76和278可包括離散功能性的程式模組,其可能利用Αρι 或其它的物件、軟體、韌體和/或硬體,以請求一或更多的 其它實體 271 、 272 、 273 、 274 、 275 、 276 、 277 和 278 的 服務。 亦可明白,物件(如元件275)可以在另一計算裝置276 上主控(host)。因此,雖然所描述的實體環境可顯示已連 結的裝置,如電腦,這樣的說明僅只作為範例之用,可以 其他實體環境替代地描述或說明,該實體環境包括各種數 位裝置(如PDA、電視〜町^播放器等等卜軟體物件乂如介 14 200809573 面、COM物件與此類)。 有很多種支援分散 (configurations).例如 “、%件和網路組^ 網路廣泛地分散網路將計算系連=線:系统、區: 路連接至網際網路(其為廣泛地二來' 前,〜 架構,以及融入許多 开統提供〜其虚 了夕不同的網路)。 基竭 不論是否連接至網際網 可 的基礎架構, 被使用。 ㈣統和*法^ 一網路基礎架構 產生、揭路拓撲(如客戶 對點,或混合架構)的主機。「 麵/伺服,點 各戶端」係使用其胼π 的另一類別或群組的服務的某一斤不相關 算時,「客戶端」為請求由另一程 興。於計 不^所^供的服務的— (亦即大致上來說是一組指令& 理 ^ 7次任務)。客戶端處理不 知道關於其它程式或服務本身的任何工作細節即可利用戶要 請求的服務。在一客戶端/服務架構,尤其是在—網路系= 中,客戶端通常是存取由另一電腦(如一伺服器)所提供的 分享網路資源的電腦。在第2圖的範例中,任何實體271、 272、273、274、275、276、277和278根據情況可被視為 客戶端或是伺服器,或二者。 雖然不是必須的,但一飼服器通常為_遠端或區域網 路(如網際網路)上可存取的一遠端網路系統。客戶端處理 可在一第一電腦系統上進展,而伺服處理可在一第二電腦 系統中進展,其透過通訊媒體與另一系統溝通,因此提供 分散的功能且允許多個客戶端利用伺服器的資訊收集能 15 200809573 力。可在多個計算裝置或物件上分散任何軟體物件。 客戶端和伺服器利用協定層所提供的功能彼此溝通。 例如’超文書傳輸協定(HyperText Transfer pr〇t〇e〇1,Ηττρ) 是與全球資訊網(W〇rld Wide Web , Www)或稱作網頁(Web) 起使用的一很平g的協定。通常,電腦網路位址(如網際 網路協定(IP)位址或其它的參考(如全球資源定位器 aJniVersal Resource Locator,URL))可以用以辨識伺服或 客戶端電腦給彼此。網路位址可被稱為一 URL位址。可在 通訊媒體提供通訊,例如客戶端和伺服器彼此經由TCp/Ip 連接耦接在一起以有更高能力的通訊。 基於根據第2圖所提供的一般性架構而建立多樣化計 算環境,以及可能在計算時在網路環境(如第2圖的網路環 境)發生的進一步多樣化,此處所提供的系統和方法在任何 方面均不能被限縮解釋於一特殊計算架構。相反地,本發 明不應該限定於任何的單一實施例,應該根據所附的申請 專利範圍的廣度和範圍來解釋。 毯體和作業系統對於可執行碼修改的預防 請參閱第3圖,其圖示使用權限檢查預防可執行碼修 改的處理。當作業系統(〇3)記憶體檢查者分派或改變可執 行記憶體頁面的屬性時,其已經增加支援以檢查當呼叫者 是否旱有權限。現代的X64以及AMD® CPU允許以硬體 為基礎的執行以及追蹤可執行頁面。例如,從Wind〇ws XP® Service Pack 2開始,Windows®的32位元版本利用 AMD®所定義的不執行頁面保護(Νχ)處理器特徵或由 16 200809573
Intel所定義的執行停用位元特徵。為了使用這些處理器特 徵,處理器必須以實體位址延伸(PAE)模式執行。Winhws XP®的64位元版本^…立元延伸以及的處理器上的存 取權利頁面表格項目(Ρ1ΓΕ)使用Νχ處理器特徵。 執行停用位元相容性是對32位元Intel⑧架構的增 強。一具有執行停用位元能力的處理器可以保護資料頁 面 乂防止被惡思的軟體用於執行碼。讓處理器以下列之 一的模式,提供頁面的保護: •承繼性保護模式(legacy pr〇tected m〇de),如果啟用 實體位址延伸(PAE)模式。 • IA-3 2e模式,當啟用Intel⑧延伸記憶體64技術(intei EM64T) /主愚,進入IA-32e模式前需要啟用pae。當執行停用 位元的能力並沒有制訂新的指令時,它要求作業系統以一 已啟用PAE的環境操作,並且為記憶體建立頁面粒度保護 政策。 軟體可使用在EAX暫存器中具有輸入數值8〇〇〇〇〇〇1H 的CPUID指令偵測執行停用位元能力的存在與否。藉由回 傳在暫存為、EDX中數值指示是否存在。如果EDX的位元 20經設定,該執行停用位元為可獲得的。如果cpuiD延 伸功能80000001H報導執行停用位元的能力為可獲得的, 且啟用PAE,軟體可以藉由將IA32_EFER MSR(位址 C00000 8 0H)中的NXE位元設定為卜啟用執行停用位元的 能力。如果CPUID延伸功能8〇〇〇〇〇〇1h所回傳的、Edx暫 17 200809573 存器的位元20或位元29為1,則IA32 — EFER為可獲得的。 當實體位址延伸被啟用時(於IA-32e模式或於承繼性 保護模式),藉由將IA32一EFER的位元11設定為1啟用執 行停用位元的能力。如果CPUID延伸功能8〇〇〇〇〇〇111回 報執行關閉位元的能力不可獲得,將保留IA32 —efer的位 元11。對IA32-EFER.NXE的寫入將產生一 #GP例外。微 軟視窗®記憶體管理者也追蹤已分配記憶體頁面上的頁面 屬性。
請再次參閱第3圖,如 或者它們的屬性改變3 0 5, 定315呼叫者是否具有正確 屬性變更。如果出現正確的 面的屬性的分配或改變。如 記憶體頁面的分配或改變1 在執行程式碼之前,所 碼。目樣碼被收集在一起, 要呼叫的程序和系統程式的 環境中,將所有的目標碼連 影像」’其係一包含所有程序 在碟片上。在執行時間,此 主記憶體中,然後被執行。 癌樣中,將把功能(例如载^ 至核心模式。 果可執行的記憶體頁面被分配 則將執行一權限檢查3 1 〇以決 的權限做記憶體頁面的分配或 權限,則OS允許該記憶體頁 果不是’則OS不允許325該 有的目標碼需要轉換為可執行 有關各程序如何參考其它它需 資訊將被加入。在許多的軟體 結在一起成為單一「可執行的 的較大機器語言片段並且儲存 一較大可執行的影像將載入至 在另一個預防可執行碣修改的 、可執行影像)從使用者模式移 接下來請參閱第4圖 所顯示·的是一方塊圖 說明一 18 200809573 作業系統的使甩者模式和核心模式的範例架構。例如,核 心模式405為微軟NT®核心執行的地方,就是在核心模式 4 0 5 ’元件能直接的存取執行包括記憶體、裝置和處理的電 腦資源的管理的硬體和服務。因此,每當在使用者模式4 1 0 中執行的程式想要執行1/〇、分配或解除分配虛擬記憶 體、起動一執行緒或是處理或與全球資源互動時,它必須 呼叫420 —或更多常駐在核心模式405的服務445。 直接呼叫原生的應用程式撰寫介面之KERNEL32 425 功能,其包括所有 1/〇(如 CreateFile()、ReadFile()、 WriteFile〇),同步(例如,WaitForSingleObj ect()、 SetEvent()),以及記憶體管理(例如,virtualAii〇c()、 VirtualProtect〇)等功能。事實上,KERNEL32 425 所輸出 的程序的大部分直接地使用原生API ◊第4圖顯示一控制 流程,其起自一正在執行 Win32呼叫(CreateFileO)的
Win32 應用程式 430,經過 KERNEL32 425、NTDLL 435, 最後進入核心模式4 0 5,此處是控制傳送至n T建立檔案 440系統服務的地方。, 接下來請參閱第5圖,其顯示一在核心模式執行時使 用女全檢查預防可執行碼修改的處理。當把程式(如载入可 執行影像)從使用者模式移動至核心模式時,如果令叫一载 入可執行碼影像5 05的功能,則切換至$丨〇核心模式4 〇 5, 使得可產生適當的安全檢查。否則應用程式的執行將繼續 停留在使用者模式410。普通的使用者模式不具有充分的 權限以分配可執行的程式碼頁面。多數的碼並不是自我修 19
200809573 改,所以在以微軟視窗®為基礎的系統上,此 地被執行。 接下來請參閱第6圖,其圖示第5圖中所 執行碼修改的處理中所使用的範例安全檢查。 式使得一可執行碼的影像505被載入,則OS 變5 10為核心模式405,使得可以產生適當的· 核心裡面的程式碼完整性、簽名檢查或其它安 查 605)。例如,程式碼完整性檢查可為採用 碼,其指派一數學的數值(稱為檢查碼)至一檔 以該檢查碼測試該檔案以驗證包含在該檔案的 經惡意地被改變。一加密的檢查碼係經由執行 數學運算(成為加密演算法)而建立,談運算將 料翻譯成一固定的數碼串,稱為一雜湊數值, 碼之用。因為不知道使用哪一種加密演算法 值,未經過授權的人將不能藉由蓄意改變對應 改變資料。加密檢查碼也,為訊息認證碼、完 值、修改偵測碼或訊息完整碼。 簽名是物件中資料的一編碼數學摘要。因 證期間物件中的資料與簽署時物件中的資料吻 名會被認為是吻合的且為有效的。一有效的簽 較當物件被簽署時所建立的編碼數學摘要與在 間完成的編碼數學摘要來決定。簽名驗證程序 要數值。如果它們的數值不相同,則物件的内 署後已經有改變,且該簽名被視為無效。請再 將相當廣泛 示的預防可 如果應用程 將該切換轉 茫全檢查(如 全性政策檢 加密的檢查 案,之後再 資料是否已 連串複雜的 檔案中的資 以作為檢查 建立雜湊數 的檢查碼來 整性檢查數 此,如果驗 合時,該簽 名係藉由比 簽名驗證時 比對此二摘 容從它被簽 次地參閱第 20 200809573 6圖,如果通過 式碼的完整性或是簽名檢查610目,丨 載入模組615。不BT ^ a .此虐所、 不允許 組620。應特別注意的 疋 s明的處理並不限定於可執行頁面,$可延伸 至,例如,唯螬次 ^ Ύ 額… 料頁面、和已載入的模組的其它態樣。 詖載入的槿Γ全政策檢查可能涉及限制模級的類型或正在 被载入的挺組的;^^ 例如 視齒糸統服務可以設定 ,、合微軟的可執行碼以原生格式載入。 戈二::?明的各種的系'统、方法技術可以硬體或軟體 5 H,述之組合來實現。因此,本發明的方法和裝 備’或該方法的—些態樣以及該裝備的—些部>,可採用 實體媒體(如軟碟片' CR_R0M、硬碟、或任何其它機器可 讀取的儲存媒體)中所具體化的程式碼(亦即指令)的形 式,其中,當程式碼由機器(如電腦)載人並且執行時,該 機器變成為-用以實踐該發明的裝備。在可程式電腦上執 行程式碼的情況時,電腦通常包括—處理器、—儲存媒體, 其由該處理器所讀取(包括揮發和非揮發記憶體和/或儲存 元件)、至少一輸入裝置’以及至少一輸出裝置。偏好地以 高階的程序或物件導向程式語言實現一或 夕 j 、 '又夕程式,以與 電腦系統溝通。然而’如果想要的話,切以組合語言或 是機器語言賁現該程式。不管什麼情況下,語言可為編譯 或翻譯語言,並與硬體結合。 本發明的方法或裝備也可以用在某些傳輸媒體(如在 電線或電麗上、通過光纖或經由任何其它的傳輸,其中, 當程式碼由機器(如EPROM、閉道陣列、可程式邏輯裝置 21
200809573 (PLD)、客戶端電腦(如以下圖示所示)、影像記錄 等)所接收和載入以及執行時,該機器變為一用 發明的裝備)上傳送的程式碼的形式具體化。當在 性處理器上被實行時,該程式碼與處理器結合, 特別的裝備,其可執行本發明互相索引功能。 當以關於各種圖示的較佳實施例的方式說 時,要暸解到的是:其它類似的實施例也可被使 對所說明的實施例做出修改與增加,以執行本發 功能且不會脫離本發明的範圍。甚者,應該要強 包括手持裝置作業系統和其它應用程式所適用的 /軟體介面系統的各種的電腦平台在此經過仔細均 其當無線網路裝置的數目持續擴增時。因此,本 該僅限定於任何的單一實施例,反而應該根據所 專利範圍的寬度與範圍作解釋。 最後,此處所說明之所揭露實施例可適合使 處理器架構、電腦為基礎的系統,或系統虛擬上 處所揭露者可以很明確地預料到這樣的實施例。 明不應該限制於此處所說明的特定的實施例,而 廣的解釋。 【圖式簡略說明】 請參考所附圖式,其進一步地說明預防可執 改,其中: 第1圖係一方塊圖,其圖示適合用於預防可 修改之一範例計算裝置。 器或此類 以實踐本 一般目的 以提供一 明本發明 用,也可 明1目同的 調的是: 特殊硬體 -Μ過,尤 發明不應 附的申請 用於其它 ,藉由此 因此本發 應該作更 行碼的修 執行碼的 22 200809573 第2圖說明一作為範例網路連結的計算環境,其中, 可實現許多電腦化的步驟以執行預防可執行碼的修改。 第3圖說明一使用權限檢查,以預防可執行碼的修改 的步驟。 第4圖係一方塊圖,其說明一作業系統的使用者模式 和核心模式特徵的一範例架構。。 第5圖說明一在核心模式執行中使用安全檢查預防 執行碼的修改的步驟。
第6圖說明第5圖所示預防可執行碼的修改的步驟中 所使用的範例安全檢查。 【主 要 元 件 符 號說明】 220 計 算 系 統 環境 23 2 影 像 介 面 221 系 統 匯 流 排 233 輸 出 周 邊 裝 置 介 面 222 系統 記 憶 體 234 不 可 移 除 非 揮 發 記 憶 223 唯 讀 記 憶 體 體 介 面 224 基 本 輸 入 /輸出系統 235 可 移 除 非 揮 發 記 憶 體 225 作 業 系 統 介 面 22 6 應 用 程 式 236 使 用 者 輸 入 介 面 227 其 它 程 式 模組 237 網 路 介 面 228 程 式 資 料 238 硬 碟 229 中 央 處 理 器 23 9 磁 碟 機 230 影 像 記 憶 體 240 光 碟 機 231 圖 形 介 面 241 電 腦 23 200809573
242 螢幕 258 243 印表機 271 244 272 245 區域網路 273 246 遠端電腦 274 247 記憶體儲存裝置 27 5 248 遠端應用程式 276 249 廣域網路 277 250 數據機 278 251 鍵盤 420 252 點取裝置 425 253 光碟機 430 254 磁碟 435 255 程式資料 44 0 256 257 其它程式模組 應用程式 445 作業系統 計算裝置 計算裝置 物件 物件 物件 計算裝置 計算裝置 資料庫 呼叫 KERNEL32 檔 應用程式 NTDLL 檔 NT建立檔案 服務
24

Claims (1)

  1. 200809573 十、申請專利範圍: 1 •一種用於預防可執行碼修改的方法,該方法包括: 將載入可執行碼至一記憶體的一功能限制在一電腦作 業系統(〇S)的一權限圈(privileged ring)。 2 ·如申請專利範圍第1項所述之方法,更包括執行該 可執行碼的頁面層級保護。
    3·如申請專利範圍第2項所述之方法,更包括當該可 執行碼的一可執行頁面被分配時或當該可執行頁面的屬性 改變時,呼叫一權限檢查。 4·如申請專利範圍第3項所述之方法,其中該權限檢 查決定:在允許該可執行頁面的分配或該可執行頁面的屬 性改變之前’是否出現一僅被分配至該作業系統的權限圈 的〆權限。 5 ·如申睛專利範圍第4項所述之方法,更包括在該可 執行碼被載入後,檢查該可執行碼的完整性。 6·如申請專利範圍第5項所述之方法,其中使用以硬 體為基礎的方式來執行該頁面層級保護,以及追蹤可執行 碼。 7· —種電腦可讀取媒體,其上具有用以執行如申請專 利範園第1項所述步驟的指令。 8. —種電腦可讀取媒體,其上具有用以執行如申請專 利範園第2項所述步驟的指令。 9· 一種電腦可讀取媒體,其上具有用以執行如申請專 25 200809573 利範圍第3項所述步驟的指令。 10. —種電腦可讀取媒體,其上具有用以執行如申請 專利範圍第4項所述步驟的指令。 11 · 一種電腦可讀取媒體,其上具有用以執行如申請 專利範圍第5項所述步驟的指令。 12· —種電腦可讀取媒體,其上具有用以執行如申請 專利範圍第6項所述步驟的指令。 1 3. —種用於預防可執行碼修改的系統,包括:
    多個限制元件,其將載入可執行碼至一記憶體的一功 能限制在一電腦作業系統(OS)的一權限圈(privileged ring) 〇 14. 如申請專利範圍第13項所述之系統,更包括:多 個執行元件,其執行該可執行磷的頁面層級保護。 15. 如申請專利範圍第14項所述之系統,更包括:多 個呼叫元件,其當該可執行碼的一可執行頁面被分配時或 當該可執行頁面的屬性改變時,呼叫一權限檢查。 1 6·如申請專利範圍第1 5項所述之系統,其中用以呼 叫該權限檢查之該多個呼叫元件決定:在允許該可執行頁 面的分配或該可執行頁面的羼性改變之前,是否出現一僅 被分配至該作業系統的權限圈的一權限。 17.如申請專利範圍第16項所述之系統,更包括:多 個檢查元件,其在該可執行碼被載入後,檢查該可執行碼 的完整性。 26
    200809573 18.如申請專利範圍第17項所述之系統,其中用 行頁面層級保護之該多個執行元件包含:使用以硬體 礎的方式來執行該頁面層級保護以及追蹤可執行碼之 元件。 19· 一種用於預防資料頁面修改的方法,包括: 將載入可執行碼至一記憶體的一功能限制在一電 業系統(OS)的一權限圈。 20. —種電腦可讀取媒體,其上具有用以執行如 專利範圍第19項所述步驟的指令。 以執 為基 多個 腦作 申請
    27
TW096106790A 2006-03-01 2007-02-27 Prevention of executable code modification TW200809573A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/365,364 US20070234330A1 (en) 2006-03-01 2006-03-01 Prevention of executable code modification

Publications (1)

Publication Number Publication Date
TW200809573A true TW200809573A (en) 2008-02-16

Family

ID=38475416

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096106790A TW200809573A (en) 2006-03-01 2007-02-27 Prevention of executable code modification

Country Status (7)

Country Link
US (1) US20070234330A1 (zh)
EP (1) EP1989627A4 (zh)
JP (1) JP4890569B2 (zh)
KR (1) KR20080103976A (zh)
CN (1) CN101395587B (zh)
TW (1) TW200809573A (zh)
WO (1) WO2007103192A2 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007149743A2 (en) 2006-06-19 2007-12-27 Liquid Computing Corporation Token based flow control for data communication
US8856938B2 (en) * 2008-07-30 2014-10-07 Oracle America, Inc. Unvalidated privilege cap
KR101895453B1 (ko) * 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
CN103268440B (zh) * 2013-05-17 2016-01-06 广东电网公司电力科学研究院 可信内核动态完整性度量方法
US20140366045A1 (en) * 2013-06-07 2014-12-11 Microsoft Corporation Dynamic management of composable api sets
CN104462956B (zh) * 2013-09-23 2017-07-25 安一恒通(北京)科技有限公司 一种获得操作系统控制权的方法和装置
WO2016122590A1 (en) * 2015-01-30 2016-08-04 Hewlett-Packard Development Company, L.P. Processor state determination
US10803165B2 (en) * 2015-06-27 2020-10-13 Mcafee, Llc Detection of shellcode
CN112100954A (zh) * 2020-08-31 2020-12-18 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916385A (en) * 1973-12-12 1975-10-28 Honeywell Inf Systems Ring checking hardware
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US5483649A (en) * 1994-07-01 1996-01-09 Ybm Technologies, Inc. Personal computer security system
US6775779B1 (en) * 1999-04-06 2004-08-10 Microsoft Corporation Hierarchical trusted code for content protection in computers
US6529985B1 (en) * 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6748592B1 (en) * 2000-02-14 2004-06-08 Xoucin, Inc. Method and apparatus for protectively operating a data/information processing device
US20040034794A1 (en) * 2000-05-28 2004-02-19 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US6854046B1 (en) * 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
AR036214A1 (es) * 2001-08-13 2004-08-18 Qualcomm Inc Metodo para limitar el acceso de una aplicacion a un area de almacenamiento en un dispositivo, un dispositivo que tiene un area de almacenamiento, un metodo para ejecutar una aplicacion en un dispositivo, un sistema para limitar el acceso de una aplicacion a un area de almacenamiento y un medio capa
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US7308576B2 (en) * 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
WO2003090052A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
TWI229817B (en) * 2003-01-07 2005-03-21 Wistron Corp Kernel-mode operating system of application program and method thereof
US20050108516A1 (en) * 2003-04-17 2005-05-19 Robert Balzer By-pass and tampering protection for application wrappers
US7480655B2 (en) * 2004-01-09 2009-01-20 Webroor Software, Inc. System and method for protecting files on a computer from access by unauthorized applications
US7437759B1 (en) * 2004-02-17 2008-10-14 Symantec Corporation Kernel mode overflow attack prevention system and method
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
US20060047959A1 (en) * 2004-08-25 2006-03-02 Microsoft Corporation System and method for secure computing
KR100704721B1 (ko) * 2004-09-10 2007-04-06 (주) 세이프아이 실시간 감시를 통한 컴퓨터 보호 방법 및 이에 따라 보호되는 컴퓨터 보호 시스템과 실행가능한 파일이 보호되는 시스템
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US7607173B1 (en) * 2005-10-31 2009-10-20 Symantec Corporation Method and apparatus for preventing rootkit installation

Also Published As

Publication number Publication date
KR20080103976A (ko) 2008-11-28
JP2009528632A (ja) 2009-08-06
EP1989627A4 (en) 2009-11-04
CN101395587B (zh) 2011-09-07
EP1989627A2 (en) 2008-11-12
WO2007103192A2 (en) 2007-09-13
US20070234330A1 (en) 2007-10-04
WO2007103192A3 (en) 2007-11-01
CN101395587A (zh) 2009-03-25
JP4890569B2 (ja) 2012-03-07

Similar Documents

Publication Publication Date Title
TW200809573A (en) Prevention of executable code modification
JP5924829B2 (ja) データトラフィックへの未認証アクセスの軽減
TWI526931B (zh) 用於虛擬機器之繼承產品啟動
CN108475217B (zh) 用于审计虚拟机的系统及方法
US7478246B2 (en) Method for providing a scalable trusted platform module in a hypervisor environment
KR101263061B1 (ko) 점대점 상호연결 시스템 상에서의 보안 환경 초기화 명령의실행
JP5013882B2 (ja) 保護ドメインに基づいたセキュリティ用の方法及び装置
US9424430B2 (en) Method and system for defending security application in a user's computer
JP6397500B2 (ja) 仮想マシン・マネージャーによって支援される選択的コード完全性強制
JP5611598B2 (ja) Usbトークン上の暗号化キーコンテナ
US7856653B2 (en) Method and apparatus to protect policy state information during the life-time of virtual machines
US10255088B2 (en) Modification of write-protected memory using code patching
US9678687B2 (en) User mode heap swapping
US7840964B2 (en) Mechanism to transition control between components in a virtual machine environment
US9870466B2 (en) Hardware-enforced code paths
JP2010508572A (ja) トラステッドプラットフォームモジュールを共有するためのシステム及び方法
US10929537B2 (en) Systems and methods of protecting data from malware processes
US7849055B2 (en) Method and system for limiting instances of a client-server program within a restricted distributed network
Sadeghi et al. Taming “trusted platforms” by operating system design
US10387681B2 (en) Methods and apparatus for controlling access to secure computing resources
WO2023103697A1 (zh) 一种计算机系统中的通信方法及相关产品
Tang et al. Techniques for IoT System Security
Li et al. GSLAC: GPU Software Level Access Control for Information Isolation on Cloud Platforms