所屬欄目:軟件開發論文 發布日期:2017-01-23 15:09 熱度:
隨著社會的發展,黑客的技術水平越來越高,而在軟件方面,漏洞屬于一個不可避免的問題,這會導致黑客有機可趁,使數據信息受到破壞。
《電腦知識與技術》Computer Knowledge and Technology(月刊)創刊于1994年,是經國家批準的旬刊雜志,是一本面向計算機全行業的綜合性學術刊物。創刊以來,一直本著普及電腦知識、推廣電腦技術、交流經驗技巧、促進電腦應用的辦刊宗旨,注重雜志質量。如今,雜志發行面已覆蓋全國31個省、市、自治區,逐步形成了融知識性、實用性、欣賞性、服務性于一體的辦刊風格,并因其清純樸實的文風,簡明實用的內容,以及精心細致的服務被社會各界讀者譽名為“一本看得懂、學得會、用得上”的好雜志。
1 引言
在任何軟件運行的過程中,都會根據安全策略進行一個安全域假定,也就是說這一域內所有的操作都是可控且安全的,但是如果違反了安全策略或者超出了這一安全域,軟件運行則會變為未知且不可控的,而安全域在切換為非安全域的過程中,其觸發點就是漏洞。在這種背景下,如何更快地發現軟件安全漏洞,并做好修復工作,是保證數據信息安全的一個有效手段。
2 軟件安全漏洞挖掘技術概述
2.1 漏洞概念
通俗點說,漏洞就是指由于安全域設計不合理所形成的軟件及系統破壞。正是由于這種漏洞的存在,使得計算機在未授權的情況下會被攻擊者訪問或破壞。一般來說,漏洞多數是被動的、靜態的、可觸發的。
如果根據產生漏洞的原因來分類,則漏洞可以分為:輸入驗證錯誤、邊界條件錯誤、緩沖區溢出錯誤、訪問驗證錯誤、意外條件錯誤、配置錯誤、競爭條件錯誤等其他錯誤。之所以出現漏洞,從根本上說是因為安全機制實現的過程中出現了一些非正常問題,比如軟件編程出錯、安全機制規劃不完善。由于信息系統中存在潛在錯誤這一問題是不可避免的,因此漏洞在信息系統中也是必然存在的。
2.2 漏洞挖掘技術
在通過漏洞攻擊的過程中,主要可以分為三個步驟:漏洞挖掘、漏洞分析以及漏洞利用,由此可見漏洞挖掘屬于后兩個步驟的基礎及前提,對網絡攻防有著非常重要的意義。所謂漏洞挖掘,主要是找尋漏洞,詳細點說就是該領域專業人士使用各種綜合應用工具以及技術盡最大可能找出軟件中存在的潛在漏洞,要想做好這一工作并不容易,這對于個人經驗有很大的依賴性。在實際的工作中,根據不同的分析對象,漏洞挖掘技術又可以分為基于源代碼漏洞挖掘技術以及基于目標代碼漏洞挖掘技術。
對于基于源碼漏洞挖掘技術來說,獲得源代碼是我們工作的前提。一般針對一些開源項目,對其公布的源代碼進行分析就能夠獲得漏洞,比如在Limix系統中,漏洞挖掘所采用的技術就是使用的這一技術。具體來說,在應用這一技術的過程中,我們還通過源代碼審核技術,掃描軟件源代碼,并對一些不安全的內存操作以及安全函數使用進行語義檢查,進而挖掘出其中存在的漏洞。其中,靜態分析技術屬于一種比較典型的機遇源代碼漏洞挖掘技術。
但是在實際的工作中,由于很多商業軟件源代碼的獲取比較困難,所以基于源代碼漏洞挖掘技術往往難以起到應有的作用,在這種情況下,我們則可以使用基于目標代碼漏洞挖掘技術。這一技術是依靠分析目標碼來實現的,其過程往往涉及到指令系統、編譯器以及文件格式等很多方面,所以難度比較大。具體的步驟是先反匯編需要分析的二進制目標代碼,在獲取匯編代碼之后再對其切面,也就是將一些關聯密切而且有意義的代碼匯聚在一起,使其復雜性降低,最后利用分析功能模塊對其是否存在漏洞進行判斷。
3 當前漏洞挖掘技術分析
當前漏洞挖掘技術主要包括已知漏洞檢測以及位置漏洞補救這兩種,其中前者主要的作用在于發現系統中可能存在但是還沒有被發現的漏洞,在這方面主要又包括靜態分析、動態檢測、安全掃描以及手工分析這幾種技術。其中,手工分析要求比較高,不僅需要安全分析人員對軟件漏洞原理有充分的了解,還要對軟件結構及功能有比較深入的認識,而且即使滿足了這兩點要求,其依然會耗費很多的精力和時間,基于此,以下將主要對靜態分析以及動態檢測進行分析。
3.1 靜態分析
這種漏洞檢測技術不需要對程序進行運行,而且在沒有輸入的條件下就可以發現程序中存在的安全漏洞,因此在程序編寫階段,通過靜態漏洞挖掘技術就可以發現其中存在的問題,并在開發早期就消滅掉漏洞。不過人們在運用靜態分析的過程中,往往會出現誤報。這一技術從本質上說是建立程序的一個狀態模型,然后對程序如何完成狀態轉換進行分析,但是一個程序的狀態空間是很大的,因此難以對所有的狀態同時進行考慮,針對這種情況,對狀態空間進行抽象是必不可免的,這就導致了程序部分信息的丟失。而我們為了提升分析結果的正確性,則會損失一部分分析精度,一般來說,近似假設地方越多,則精度的損失也會越大,而誤報也越容易發生。實際的工作中,分析工具可能會使用一些不穩妥的分析策略,這也會導致出現一些安全漏洞,為日后的軟件運行埋下隱患。
3.2 動態檢測
所謂動態檢測,主要是在程序動態運行的時候對軟件中存在的漏洞進行檢測,這不僅要求被測試目標編譯為可執行程序,而且在檢測的過程中還要提供相應的輸入。具體來說,動態檢測技術主要是利用操作系統所提供的雕飾接口以及資源監視接口,來獲得目標程序運行過程中所需的運行數據及運行狀態。在當前的動態檢測技術中,比較常用的有數據流分析法以及環境錯誤注入法。
這里首先分析環境錯誤注入法,它主要是故意將人為錯誤注入到軟件運行環境中,然后利用程序的反應進行驗證。一般情況下,編程的過程中程序員總是會假定其程序能夠正常地運行于環境中,如果這種假定成立,那么其程序自然會正確的運行。不過由于程序運行的環境并不是獨立的,而是會受到很多主體的影響,比如一些惡意用戶之類的,這會使程序員假定出現錯誤,也正因為此,環境中的錯誤會給程序造成多大地的影響,是判斷程序健壯性的一個重要標準,而環境錯誤注入法正是對軟件系統可靠性及容錯性進行判斷的有效方法。
至于數據流分析法,它在實現檢測的時候需要數據流、執行流等信息,主要的原理是對各種參數、序列以及返回值等進行跟蹤,然后經過對比分析,對系統是否存在安全漏洞進行判斷。
3.3 動態檢測以及靜態分析的對比
客觀來說,靜態分析以及動態檢測都是我們經常使用的檢測方法,其中,靜態分析由于在運行過程中的數據比較缺乏,因此難以實現動態測試細粒度的安全評估,無法對所有的安全漏洞都進行確定,所以存在很多不足之處,不過其優勢在于比較容易在開發過程中集成。至于動態檢測,雖然其可信性以及精確性非常高,但是對于源代碼的需求也非常高,而且不能夠對漏洞及漏洞原因進行準確的定位,加之不容易保證代碼覆蓋率,因此它也存在一定的不足。通過表1我們可以比較系統的對二者進行對比。
4 軟件安全漏洞挖掘流程分析
通過上文的分析我們可以看出,每種檢測方法都是存在缺陷的,我們要想真正地做好漏洞挖掘工作,就必須要在漏洞挖掘的不同環節使用不同的檢測方法,并根據具體的情況采取相應的策略及方法,這樣才能將各種方法的優勢發揮出來,并彌補其存在的不足。一般來說,漏洞挖掘的流程可以分為幾個環節。
首先,初始化,這主要是將軟件類型分類,將開源和非開源軟件所使用的靜態分析方法確定下來。
其次,反匯編,這主要是載入需要分析的程序,然后通過反匯編操作,實現對二進制代碼的反匯編,并確定代碼中哪些屬于可執行指令以及哪些屬于數據。
第三,過程抽象,能夠識別可執行指令之后,可以把其分為表示函數或者過程的組。
第四,特征模式掃描,對于開軟軟件,我們通過編譯技術在編譯期間或者代碼掃描期間確定一些信息,根據這些信息檢查漏洞模型。至于非開源軟件的靜態分析,則可以通過之下而上的分析方法對調用二進制文件的庫函數等進行檢查,得到漏洞驗證代碼。
第五,驗證漏洞特性,這主要是比較漏洞特征庫以及疑似漏洞驗證代碼,并對其中是否含有惡意行為進行判斷,得到檢測報告。
第六,注入錯誤環境,對需要注入的錯誤環境數據進行構造,并利用其干擾程序運行。
第七,動態檢測,系統自動地對程序所有函數序列以及特定函數序列進行分析,并對可能存在的漏洞數目進行估算,得到檢測報告。
第八,檢測評估,根據所得報告信息,確認它們共同提出的疑似漏洞,并對其他疑似漏洞進行下一步分析。
最后,進入下一輪靜態及動態檢測環節。
5 軟件安全漏洞挖掘技術的發展方向
首先,測試平臺的可擴展性以及通用性將越來越強,這是因為伴隨著測試對象的增多,一個可擴展性及通用性比較強的平臺對這一技術的發展有非常重要的提升效果。具體來說,這種平臺要具備以下幾個方面的特點:首先,能夠產生多種格式并最好是有效的畸形測試數據;具有可定制以及獨立的數據產生變異功能;具有可操作跟蹤調試功能;能夠對多模塊之間的自動化運行進行很好的協調。
其次,以fuzzing測試技術為例,由于在fuzzing測試過程中,很大一部分時間都用在輸入數據格式、程序狀態轉換的人工分析上。因此提高知識獲取自動化程度對于提升測試效率非常有利,是未來的發展方向。
第三,多維測試用例生成技術。當前很多測試用例生成技術都是一維的,這容易使很多安全漏洞不能夠被有效地檢測出來。而如果使用多為測試用例生成技術雖然會拓寬其測試范圍,但也容易導致狀態爆炸問題,因此,多維測試用例生成技術的研究是未來的一個重點。同樣,智能測試用例生成技術也是未來的一個重點。
第四,測試效果評估技術,當前的很多測試使用代碼覆蓋率對測試效果進行評估,這存在著很大的不合理性。因此未來測試效果將從程序狀態的覆蓋率、測試數據的有效性以及輸入邊界測試的充分性等多個方面對測試效果進行評估。
6 結束語
軟件安全漏洞挖掘技術的研究是一個很寬泛的研究,本文限于篇幅,很多地方難以涉及并深入。因此,在我們的日常工作中應加強這方面的探索和研究,只有不斷提升我們的技術水平,才能真正為信息數據的安全起到保障作用。
文章標題:軟件安全漏洞挖掘技術創新的方式
轉載請注明來自:http://www.56st48f.cn/fblw/dianxin/ruanjiankaifa/34723.html
攝影藝術領域AHCI期刊推薦《Phot...關注:105
Nature旗下多學科子刊Nature Com...關注:152
中小學教師值得了解,這些教育學...關注:47
2025年寫管理學論文可以用的19個...關注:192
測繪領域科技核心期刊選擇 輕松拿...關注:64
及時開論文檢索證明很重要關注:52
中國水產科學期刊是核心期刊嗎關注:54
國際出書需要了解的問題解答關注:58
合著出書能否評職稱?關注:48
電信學有哪些可投稿的SCI期刊,值...關注:66
通信工程行業論文選題關注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關注:120
評職稱發論文好還是出書好關注:68
復印報刊資料重要轉載來源期刊(...關注:51
英文期刊審稿常見的論文狀態及其...關注:69
copyright © www.56st48f.cn, All Rights Reserved
搜論文知識網 冀ICP備15021333號-3