TWI457830B - 虛擬機器代碼注入技術 - Google Patents
虛擬機器代碼注入技術 Download PDFInfo
- Publication number
- TWI457830B TWI457830B TW100116828A TW100116828A TWI457830B TW I457830 B TWI457830 B TW I457830B TW 100116828 A TW100116828 A TW 100116828A TW 100116828 A TW100116828 A TW 100116828A TW I457830 B TWI457830 B TW I457830B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- page
- processor
- memory
- injection
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Description
本發明係有關於虛擬機器代碼注入技術。
逐漸普及的電腦架構類型為採用虛擬機器之電腦架構。一或多個電腦裝置駐有一或多個虛擬機器,各個虛擬機器可相對應於不同終端使用者。各個終端使用者使用終端裝置或通訊式連結至電腦裝置之其它類型客戶端運算裝置,來提供輸入予虛擬機器,且接收來自虛擬機器之輸出。但產生該輸出之輸入的處理係藉駐有該虛擬機器之運算裝置來處理。各個虛擬機器具有其本身專有的作業系統複本,其係稱作為客端作業系統,及其係安裝運算裝置。如此,終端裝置或其它類型客戶端運算裝置執行有限的或未經處理的功能。
依據本發明之一實施例,係特地提出一種系統,包含一處理器;記憶體,其係具有一頁面來儲存可由該處理器執行之代碼;及一管理組件,其係用以將該代碼注入一虛擬機器,及在該虛擬機器之一記憶體表內部,指出該記憶體之頁面具有一注入代碼類型。
第1圖為依據本揭示之一具體實施例運算系統之略圖。
第2圖為略圖顯示依據本揭示之一具體實施例如何提供可靠的代碼注入。
第3圖為依據本揭示之一具體實施例,至少部分藉一管理組件執行來提供可靠的代碼注入之方法之流程圖。
第4圖為依據本揭示之一具體實施例,藉一處理器執行來提供可靠的代碼注入之方法之流程圖。
第5圖為依據本揭示之一具體實施例,藉一處理器及一記憶體控制器執行來提供可靠的代碼注入之方法之流程圖。
如先前技術章節所見,虛擬機器已經逐漸普及。大致上,駐在一或多個運算裝置上的虛擬機器共享該運算裝置的硬體資源。來自虛擬機器對該等硬體資源的輸出入(I/O)請求可在一或二個不同模式處理。在直接模式中,I/O請求係從虛擬機器直接送至硬體資源用以提供效能。於間接模式中,由虛擬機器所產生的I/O請求係經截取用以在發送給硬體資源之前額外處理。間接模式允許提供加強的I/O服務,諸如封包檢視、濾波、侵入及病毒檢測、登錄、及審核等其它類型之此等服務。
當虛擬機器係在直接模式操作時,虛擬機器典型地包括硬體資源之特定代碼來許可虛擬機器存取硬體資源。若虛擬機器係在具有相對應的寬廣多種不同硬體資源之寬廣多種不同運算裝置上操作,虛擬機器須包括虛擬機器可能存取的各個硬體資源之特定代碼。此乃其缺點,原因在於包括此種代碼會加大虛擬機器的大小。此外,維持虛擬機器變成難以確保虛擬機器具有代碼之最新版本,及具有新穎硬體資源之特定代碼。
為了克服此項問題,晚近辦法將給定硬體資源之特定代碼視需要為基礎注入虛擬機器,用以讓虛擬機器直接接取此一硬體資源。舉例言之,管理虛擬機器之管理器(hypervisor)識別駐有該虛擬機器之運算裝置的硬體資源,且判定虛擬機器欲存取該等硬體資源中之哪一者。在稱作為代碼注入之處理程序中,管理器將此等硬體資源之特定代碼直接地插入或加至虛擬機器。如此,虛擬機器並不包括可能駐有該虛擬機器之全部不同類型運算裝置的全部不同類型硬體資源之特定代碼。反而管理器只針對虛擬機器欲使用的該等硬體資源注入代碼。
舉例言之,當一虛擬機器欲部署在一給定運算裝置上時,在部署時,管理器可將代碼注入虛擬機器,使得虛擬機器可存取此種運算裝置的硬體資源。在稍後之一時間點,虛擬機器可從此運算裝置遷移至新的運算裝置,於該處該新穎運算裝置具有與原先運算裝置不同的硬體資源。如此,針對原先運算裝置的硬體資源之先前注入代碼係從虛擬機器移除。然後管理器將不同代碼注入虛擬機器,使得虛擬機器可存取新穎運算裝置的硬體資源。
但代碼注入之缺點為其造成安全性憂慮。虛擬機器可執行代碼,因而規避代碼內部可能存在的任何安全性防範。舉例言之,虛擬機器可執行代碼之分開部分使得規避代碼內部之安全規範。舉另一實例,即便代碼注入虛擬機器之方式使得虛擬機器無法對該代碼作改變,但虛擬機器可做該代碼之拷貝,而在該處理程序中對代碼做改變,來使得虛擬機器規避代碼內部之安全規範。如此,此等安全性考量使得下述就實用性而言為不可行:透過代碼注入,使用直接模式來加強I/O服務,因此此等加強I/O服務目前通常係使用間接模式提供,其不利地具有比直接模式更低的效能。
本揭示之實施例可補償此項代碼注入的缺點。管理器或其它管理組件藉由將代碼儲存在一給定記憶體頁面而將代碼注入虛擬機器。管理器在該虛擬機器之一記憶體表內部,指出此一記憶體頁面具有注入代碼類型,及也指出在該代碼內部之許可進入點。除非係在該許可進入點,否則處理器將拒絕進入該代碼。藉此方式,由於代碼的執行必須始於該許可進入點,故虛擬機器無法執行該代碼之分開部分來規避代碼內部之安全規範。
代碼許可虛擬機器透過由處理器所執行的記憶體對映輸入/輸出(MMIO)請求而存取硬體資源。記憶體控制器係經修改,使得若MMIO請求並非源自於具有注入代碼類型之一記憶體頁面,則該MMIO請求被封鎖。藉此方式,虛擬機器無法拷貝該代碼,及在處理程序中改變該代碼而使得該虛擬機器規避代碼內部之任何安全規範,而同時仍然可接取關注的硬體資源。原因在於虛擬機器本身無法在該記憶體表內部,指出經拷貝的且經修改的代碼版本所儲存之該記憶體頁面具有注入代碼類型,因此記憶體控制器可防止此一代碼版本接取硬體資源。
第1圖顯示依據本揭示之一具體實施例之運算系統100。運算系統包括一或多個運算裝置102及一或多個客戶端運算裝置104。運算裝置102及104各自包括硬體,諸如處理器108、記憶體112、及記憶體控制器120。記憶體控制器120介接處理器108至記憶體112來許可處理器108接取記憶體112。
於一個實施例中,記憶體控制器一詞用於此處係指提供記憶體112的相對高階控制之一控制器,諸如記憶體管理單元(MMU),或另一型控制器。如此,於此一實施例中,記憶體控制器並非指提供記憶體112的相對低階控制之一記憶體控制電路或其它控制器。舉例言之,於此一實施例中,記憶體控制器並非係指產生列存取選通(RAS)信號及行存取選通(CAS)信號給動態隨機存取記憶體(DRAM)之一控制器。
運算裝置102及104各自也可包括其它硬體,諸如硬體裝置,例如輸入裝置、輸出裝置、網路裝置等。此種硬體裝置之一實例在第1圖係特別稱作為硬體裝置116。使用者在客戶端運算裝置104提供輸入,其發送給運算裝置102用以處理來產生輸出。然後輸出信號係從運算裝置102送回客戶端運算裝置104,在該處輸出信號顯示給使用者。
就此方面而言,運算裝置102包括具有作業系統110之虛擬機器106,該虛擬機器運轉且係藉運算裝置102之硬體而具體實現。舉例言之,虛擬機器106可藉至少部分儲存在記憶體112內部且係藉處理器108執行的代碼具體實現。虛擬機器為作業系統連同在運算裝置102內部的分開區間跑的一或多個應用程式的一例。虛擬機器許可相同的或相異的作業系統同時在同一個運算裝置102上跑,而防止虛擬機器間的彼此干擾。各個虛擬機器被視為「該機器內部之一機器」,但發揮功能彷彿其擁有整個運算裝置。雖然第1圖只顯示一部虛擬機器106,但實際上可有多於一部此種虛擬機器。
作業系統110可指稱從屬(guest)作業系統。不同虛擬機器可具有相同或相異的作業系統之相同或相異版本。此等作業系統可包括LINUX作業系統版本,此處LINUX為李尼托維(Linus Torvalds)之註冊商標。此等作業系統可進一步包括Microsoft Windows作業系統版本,此處Microsoft及Windows為華盛頓州李德蒙微軟公司(Microsoft Corp.)之註冊商標。
管理組件114管理虛擬機器106,及協助硬體裝置116的虛擬化來由虛擬機器106使用。管理組件114也可至少部分儲存在記憶體112內而藉處理器108執行。管理組件114可稱作為虛擬化軟體、稱作為虛擬機器監視器(VMM),或稱作為管理器。管理組件114之一個實例為Xen虛擬機器軟體,得自佛羅里達州羅德岱堡希崔斯系統公司(Citrix Systems,Inc.)。管理組件114之另一個實例為VMware虛擬機器軟體,得自加州保羅奧圖VMware公司。管理組件114管理虛擬機器106係在於管理組件114控制虛擬機器106的實體化、遷移、及刪除等。
硬體裝置116可提供虛擬功能118。虛擬功能118虛擬化了由硬體裝置116所提供的功能來協助管理組件114虛擬化硬體裝置116用以供虛擬機器106所使用。換言之,虛擬機器106可直接使用虛擬功能118來直接地接取硬體裝置116,而非透過或經由管理組件114而更間接地接取硬體裝置116。於一個具體實施例中,虛擬功能118為由周邊組件互連體(PCI)快速(PCIe)裝置硬體所提供或所暴露的PCIe虛擬功能,此處該PCIe裝置為能夠單根輸出入虛擬化(SR-IOV)。
在直接模式中,虛擬機器106之操作於此處係關聯由虛擬機器106所產生的I/O請求描述,該I/O請求係意圖由硬體裝置116用來提供虛擬功能118。虛擬機器106係透過管理組件114已經注入虛擬機器106的代碼122而以直接模式操作。類似虛擬機器106,注入代碼122係儲存在記憶體112內部且係由處理器108執行。注入代碼122為硬體裝置116所特有,此處硬體裝置116也可稱作為運算裝置102的硬體資源。於直接模式中,虛擬功能118係由虛擬機器106所擁有。更明確言之,於直接模式中,虛擬機器106所產生的I/O請求係藉注入代碼122而直接地發送至硬體裝置116之虛擬功能118。
第2圖例示說明依據本揭示之一具體實施例,管理組件114如何可提供代碼122之安全注入虛擬機器106。記憶體112係被分割為頁面202A、202B、...、202N,合稱為頁面202。各頁面202為記憶體之一連續部分。否則「頁面」一詞並非以特定意義用於此處。頁面202儲存虛擬機器106之代碼,此處頁面202A及202N於第2圖動員來特別地分別儲存代碼204及206,及此處頁面202B於第2圖動員來特別地儲存注入代碼122。
處理器206維持一指令指標器216,其指示欲藉處理器108執行的下一個代碼指令。換言之,代碼122、204及206係由多個代碼指令組成,此處欲藉處理器108執行的下一個代碼指令係藉指令指標器216指出。一旦處理器108已經執行由指令指標器216所指出的代碼指令,指令指標器216指出欲藉處理器108執行的新代碼指令。
管理組件114針對虛擬機器106維持一記憶體表208。即便記憶體表208係由管理組件114針對虛擬機器106而維持,虛擬機器106無法修改記憶體表208。記憶體表208具有多列210A、210B、...、210N,合稱作列210,且係與記憶體112之頁面202相對應。如此,列210A係相對應於頁面202A,列210B係相對應於頁面202B,及列210N係相對應於頁面202N。各列210包括二欄位212及214之值。
欄位212為注入代碼類型欄位,其指示相對應於一給定列的頁面是否儲存注入代碼。舉例言之,針對列210A的欄位212為偽,原因在於儲存在頁面202A之代碼204並非由管理組件114已經注入虛擬機器106的代碼。同理,針對列210N的欄位212為偽,原因在於儲存在頁面202N之代碼206並非注入的代碼。比較上,針對列210B的欄位212為真,原因在於儲存在頁面202B之代碼122係為由管理組件114已經注入虛擬機器106的代碼。
欄位214儲存針對一給定列之注入代碼的一或多個許可進入點,於該處此一列之欄位212指示相對應頁面儲存注入代碼。各個許可進入點可以相對於一頁面為偏位,於該點可開始儲存在該頁面之注入代碼的執行。如此,在欄位214中針對儲存注入代碼的該頁面之相對應列所載明之一許可進入點以外的任一點,注入代碼無法進入,亦即無法開始其執行。如此許可進入點係指在注入代碼內部之一特定代碼指令。因頁面202A及202N並不儲存注入代碼,其相對應列210A及210N並不具有欄位214之值。比較上,頁面202B儲存注入代碼122,使得針對列210B之欄位214儲存一許可進入點,其係以十六進制偏位0xABCD例示說明於第2圖。
當管理組件114藉由儲存代碼122在記憶體112的頁面202B內部而將代碼122注入虛擬機器106時,如此,管理組件114在針對相對應列210B的欄位212指出該代碼122為注入代碼。換言之,管理組件114在相對應於頁面202B的欄位202指出代碼122具有注入代碼類型。管理組件114也在相對應於列210B的欄位214指出注入代碼122內部的許可進入點。
除非在針對列210B的欄位214載明的許可進入點,否則欲執行注入代碼122的處理器108係拒絕進入代碼122。舉例言之,處理器108可檢查處理器108的指令指標器216何時改變。處理器108檢查指令指標器216的改變,來檢測指令指標器216是否從注入代碼122以外的代碼變遷至注入代碼122。此外,回應於此項檢測,處理器108可產生例外,指令指標器216係變遷至注入代碼122內部的針對列210B的欄位214載明的許可進入點以外的一點。藉由產生例外,處理器108並不執行注入代碼122。
舉例言之,處理器108可目前執行儲存在頁面202A的代碼204。在某一點,代碼204可分支成在儲存於頁面202B的注入代碼122內部之一代碼指令。此時,處理器108檢測其指令指標器216現在係指向注入代碼122。處理器108判定指令指標器216現在指向的注入代碼122之代碼指令是否為列210B之欄位214內部載明的許可進入點。若是,則處理器108在此點開始執行注入代碼122。但若處理器108的指令指標器216並非指向一許可進入點,則處理器108產生例外,且不執行注入代碼122。
處理器108也檢查指令指標器216的變化,來檢測指令指標器216是否從注入代碼122變遷至注入代碼122以外的代碼。回應於此項檢測,處理器108在注入代碼122內部,恰在注入代碼122變遷為其它代碼後方形成另一個許可進入點。相對應於頁面202B儲存注入代碼122,此一新許可進入點也係儲存在列210B之欄位214。新許可進入點可覆寫先前儲存在列210B之欄位214的既有許可進入點,或可添加至業已儲存在列210B之欄位214的既有許可進入點。當指令指標器216變遷回在新許可進入點的注入代碼時,然後新許可進入點從列210B之欄位214移除。
舉例言之,處理器108可目前執行儲存在頁面202B的注入代碼122。在某一點,注入代碼122可呼叫在儲存於頁面202N的代碼206內部之一次常式。此時,處理器108檢測指令指標器216現在指向代碼206。恰在注入代碼122內部次常式被呼叫的該點後方,處理器108形成進入注入代碼122的一個新許可進入點,及儲存新許可進入點於針對列210B之欄位214。當代碼206內部的次常式返回注入代碼122時,處理器108檢測得此項變化,及驗證注入代碼122係返回新許可進入點,此時,處理器108從針對列210B之欄位214移除此一許可進入點。
關聯第2圖所述辦法確保虛擬機器106不會規避嵌入注入代碼122內部的安全規範。虛擬機器106無法繞道此種安全規範,原因在於虛擬機器106被迫在載明的許可進入點,開始注入代碼122之執行。但關聯第2圖所述辦法仍然許可注入代碼122利用含在非注入代碼諸如代碼206內部的次常式。原因在於當注入代碼122呼叫此一次常式時,一旦次常式完成時,將恢復執行注入代碼122的注入代碼122內部該點也係動態地但暫時地儲存作為一許可進入點。
如前記,注入代碼122可為硬體裝置116所特有,使得代碼122注入虛擬機器106讓虛擬機器106接取硬體裝置116。處理器108係指出處理器108正在執行的記憶體目前頁面202是否具有注入代碼類型。換言之,處理器108係指示儲存處理器108目前正在執行的代碼之頁面202。
也如前文指示,於直接模式,虛擬機器106透過由注入代碼122所配方的MMIO請求而接取硬體裝置106。處理器108經由記憶體控制器120,藉由接取硬體裝置116所對映的記憶體而執行此等請求。於第2圖,此種方法係以記憶體控制器120介接處理器108至硬體裝置116顯示。
因此管理組件114修改記憶體控制器120,使得MMIO請求源自於在記憶體112的不具注入代碼類型之一頁面202所儲存的代碼。當處理器108試圖接取硬體裝置116所對映的記憶體時,記憶體控制器120接收來自處理器108的指示有關含有處理器目前正在儲存的代碼之頁面202類型。若此頁面202不含注入代碼,亦即,若頁面202具有注入代碼類型,則記憶體控制器120封鎖關注的MMIO請求。比較上,若此頁面202含有注入代碼,亦即,若頁面202不具有注入代碼類型,則記憶體控制器120允許且不封鎖MMIO請求。
舉例言之,若處理器108目前正在執行注入代碼122且如此簽發一MMIO請求,則記憶體控制器120允許該項請求,原因在於含有注入代碼122的頁面202B具有注入代碼類型。在第2圖中係以注入代碼122與硬體裝置116間之實線指示。至於另一實例,若處理器108目前正在執行代碼204或代碼206,及如此簽發一MMIO請求,則記憶體控制器120封鎖該請求,原因在於含代碼204及204的頁面202A及202N不具有注入代碼類型。此係藉第2圖中代碼204及206與硬體裝置116間被X所中斷的實線指示。
所述辦法也確保虛擬機器106不會規避嵌入注入代碼122內部的安全規範。虛擬機器106無法藉由單純將注入代碼122拷貝至一不同頁面202及然後,修改代碼122的拷貝版本來移除安全規範而繞道此種安全規範。原因在於當結果所得代碼122之修改版本係藉處理器108執行時,因儲存在頁面202的代碼122之修改版本係不具注入代碼類型,故由處理器108簽發的任何MMIO請求係藉記憶體控制器120封鎖。只有管理組件114可對一頁面202分配注入代碼類型,而非虛擬機器106。
因此,雖然虛擬機器106可拷貝及然後修改注入代碼122,代碼202之拷貝版本及/或修改版本無法用來接取硬體裝置116。原因在於由代碼202之拷貝版本及/或修改版本所導致的MMIO請求係由記憶體控制器120封鎖。注入代碼122之原先拷貝係由管理組件114注入虛擬機器106且儲存在頁面202B內部指示為具有注入代碼類型,須注意該注入代碼122之原先拷貝從虛擬機器106之面向可標記為唯讀。如此,虛擬機器108無法修改儲存在頁面202B之注入代碼122。藉虛擬機器108修改注入代碼122之拷貝複本將不會儲存在具有注入代碼類型之一頁面202內部,使得所得代碼將具有其MMIO請求係由記憶體控制器120封鎖。
第3圖顯示依據本揭示之一具體實施例,至少部分藉管理組件114執行之一種方法。如此,方法300可藉儲存在有形具體的且非暫態電腦可讀取資料儲存媒體上的一或多個電腦程式具體實現,藉一處理器執行電腦程式造成方法300的執行。就此方面而言,電腦程式具體實現及/或構成管理組件114的一部分。
管理組件114將代碼122注入虛擬機器106(302),將注入代碼122儲存在記憶體112之頁面202B。管理組件114指出在針對記憶體表208之列210B之欄位212,頁面202B具有注入代碼類型(304)。管理組件114也指出在列210B之欄位214內部,在注入代碼122內部之一許可進入點(306)。
除非在許可進入點,否則處理器108拒絕進入注入代碼122(308)。處理器108也指示處理器108正在執行的目前頁面202具有注入代碼類型(310)。若處理器108正在執行的目前頁面202不具有注入代碼類型,則管理組件114進一步修改記憶體控制器120來封鎖MMIO請求不進入處理器108(312)。
第4圖顯示依據本揭示之一具體實施例,依照方法300部分308,處理器108之操作方法400。指令指標器216發生變化(402)。此項變化來自於已經由處理器108執行的目前代碼指令,使得指令指標器216現在指向欲由處理器108執行的下一個代碼指令。
處理器108檢查指令指標器216的變化,來檢測指令指標器216是否從一目前頁面202變遷至記憶體112內部之一新頁面202(404)。換言之,指令指標器216之變化經檢查來檢測由處理器108所執行的先前代碼指令是否係儲存在一個頁面202,及欲由處理器108執行的下一個代碼指令是否儲存在另一頁面202。若指令指標器216並不變遷至一新頁面202(406),則方法400結束,處理器108進行下一個代碼指令的執行(416)。
但若指令指標器216係從一目前頁面202變遷至一新頁面202(406),且若目前頁面202儲存注入代碼(408),則處理器108針對目前頁面202內部之注入代碼形成一新許可進入點(410)。新許可進入點為在目前頁面202內部恰在剛才已經藉處理器108執行的代碼指令後方之該代碼指令。當新頁面202上的代碼已經完成執行時,新許可進入點許可處理器108返回目前頁面202。
從部分410,或在部分408於該處目前頁面202不儲存注入代碼,方法400判定指令指標器216變遷成的新頁面202是否儲存注入代碼(412)。若新頁面202不儲存注入代碼(412),則方法400以處理器108進行下一個代碼指令的執行而結束(416)。但若新頁面202確實儲存注入代碼(412),且若指令指標器216並不指向針對新頁面202內部之注入代碼的許可進入點(414),則處理器108產生例外(418),使得不執行在新頁面202內部之注入代碼。比較上,若指令指標器216確實指向針對新頁面202內部之注入代碼的許可進入點(414),則方法400以處理器108進行下一個代碼指令的執行而結束(416)。
第5圖顯示依據本揭示之一具體實施例,依照方法300之部分310及312,處理器108及記憶體控制器120之操作方法500。方法500係有關於注入代碼122為硬體裝置116之特定代碼的情況,故虛擬機器106可以直接模式接取硬體裝置116。
當處理器108係在一給定頁面202上執行代碼指令時,處理器108指出此一目前頁面202是否具有注入代碼類型(502)。推定代碼指令的執行結果導致出現針對接取硬體裝置116的MMIO請求(504)。回應於此,當目前頁面202不具有注入代碼類型時,記憶體控制器120封鎖MMIO請求(506)。換言之,若正在執行的代碼指令不屬注入代碼122之一部分,則MMIO請求被封鎖。
100...運算系統
102...運算裝置
104...客戶端運算裝置
106...虛擬機器
108...處理器
110...作業系統
112...記憶體
114...管理組件
116...硬體裝置
118...虛擬功能
120...記憶體控制器
122...注入代碼、代碼
202A-N...頁面
204、206...代碼
210A-N...列
212、214...欄位
216...指示指標器
300、400、500...方法
302-312、402-418、502-506...方法部分
第1圖為依據本揭示之一具體實施例運算系統之略圖。
第2圖為略圖顯示依據本揭示之一具體實施例如何提供可靠的代碼注入。
第3圖為依據本揭示之一具體實施例,至少部分藉一管理組件執行來提供可靠的代碼注入之方法之流程圖。
第4圖為依據本揭示之一具體實施例,藉一處理器執行來提供可靠的代碼注入之方法之流程圖。
第5圖為依據本揭示之一具體實施例,藉一處理器及一記憶體控制器執行來提供可靠的代碼注入之方法之流程圖。
100...運算系統
102...運算裝置
104...客戶端運算裝置
106...虛擬機器
108...處理器
110...作業系統
112...記憶體
114...管理處理
116...硬體裝置
118...虛擬介面
120...記憶體控制器
122...注入代碼
Claims (15)
- 一種用於代碼注入之系統,其係包含:一處理器;記憶體,其係具有一頁面來儲存可由該處理器執行之代碼;及一管理組件,其係用以將該代碼注入一虛擬機器,及用以在用於該虛擬機器之一記憶體表內部指出該記憶體之頁面具有一注入代碼類型。
- 如申請專利範圍第1項之系統,其中該管理組件係進一步在該記憶體表內部指出在該代碼內部之一許可進入點。
- 如申請專利範圍第2項之系統,其中該處理器係用以除非係在該許可進入點否則即拒絕進入該代碼。
- 如申請專利範圍第3項之系統,其中該代碼可儲存於其中之該記憶體之頁面為該記憶體之一第一頁面,及該記憶體進一步包括不具有注入代碼類型之一第二頁面,及其中該處理器係:在指引欲藉該處理器執行之次一代碼指令之一指令指標器內檢查一變化,來檢測該指令指標器是否從該第二頁面變遷至第該第一頁面;及回應於檢測到該指令指標器係從該第二頁面變遷至該第一頁面,導致一例外,其中該指令指標器係變遷至該代碼內部之該許可進入點以外的一點。
- 如申請專利範圍第3項之系統,其中該許可進入點為一 第一許可進入點,該代碼可儲存於其中之該記憶體之頁面為該記憶體之一第一頁面,及該記憶體進一步包括不具有該注入代碼類型之一第二頁面,及其中該處理器係:在指引欲藉該處理器執行之次一代碼指令之一指令指標器內檢查一變化,來檢測該指令指標器是否從該第一頁面變遷至該第二頁面;及回應於檢測到該指令指標器係從該第一頁面變遷至該第二頁面,在該代碼內部恰在該代碼變遷至第二頁面後方,形成一第二許可進入點。
- 如申請專利範圍第1項之系統,其中該處理器指示該處理器正在執行之該記憶體之一目前頁面具有注入代碼類型。
- 如申請專利範圍第6項之系統,其係進一步包含用於該記憶體之一記憶體控制器,其中該代碼係許可該虛擬機器透過該記憶體的一部份且藉由使用可由該處理器執行的一記憶體對映輸入/輸出(MMIO)請求而與一硬體裝置聯絡,及其中該管理組件進一步係修改該記憶體控制器,使得在不具有該注入代碼類型之該處理器正在執行的記憶體之該目前頁面該處,該MMIO請求係被封鎖。
- 一種電腦可讀取媒體,其上儲存有一或多個電腦程式用以藉一處理器執行來進行一包含下列步驟之方法:將可由處理器執行之代碼注入一虛擬機器,以使該代碼儲存在該記憶體之一頁面內部;及 在用於該虛擬機器之一記憶體表內部,指出該記憶體之頁面具有一注入代碼類型。
- 如申請專利範圍第8項之電腦可讀取媒體,其中該代碼儲存於其中之該記憶體之頁面為該記憶體之一第一頁面,該記憶體進一步包括不具有該注入代碼類型之一第二頁面,及該方法進一步包含:在該記憶體表內部指出在該代碼內部之一許可進入點;及,除非係在該許可進入點,否則使該處理器拒絕進入該代碼,以使得該處理器係:在指引欲藉該處理器執行之次一代碼指令之一指令指標器內檢查一變化,來檢測該指令指標器是否從該第二頁面變遷至該第一頁面;及回應於檢測到該指令指標器係從該第二頁面變遷至該第一頁面,導致一例外,其中該指令指標器係變遷至該代碼內部之該許可進入點以外的一點。
- 如申請專利範圍第9項之電腦可讀取媒體,其中該變化為一第一變化,該許可進入點為一第一許可進入點,及其中該處理器係除非在該許可進入點否則拒絕進入該代碼,進一步以使得該處理器係:在指引欲藉該處理器執行之次一代碼指令之指令指標器內檢查一第二變化,來檢測該指令指標器是否從該第一頁面變遷至該第二頁面;及 回應於檢測到該指令指標器係從該第一頁面變遷至該第二頁面,在該代碼內部恰在該代碼變遷至第二頁面後方,形成一第二許可進入點。
- 如申請專利範圍第8項之電腦可讀取媒體,其中該代碼係許可該虛擬機器透過記憶體之一部分且藉由使用可由該處理器執行的記憶體對映輸入/輸出(MMIO)請求而與一硬體裝置聯絡,及該方法進一步包含:使該處理器指示該處理器正在執行的記憶體之一目前頁面是否具有該注入代碼類型;及修改一記憶體控制器,以使得在不具有該注入代碼類型之該處理器正在執行的記憶體之該目前頁面該處,該MMIO請求係被封鎖。
- 一種用於代碼注入之方法,其係包含:藉著至少由一處理器具體實現之一管理組件,將可由該處理器執行之代碼注入一虛擬機器,以使得該代碼係儲存在該記憶體之一頁面內部;及藉著該管理組件,在用於該虛擬機器之一記憶體表內部,指出該記憶體之頁面具有一注入代碼類型。
- 如申請專利範圍第12項之方法,其中該代碼可儲存於其中之該記憶體之頁面為該記憶體之一第一頁面,該記憶體進一步包括不具有該注入代碼類型之一第二頁面,及該方法進一步包含:藉著該管理組件,在該記憶體表內部指出在該代碼內部之一許可進入點;及, 藉著該處理器,除非在該許可進入點,否則拒絕進入該代碼,其係包含:在指引欲藉該處理器執行之次一代碼指令之一指令指標器內檢查一變化,來檢測該指令指標器是否從該第二頁面變遷至該第一頁面;及回應於檢測到該指令指標器係從該第二頁面變遷至該第一頁面,導致一例外,其中該指令指標器係變遷至代碼內部之許可進入點以外的一點。
- 如申請專利範圍第13項之方法,其中該變化為一第一變化,該許可進入點為一第一許可進入點,及除非在該許可進入點否則拒絕進入該代碼係進一步包含:在指引欲藉該處理器執行之次一代碼指令之指令指標器內檢查一第二變化,來檢測該指令指標器是否從該第一頁面變遷至該第二頁面;及回應於檢測到該指令指標器係從該第一頁面變遷至該第二頁面,在該代碼內部恰在該代碼變遷至第二頁面後方,形成一第二許可進入點。
- 如申請專利範圍第12項之方法,其中該代碼係許可該虛擬機器透過記憶體之一部分且藉由使用可由該處理器執行的記憶體對映輸入/輸出(MMIO)請求而與一硬體裝置聯絡,及該方法進一步包含:藉著該處理器指出該處理器正在執行的記憶體之一目前頁面是否具有該注入代碼類型;及藉著一記憶體控制器使得在不具有該注入代碼類 型之該處理器正在執行的記憶體之目前頁面該處封鎖該MMIO請求。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2010/036786 WO2011152816A1 (en) | 2010-05-30 | 2010-05-30 | Virtual machine code injection |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201211894A TW201211894A (en) | 2012-03-16 |
TWI457830B true TWI457830B (zh) | 2014-10-21 |
Family
ID=45066993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100116828A TWI457830B (zh) | 2010-05-30 | 2011-05-13 | 虛擬機器代碼注入技術 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20130061012A1 (zh) |
EP (1) | EP2577448A4 (zh) |
TW (1) | TWI457830B (zh) |
WO (1) | WO2011152816A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495252B2 (en) * | 2011-01-17 | 2013-07-23 | International Business Machines Corporation | Implementing PCI-express memory domains for single root virtualized devices |
US9141559B2 (en) | 2012-01-04 | 2015-09-22 | Intel Corporation | Increasing virtual-memory efficiencies |
EP2801025B1 (en) * | 2012-01-04 | 2018-10-24 | Intel Corporation | Increasing virtual-memory efficiencies |
ES2439804B1 (es) * | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para virtualizar un recurso de hardware asociado a un sistema informático |
US9990216B2 (en) * | 2013-06-27 | 2018-06-05 | Red Hat Israel, Ltd. | Providing hypercall interface for virtual machines |
US9912681B1 (en) | 2015-03-31 | 2018-03-06 | Fireeye, Inc. | Injection of content processing delay in an endpoint |
US10474813B1 (en) | 2015-03-31 | 2019-11-12 | Fireeye, Inc. | Code injection technique for remediation at an endpoint of a network |
US9965313B2 (en) * | 2016-01-05 | 2018-05-08 | Bitdefender IPR Management Ltd. | Systems and methods for auditing a virtual machine |
US10181034B2 (en) * | 2016-02-12 | 2019-01-15 | Sophos Limited | Virtual machine security |
US10116630B2 (en) * | 2016-04-04 | 2018-10-30 | Bitdefender IPR Management Ltd. | Systems and methods for decrypting network traffic in a virtualized environment |
US11157300B2 (en) | 2018-02-13 | 2021-10-26 | Sophos Limited | Managing virtual machine security resources |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200508963A (en) * | 2003-06-30 | 2005-03-01 | Microsoft Corp | Network load balancing with connection manipulation |
US7039644B2 (en) * | 2002-09-17 | 2006-05-02 | International Business Machines Corporation | Problem determination method, system and program product |
US20060248528A1 (en) * | 2005-04-29 | 2006-11-02 | Microsoft Corporation | Systems and methods for hypervisor discovery and utilization |
TW200823697A (en) * | 2006-09-15 | 2008-06-01 | Ericsson Telefon Ab L M | Injecting proxy components using blueprints |
US20090241109A1 (en) * | 2008-03-24 | 2009-09-24 | International Business Machines Corporation | Context Agent Injection Using Virtual Machine Introspection |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426718B2 (en) * | 2005-03-21 | 2008-09-16 | Microsoft Corporation | Overriding constructors to provide notification in order to detect foreign code |
US8839450B2 (en) * | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
US7886363B2 (en) * | 2006-05-24 | 2011-02-08 | Noam Camiel | System and method for virtual memory and securing memory in programming languages |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
US8225317B1 (en) * | 2009-04-17 | 2012-07-17 | Symantec Corporation | Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines |
US8271450B2 (en) * | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
-
2010
- 2010-05-30 EP EP10852607.0A patent/EP2577448A4/en not_active Withdrawn
- 2010-05-30 US US13/696,981 patent/US20130061012A1/en not_active Abandoned
- 2010-05-30 WO PCT/US2010/036786 patent/WO2011152816A1/en active Application Filing
-
2011
- 2011-05-13 TW TW100116828A patent/TWI457830B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7039644B2 (en) * | 2002-09-17 | 2006-05-02 | International Business Machines Corporation | Problem determination method, system and program product |
TW200508963A (en) * | 2003-06-30 | 2005-03-01 | Microsoft Corp | Network load balancing with connection manipulation |
US20060248528A1 (en) * | 2005-04-29 | 2006-11-02 | Microsoft Corporation | Systems and methods for hypervisor discovery and utilization |
TW200823697A (en) * | 2006-09-15 | 2008-06-01 | Ericsson Telefon Ab L M | Injecting proxy components using blueprints |
US20090241109A1 (en) * | 2008-03-24 | 2009-09-24 | International Business Machines Corporation | Context Agent Injection Using Virtual Machine Introspection |
Also Published As
Publication number | Publication date |
---|---|
US20130061012A1 (en) | 2013-03-07 |
EP2577448A4 (en) | 2014-07-09 |
TW201211894A (en) | 2012-03-16 |
EP2577448A1 (en) | 2013-04-10 |
WO2011152816A1 (en) | 2011-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI457830B (zh) | 虛擬機器代碼注入技術 | |
KR102189296B1 (ko) | 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 | |
EP3619605B1 (en) | Securing virtual execution environments | |
US11841939B2 (en) | Technologies for object-oriented memory management with extended segmentation | |
JP6062595B2 (ja) | オンデマンドで仮想マシンモニタをデプロイするアルゴリズムおよび装置 | |
EP1939754B1 (en) | Providing protected access to critical memory regions | |
US20160210069A1 (en) | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine | |
US20150371042A1 (en) | Systems and Methods Involving Features of Hardware Virtualization, Hypervisor, Pages of Interest, and/or Other Features | |
JP6530723B2 (ja) | コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法 | |
US9852052B2 (en) | Trusted execution of called function | |
US10552345B2 (en) | Virtual machine memory lock-down | |
US20170249458A1 (en) | Application memory protection using a host page table switching virtual machine function | |
US10140148B1 (en) | Copy based IOMMU emulation for out-of-process emulated devices | |
US20240070260A1 (en) | Process Credential Protection | |
KR102479465B1 (ko) | 모바일 신뢰 실행 환경의 보안성 강화를 위한 장치 | |
US20220391235A1 (en) | System and methods for input/output device emulation | |
EP4372551A1 (en) | Virtual machine management method and related system, and storage medium | |
KR20180004192A (ko) | 정확한 코드 실행 컨텍스트를 검증하는 체크 명령어 | |
Long et al. | GearV: A Two-Gear Hypervisor for Mixed-Criticality IoT Systems | |
Chen et al. | DScope: To Reliably and Securely Acquire Live Data from Kernel-Compromised ARM Devices | |
Ling et al. | Cross-Views Process Detection Based on Hardware-Assisted Virtual Machine | |
Chong et al. | Cross-views Process Detection Based on Hardware-assisted Virtual Machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |