[發明專利]一種防止堆棧溢出攻擊的保護方法及系統在審
| 申請號: | 202110228765.0 | 申請日: | 2021-03-02 |
| 公開(公告)號: | CN112948818A | 公開(公告)日: | 2021-06-11 |
| 發明(設計)人: | 朱黎;劉遠;郭鑌 | 申請(專利權)人: | 北京明略昭輝科技有限公司 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52;G06F9/448 |
| 代理公司: | 青島清泰聯信知識產權代理有限公司 37256 | 代理人: | 趙燕 |
| 地址: | 100089 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 防止 堆棧 溢出 攻擊 保護 方法 系統 | ||
1.一種防止堆棧溢出攻擊的保護方法,其特征在于,包括:
構造canary值步驟:發生函數調用時,構造任一canary值;
插入步驟:在被調用的子函數棧空間插入所述canary值進行數據填充;
記錄步驟:在被調用的子函數的前后各添加一代碼,通過兩個所述代碼分別計算所述canary值和返回值的異或結果;
比較步驟:對比兩個所述canary值和返回值的異或結果;
輸出步驟:若所述異或結果相等,所述函數正常跳轉并將跳轉結果返回;若所述異或結果不相等,則阻止程序的跳轉。
2.如權利要求1所述的防止堆棧溢出攻擊的保護方法,其特征在于,所述canary值是由任一固定值和任一隨機值拼接而成。
3.如權利要求1所述的防止堆棧溢出攻擊的保護方法,其特征在于,所述記錄步驟包括:
在被調用的所述子函數的之前添加開頭代碼及在被調用的所述子函數之后添加前尾端代碼,通過所述開頭代碼計算所述canary值和返回值的第一異或結果,通過所述尾端代碼計算所述canary值和返回值的第二異或結果。
4.如權利要求3所述的防止堆棧溢出攻擊的保護方法,其特征在于,所述輸出步驟包括:
若所述第一異或結果和所述第二異或結果相等,所述函數正常跳轉并將所述跳轉結果返回。
5.如權利要求3所述的防止堆棧溢出攻擊的保護方法,其特征在于,所述輸出步驟還包括:
若所述第一異或結果和所述第二異或結果不相等,則阻止所述程序跳轉。
6.一種防止堆棧溢出攻擊的保護系統,其特征在于,包括:
構造canary值模塊,所述構造canary值模塊在發生函數調用時,構造任一canary值;
插入模塊,所述插入模塊在被調用的子函數棧空間插入所述canary值進行數據填充;
記錄模塊,所述記錄模塊在被調用的子函數的前后各添加一代碼,通過兩個所述代碼分別計算所述canary值和返回值的異或結果;
比較模塊,所述比較模塊對比兩個所述canary值和返回值的異或結果;
輸出模塊,若所述異或結果相等,所述函數正常跳轉并將跳轉結果返回;若所述異或結果不相等,所述輸出模塊阻止程序的跳轉。
7.如權利要求6所述的防止堆棧溢出攻擊的保護系統,其特征在于,所述canary值是由任一固定值和任一隨機值拼接而成。
8.如權利要求6所述的防止堆棧溢出攻擊的保護系統,其特征在于,所述記錄模塊在被調用的所述子函數的之前添加開頭代碼及在被調用的所述子函數之后添加前尾端代碼,通過所述開頭代碼計算所述canary值和返回值的第一異或結果,通過所述尾端代碼計算所述canary值和返回值的第二異或結果。
9.如權利要求8所述的防止堆棧溢出攻擊的保護系統,其特征在于,若所述第一異或結果和所述第二異或結果相等,所述輸出模塊將所述函數正常跳轉并將所述跳轉結果返回。
10.如權利要求8所述的防止堆棧溢出攻擊的保護系統,其特征在于,若所述第一異或結果和所述第二異或結果不相等,所述輸出模塊阻止所述程序跳轉。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京明略昭輝科技有限公司,未經北京明略昭輝科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110228765.0/1.html,轉載請聲明來源鉆瓜專利網。





