軟件安全漏洞自動化識別原理評析_第1頁
軟件安全漏洞自動化識別原理評析_第2頁
軟件安全漏洞自動化識別原理評析_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、軟件平安漏洞自動化識別原理評析 軟件平安漏洞自動化識別原理評析 【摘要】本文通過分析軟件代碼平安檢測工作原理和市場上已廣泛使用的工具,為希望借助軟件代碼平安檢測工具,提升發(fā)現(xiàn)軟件代碼平安漏洞,進而提升軟件代碼平安質(zhì)量提高幫助。 【關(guān)鍵詞】軟件平安;漏洞;自動化識別 隨著社會信息化的開展,大型社會效勞部門對外信息效勞多已建立了信息系統(tǒng),也正是隨著各種公眾信息效勞軟件的應(yīng)用,軟件信息平安事件也不斷沖擊著公眾的管感點,因軟件平安問題引起效勞中斷的事情屢見報端,究其原因,很大成分是在軟件規(guī)模的演變中,原來軟件定位多效勞于小型區(qū)域和內(nèi)部使用,對軟件平安的要求自然比擬低,在軟件功能定位已發(fā)生明顯變化,效勞

2、于公眾客戶,承載規(guī)模越來越大的時候,軟件平安的建設(shè)未隨之提升,而且隨著軟件規(guī)模的增大,依賴人工進行軟件平安漏洞風(fēng)險的難度也日益增加,一點僥幸和一點為難,為軟件平安隱患翻開了方便之門,這種問題演變出來的影響如今不得不令人痛心決心予以考慮,這也正是軟件代碼平安漏洞工具用武之地。 1.軟件代碼平安檢查工具功能評析 隨著計算機軟件編譯技術(shù)的開展和市場的需求,目前有多種開源的和商業(yè)的靜態(tài)源代碼分析工具可以幫助開發(fā)人員和軟件平安人員在編碼階段快速掃描出軟件代碼所潛在的平安隱患,這些技術(shù)在我們?nèi)粘5拈_發(fā)過程中很普遍,只是我們平時沒有注意到而已。通過源代碼分析工具對代碼掃描后的結(jié)果,開發(fā)人員和平安代碼審查人員

3、可以對結(jié)果再次復(fù)查,極大地提高了代碼平安審查的效率,這些分析工具或者技術(shù)主要包括如下的功能: 1.1 類型檢查 類型檢查是靜態(tài)分析使用得最為廣泛的形式,也是程序員最為熟悉的方式,很多程序員并沒有在類型檢查方面太多的思考,畢竟類型檢查的規(guī)那么被編程語言事先定義好了,并被編譯器強制執(zhí)行,因此關(guān)于類型檢查的分析器是如何執(zhí)行的,程序員一般都了解得很少。類型檢查能夠幫助開發(fā)人員全面地排除編碼類型方面的錯誤,比方把一個整型的值賦給一個對象的變量;在編譯時捕獲錯誤;也在一定程度上預(yù)防運行時的錯誤。 1.2 代碼編寫風(fēng)格檢查 Style checkers是一個專門的代碼風(fēng)格檢查的靜態(tài)分析工具,這種工具在類型檢

4、查之外強制一些其它的編碼格式的規(guī)那么,比方空格檢查、命名標準、不推崇函數(shù)的使用、注釋、程序結(jié)構(gòu)等.被style checker檢查的錯誤通常是那些影響代碼的可靠性和可維護性方面的缺陷,這些缺陷在程序運行時并不一定是一個特定的錯誤。 1.3 程序理解 程序理解工具幫助用戶理解代碼量大的程序,幫助用戶理解代碼,集成開發(fā)環(huán)境也總是包含一些程序理解功能,比方:“find all uses of this method and “find the declaration of this global variable.“一些高級的分析可以支持自動程序重構(gòu)的特性,比方把單個的復(fù)雜的函數(shù),裂解成多個更為簡單

5、的函數(shù)。 高級的程序理解工具也盡量幫助程序員去獲取程序是按哪種方式工作的,有些工具盡量使用逆向工程了解代碼的設(shè)計.因此會給程序員一個圖形化的視圖,這對程序員去理解代碼量大的程序非常有用,尤其是這些代碼不是程序員自己寫的時候, 1.4 程序確認 程序確認工具接受一組規(guī)格要求和代碼,并企圖為代碼提供證明:“代碼的實現(xiàn)是滿足規(guī)格要求的,如果規(guī)格是程序應(yīng)當作的每一件事情的完整描述,程序確認工具就能夠執(zhí)行一個等同的檢查,以確保代碼和規(guī)格是一致的。 1.5 屬性檢查 屬性檢查工具關(guān)注臨時平安的屬性上面,臨時平安的屬性按順序列出一些不允許發(fā)生事件的清單,。比方不能去訪問已經(jīng)釋放了的內(nèi)存塊的地址,大多數(shù)屬性檢

6、查工具允許程序員寫自己的規(guī)那么去檢測特定程序的屬性。 1.6 缺陷發(fā)現(xiàn) 缺陷發(fā)現(xiàn)工具的目的并不像style checker那樣去抱怨代碼的格式問題,也不去對程序代碼和規(guī)格做比擬。它僅僅指出在程序在哪兒,它的行為將不是程序員本身的意圖,大多數(shù)程序缺陷工具是易于使用的,因為它們是與一組特定的缺陷規(guī)那么相關(guān),這些規(guī)那么描述了一些特定的代碼模式,這些代碼模式將通常指示代碼缺陷。 2.軟件代碼平安的審查路徑 關(guān)注于平安的靜態(tài)掃描工具使用了多種其它靜態(tài)分析工具的技術(shù),但它更關(guān)注識別平安問題這個目標,這就意味著它們應(yīng)用這些技術(shù)的不同,它檢查潛在的不平安的庫函數(shù)的調(diào)用;檢測邊界錯誤和類型轉(zhuǎn)換錯誤;使用控制流檢

7、測操作順序不合理所帶來的隱患;使用數(shù)據(jù)流跟蹤技術(shù)去跟蹤不平安的數(shù)據(jù)的引入及其不平安的操作。同時也提供自定義平安規(guī)那么的接口,以滿足用戶特定平安目的的需求,以下是數(shù)據(jù)流和控制流的例子。 數(shù)據(jù)流跟蹤來自網(wǎng)絡(luò)的數(shù)據(jù),該數(shù)據(jù)最后在一塊給定的內(nèi)存執(zhí)行操作,對來自網(wǎng)絡(luò)的數(shù)據(jù)沒有做大小控制,會導(dǎo)致緩沖區(qū)溢出。 控制流分析所有的操作路徑,發(fā)現(xiàn)在特定的邏輯下,程序執(zhí)行不平安的操作,比方下面的對同一內(nèi)存塊釋放了兩次,導(dǎo)致內(nèi)存管理紊亂。 靜態(tài)源代碼平安掃描工具器的潛在價值: 減少本錢。靜態(tài)平安掃描工具主要用于開發(fā)階段去識別潛在的平安風(fēng)險,在研發(fā)早期就識別出平安問題,修復(fù)問題早,修復(fù)的本錢低。 教育開發(fā)人員進行平安編

8、程。大多數(shù)開發(fā)人員沒有培訓(xùn)如何平安編程,好的平安掃描工具不僅僅發(fā)現(xiàn)問題,也解釋問題的根源,并推薦怎樣去修復(fù)問題。這提供應(yīng)開發(fā)人員第一手的資料,作為他們?nèi)绾稳ジ纳凭幊虒嵺`的參考。 重新檢測老的代碼。即使老的代碼在開發(fā)的時候考慮到平安的,當這些代碼被開發(fā)出來以后,新的類別平安漏洞也可能使得原有的系統(tǒng)不平安,平安掃描器能夠幫助找出這些問題。 作為平安度量的米尺。盡管因為平安掃描工具的誤報和漏報的原因,我們無法確定軟件的平安有多好,但平安掃描分析器能夠幫助測量軟件平安到底有多么壞。 自動重復(fù)源代碼平安審計方面單調(diào)乏味的工作,解放人工的平安分析去跟蹤更多更困難的問題。 以平安的觀點去檢測好的編程風(fēng)格。

9、如果沒有定制平安規(guī)那么,分析器將以它自己定義的編程風(fēng)格去確定編碼風(fēng)格的好壞,定制規(guī)那么幫助開發(fā)團隊固化好的編程風(fēng)格,這使得從平安的角度去提高編碼的風(fēng)格。當然定制規(guī)那么是需要一定的時間和一定經(jīng)驗的。 3.軟件代碼平安檢測工具功能限定 靜態(tài)平安掃描器并不是設(shè)計去發(fā)現(xiàn)架構(gòu)方面的問題,或者說設(shè)計方面的缺陷,也不適合去發(fā)現(xiàn)集成方面的BUG,平安掃描器也有一些局限,特別是讓它去分析一些大的系統(tǒng),這些系統(tǒng)包含多種可執(zhí)行的組件,或者不同的結(jié)構(gòu)層次。應(yīng)當強調(diào)的是:就像人工審計一樣,平安掃描器并不能發(fā)現(xiàn)軟件系統(tǒng)的所有代碼的平安缺陷,它們也只能發(fā)現(xiàn)一些,畢竟平安掃描器它自己也是一個軟件,這剩下的未被發(fā)現(xiàn)的問題仍然需

10、要人工去把他們找出來。因此,不要僅僅單一依賴平安的掃描器去確保整個系統(tǒng)代碼的平安。開發(fā)人員需要學(xué)會防止平安掃描器指出的問題,這是好的事情,但并不意味著能夠防止那些平安掃描器沒能發(fā)現(xiàn)的問題。平安掃描的結(jié)果不能作為僅有的判斷軟件質(zhì)量的唯一方式。否那么,軟件可能從外表上看起來已經(jīng)得到改善和提高了,但實際上仍然在有些方面很糟糕。 4.總結(jié) 源代碼平安掃描器綜合了多種靜態(tài)掃描技術(shù),能夠在一定程度上幫助我們檢測軟件源代碼的平安性,我們可以借助它的能力配合人工的平安審計快速審查代碼平安。開發(fā)組織,為了開發(fā)平安的軟件,不能僅僅依靠單一的源代碼掃描分析工具,還需要加強開發(fā)人員平安編碼的培訓(xùn)和教育,并結(jié)合自身組織

11、的特點,整理出適合自身的平安編碼實踐,并在不斷的工程實踐中豐富和完善。 參考文獻 【1】Weber S,Karger P A,Paradkar A.A Software Flaw Taxonomy:Aiming Tools at SecurityC/Proc.of ACM Software Engineering for Secure SystemsBuilding Trustworthy Applications.Louis,Missouri,USA:s.n.,2005. 【2】Landwehr C E.Formal Models for Computer SecurityJ.ACM Computing Surveys,1981,13:247-278. 【3】Xia Yiming.Security Vulnerabi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論