[發明專利]數組越界錯誤的自動檢測和校正方法有效
| 申請號: | 201410022323.0 | 申請日: | 2014-01-17 |
| 公開(公告)號: | CN103778061A | 公開(公告)日: | 2014-05-07 |
| 發明(設計)人: | 陳哲;李文明;黃志球 | 申請(專利權)人: | 南京航空航天大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 南京經緯專利商標代理有限公司 32200 | 代理人: | 朱小兵;劉謙 |
| 地址: | 210016 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 數組 越界 錯誤 自動檢測 校正 方法 | ||
技術領域
本發明涉及計算機軟件測試和校正技術領域,特別涉及一種數組越界錯誤的自動檢測和校正方法。
背景技術
緩沖區溢出是一種非常危險的軟件漏洞,并廣泛存在于各種應用軟件中。緩沖區溢出漏洞可能導致軟件行為異常、內存訪問錯誤或系統崩潰,也可被黑客用來攻擊有價值的軟件系統。目前,緩沖區溢出問題已經成為造成軟件漏洞的主要原因。例如,根據US-CERT漏洞數據庫統計資料可知,在20個最嚴重的漏洞中,就有11個是由緩沖區溢出引起。尤其對于那些用于控制安全關鍵工業系統的嵌入式控制軟件(例如,飛行控制軟件、高速列車控制軟件、核電站控制軟件等)和安全關鍵應用軟件系統(例如,銀行交易軟件、網上交易軟件等),當因緩沖區溢出漏洞引起軟件失效、系統故障或黑客攻擊,損失將非常慘重。因此,有效的緩沖區溢出檢測和校正技術是軟件研發和維護中的重要問題。
軟件中緩沖區的內存分配包括兩種方式:靜態內存分配和動態內存分配。靜態內存分配主要指源代碼中變量和數組的定義,而動態內存分配主要指使用malloc等內存管理函數為軟件分配的堆空間。通常,不帶操作系統或內存管理模塊的嵌入式工業控制系統不支持動態內存分配。因此,在這樣的系統中,數組越界訪問成為了緩沖區溢出的主要表現形式。也就是說,檢測和校正軟件中的數組越界錯誤是避免緩沖區溢出的主要方式。
目前,現有的檢測數組越界錯誤的方法分為兩種類型:靜態方法和動態方法。
靜態方法是指通過分析軟件設計模型或者源代碼來檢驗錯誤的方法,而不需要實際運行該軟件。除人工代碼走查之外,靜態方法的一個主流技術是模型檢驗技術,例如SPIN模型檢驗器等。模型檢驗工具一般通過抽象建模,運行驗證,生成和分析反例等步驟來檢驗設計模型的正確性。例如,業內曾經使用SPIN模型檢驗器對某型國產飛機的飛行控制系統的緩沖區控制模塊的設計模型進行了驗證,準確地找出了由模塊間復雜交互行為引起的數組越界錯誤。模型檢驗技術的優點在于,可以對軟件所有可能的行為進行窮舉搜索,確保結果的完備性。然而,該技術的不足之處在于:1、由于模型檢驗技術本身的計算復雜性是PSPACE完全的,因此它與生俱來的狀態爆炸問題使得該技術很難直接被應用于較大規模軟件的驗證,例如超過10000行代碼的軟件;2、由于模型檢驗技術通常是對軟件系統抽象出來的設計模型進行驗證,而不是全部源代碼,所以無法確保該軟件的實際實現是正確的,即無法確保源代碼的正確性。
動態方法是指通過運行軟件,并在軟件運行過程中檢測錯誤的方法。動態方法的一個主流技術是軟件測試技術。軟件測試工具一般通過編譯源代碼、運行待測試軟件等步驟,在軟件運行過程中根據設計的測試用例注入測試數據,通過對軟件的輸出進行分析(例如,與測試用例的預計輸出進行對比),來觀察軟件運行是否正確,檢測軟件是否存在錯誤。軟件測試技術的優點在于,有一定的自動化功能,可以進行測試用例管理、批量測試和回歸測試。然而,該技術的不足之處在于:1、由于不直接面對源代碼,無法準確定位導致錯誤發生的源代碼位置;2、由于錯誤定位不準確,為軟件的開發調試和校正造成了障礙。
另一種有效的動態方法是將軟件在一個虛擬機上運行,該虛擬機可以模擬內存管理模塊,從而檢測軟件中的數組越界錯誤。例如JAVA虛擬機就是一個典型的代表。虛擬機技術的優點在于,由于整個軟件都處于被監控的狀態,因此檢測結果非常準確。然而,該技術的不足之處在于:1、由于虛擬機對軟件的解釋執行,使得軟件運行負載過大,以至于軟件效率和性能降低非常明顯;2、對于嵌入式安全關鍵工業控制系統,由于高實時性和內存資源受限的要求,這樣的效率和性能降低往往不能被接受,因此這種方法并不實用。
在檢測到錯誤的存在后,就需要對錯誤進行校正,比如修改源代碼。對于校正數組越界訪問錯誤,常用的方法是人工調試和校正。也就是說,在軟件測試階段,根據軟件測試工具的測試報告,由程序員使用代碼調試工具,人工分析源代碼的執行過程來定位錯誤。這一方法的優點是容易操作,不需要使用額外的工具。然而,該技術的不足之處在于:1、當源代碼規模較大或者功能較為復雜,程序員不一定能準確定位錯誤在源代碼中的位置,從而無法正確地修改源代碼;2、當軟件已經被部署到目標平臺上,在實際運行過程中出現的數組越界訪問錯誤無法通過這種方法進行校正,因此可能會引起軟件失效、系統故障或黑客攻擊。
因此,有必要提供一種新的數組越界錯誤的自動檢測和校正方法,以實現更準確的錯誤定位功能,更好的運行時效率和性能,以及更自動化的運行時錯誤校正功能,從而克服現有的檢測數組越界錯誤的方法中存在的技術問題。
發明內容
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京航空航天大學,未經南京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410022323.0/2.html,轉載請聲明來源鉆瓜專利網。





