范巍
【摘要】 軟件脆弱性作為信息安全問題的根源之一,對信息安全構成了嚴重威脅。當前,普遍使用的符號執行技術受限于運算復雜度和計算能力,無法實現大規模應用。為此課題組提出了基于動態符號執行的軟件脆弱性并行檢測系統。并行調度是軟件脆弱性并行檢測系統的關鍵技術之一,與系統的檢測效率緊密相關。本文提出了基于節點狀態的子系統調度算法和基于路徑廣度優先遍歷的任務調度算法,分別實現了并行系統的子系統調度和任務調度。兩個算法在實現上簡單易行,并且具有很高的效率。本文對具體編程的細節進行了介紹和分析。
【關鍵詞】 軟件脆弱性分析 符號執行 并行調度
一、緒論
軟件脆弱性也稱漏洞,是軟件在設計與實現過程中能導致安全事故的缺陷和不足[1]。脆弱性的存在本身并不影響軟件的功能,不會造成任何安全事故。但是網絡攻擊者可以利用軟件脆弱性,在未授權的情況下訪問或破壞計算機系統,造成嚴重的安全事故[2] [3]。當前,普遍使用的符號執行技術受限于運算復雜度和計算能力,無法實現大規模應用。為此本課題設計并實現了基于動態符號執行的面向軟件脆弱性并行檢測系統的并行調度模塊和通信模塊,課題以此為牽引,對符號執行技術進行了研究,對基于符號執行技術的KLEE平臺的搭建和使用進行了詳細介紹,并對KLEE的測試結果進行了詳細分析。
二、相關研究
符號執行是指不通過執行程序,用符號作為程序的輸入,將程序進行模擬執行,從而來進行相關分析的技術。符號執行可分為靜態符號執行和動態符號執行。靜態符號執行包括兩類,分別為過程內分析和過程間分析,其中過程間分析又稱為全局分析。過程內分析的概念是,在進行分析的過程中,只分析單個過程的代碼。而全局分析的概念是,不僅單個過程中的代碼進行分析,并且將整個程序的代碼的上下文進行敏感分析。其中上下文敏感分析的概念是,在開始對當前函數進行內分析時,需要對當前的函數間調用信息和環境信息等進行分析和考慮。
三、基于動態符號執行的軟件脆弱性并行檢測系統
3.1系統總體架構
通過前期對符號執行技術原理和應用的研究,我們對理解基于動態符號執行的軟件脆弱性并行檢測系統奠定了基礎。基于動態符號執行的軟件脆弱性并行檢測系統采用并行技術進行軟件脆弱性檢測,使系統不僅具有高代碼高路徑覆蓋率,同時大大提升了軟件脆弱性檢測的效率。
3.2系統功能概述
調度服務器:調度服務器是系統的中心,數量為1個,工作于Windows 2003以上環境,負責與各個子系統通信,向子系統發布命令,并接收反饋。
總控中心:總控子系統直接與用戶進行交互,是系統對外的接口,用戶的所有操作通過總控中心進行實現。
四、并行調度模塊設計與實現
4.1算法設計思想
基于動態符號執行的軟件脆弱性并行檢測系統的并行調度問題是系統研發過程中的核心問題之一。調度服務器如何向三類子系統分配執行任務,對整個并行系統的執行效率影響極大。本章設計與實現的并行調度模塊主要解決了三類子系統的調度問題和三類子系統任務調度問題。
4.2子系統調度算法
并行系統共有測試子系統、分析子系統和求解子系統三類子系統,每類子系統的數量有多個。當任務到達,調度Server如何在每類子系統中選擇執行任務的單位,即是子系統調度算法需要研究的問題。
4.3實現方案
在實現子系統調度和任務調度的過程中,需要對子系統信息、任務信息和任務內容進行存儲。為了解決存儲問題,系統在具體實現時,使用Hadoop分布式存儲系統對各個子系統執行的任務內容進行存儲,系統使用Oracle數據庫對各個子系統的注冊信息和狀態信息以及各個子系統執行的任務基本信息進行存儲。
五、總結與展望
本文對項目組基于動態符號執行的面向軟件脆弱性并行檢測系統進行了研究。最后,本文設計與實現了該系統的并行調度模塊和通信模塊,兩個模塊在實現上簡單易行,并且效率很高。本文的下一步工作主要包括以下方面:一是對動態符號執行工具和軟件脆弱性并行檢測工具進行研究,二是對任務調度的算法進行優化。
參 考 文 獻
[1] 柳淑玉,孔維廣.軟件安全漏洞挖掘技術的研究[J].山東紡織經濟,2010,(5):107-109.
[2] 華旭峰,劉源.淺析漏洞挖掘技術[J].商場現代化,2009,(4):19.
[3] 文偉平,吳興麗,蔣建春等.軟件安全漏洞挖掘的研究思路及發展趨勢[J].信息網絡安全,2009,(10):78-80.
[4]鄭亮,劉向東.漏洞挖掘技術研究[C].全國抗惡劣環境計算機第十八屆學術年會論文集.2008:75-78.