[發明專利]用于硬件流控制的代碼指針驗證有效
| 申請號: | 201580055470.0 | 申請日: | 2015-09-24 |
| 公開(公告)號: | CN106796634B | 公開(公告)日: | 2018-07-20 |
| 發明(設計)人: | 詹·阿恰爾;阿爾溫德·克里希納斯瓦米;羅伯特·圖爾納 | 申請(專利權)人: | 高通股份有限公司 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52 |
| 代理公司: | 北京律盟知識產權代理有限責任公司 11287 | 代理人: | 楊林勛 |
| 地址: | 美國加利*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 硬件 控制 代碼 指針 驗證 | ||
本發明提供用于在處理器中強制執行軟件程序的流控制的技術。根據這些技術的實例方法包含:分析所述軟件程序的程序代碼以識別所述程序代碼中的代碼指針;基于所述代碼指針產生驗證標記;以及用所述驗證標記來修改所述程序代碼中的所述代碼指針以產生帶標記的代碼指針。
背景技術
軟件實施錯誤,例如遺漏或不正確輸入驗證,可導致越界緩沖區存取和存儲器損壞。這些實施錯誤可導致軟件在正常條件下變得不穩定或最終失效。然而,當輸入被意圖攻擊計算機系統的惡意方操控時,攻擊者可利用這些存儲器損壞和溢出錯誤來改變軟件代碼的預期行為,并執行由攻擊者確定的代碼或功能性。
攻擊者通常通過改寫存儲器中的數據結構(例如返回地址、函數指針或虛表指針)取得對執行的控制。在大型和傳統的代碼庫中尋找和修理全部可利用的存儲器損壞錯誤并不總是可能的。因此,許多計算機系統含有被稱作“利用減輕機制”的一般防御特征,其有效地對抗攻擊者用來利用這些錯誤取得對目標計算機系統的控制和/或破壞目標計算機系統的眾所周知的技術。
通常包含于計算機系統中的利用減輕機制的一些實例包含:數據執行防止(DEP)、堆棧保護(SP)和地址空間布局隨機化(ASLR)。在DEP技術中,全部代碼區被標記為只讀,并且全部可寫入區是不可執行的。通常,代碼區的只讀特性和可寫入區的不可執行特性是通過處理器的存儲器管理單元(MMU)強制執行。此技術可防止攻擊者將其自己的代碼放入數據區中并將執行流引導到所述代碼。在SP方法中,編譯程序實施用于檢測堆棧上的緩沖區溢出的功能。由于就在本地陣列后的堆棧上經常存在返回地址或所保存的鏈接寄存器,所以基于堆棧的緩沖區溢出會很容易被利用。攻擊者可致使本地陣列溢出并改寫返回地址/鏈接寄存器,且重新引導軟件的執行流。許多常規堆棧保護實施方案將保護值插入到函數序言中的堆棧上,并且在從所述函數返回之前,檢查所述值的修改。如果已發生緩沖區溢出,那么保護值連同返回地址將已經被改寫,因為保護值位于緩沖區與返回地址之間的堆棧中。保護值必須是隨機和/或不可預測的值,以確保SP方法的安全。在ASLR方法中,應用程序的存儲器布局可在每次執行時隨機化。舉例來說,可隨機確定用于代碼、靜態數據、堆棧和堆的基地址。此方法使得利用難以進行,因為攻擊者需要預測他們需要瞄準/操控以進行成功攻擊的代碼/數據/指針的位置。
發明內容
根據本發明的用于強制執行處理器中的軟件程序的流控制的實例方法包含:分析所述軟件程序的程序代碼,以識別所述程序代碼中的代碼指針;基于所述代碼指針產生驗證標記;以及用所述驗證標記來修改所述程序代碼中的代碼指針,以產生帶標記的代碼指針。
此類方法的實施方案可包含以下特征中的一或多者。用所述驗證標記來修改程序代碼中的代碼指針以產生帶標記的代碼指針進一步包含通過將掩碼應用于所述驗證標記和所述代碼指針來產生所述帶標記的代碼指針。通過將掩碼應用于所述驗證標記和所述代碼指針來產生帶標記的代碼指針進一步包含:使用所述掩碼從所述驗證標記選擇第一組位;以及用所述第一組位來代替所述代碼指針的對應于所述第一組位的第二組位,以產生帶標記的代碼指針。識別所述程序代碼中的多個,且識別所述程序代碼中的所述多個代碼指針共用的標記位以確定掩碼。驗證所述帶標記的代碼指針,響應于所述驗證標記已更改而執行錯誤處置,且響應于驗證標記尚未更改而執行與所述代碼指針相關聯的地址處的程序指令。驗證所述帶標記的代碼指針包含使用所述掩碼從所述帶標記的代碼指針確定經恢復的代碼指針值。使用所述掩碼從所述帶標記的代碼指針提取嵌入的驗證標記值。至少部分地基于所述經恢復的代碼指針和上下文值來產生經恢復的驗證標記。使用所述掩碼從所述經恢復的驗證標記提取帶掩碼的標記值。將所述帶掩碼的標記值與所述嵌入的驗證標記值進行比較,以確定所述帶標記的代碼指針是否已更改。
根據本發明的用于強制執行處理器中的軟件程序的流控制的實例設備包含:用于分析所述軟件程序的程序代碼來識別所述程序代碼中的代碼指針的裝置;用于基于所述代碼指針來產生驗證的裝置;以及用于用所述驗證標記來修改所述程序代碼中的所述代碼指針以產生帶標記的代碼指針的裝置。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于高通股份有限公司,未經高通股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201580055470.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:對存儲數據的遠程訪問控制
- 下一篇:使用飛地認證進行數據驗證





