用于防止和檢測安全威脅的方法和系統的制作方法
【專利摘要】提供了用于在具有開放開發平臺的消費者電子裝置上實施平臺安全的系統和方法。該裝置具有包括在裝置硬件和應用軟件之間可操作的抽象層的類型。提供用于嵌入在形成操作系統的抽象層內的安全軟件代理。安全軟件代理被配置為通過阻止可加載核模塊加載、阻止對系統調用表進行寫入或阻止將調試工具附著到已認證的應用或內核組件的請求來限制對抽象層的訪問。
【專利說明】用于防止和檢測安全威脅的方法和系統
【技術領域】
[0001] 本公開總體上涉及防止和檢測對運行在電子裝置上的操作系統和已認證應用的 安全威脅。
【背景技術】
[0002] 諸如移動電話、平板電腦、游戲控制臺、機頂盒、電視、個人導航裝置和其他消費者 電子裝置的裝置(或簡稱為"裝置")通常由消費者從零售分發渠道(例如,消費者電子商店) 購買或可通過服務提供商(或簡稱為"運營商-例如,移動網絡運營商、廣播電視網絡提 供商或因特網視頻提供商-被銷售給或出租給消費者。傳統上,這樣的裝置是基于專有硬 件和操作系統并且不支持第三方軟件應用的封閉的裝置或嵌入式裝置。然而,這樣的裝置 已經愈加成為開放的裝置。應當理解的是,在本背景討論的情景中"開放"可以包括不同的 程度,包括但不限于:標準硬件(諸如基于Intel或ARM處理器的芯片上的系統)、開源操作 系統和軟件、用以使能第三方應用開發的開放的或公布的API和/或自由可更改的編程。
[0003] 這樣的裝置可包括開源操作系統,包括諸如Linux (最初由Linus Torvalds在全 世界開發人員的幫助下創建的開源Unix型操作系統)或Android (基于Linux內核的修改 版本且由加利福尼亞州Mountain View市Google公司市場化的開源移動操作系統)的那 些。
[0004] 以未被授權的使用和訪問的形式的對封閉或者嵌入式裝置的攻擊已經發生很多 年了。然而,對嵌入式裝置的這樣的黑客行為已經是需要硬件和軟件技能的專業組合的專 業的且高度技術的過程。相比之下,開放裝置具有許多開發人員和計算機黑客很好理解的 硬件和操作系統。因此,開放裝置的該趨勢大大增大了具有使得這樣的開放裝置更加易于 受到攻擊得多的知識和專長的計算機黑客的潛在數量。這樣的開放裝置還支持第三方應用 開發人員開發用于那些裝置的應用(例如,開放的API的)的能力,并且因此這樣的裝置還 愈加支持消費者在這樣的裝置上下載、安裝并執行第三方軟件應用(或簡稱為"應用")的能 力。這樣的應用不是由裝置的運營商或原始設備制造商(或簡稱為"OEM")開發的。就軟件設 計而言,這樣的應用可使用在翻譯程序或虛擬機內被執行的腳本語言(例如,JavaScript) 或直接在裝置上運行的原生代碼(例如,C或C++程序)被開發。
[0005] 消費者購買或出租的能力和在裝置上下載和安裝第三方軟件應用的能力可由OEM (例如Apple公司)、運營商或獨立于OEM或運營商的公司通常經由基于因特網的零售接口 - 例如,iTunes商店或Android市場(分別由Apple公司和Google公司操作的基于軟件的在 線數字媒體商店)來提供。基于因特網的零售接口提供第三方應用開發人員(或簡稱為"開 發人員")用以與基于因特網的零售接口提供商分享從應用的銷售獲得的收益的一部分。使 消費者能夠在裝置上下載和安裝這樣的第三方應用的趨勢也會增大消費者、運營商、開發 人員和OEM的除通常會與嵌入式裝置相關聯的那些之外的潛在安全問題。
[0006] 被賣給消費者的第三方軟件可能包含被稱為惡意軟件的懷有惡意的軟件(例如, 蠕蟲、病毒、特洛伊木馬、隱藏程式(rootkit)和后門)。這樣的惡意軟件可導致破壞消費者 隱私一例如,移動電話上的惡意軟件可經由移動電話的GPS能力監視用戶的位置并將這 樣的位置數據傳送給遠程服務器。惡意軟件也可導致裝置或相關服務的身份盜用或欺騙性 使用-例如,移動電話上的惡意軟件可以自動撥打向用戶的移動電話訂購添加收費的服 務。惡意軟件也可導致針對運營商的網絡穩定性問題-例如,移動電話上的惡意軟件可以 不當地使用諸如SMS或移動語音調用的網絡能力來創建對移動網絡運營商網絡的拒絕服 務攻擊,從而影響網絡服務質量或可用性。
[0007] 其他的安全問題包括未被授權的應用。基于因特網的零售接口的提供商可"認證" 應用或應用開發人員以確保在通過他們的基于因特網的零售接口被銷售的應用中不存在 惡意軟件。這用來提供對惡意軟件問題的一定程度的保護并防止應用否則危及裝置和/或 裝置網絡(即,移動網絡)的安全。如果該認證過程可以被避免或不是排他的,那么消費者可 能會不知不覺地從未被授權的基于因特網的零售接口或其他因特網網站將惡意軟件下載 到他們的裝置上。如果該認證過程可以被避免或不足以檢測潛在的惡意軟件,那么消費者 可能會不知不覺地從基于因特網的零售接口將惡意軟件下載到他們的裝置上。
[0008] 隱藏程式(rootkit)是通過暗中破壞標準操作系統功能或其他應用使能對計算機 的持續特權訪問同時對管理員主動隱藏其存在的一種特定類型的惡意軟件。通過rootkit 惡意軟件所作的攻擊包括若干階段并使用各種組件:在系統中存在作為利用對象用以利用 其并做出不可預知或并不意圖的一些事情的弱點或能力。利用的意圖通常是安裝可以在 幕后繼續運行的諸如附加惡意軟件組件的凈負荷,從而從遠程服務器接收并執行新指令。 典型的凈負荷活動包括私人用戶信息的秘密上傳、發送垃圾郵件或發動分布式拒絕服務 (DDOS)攻擊。
[0009] 很多rootkit利用可加載的內核模塊來修改運行的操作系統內核以執行凈負荷。 可加載的內核模塊包含用以在引導時不在存儲器中加載所有期望功能的情況下動態擴展 操作系統的運行內核的代碼。
[0010] rootkit檢測是困難的,這是因為rootkit也許能暗中破壞意圖找到它的軟件。已 知檢測方法包括:使用替代性的可信操作系統;基于行為的方法;簽名掃描;差別掃描;以 及存儲器轉儲分析。rootkit的移除可以是復雜的或幾乎不可能的,尤其在rootkit駐留于 操作系統內核中的情況下,其中操作系統的重新安裝可能是該問題的唯一可用解決方案。 在處理固件rootkit時,移除可能需要硬件替換或專業設備。
[0011] 平臺安全的現有方法(即意圖解決上面指出的安全問題中的一個或多個的安全措 施)通常涉及在本文中的下面部分被進一步分組和描述的以下方法中的一個或多個。
[0012] "操作系統安全"是操作系統經由其可提供包括過程隔離、訪問控制、專用應用編 程接口(API)和應用認證/簽名的一個或多個功能或能力以及應用許可服務的安全方法。 這樣的功能和能力進一步被描述如下。
[0013] "過程隔離"可被操作系統(或安裝在操作系統之下的管理程序(hypervisor))支 持,以確保每個應用和系統的各部分運行在其自己的過程和專用存儲器空間中,以使得在 默認情況下沒有應用有能力執行會不利地影響另一應用、操作系統(OS)或消費者的任何 操作。每個應用過程可被認為是運行在經常被稱為其自己的"沙盒(sandbox)"的其自己的 運行環境中。然而,為了開發對用戶有用的應用,多數應用必須能夠訪問在基本沙盒內不支 持的操作系統服務(例如,在移動電話操作系統上,發送短消息服務(SMS)文本消息,獲取 用戶位置,記錄電話呼叫,拍攝照片,等等)。這限制過程隔離或"沙盒"的效果,因為應用必 須訪問沙盒外的操作系統服務,這增大應用可能執行消極地影響其他應用、操作系統或消 費者的操作的可能性。
[0014] "訪問控制"涉及解決應用使用沙盒以外的OS服務或資源的需求或原生應用使用 會使得原生應用不利地影響其他應用、消費者或網絡的OS服務或資源的需求的能力。這 里,OS包括對是否對請求應用授權這樣的訪問做出決定的訪問控制功能。該訪問控制功能 可與許可概念結合起來。例如在來自Google公司的Android OS中,應用開發人員必須在 相關聯的清單文件中聲明他們的應用所需的許可以使得應用能夠執行可能不利地影響其 他應用、OS或消費者的任何操作。訪問控制決定也可能依據固有地被授予應用的特權(例 如,Linux OS中的用戶應用或根訪問)。與許可相關聯的問題之一與誰或什么將許可授予 給應用和授予者是否理解這樣的批準的含義(例如,在Android OS情況中是消費者授予這 樣的許可)的問題有關。另一問題是在許可被消費者或認證機構這樣授予之后這樣的許可 可能被惡意軟件或攻擊者修改。一些操作系統有使得能夠實施不同的訪問控制模型的訪問 控制框架(例如,Linux安全模塊(LSM))。LSM使得能夠將不同的訪問控制模型和功能實施 作為可加載的內核模塊。
[0015] "專用API"是用以限制應用訪問可能不利地影響平臺安全的操作系統服務或資源 的另一種機制。這里,雖然很多系統API可能是開放的或公開的,但OEM可通過維持從應用 開發人員訪問這樣的服務所需的API的保密性來限制對某些操作系統服務的訪問。這通常 與應用認證過程耦合,以確保被提交認證的應用不試圖調用這樣的專用API。
[0016] "應用認證/簽名"涉及確保應用不執行惡意操作和/或訪問專用API的當前使用 中的各種現有的應用認證過程。這些過程通常包括應用的靜態驗證(例如,在執行之前掃描 目標代碼)(例如,以驗證專用API不被應用調用)和動態驗證(例如,以驗證應用在執行期 間的"穩定性")。如果應用通過認證過程,那么它就以稍后可被驗證的形式被認證機構(其 也可能是基于因特網的零售接口提供商)數字地簽名。當前的應用認證方案的問題之一在 于,全面的驗證不易于自動化并且因此不是排他的。因為這,惡意操作可以被嵌入應用中以 使得它將僅在應用認證/簽名過程之后的預先指定時間執行。因此,這樣的惡意操作可以 避免在驗證過程期間被檢測到。應用認證的另一問題是可能必須被基于因特網的零售接口 提供商認證的應用的絕對數量。例如,估計Apple公司的用于提供用于他們的iPhone?品 牌智能電話的移動軟件應用的基于因特網的零售接口有超過300, 000個應用并且每星期 有10, 000個新應用被提交給Apple公司。這使得在認證之前執行應用的排他驗證變得由 于成本而被禁止。另一個問題是,計算機黑客可以修改或替換針對由基于因特網的零售接 口提供商生成的簽名驗證應用的完整性所使用的OS中的可信根(S卩,數字證書和軟件),以 便應用可以在應用認證/簽名之后被修改,使得與該應用相關聯的許可可以被修改以允許 敵對的第三方通過消費者將未被授權的或者盜版的應用加載到裝置上。
[0017] "應用許可服務"涉及系統借以提供許可服務的防止應用盜版的保護。例如, Android OS提供讓應用開發人員為所支付的應用強制執行許可策略的許可服務。然而,這 些類型的應用許可服務可能易于被計算機黑客通過修改應用以提取這樣的許可驗證檢查 來規避。
[0018] 除了在平臺安全內找到的每個以上功能和能力中的所指出的問題之外,還存在對 于過程隔離、訪問控制和應用許可服務來說常見的問題,由于該問題,支持這樣的安全功能 的OS的各部分可以通過修改執行這樣的功能的操作系統的各部分而被暗中破壞或繞過。 為了防止對OS安全功能或其他OS功能的這樣的改變,經常在裝置中實施利用"安全引導加 載器"的另一方法。
[0019] "安全引導加載器"(或簡稱"安全引導")被用來確保只有預期的引導軟件和OS內 核被加載到裝置上。這里,認證將適用的軟件與由裝置OEM生成的簽名相比較。引導軟件和 OS內核的認證或完整性驗證僅在裝置啟動期間發生,使得這種機制可以被在引導過程期間 發生的動態攻擊規避。一旦安全引導加載器被繞過了,OS可以被修改為繞開可能存在于OS 中的其他安全功能。這些動態攻擊可以是高度自動化的,使得它們可被消費者訪問,否則消 費者沒有用以獨立地實施這樣的攻擊的技術技能(即,越獄技術)。此外,一旦安全引導過程 已被危害就無法恢復用于已在實際應用中被部署的裝置的裝置安全。
[0020] 除了上面指出的與平臺安全相關的問題,還存在對于過程隔離、訪問控制、應用許 可服務、虛擬機和有關從攻擊恢復的能力的安全引導加載器來說常見的問題。通常,一旦發 生了攻擊,就沒有合適的機制來為已被銷售或許可或以其它方式被分發給消費者的裝置恢 復平臺安全。我們將其稱為"靜態安全",這是因為這樣的平臺安全的設計中的固有的假設 是:被落實到位的平臺安全機制在裝置的有用壽命期間將抵抗任何和所有攻擊。靜態安全 經常被攻擊并且這樣的攻擊然后被"打包"成可以被普通消費者實施的自動攻擊(例如,對 由Apple?所開發的iPhone?的已知越獄攻擊)。
[0021] "病毒檢測和入侵防護軟件"是被用來檢測惡意軟件并減輕這樣的惡意軟件可能 導致的任何損害的另一種安全方法。迄今,用以檢測諸如移動電話的裝置上的惡意軟件的 幾乎每個解決方案依賴于個人計算機(PC)防毒解決方案已使用數年的相同的基于"簽名" 的機制。術語"簽名"在這里不涉及數字簽名,而是通過其可識別特定惡意軟件的一組屬性 -例如,諸如具有特定長度以及在其內的某個位置具有特定的字節序列的屬性。然而,這些 簽名僅被理解為,一旦惡意軟件被部署了,就意味著惡意軟件可能已造成了損害。此外,這 些基于簽名的類型的解決方案必須不斷被更新并且必須能夠檢測數萬計的惡意軟件簽名。 這些不能單獨作為檢測并防止來自裝置上的惡意軟件的損害的唯一手段被依賴。此外,防 毒軟件本身可以被惡意軟件修改或禁用以防止這樣的檢測。
[0022] "虛擬機"是被用來應用平臺安全的又一安全方法。諸如Java?虛擬機(JVM)的虛 擬機被設計為允許從可能不可信的源獲得的應用的安全執行。JVM接受通常被稱為Java? 字節碼的計算機中間語言的形式,Java?字節碼在概念上是表示來自加利福尼亞州紅杉樹 市的Oracle公司的面向堆棧的能力架構的指令集的編程語言。Java?應用運行在被設計為 保護用戶免遭作弊代碼或惡意軟件的限制沙盒中。這伴隨著性能限制和功能方面的限制- 例如,應用被禁止訪問被認為"危險"的操作系統功能和資源。
[0023] 每個上述安全方法形成如現有技術圖1中所示的靜態平臺安全功能100的一部 分。此外,如圖1中所示的安全自舉加載110例如在2001年2月6日被授予Arbaugh等的 美國專利No. 6, 185, 678中是被熟知的,并且在本文中沒有進一步描述。
[0024] 因此,期望提供克服與防止裝置和該裝置上的數字資產的未授權使用的以前的方 法以及靜態平臺安全的限制相關聯的問題中的一些的安全機制。
【發明內容】
[0025] 根據第一方面,提供用于安全威脅的防止和檢測的系統和相關方法,其包括:裝置 硬件,所示裝置硬件包括至少一個CPU和存儲器;抽象層,其被存儲在所述存儲器中,可工 作在所述裝置硬件和應用軟件之間;以及嵌入所述抽象層的安全軟件代理,所述安全軟件 代理被配置為限制對所述抽象層的訪問。在一些方面中,所述抽象層是諸如Linux的開放 的操作系統,并且在一些方面中,所述安全軟件代理符合Linux安全模塊。
[0026] 根據相關方面,所述安全軟件代理被配置為防止加載被用來擴展所述抽象層的功 能的軟件代碼。在一些方面中,該軟件代碼是可加載內核模塊。在另一方面中,所述安全軟 件代理被配置為驗證所述可加載內核模塊,并且防止加載所述可加載內核模塊是基于成功 的驗證的。在一些方面中,所述驗證基于存儲在被所述代理訪問的安全存儲器中的所述可 加載內核模塊特有的信息。在一些方面中,所述安全軟件代理可以被并入加載可加載內核 模塊的內核工具中,在一些其他方面中,所述內核工具包括基于Unix的內核工具加載模塊 (insmod)。
[0027] 根據另一相關方面,所述安全軟件代理被配置為阻止寫覆蓋指向對所述抽象層的 系統調用的指針。在一些方面中,所述安全軟件代理阻止對包含指向系統調用的指針的系 統調用表進行寫入。在一些方面中,所述安全軟件代理阻止對包含所述系統調用表的存儲 器范圍進行寫入。
[0028] 根據又一相關方面,所述安全軟件代理被配置為阻止調試工具請求。在一些方面 中,所述安全軟件代理被配置為確定調試工具請求是否嘗試附著到已認證應用和所述抽象 層的組件中的任一個,并且所述安全軟件代理阻止所述調試工具請求是基于所述確定的。 在一些方面中,所述調試工具包括對所述抽象層的過程追蹤系統調用。在另一方面中,所述 調試工具是進程跟蹤(ptrace)或Android調試橋后臺程序。
[0029] 在審閱結合附圖進行的對特定實施例的以下描述后,其它方面和特征對于本領域 普通技術人員來說將變得清楚。
【專利附圖】
【附圖說明】
[0030] 為了更好地理解本文中所述的各種實施例并更清楚地示出可以如何實現它們, 現在將僅通過示例方式對示出至少一個示例性實施例的附圖進行參考,并且在附圖中: 圖1是表示現有技術的靜態平臺安全功能的示意圖。
[0031] 圖2A是示出如被應用到Android OS的實施例的層示意圖。
[0032] 圖2B是示出如被應用到Android OS的另一實施例的層示意圖。
[0033] 圖2C是示出如被應用到Android OS的又一實施例的層示意圖。
[0034] 圖3是示出根據圖2A的實施例的動態平臺安全功能的某些方面的示意圖。
[0035] 圖4是示出根據圖3的實施例的典型引導加載序列的示意圖。
[0036] 圖5是示出根據圖3的實施例的供應序列的示意圖。
[0037] 圖6是示出根據圖3的實施例的應用許可的安裝的示意圖。
[0038] 圖7是示出根據圖3的實施例的運行時期間的連續系統完整性的示意圖。
[0039] 圖8是示出根據圖3的實施例的運行時期間的用戶應用請求的驗證的示意圖。
[0040] 圖9是示出根據圖3的實施例的運行時期間的應用許可強制執行的示意圖。
[0041] 圖10是示出根據圖3的實施例的可加載內核模塊強制執行過程的示意圖。
[0042] 圖11是示出根據圖3的實施例的系統調用表保護過程的示意圖。
[0043] 圖12是示出根據圖3的實施例的調試阻止過程的示意圖。
【具體實施方式】
[0044] 雖然適用于任何移動電話、游戲控制臺、平板電腦、機頂盒、電視或其他消費者電 子裝置,但是本文中所述的實施例將根據使用諸如但不限于Linux或Android ? OS的開放 OS的這樣的裝置。尤其地,僅僅出于說明的目的,優選實施例將關于Android? OS被示出 和描述并且不應被解釋為限制本公開的預期范圍。實際上,在防止rootkit的安裝或防止 探查OS的弱點方面描述的一些優勢普遍適用于任何裝置0S,其中由于與這樣的開放裝置 相關聯的固有地更大的安全風險而對任何開放的裝置具有特別的用處。
[0045] 參考圖2A-C,示出分層執行堆棧的基本結構的Android TM OS環境的總體層示意 圖200。基礎層219涉及典型的片上系統(SOC)組件,包括中央處理單元(CPU)、圖形處理 單元(GPU)、和基本輸入/輸出系統(BIOS )駐留在其中的存儲器(只讀存儲器(ROM))。 圖2A-C中示出的最上層是在這里被示出為一個或多個Android?應用210a、210b的裝置應 用。中間層包括各種已知的軟件和硬件元件,包括硬盤驅動器(HDD)存儲裝置或閃存220、 OS內核215和管理OS原生應用223和Android? OS 213之間的系統調用的OS內核應用接 口層214。根據所示的實施例,分層執行堆棧還包括Android? OS 213和虛擬機(VM )層 211 (即,Dalvik,其是形成Android ? OS的整體的一部分的Android ? VM)之間的Java ? 訪問控制(JAC)層212。VM層用于將給定應用轉換成適于在給定裝置上以已知方式執行的 壓縮可執行形式(即,就Android ?應用而言的〃.dex〃格式)。JAC層212用于通過認證安全 代理(或簡稱為"代理")217和VM層211的機器可執行代碼之間的通信來提供安全訪問控 制。這樣的訪問控制功能可包括提供腳本應用與原生代理之間的橋梁以允許代理驗證腳本 應用的完整性從而將"應用"的范圍擴展到腳本應用的任何合適的已知機制。進一步應當 理解的是,如果所有應用都被假定為是原生應用224,那么將不需要JAC層212。
[0046] 應當理解的是,一些實施例可以結合如圖1中所示的已知靜態平臺安全功能100 而被實施。更具體地說,一些實施例可以通過確保執行這樣的功能的操作系統的各部分在 運行時期間或在引導過程期間不被修改而包括諸如過程隔離的現有OS系統安全功能。另 夕卜,實施例通過驗證遵循了正確的安全引導加載器路徑并通過動態驗證OS和引導加載器 的完整性來補充現有的安全引導加載器功能(如圖2A-C所示的第1階段引導加載器221和 第2階段引導加載器222)。應當理解的是,這樣的安全引導加載器僅在啟動期間起到如此 作用。
[0047] 代理217被嵌入OS內核215中,并且優選地被實施為使用Linux安全模塊接口 (LSM 1/F)。代理217在其中來自應用的用戶級系統調用即將導致對諸如索引節點和任務 控制塊的重要內部內核對象的訪問的內核中的點處插入"鉤"(上調用代理217)。在本文 中不對LSM進一步討論,因為它是允許Linux內核支持各種計算機安全模型而不偏愛任 何單個的安全實施方案的已知框架(其適用于Android?以及Linux分布)。為了使得代理 217抵抗篡改、更改和反向工程攻擊,代理217使用已知軟件保護技術保護其自身,已知軟 件保護技術諸如但不限于在每個均被授予Chow等人的美國專利號6, 594, 761、6, 779, 114、 6, 842, 862和7, 506, 177中被更詳細地描述的那些,上述專利示出可結合所公開的實施例 使用的這樣的抗篡改性的示例。
[0048] 應當理解的是,代理217形成OS內核215的完整的且不可拆分的一部分,沒有其 的情況下,裝置OS 213和/或應用210a、210b、224將停止正確地起作用。代理217的功 能的一個示例是監視OS 213和被加載到裝置上的應用210a、210b、224的完整性并檢測OS 213或者安全引導221、222的任何破壞。代理217維持并具有對安全數據存儲器218的唯 一訪問權限,代理217將關于應用資源訪問控制、應用許可、完整性驗證、內核資源訪問控 制的代理性能的信息保持在安全數據存儲器218內。雖然安全存儲器218在圖2A中被示 出為是本發明的系統的單獨的組件,但應當理解的是,安全存儲器218可存在于硬盤驅動 器或閃存220中,如在圖2B的替換實施例201中所看到的那樣。另外,安全存儲器218可 作為芯片基礎層219上的系統內的安全存儲器存在,如在圖2C中的另一替換實施例202中 所看到的那樣。
[0049] 就內核資源訪問控制而言,代理被配置為控制對OS內核資源和數據的應用訪問。 由代理217做出的訪問控制決定是基于但不限于諸如以下的因素:OS內核完整性、應用完 整性、應用情景以及由任何給定可信根機構授予的特權。根據OS內核完整性的訪問控制決 定確定內核是否已被修改、替換、增加或以未授權的方式被部分移除。訪問控制決定還將確 定安全引導過程甚至是否發生。如果OS內核被修改、替換、增加或被部分移除或者安全引 導過程無法被肯定地驗證,該確定會起到使代理217或應用224或諸如媒體播放器的安全 應用賴以正常運行的很多假設無效的作用。基于應用完整性的訪問控制決定確定嘗試訪問 OS內核資源的應用是否以任何方式(例如,將惡意軟件插入應用中或通過其他惡意軟件)被 修改了或者與該應用相關聯的特權是否已被修改(例如,給予其訪問沒有被認證機構授權 的系統資源的特權)。
[0050] 基于應用情景的訪問控制決定確定給定應用是否正以該應用的情景以外的某些 方式在起作用。因此,代理217可以做出情景敏感訪問控制決定。基于任何給定可信根機 構的訪問控制決定確定與該機構有關的應用許可。換而言之,一些實施例可能支持多個應 用簽發機構,使得代理217可就對系統資源的訪問而言向由高度可信的機構簽發的應用授 予與可被授予由較不可信的機構簽發的應用或完全未被認證的應用的自由度相比更大的 自由度。
[0051] 就代理的完整性驗證性能而言,代理被配置為動態監視(例如,當軟件正在運行時 在存儲器中)內核、安全引導組件、代理本身和所有受保護的應用和未被保護的應用的完整 性,以確定這些項中的任何一個是否已在給定應用的執行期間在任何時間以任何方式被修 改了(例如,可能使用調試程序被實施的動態篡改)。
[0052] 就代理的應用資源控制性能而言,代理217被配置為控制對應用資源的訪問,所 述應用資源可以包括例如已被代理217加密的應用的一部分或應用執行所需的數據文件 (例如,游戲資源文件)或用以控制應用的執行的數據。這樣的訪問控制決定是基于諸如但 不限于如下的因素:有效許可數據的存在或者對裝置或消費者的身份的確認,兩者中的任 一個均被設計為保護應用免遭盜版。
[0053] 代理217可以被體現為軟件并由具有固定接口的多樣代碼部分組合生成。代碼部 分中的這樣的變化的產生可以根據已知的方法或這樣的方法的組合來完成,所述方法包括 在每個均被授予Chow等人的美國專利號6, 594, 761、6, 779, 114、6, 842, 862或7, 506, 177 中被描述的那些或任何其它合適的已知方法。這樣的變化可以被稱為"多樣代理"或"更新 代理。"多樣代理是具有相同的功能F、但在結構上和語義上不同的那些。生成和部署多樣 代理的目標是防止自動攻擊-即,可被充分自動化以使得其容易被普通消費者使用且會 適用于每個和每一個部署在裝置的某已安裝基礎中的代理的由老練的攻擊者所開發的攻 擊。這樣的多樣代理可跨不同實體化的裝置、不同類型的裝置、在不同地理地區售出的裝置 或通過不同運營商售出的裝置等等被部署。
[0054] 更新代理是如下這樣的代理:憑借該代理,如果具有功能集Fl的代理Al被部署 在域中并以某種方式被危害或攻擊,那么可期望修復這樣的弱點。這可以通過生成包含功 能Fl但還包含被設計用以防止對Al的攻擊的新功能的代理A2來完成。該增加的功能F2 使得A2的功能現在是Fl + F2。通過將多樣性能力應用到A2,對于攻擊者來說更加難以在 實施新功能F2的A2中隔離軟件功能(例如,通過差異分析)。更新代理提供用以解決對裝 置或已被部署在域中的代理的攻擊的機制。這樣的更新代理可以被消費者下載,通過軟件 更新機制被推送至裝置,或通過現有代理被拉到裝置。在這樣的更新發生的情況下,應當理 解的是,它們是通過在識別和分析由安全威脅所進行的任何嘗試的或者實際成功的攻擊后 將代理軟件配置用于更新來完成的。因此,可以針對"開發中的"攻擊發布對代理217的更 新,因為計算機黑客會經常發布開發中的攻擊或已知弱點的信息,但是其尚未成功達到攻 擊者目標。
[0055] 關于圖3,示出了根據圖2中示出的一般化堆棧架構的動態平臺安全功能的更詳 細的示意圖300。這里,在與現有技術的圖1比較時,可以清楚地看到所示出的實施例如何 補充并可以結合已知的靜態平臺安全功能被實施。如在以前的圖2A-2C中一樣,基礎層包 括典型的SOC 329組件,其包括CPU 330和BIOS 331駐留在其中的ROM 333。
[0056] 就圖3中所示出的操作而言,存在如所示出的那樣被提供的典型的安全引導加載 器序列310。應當理解的是,一些實施例可以利用現有的安全引導技術。還應當同樣被理 解的是,引導序列可被同樣地應用到第1階段或之后的許多階段。通常,在如圖3所示的系 統中有2個引導加載階段334、335。一般而言,發生安全引導組件的自下而上的驗證,因為 第一組件在將執行控制轉移到下一組件之前驗證第二個組件。該引導時間完整性驗證通過 虛線的方式被示出。這里,第一階段發生在裝置復位之后,其中ROM代碼被硬連線到裝置復 位地址。在驗證下一引導階段是預期的引導階段后,ROM (或引導R0M)333加載下一引導階 段334。該驗證或認證是通過計算來自HDD或閃存328的數字簽名來執行的。如果數字簽 名匹配預先計算出的值(如所示的那樣被封裝在數字證書332中),那么OS引導加載器335 將被加載到主存儲器中并被執行。如果簽名在任何階段都不匹配預先計算出的值,則執行 控制將不會轉到下一階段并且裝置將無法引導。當OS引導加載器335具有執行控制時,OS 引導加載器335執行驗證來自HDD或閃存328的OS鏡像的類似操作。同樣,如果計算出的 簽名匹配預期的預先計算出的簽名,則它將加載到OS鏡像的存儲器中并且將控制轉到OS 鏡像(即,如所示的在Android? OS 339中運行的Linux內核325)。OS鏡像然后將初始化, 并且在這個過程期間代理336也將被初始化。雖然代理336被包括在被數字地簽名的OS 鏡像內,但應當理解的是,代理336可被更新。這是因為,簽名被分解成邏輯模塊分離并且 每個模塊具有在安全引導過程期間被檢查的其自己的簽名。因此,任何模塊可被替換,盡管 簽名必須是有效的且在具有數字簽名私鑰的情況下是密碼可信的。
[0057] 繼續參考圖3,0S內核325被示出為被修改用于Android? OS 339的Linux內核。 可使用Linux安全模塊("LSM")來實施OS內核325。如上面被提及的,LSM是允許Linux內 核325支持各種計算機安全模型同時避免偏愛任何單個的安全實施的框架。LSM在Linux內 核325中的其中用戶級系統調用即將導致對重要內部內核對象的訪問每點處提供鉤。LSM 可被用于實施廣泛的安全功能(例如,強制訪問控制(MAC)、按訪問病毒檢查)。
[0058] 代理336也可被配置為包括完整性驗證(或簡稱為" IV")。被嵌入代理336中的 IV功能使得代理336能夠執行靜態完整性驗證(例如,對HDD或對閃存)和動態完整性驗證 (例如,在隨機存取存儲器(RAM)中)。通過計算用于應用或系統組件的哈希值并且然后將其 與哈希函數的已知好值相比較來實施IV。如果計算出的值與所存儲的已知好值相同,那么 代理假設該組件沒有被攻擊者修改過。然而,如果計算出的值不同于所存儲的已知好值,則 代理假設該組件已被修改并且不能再被信任用以執行打算要它執行的功能或者它不應該 再具有最初指派給它的相同的特權。
[0059] 如圖3中所示的,代理336在進行中的基礎上對多個裝置軟件組件執行IV檢查。 進行該"完整性監視"是為了檢測任何未被授權的更改(例如,篡改),諸如對支持系統的安 全目標來說至關重要的組件或子組件的更改、替代、移除或增加。
[0060] 由代理336經由IV所監視的這樣的組件可包括:R0M BIOS 331 ;HDD或裝置閃存 328 ;第1階段引導加載器334 ;第2階段引導加載器335 ;Linux內核325或Linux內核的 部分;系統調用接口(1/F) 338 ;包括安全存儲器327的代理336(在引導時間和運行時兩者 期間,如分別通過圖3中的虛線箭頭和實線箭頭所指示的那樣);原生應用320 ;Android? OS 339 ;原生 Android?應用 321 JAC 324 ;Android?(Dalvik)虛擬機 323 ;Android?應用 322 ;以及應用和系統供應序列(如下面針對圖4和5進一步描述的)。
[0061] 對原生應用1 320的這樣的完整性監視(通過實線箭頭示出)在圖3中被示出。 這里,代理336連續地監視原生應用1 320,使得在原生應用1 320嘗試通過系統調用1/F 338訪問系統資源時完整性被驗證。這通過簽名驗證337而發生,由此,代理336通過將 簽名1 340與對應于應用1資源的已知好值相比較來實施IV。具體地,應用1資源包括IV 信息和存儲在安全存儲器327中的應用簽名證書。如果簽名1值與所存儲的應用簽名證書 (即,已知好值)相同,那么代理336假設原生應用1 320沒有被攻擊者修改過并且其許可或 特權341沒有被修改過。然而,如果簽名1值不同于已知好值,那么代理336假設原生應用 1 320已被修改了并且不能再被信任用以執行打算要它執行的功能。這個過程針對可能存 在的直到原生應用n 321的所有原生應用而發生。
[0062] 將針對其中示出有運行時引導加載序列400的圖4進一步解釋圖3中示出的過程 隔離塊326。尤其地,在裝置復位后,可以看到對安全引導組件的自上而下的驗證(在步驟 1、2和3)。該驗證用于確保被加載到裝置上的OS是OEM或運營商所預期的那個并且該OS 具有預期的功能。一旦代理336在初始化期間獲得執行控制(在步驟4),代理336就將對其 自身以及包括引導ROM鏡像、OS引導加載器以及OS鏡像的安全引導加載器的以前被執行 的組件執行IV。如果由代理336通過使用與駐留在代理安全存儲器327中的數據的比較 (在步驟5至8)確認了所有這些組件的完整性(從步驟1至步驟4),那么代理336假設安 裝在裝置上的OS是預期OS并且可被OS執行的某些安全功能沒有被修改過。然而,如果代 理336確定所述組件中的一個或多個未能被認證,則代理336可采取更正動作。
[0063] 代理336采取的可能更正動作是:將引導組件替換為預期引導組件的備份鏡像, 然后復位裝置并再次開始啟動過程。如果代理336在多次嘗試更正無效的組件之后檢測到 系統是無效的,那么代理336可以否決對重要系統資源或應用資源的所有進一步的訪問。 應當容易清楚的是,嘗試的次數是使用預定變量的設計選擇問題。同樣,對哪些資源可被認 為是重要的確定可以基于給定裝置用途被預先確定。代理336也可以實施其它更正動作。 [0064] 應當理解的是,之前的詳細描述假定應用已存在并且因此是OEM、運營商、基于因 特網的零售接口提供商所已知的并且繼而是代理336所已知的。然而,容易清楚的是,新的 應用可被開發并且舊的應用可被更新。因此,圖5示出應用認證過程500期間的被應用到 由開發者提交的應用(未被保護的)的處理。代理可以包括資產保護工具514,其可以被實 施作為被配置為創建和更新加密的應用安全存儲器512的軟件工具。資產保護工具514存 儲用以保護未被保護的應用的信息。應當理解的是,各種反篡改技術可以被應用到所存儲 的信息,諸如但不限于安全加載器和IV,以及用以保護休眠中的(例如,磁盤上的)和使用 中的(例如,存儲器中的)密碼秘密的白盒密碼的使用。
[0065] 進一步關于圖5,在步驟1提供了未被保護的資產515 (S卩,來自開發人員的新應 用)。在步驟2,未簽名的增強許可容器清單510被應用開發人員或開發系統創建。其列出 由認證機構授予應用的許可(A,B,...等等)。此外,許可被映射到內核系統調用的特定 集合。在創建未簽名清單510之后,在步驟3資產保護工具514被配置為生成或使用所提 供的專用可信根密鑰511。該可信根可由資產保護工具自動地且隨機地生成。資產保護工 具514然后在步驟4經由資產保護工具514對未簽名的應用515進行簽名并將結果放入存 在于應用安全存儲器512內的已簽名的增強許可容器清單中。此外,在步驟5將增強許可 容器清單的已簽名版本存儲在其中放置有專用于給定資產的信息(例如,代碼簽名、增強許 可容器清單、可信根密鑰)的應用安全存儲器512中。步驟6處的所產生的結果是全供應的 應用的形式的已簽名的且受保護的資產513。可選地,未被保護的新應用可具有包裹其的安 全加載器,以便提供具有靜態篡改抵抗性且被IV使能的結果得到的受保護資產。
[0066] 還應當理解的是,不是所有應用類型都可被供應用于上面所討論的資產保護工 具的任何特定實施例。例如,在具體涉及Android? OS的實施例中,可被供應、安裝并且 隨后運行在實施本實施例的系統上的典型應用類型列表可被限制為原生OS應用、原生 Android ?應用和Android ?應用。除在此被說明的特定Android ? OS實施之外,其他開放 的OS實施當然可以是可能的。
[0067] 在圖5的供應序列中創建的許可信息在到裝置上的安裝期間以及給定應用的運 行時期間進一步被代理336使用。此外,當選自可用應用類型的給定應用代碼被供應時,應 用安全存儲器中的結果得到的已簽名增強許可容器清單包含應用代碼在運行時期間需要 的所有許可。增強許可容器清單可以指定應用代碼簽名和容器本身的簽名,以防止容器或 應用在應用代碼已被簽名之后被篡改。
[0068] 關于圖6,示出了應用許可的初始安裝600。已簽名增強許可容器清單611在圖5 中在供應時間期間被創建的應用安全存儲器610內被找到。正如以前提到的,增強許可容 器清單611被資產保護工具514加密。因此,這促進增強許可容器清單611從應用安全存 儲器610到代理安全存儲器612的轉移。應用安全存儲器610和代理安全存儲器612兩者 都包括如大體示出在圖3中的安全存儲器。
[0069] 在增強許可容器清單內611內,存在許可列表(S卩,許可A,許可B,...等等)。許 可列表確定什么OS內核資源可以被形成正被安裝和運行的應用的給定應用代碼訪問。應 用代碼簽名被代理613用來對應用執行IV,以確保當它針對特定內核許可做出諸如"安裝" 請求的OS請求時它沒有被修改過。容器簽名是用于容器本身的參考值,并且被代理613用 來確保容器的內容沒有改變過。一旦OS和應用的完整性被驗證了,被安裝的應用的增強許 可容器清單就將被存儲在代理安全存儲器612中,以用作該應用的其他許可請求的將來參 考。
[0070] 進一步關于圖6,安裝序列包括在步驟1首先依照來自應用代碼615的安裝器指 令向OS內核614發送安裝應用的請求。隨后,OS內核614在步驟2將該請求傳遞給代理 613。代理613在步驟3驗證(如上面已經描述的那樣通過IV)0S內核614。如先前在上面 指出的,應當理解的是,代理613也以進行中的方式(S卩,作為后臺過程)驗證OS內核614。 在步驟4,代理613訪問應用安全存儲器610以從其獲取已簽名增強許可容器清單611。代 理613在步驟5使用已簽名增強許可容器清單611通過IV驗證應用的已簽名增強許可容器 清單。代理613在步驟6將被驗證的應用的增強許可容器清單存儲到代理安全存儲器612 中以供將來參考。基于步驟5的驗證操作,在步驟7代理613允許或否決到OS內核614的 安裝。繼而,OS內核614在步驟8將許可(允許或否決)傳遞給正在安裝待安裝的應用的安 裝器指令,以最終允許或否決應用代碼615的安裝。
[0071] 如上面被提及的,代理以進行中的方式在需要內核操作時驗證OS內核。該內核訪 問控制700就連續的運行時系統完整性方面在圖7中被示出。無論任何應用何時針對內核 服務做出OS請求都如何維持整個系統完整性的序列。在圖7中,被安裝的且正運行的應用 (即,用戶應用)710被示出為正在為OS服務或資源711做出請求。該請求被傳遞給OS內核 712并且該請求繼而經由將最終允許或否決該請求的LSM功能被傳遞給代理713。被代理 713使用以允許或否決應用請求的標準可以包括:系統/應用完整性、應用許可、應用行為、 用于可能正在運行的其他應用的安全情景、以及遠程命令(元件216,在前面關于圖2A被示 出)。
[0072] 與系統/應用完整性相關的代理決定標準包括是否檢測到對系統或者應用組件 的篡改。
[0073] 與應用許可相關的代理決定標準包括應用是否具有用以做出這樣的請求的必要 許可。在Android? OS中,這樣的許可在與應用相關聯的清單文件中被聲明。應用開發人 員必須聲明這些許可并且由消費者決定是授予還是不授予可能是有問題的(因為消費者通 常不知道他們的動作的安全含義)這些許可。
[0074] 與應用的行為相關的代理決定標準忽視應用是否可以具有訪問某些內核服務的 許可并且相反依賴于應用的行為。例如,每隔15秒請求消費者GPS坐標并且然后嘗試通過 諸如SMS的某些消息傳遞協議將這樣的坐標發送給第三方的應用很可能是"間諜軟件"。這 樣的行為因此可能導致請求否決,即使應用可能具有與關于GPS坐標的內核服務相關聯的 許可也是這樣(即,如果應用具有被授予位置數據的權限、但是不具有被授予SMS數據的權 限,則代理會阻止訪問)。
[0075] 與可能正在運行的任何其它應用的安全情景有關的代理決定標準也忽視應用是 否可能具有訪問某些內核服務的許可,并且相反查看當另一可信應用正在運行時允許請求 是否會消極地影響這些可信應用中的一個或多個。換而言之,代理在運行時適當地強制執 行許可。例如,進行請求的應用可能在實施數字權利管理的可信高分辨率視頻播放器應用 已加密高分辨率視頻之后嘗試訪問某些存儲器或驅動器以捕獲該視頻,由此對該進行請求 的應用對該高分辨率視頻數據的使用的合適性產生疑問(即代理可能阻止對屏幕緩沖存儲 器的訪問,雖然允許視頻本身的播放)。
[0076] 與遠程命令相關的代理決定標準涉及向代理提供支持可覆蓋應用許可或特權的 來自遠程實體(例如,服務提供商)的命令的能力。例如,移動運營商可能希望禁用被偷了的 移動裝置。在此情況下,代理也會使提供系統訪問的決定基于會防止裝置被裝置的未被授 權用戶使用的遠程命令。例如,移動運營商可能希望禁用或限制一個或多個應用對網絡服 務或其他內核資源的訪問,如果這樣的應用正在導致網絡可靠性或穩定性的問題(例如,通 過產生網絡不能承受的大量流量或連接)的話。在此情況下,代理會覆蓋應用具有的特權或 根本防止應用執行。
[0077] 此外,這樣的來自遠程命令控制器的命令可被用來限制許可(例如,減少特權、改 變特權或撤銷特權)。此外,這樣的來自遠程命令控制器的命令可被用來從裝置移除應用, 包括終止應用(如果當前正在執行的話)、從存儲器移除應用或完全卸載應用。總的來說,重 要的是注意,所描述的實施例可能不僅用來"殺死"應用,還可能用來限制對系統資源的訪 問(除了被隱含在與給定應用相關聯的特權中的訪問之外)_例如,即使應用有特權發送 SMS消息,這也不被量化在特權中,以使得在應用例如1小時發送10, 000條SMS消息時,代 理可以根據存儲在代理安全存儲器中的某"正常行為"模板或根據遠程命令"減緩該向后"。 另外,代理可被用來將異常行為報告回遠程實體,以便,例如,移動運營商或指定第三方可 以對要做什么做出決定(例如,應用已經在一定時間段期間針對系統資源做出了 X次請求)。
[0078] 使用上面提到的標準用于正在進行的運行時系統完整性,在圖7中示出的內核訪 問控制700包括由用戶應用710在步驟1做出的初始OS請求。繼而,應用在步驟2創建軟 件中斷或者以其它方式為OS創建事件。在OS內核712中,LSM在步驟3收到請求711(即, 中斷/事件)并向代理713傳遞該請求711。在步驟4代理713使用如上所述的標準完整 性驗證應用710以及許可。在步驟5,代理713驗證用戶請求存儲器堆棧。之后,在步驟6 代理713完整性驗證存儲器中的OS內核鏡像。正如以前提到的,IV檢查由代理713在進 行中的基礎上運行。該檢查驗證IV過程仍在運行并且沒有檢測到篡改的任何證據。基于 該系統驗證過程(步驟4、5和6),代理713因此允許或否決請求,并且在步驟7,將對請求的 允許或否決傳遞給OS內核712。繼而,在步驟8 OS內核712將對請求的允許或否決傳遞下 去。在此時,在具有允許或否決請求的決定的情況下在步驟9應用事件將控制返回至應用 710。
[0079] 如圖7的連續的運行時系統完整性中,應當理解的是,應用也可以以進行中的方 式被驗證。因此,在圖8中示出了對應用請求的運行時驗證。通常,應用必須未以任何方式 被篡改,否則這里的驗證將失敗。圖8中的堆棧圖800示出一些實施例如何可以有效地提供 應用完整性監視同時維持系統完整性。示出了用于代理812、OS內核811和應用810的地 址空間。當代理被嵌入OS內核中時,應當理解的是,代理地址空間812因此與OS內核地址 空間811共享。調用堆棧中的返回地址是到被包含在代理中的完整性驗證信息的數據點。 應用的運行時驗證(在步驟1)的開始涉及代理針對OS服務走過請求的堆棧同時驗證所有 返回地址(在步驟2至4)并且利用調用堆棧簽名對地址范圍執行完整性驗證,如下面所述 的那樣。當應用針對任何OS內核服務做出請求時,OS內核將內核服務的該請求傳遞給代 理。該OS內核是LSM使能的,使得代理被要求允許或否決該請求。
[0080] 運行時調用堆棧簽名計算可以使用堆棧上的每個返回地址到堆棧頂部之間的距 離(以字節為單位)來完成。表A代表用于代理812、0S內核811以及應用810的示例調用 堆棧。
【權利要求】
1. 一種用于防止安全威脅的系統,所述系統包括: 裝置硬件,其包括至少一個CPU和存儲器; 抽象層,其被存儲在所述存儲器中,所述抽象層可工作在所述裝置硬件和應用軟件之 間;以及 嵌入所述抽象層的安全軟件代理,所述安全軟件代理被配置為限制對所述抽象層的訪 問。
2. 根據權利要求1所述的系統,其中所述抽象層是開放的操作系統。
3. 根據權利要求2所述的系統,其中所述開放的操作系統包括Linux內核。
4. 根據權利要求3所述的系統,其中所述安全軟件代理符合Linux安全模塊。
5. 根據權利要求1-4中任一項所述的系統,其中所述安全軟件代理被配置為防止加 載用以擴展所述抽象層的功能的軟件代碼。
6. 根據權利要求5所述的系統,其中所述軟件代碼是可加載內核模塊。
7. 根據權利要求6所述的系統,其中所述安全軟件代理被進一步配置為驗證所述可 加載內核模塊,并且防止加載所述可加載內核模塊是基于所述驗證的。
8. 根據權利要求7所述的系統,其中所述安全軟件代理基于存儲在安全存儲器中的 所述可加載內核模塊特有的安全信息驗證所述可加載內核模塊。
9. 根據權利要求5-8中任一項所述的系統,其中所述安全軟件代理的一部分被并入 用于加載用以擴展所述抽象層的功能的軟件代碼的內核工具中。
10. 根據權利要求9所述的系統,其中所述內核工具是加載模塊。
11. 根據權利要求1-4中任一項所述的系統,其中所述安全軟件代理被配置為阻止寫 覆蓋指向對所述抽象層的系統調用的至少一個指針。
12. 根據權利要求1-4中任一項所述的系統,其中所述安全軟件代理被配置為阻止對 具有指向系統調用的至少一個指針的系統調用表進行寫入。
13. 根據權利要求11和12中任一項所述的系統,其中所述安全軟件代理阻止對包含 所述系統調用表的存儲器范圍進行寫入。
14. 根據權利要求1-4中任一項所述的系統,其中所述安全軟件代理被配置為阻止調 試工具請求。
15. 根據權利要求14所述的系統,其中所述安全軟件代理被配置為確定調試工具請 求是否嘗試附著到已認證應用和所述抽象層的組件中的任一個,并且所述安全軟件代理基 于所述確定而阻止所述調試工具請求。
16. 根據權利要求14和15中任一項所述的系統,其中所述調試工具包括對所述抽象 層的過程追蹤系統調用。
17. 根據權利要求14-16中任一項所述的系統,其中所述調試工具是進程跟蹤和ADBd 中的任一個。
18. -種防止裝置上的安全威脅的方法,所述裝置具有可工作在裝置硬件和應用軟件 之間的抽象層,所述方法包括: 將安全軟件代理嵌入所述抽象層中;以及 通過所述安全軟件代理限制對所述抽象層的訪問。
19. 根據權利要求18所述的方法,其中所述抽象層是開放的操作系統。
20. 根據權利要求19所述的方法,其中所述開放的操作系統包括Linux內核。
21. 根據權利要求20所述的方法,其中所述安全軟件代理符合Linux安全模塊。
22. 根據權利要求18-20中任一項所述的方法,其中通過所述安全軟件代理限制對所 述抽象層的訪問包括:所述安全軟件代理防止加載用以擴展所述抽象層的功能的軟件代 碼。
23. 根據權利要求22所述的方法,其中所述軟件代碼是可加載內核模塊。
24. 根據權利要求23所述的方法,其中通過所述安全軟件代理限制對所述抽象層的 訪問包括:所述安全軟件代理驗證所述可加載內核模塊,并且防止加載是基于成功的驗證 的。
25. 根據權利要求24所述的方法,其中所述安全軟件代理基于存儲在安全存儲器中 的所述可加載內核模塊特有的安全信息驗證所述可加載內核模塊。
26. 根據權利要求22-25中任一項所述的方法,其中所述安全軟件代理的一部分被并 入用于加載用以擴展所述抽象層的功能的軟件代碼的內核工具中。
27. 根據權利要求26所述的方法,其中所述內核工具是加載模塊。
28. 根據權利要求18-20中任一項所述的方法,其中通過所述安全軟件代理限制對所 述抽象層的訪問包括:所述安全軟件代理阻止寫覆蓋指向對所述抽象層的系統調用的至少 一個指針。
29. 根據權利要求18-20中任一項所述的方法,其中通過所述安全軟件代理限制對所 述抽象層的訪問包括:所述安全軟件代理阻止對具有指向系統調用的至少一個指針的系統 調用表進行寫入。
30. 根據權利要求28和29中任一項所述的方法,其中所述安全軟件代理阻止對包含 所述系統調用表的存儲器范圍進行寫入。
31. 根據權利要求18-20中任一項所述的方法,其中通過所述安全軟件代理限制對所 述抽象層的訪問包括:所述安全軟件代理阻止調試工具請求。
32. 根據權利要求31所述的方法,還包括:所述安全軟件代理確定所述調試工具請求 是否嘗試附著到已認證應用和所述抽象層的組件中的任一個,并且基于所述確定而阻止所 述調試工具請求。
33. 根據權利要求31和32中任一項所述的方法,其中所述調試工具包括對所述抽象 層的過程追蹤系統調用。
34. 根據權利要求31-33中任一項所述的方法,其中所述調試工具是進程跟蹤和ADBd 中的任一個。
【文檔編號】G06F21/56GK104335220SQ201280073522
【公開日】2015年2月4日 申請日期:2012年3月30日 優先權日:2012年3月30日
【發明者】R.范德吉斯特 申請人:愛迪德加拿大公司