二進(jìn)制轉(zhuǎn)換器驅(qū)動的程序狀態(tài)重新定位的制作方法
【技術(shù)領(lǐng)域】
[0001] 本公開涉及裝置安全性,并且更具體地說,涉及用于通過二進(jìn)制轉(zhuǎn)換器驅(qū)動的程 序狀態(tài)重新定位增強(qiáng)相對于惡意軟件的安全性的系統(tǒng)。
【背景技術(shù)】
[0002] 隨著人們越來越多地電子地執(zhí)行個(gè)人和/或保密的事務(wù),電子安全性已經(jīng)演進(jìn)成 更突出的關(guān)注。此外,具有惡意意圖的黑客和/或其他人在回避裝置中的現(xiàn)有安全措施上 正變得越來越有創(chuàng)造性。為了對抗通過惡意軟件和/或病毒的演進(jìn)的并且無處不在的入 侵,設(shè)備和/或軟件制造商繼續(xù)采取對新裝置的硬件更內(nèi)在的保護(hù)措施。例如,響應(yīng)于外來 代碼被注入到程序中以從裝置盜取信息或甚至接管裝置的控制的情形,實(shí)現(xiàn)了包含代碼簽 名和不可執(zhí)行存儲器片段的新保護(hù)方案。這些安全措施允許程序被認(rèn)證,并且甚至允許某 些脆弱代碼被標(biāo)記為在硬件級不可執(zhí)行。例如,嘗試注入外來代碼或執(zhí)行被保護(hù)代碼將使 處理器(諸如管理程序)中的硬件控制資源介入以保護(hù)系統(tǒng)的完整性。
[0003]然而,有事業(yè)心的編程人員想出了回避這些保護(hù)的辦法。例如,在面向返回的編程 (R0P)中,攻擊者可劫持裝置的控制流以訪問某些程序功能(例如小組件)。小組件一般可 包括程序指令集。例如,小組件可包含可支持對編程操作(例如讀數(shù)據(jù)、寫數(shù)據(jù)、數(shù)學(xué)操作 等)必要的初步功能性的程序的部分。當(dāng)按有益軟件的編程人員意圖的方式、順序等執(zhí)行 時(shí),小組件對裝置操作沒有不良影響。然而,在奪取了裝置中控制流的控制時(shí),有可能操縱 小組件(例如按不同順序、用不同變元(argument)等調(diào)用)以導(dǎo)致完全不同于最初意圖的 操作,并且可能能夠克服現(xiàn)有保護(hù)方案。而且,當(dāng)前提出的保護(hù)免受R0P的安全措施實(shí)現(xiàn)起 來非常困難,或者可能有可能克服強(qiáng)力攻擊。
【附圖說明】
[0004] 隨著如下【具體實(shí)施方式】的繼續(xù),并參考附圖,其中相似數(shù)字表示相似部分,所要求 保護(hù)的主題的各種實(shí)施例的特征和優(yōu)點(diǎn)將變得顯而易見,并且附圖中: 圖1圖示了按照本公開的至少一個(gè)實(shí)施例的二進(jìn)制轉(zhuǎn)換器驅(qū)動的程序狀態(tài)重新定位 的示例; 圖2圖示了按照本公開的至少一個(gè)實(shí)施例的可使用的裝置的示例配置; 圖3圖示了按照本公開的至少一個(gè)實(shí)施例的添加到程序以實(shí)現(xiàn)二進(jìn)制轉(zhuǎn)換器驅(qū)動的 程序狀態(tài)重新定位的示例代碼; 圖4圖示了按照本公開的至少一個(gè)實(shí)施例可在面向返回的編程(R0P)攻擊期間發(fā)生的 示例代碼執(zhí)行; 圖5圖示了按照本公開的至少一個(gè)實(shí)施例當(dāng)圖4的R0P攻擊由轉(zhuǎn)換器驅(qū)動的程序狀態(tài) 重新定位來重新定向時(shí)的示例代碼執(zhí)行;以及 圖6圖示了按照本公開的至少一個(gè)實(shí)施例的二進(jìn)制轉(zhuǎn)換器驅(qū)動的程序狀態(tài)重新定位 的示例操作。
[0005] 盡管如下【具體實(shí)施方式】將參考說明性實(shí)施例進(jìn)行,但其許多備選、修改和變化對 本領(lǐng)域技術(shù)人員將是顯而易見的。
【具體實(shí)施方式】
[0006] 此公開指向二進(jìn)制轉(zhuǎn)換器驅(qū)動的程序狀態(tài)重新定位。一般而言,裝置可通過將脆 弱的程序功能設(shè)置為不可執(zhí)行來保護(hù)它們。如果嘗試執(zhí)行被保護(hù)的程序功能,則程序可設(shè) 陷(trap)到可配置成將程序狀態(tài)從(例如在棧寄存器上)已經(jīng)建立的進(jìn)行重新定位的裝 置中的二進(jìn)制轉(zhuǎn)換器。本文所提及的程序狀態(tài)可包含程序可在執(zhí)行過程期間建立的任何資 源(例如存儲在存儲器位置中的臨時(shí)數(shù)據(jù))。二進(jìn)制轉(zhuǎn)換器然后可基于重新定位的程序狀 態(tài)將程序轉(zhuǎn)換成可執(zhí)行形式(例如二進(jìn)制代碼),并且因此可以被執(zhí)行。嘗試克服正常程序 執(zhí)行并實(shí)現(xiàn)惡意操作(例如基于在棧寄存器中反映的原始程序狀態(tài))的入侵代碼將不按意 圖運(yùn)作,因?yàn)橹匦露ㄎ坏某绦驙顟B(tài)將保持未預(yù)料到的結(jié)果。
[0007] 在一個(gè)實(shí)施例中,裝置例如可包括存儲器模塊、二進(jìn)制轉(zhuǎn)換器模塊和處理模塊。存 儲器模塊可保持對應(yīng)于程序的程序狀態(tài)信息。二進(jìn)制轉(zhuǎn)換器模塊可接收所述程序執(zhí)行被保 護(hù)的功能的嘗試的指示,以便使所述程序狀態(tài)信息的至少一個(gè)元素在所述存儲器模塊中重 新定位,并基于所述程序狀態(tài)信息的重新定位的至少一個(gè)元素將所述程序中的指令轉(zhuǎn)換成 可執(zhí)行二進(jìn)制代碼。處理模塊可執(zhí)行所述可執(zhí)行的二進(jìn)制代碼。
[0008] 在引起程序狀態(tài)信息的至少一個(gè)元素被重新定位時(shí),二進(jìn)制轉(zhuǎn)換器模塊可引起以 下中的至少一項(xiàng):基于隨機(jī)偏移重新定位變元棧,重新定位溢出的寄存器棧,重新定位中央 處理單元(CPU)棧,或者重新定位局部變量。在一個(gè)實(shí)施例中,處理模塊還可將被保護(hù)的功 能設(shè)置成不可執(zhí)行,并且當(dāng)嘗試所述被保護(hù)的功能的執(zhí)行時(shí)生成所述指示。二進(jìn)制轉(zhuǎn)換器 模塊還可確定當(dāng)嘗試執(zhí)行所述程序中的第一指令時(shí)是否接收到所述指示。如果確定當(dāng)試圖 執(zhí)行程序中的第一指令時(shí)接收到指示,則二進(jìn)制轉(zhuǎn)換器還可將移動命令插入到程序中。例 如,插入的移動命令可引起在所述存儲器模塊中重新定位所述程序狀態(tài)信息的至少一個(gè)元 素。插入的移動命令還可傳遞所需的至少一個(gè)變元以在不同于棧寄存器的寄存器中執(zhí)行程 序。此外,插入的移動命令可檢索重新定位的程序狀態(tài)信息以用于執(zhí)行所述功能。符合本公 開的示例方法可包含:接收程序已經(jīng)嘗試執(zhí)行被保護(hù)的功能的指示;標(biāo)識引起所述指示的 所述程序;引起重新定位對應(yīng)于所述程序的程序狀態(tài)信息的至少一個(gè)元素;基于所述程序 狀態(tài)信息的所述重新定位的至少一個(gè)元素將所述程序中的指令轉(zhuǎn)換成可執(zhí)行二進(jìn)制代碼; 以及執(zhí)行所述可執(zhí)行二進(jìn)制代碼。
[0009] 在過去的數(shù)十年,惡意代碼注入已成為可能在裝置中破壞安全性的最普遍的攻 擊。作為響應(yīng),一些制造商(例如英特爾、AMD等)開始將數(shù)據(jù)執(zhí)行保護(hù)(諸如,例如寫X0R 執(zhí)行(W氣X)安全性特征)合并到它們的處理裝置中。W AX允許將可執(zhí)行代碼的某些 部分標(biāo)記為可寫或可執(zhí)行,但不是二者。用這種方式,惡意的注入代碼可被寫到裝置中,但 可不被執(zhí)行。WAX以及其它類似保護(hù)方案已經(jīng)被廣泛采用作為硬件實(shí)現(xiàn)的安全性,而未 遭受基于軟件的解決方案的漏洞。
[0010] 然而,最近的備選辦法已經(jīng)被設(shè)計(jì)成例如通過面向返回的編程(R0P)攻擊來回避 數(shù)據(jù)執(zhí)行保護(hù)。R0P可使程序的控制流轉(zhuǎn)向,而無需惡意代碼注入。相反,攻擊可通過將小 組件的地址放在程序棧上而將裝置中已經(jīng)存在的小組件(例如可由程序調(diào)用并且然后返 回到它們被調(diào)用的地方的子例程)鏈接在一起。這個(gè)棧操縱允許攻擊者"構(gòu)造"來自小組 件的程序,其否則將對裝置沒有造成威脅。用這種方式構(gòu)造的程序可與原始小組件創(chuàng)造者 所意圖的非常不同地執(zhí)行,并且可用于惡意動作,諸如,例如盜取信息、破壞信息、控制裝置 等。所有這些可在沒有惡意代碼注入的情況下實(shí)現(xiàn)。
[0011] 嘗試減輕R0P的現(xiàn)有技術(shù)基于裝置中可存在的三個(gè)漏洞:程序中缺乏控制流完整 性檢查、預(yù)先對攻擊者已知的指令序列(例如小組件)位置以及在R0P攻擊中可改變目的 的小組件的豐富使用。靜態(tài)流程控制監(jiān)視技術(shù),比如,例如在現(xiàn)代編譯器(例如GNU編譯器 集合中的ProPolice和CRED)中已經(jīng)采用棧特高頻噪聲和界限檢查。動態(tài)流程控制監(jiān)視技 術(shù)例如可包含采用陰影返回棧來觀察控制流的不可侵犯。然而,這些技術(shù)的實(shí)現(xiàn)已經(jīng)由于 性能和實(shí)現(xiàn)問題在行業(yè)中受到限制。代碼隨機(jī)化技術(shù)如地址空間布局隨機(jī)化(ASLR)被設(shè) 計(jì)成阻礙小組件位置察覺和可用性以在R0P攻擊中使用。ASLR在加載時(shí)間隨機(jī)化程序中每 個(gè)模塊的位置,使得攻擊者難以定位所需小組件。盡管ASLR不影響性能,但它也不是極簡 單的技術(shù),并且仍易受概率性攻擊。研宄已經(jīng)顯示,ASLR可在小于200秒內(nèi)被強(qiáng)力R0P攻 擊破壞。盡管在行業(yè)中已經(jīng)存在增大由ASLR經(jīng)由位置無關(guān)的可執(zhí)行(PIE)支持和內(nèi)核空 間隨機(jī)化提供的熵的嘗試,但ASLR仍易受熵減小技術(shù)影響,諸如,例如,嘗試經(jīng)由數(shù)據(jù)結(jié)構(gòu) (如裝置的虛擬地址空間中的*. got or *. pit)獲得位置信息的信息泄露攻擊、嘗試在堆上 分配大量存儲器以減小隨機(jī)化的范圍的"堆噴射(heap spraying)"攻擊,以及嘗試噴射不 難發(fā)現(xiàn)執(zhí)行開發(fā)所需的信息的開發(fā)代碼的充分實(shí)例的"JIT噴射"攻擊。在實(shí)際實(shí)踐中,對 微軟的Internet Explorer (例如在國家漏洞數(shù)據(jù)庫條目CVE-2012-1875/1889中備案的) 的近來R0P攻擊已經(jīng)進(jìn)一步演示了 ASLR沒有可能反對熵減小攻擊。
[0012] 圖1圖示了按照本公開的至少一個(gè)實(shí)施例的二進(jìn)制轉(zhuǎn)換器驅(qū)動的程序狀態(tài)重新 定位的示例。與本公開的至少一個(gè)實(shí)施例一致,裝置100可包含配置成以允許實(shí)際程序 訪問它們的小組件同時(shí)保持那些小組件的實(shí)際位置對入侵程序(例如惡意軟件)隱藏的 方式重新定位程序狀態(tài)的資源。裝置100的示例可包含但不限于