[發明專利]一種防止堆棧溢出攻擊的保護方法及系統在審
| 申請號: | 202110228765.0 | 申請日: | 2021-03-02 |
| 公開(公告)號: | CN112948818A | 公開(公告)日: | 2021-06-11 |
| 發明(設計)人: | 朱黎;劉遠;郭鑌 | 申請(專利權)人: | 北京明略昭輝科技有限公司 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52;G06F9/448 |
| 代理公司: | 青島清泰聯信知識產權代理有限公司 37256 | 代理人: | 趙燕 |
| 地址: | 100089 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 防止 堆棧 溢出 攻擊 保護 方法 系統 | ||
本申請公開了一種防止堆棧溢出攻擊的保護方法及系統,方法包括:構造canary值步驟:發生函數調用時,構造任一canary值;插入步驟:在被調用的子函數棧空間插入所述canary值進行數據填充;記錄步驟:在被調用的子函數的前后各添加一代碼,通過兩個所述代碼分別計算所述canary值和返回值的異或結果;比較步驟:對比兩個所述canary值和返回值的異或結果;輸出步驟:若所述異或結果相等,所述函數正常跳轉并將跳轉結果返回;若所述異或結果不相等,則阻止程序的跳轉。本發明在盡可能小的運算量下,能夠檢測到繞過canary值直接修改返回地址的攻擊行為。
技術領域
本發明屬于防止堆棧溢出攻擊的保護領域,具體涉及一種防止堆棧溢出攻擊的保護方法及系統。
背景技術
現代操作系統中,應用程序往往難以做到極盡完善,再加上編程語言的局限性,導致各種各樣程序漏洞的出現。以堆棧溢出為代表的緩沖區溢出攻擊已經成為最普遍的安全漏洞。利用它可以破壞程序正常執行流程,更嚴重的是它能使攻擊者通過普通用戶獲取系統權限從而進行對敏感數據的非法操作,對系統環境造成極大的威脅。攻擊者在利用堆棧溢出漏洞時,通常會破壞當前的函數棧。例如,最常見的一種攻擊方式是攻擊者利用strcpy()函數不檢查字符數組是否越界的特點來進行地址的覆蓋,攻擊者在程序代碼的字符數組中寫入超過數組長度的數據,直到函數棧中返回地址被覆蓋,使得該函數在返回時跳轉到填入的惡意代碼處執行。為了盡可能避免緩沖區溢出漏洞被攻擊者利用,如今編譯器已經在編譯層面對堆棧進行保護。
編譯保護技術通過編譯器對函數返回地址進行保護,發現返回地址被篡改之后,阻止函數執行流程改變。如圖1所示,當發生函數調用時,會在子函數棧空間中插入一個canary word的數據填充,由于棧溢出方向是從低地址到高地址,因此在返回地址被溢出之前,該canary值首先會被覆蓋,通過檢測這個canary word是否改變來檢測函數棧是否被破壞。常見的canary word有如下幾種:
第一種是固定值填充,一個canary word通常包含NULL(0x00),CR(0x0d),LF(0x0a)這樣的字符。由于絕大多數溢出攻擊漏洞都是由于字符串處理函數不做數組越界檢查引起的,而這些字符串都是以NULL作為結尾,使用這樣的canary填充可以使字符串處理函數結束復制,從而防止溢出攻擊。
第二種是隨機值填充,canary值是在程序初始化時隨機產生的,然后這個值被保存到一個未被映射到虛擬地址空間的內存頁中,當攻擊者試圖通過指針訪問保存隨機數的內存時就會引發段錯誤。
第三種是通過一個隨機數和函數棧中所有控制信息,返回地址通過異或運算得到canary word。
現有技術存在如下缺點:第一種生成canary值的方法采用固定字符填充容易被攻擊者查出canary word的位置,如果跳過該填充區域直接修改其后的數據,會導致該保護方式無效;第二種生成canary值的方法會產生一個隨機數填充,但這個隨機數會保存在函數棧中,攻擊者仍有機會獲取該函數的值;第三種采用計算一個隨機數和函數棧中所有控制信息,返回地址值的方法,雖然可以檢測到所有控制信息,返回地址的修改,但涉及的運算量多,消耗較大。
發明內容
為解決上述技術問題本申請實施例提供了一種防止堆棧溢出攻擊的保護方法及系統。一種防止堆棧溢出攻擊的保護方法,其中,包括:
構造canary值步驟:發生函數調用時,構造任一canary值;
插入步驟:在被調用的子函數棧空間插入所述canary值進行數據填充;
記錄步驟:在被調用的子函數的前后各添加一代碼,通過兩個所述代碼分別計算所述canary值和返回值的異或結果;
比較步驟:對比兩個所述canary值和返回值的異或結果;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京明略昭輝科技有限公司,未經北京明略昭輝科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110228765.0/2.html,轉載請聲明來源鉆瓜專利網。





