[發明專利]防止棧溢出的方法、裝置及終端設備有效
| 申請號: | 201711262338.4 | 申請日: | 2017-12-04 |
| 公開(公告)號: | CN107895115B | 公開(公告)日: | 2021-01-29 |
| 發明(設計)人: | 高連凱 | 申請(專利權)人: | 北京元心科技有限公司 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52;G06F21/74 |
| 代理公司: | 北京市立方律師事務所 11330 | 代理人: | 張筱寧;宋海斌 |
| 地址: | 100176 北京市北京經濟技*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 防止 溢出 方法 裝置 終端設備 | ||
本發明實施例提供了一種防止棧溢出的方法、裝置及終端設備,其中,防止棧溢出的方法:獲取被編譯程序中的變量;判斷獲取到的變量中是否存在預設類型的變量;如果存在,執行相應的告警操作。本發明實施例提供的方法,獲取被編譯程序中的變量,為后續判斷編譯程序中的變量是否為預設類型的變量提供了前提保障;判斷獲取到的變量中是否存在預設類型的變量,從而有效定位程序中是否存在潛在的導致棧溢出的預設類型的變量;若存在預設類型的變量,說明存在潛在的導致棧溢出的缺陷,執行相應的告警操作,從而及時通知用戶,便于用戶對潛在的缺陷采取相應的補救措施,最終達到有效防止棧溢出的目的。
技術領域
本發明涉及計算機技術領域,具體而言,本發明涉及一種防止棧溢出的方法、裝置及終端設備。
背景技術
計算機應用已經深入到航天、金融、制造、通信、能源、醫療、教育等各領域,人們的工作與生活越來越多地依賴計算機軟件。人們不僅需要計算機實現更多的功能,對計算機系統的安全性也提出了更高的要求。雖然操作系統本身都會具備基本的安全防護能力,比如:基本的權限管理、用戶管理、設備管理等,而且隨著安全問題的積累,目前的安全界的防護手段也越來越完善,顯而易見的攻擊手段往往不會奏效,需要更深層次的挖掘和利用系統中的漏洞才能達到攻擊成功的目的。在這種情況下,緩沖區溢出攻擊成為嚴重威脅計算機系統安全的一種攻擊手段,緩沖區溢出被攻擊者廣泛利用開展種類繁多的攻擊,甚至無需插入代碼即可執行任意行為,或者安裝rootkit隱蔽自身蹤跡。其中,棧溢出是最為常見的緩沖區溢出攻擊模式,攻擊者利用函數局部緩沖區,輸入長度超出緩沖區長度界限的源操作數改寫棧返回地址,即函數返回的跳轉地址,截獲程序控制流達到執行非法行為的目的。
目前,業界也提出了一些防止棧溢出的方法,例如:修改編譯器、利用帶有零值字節的數據填寫返回地址;其中,修改編譯器是指在保存返回地址時,刻意同時增加校驗字節,如果返回前發現校驗錯誤,則說明返回地址曾經被篡改,拒絕繼續運行;而利用帶有零值字節的數據填寫返回地址,是利用輸入參數是字符串且零值字節表示字符串結束的特點,把程序運行代碼放在含有零值字節的地址段中(如0-0x00FFFFFF),這樣一旦程序執行空間跑到了“非零區”,可以立刻得到被攻擊的結論。
然而,修改編譯器的方法,雖然可以在一定程度上解決問題,但是,既然可以改寫返回地址,那自然也可以改寫校驗字節,從而檢查機制可能被繞過,無法有效防止棧溢出;利用帶有零值字節的數據填寫返回地址的方法,則由于內存中的返回地址不連續,且每一段的大小有限,當程序尺寸太大時轉載必須分塊,額外增加了很多不便。于是,如何有效防止棧溢出成為本領域技術人員亟待解決的重要問題。
發明內容
本發明的目的旨在至少能解決上述的技術缺陷之一,特別是無法有效防止棧溢出的技術缺陷。
本發明的實施例根據一個方面,提供了一種防止棧溢出的方法,包括:
獲取被編譯程序中的變量;
判斷獲取到的變量中是否存在預設類型的變量;
所述預設類型包括棧上數組類型;
如果存在,執行相應的告警操作;
檢測所述編譯器是否為修正模式;
其中,所述獲取被編譯程序中的變量,包括:
通過編譯器對被編譯程序進行語法分析,以識別語義元素;
基于識別到的所述語義元素,獲取所述被編譯程序中的變量;
所述執行相應的告警操作,包括:
如果所述編譯器是修正模式,則根據預設修正方式修正所述預設類型的變量,并再次編譯經修正后的所述被編譯程序;
所述執行相應的告警操作,還包括:生成并顯示告警信息;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京元心科技有限公司,未經北京元心科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711262338.4/2.html,轉載請聲明來源鉆瓜專利網。





