公務員期刊網(wǎng) 論文中心 正文

計算機漏洞檢測思考

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了計算機漏洞檢測思考范文,希望能給你帶來靈感和參考,敬請閱讀。

計算機漏洞檢測思考

一、計算機安全動態(tài)檢測方法概述

程序在設(shè)計以及執(zhí)行期內(nèi)有很多共性的東西,比如有控制流(ControlFlow)和數(shù)據(jù)流(DataFlow)。一個進程的內(nèi)存映射會被分為代碼段(textsection)、只讀數(shù)據(jù)段(rdatasection)、數(shù)據(jù)段(datasection)、資源段(rsrcsection)、堆(heap)、棧(stack)等多個部分。當然在不同的操作系統(tǒng)下它們的多少會有所不同,比如在UNIX下通常還會有未初始化的數(shù)據(jù)段(BSS)等等。動態(tài)檢測方法就是在不改變源代碼甚至是二進制代碼的情況下,對程序的弱點進行檢測的方法,這類檢測主要通過修改進程運行環(huán)境來實現(xiàn)。動態(tài)檢測方法主要有:非執(zhí)行棧(Non-ExecutableStack)、非執(zhí)行堆與數(shù)據(jù)(Non-ExecutableHeap/data)、內(nèi)存映射(MemoryMapping)、安全共享庫(SafeSharedLibraries)、沙箱(Sandbox)和程序解釋(ProgramInterpretation)等。

二、計算機安全動態(tài)檢測技術(shù)探討

1、非執(zhí)行棧技術(shù)

基于棧進行軟件攻擊的事件最近幾年經(jīng)常發(fā)生,原因就是很多操作系統(tǒng)的棧是可以寫與執(zhí)行的,而且內(nèi)部變量尤其是數(shù)組變量都保存在棧中,攻擊者向棧中注入惡意代碼,然后想方設(shè)法來執(zhí)行這段代碼。棧攻擊技術(shù)的文檔也比較全面,這從某種程度上加速了基于棧的攻擊。一個最直接的防范棧攻擊的方法就是使得棧不能執(zhí)行代碼。該技術(shù)的檢測不夠全面,它僅能檢測并阻止摧毀棧攻擊。一個攻擊者可以通過把惡意代碼注入到數(shù)據(jù)段來繞過該技術(shù)的檢測,他只需要把棧中返回地址覆蓋掉,使得這個返回地址指向數(shù)據(jù)段中的惡意代碼就可以了。該技術(shù)可能會造成小量的兼容性問題,因為有個別的應用程序就是依靠棧執(zhí)行來正確運行的。該技術(shù)對性能的消耗可以被忽略,有報告稱這項技術(shù)僅僅在上下文切換時增加了2到3個CPU的指令周期。

2、非執(zhí)行堆與數(shù)據(jù)技術(shù)

由于堆是程序運行時動態(tài)分配內(nèi)存的區(qū)域,而數(shù)據(jù)段則是程序編譯時就初始化好了的。很長時期以來,由于擔心非執(zhí)行的堆與數(shù)據(jù)段會破壞軟件的正常運行,所以該方法進展緩慢,最近幾年才有些進展和文章。如果堆和數(shù)據(jù)段都不能執(zhí)行代碼,攻擊者注入其中的惡意代碼將不能被執(zhí)行。這項技術(shù)和前面的非執(zhí)行棧技術(shù)結(jié)合能起到更全面的作用,使得惡意代碼徹底失去執(zhí)行機會。使用該技術(shù)所付出的代價要比非執(zhí)行棧技術(shù)大一些,因為它對內(nèi)核的修改要多一些?,F(xiàn)在已經(jīng)有了大量的實例可以使用,這個技術(shù)還是可以接受的。

3、內(nèi)存映射技術(shù)

有些攻擊者通過使用NULL結(jié)尾的字符串來覆蓋內(nèi)存,以達到攻擊的目的。通過使用映射代碼頁方法,將使得攻擊者很難通過NULL結(jié)尾的字符串來跳轉(zhuǎn)到較低的內(nèi)存區(qū),而且這些代碼本身又可能含有NULL字符。再者,把代碼頁隨機地映射到不同的內(nèi)存地址,在某種程度上防止了那些靠猜地址來進行攻擊的攻擊方法。比如對于緩沖區(qū)溢出的漏洞,攻擊者就是要尋找目標進程在內(nèi)存中的某些地址,然后構(gòu)造自己的數(shù)據(jù)來覆蓋這些地址。這些地址在很多操作系統(tǒng)上都是有規(guī)律可以計算出的。如果使用內(nèi)存映射技術(shù),把代碼頁映射到隨機的地址,將給攻擊者增加很大的困難,不做大量的嘗試是不可能查出所需地址的。使用內(nèi)存映射技術(shù)所付出的最大的代價就是要修改操作系統(tǒng)內(nèi)核、使得操作系統(tǒng)可以把代碼頁映射到較低的內(nèi)存空間。雖然這個技術(shù)不需要對代碼進行修改,但要重新鏈接,因為二進制的地址在程序鏈接階段就確定了。

4、安全共享庫技術(shù)

很多軟件的安全漏洞來源于使用了不安全的共享庫,尤其是C&C++,當中有很多的函數(shù)都不夠“安全”,比如:strcpy、strcat、gets等等。這些函數(shù)使用不好就會帶來災難性的后果。用安全共享庫技術(shù),能在一定程度上阻止攻擊者的攻擊[5,6]。安全共享庫技術(shù)就是依靠動態(tài)鏈接技術(shù),能在程序運行期間攔截對不安全的函數(shù)的調(diào)用,并對函數(shù)參數(shù)等進行檢測,這在Windows和UNIX上都被廣泛應用。特別的是,這個技術(shù)能對當前內(nèi)存大小的上限給出一個評估值,這在一定程度上阻止了把數(shù)據(jù)寫到評估邊界的外面。安全共享庫技術(shù)從技術(shù)的角度很容易開發(fā)和配置,而且不需要對已有的應用程序作任何的修改和再編譯。

三、計算機安全動態(tài)檢測技術(shù)注意事項

計算機軟件設(shè)計中的安全漏洞動態(tài)檢測技術(shù)就是在程序執(zhí)行的情況下,通過對程序的運行環(huán)境(環(huán)境變量、內(nèi)存、堆和棧等)進行分析,來檢測程序是否存在漏洞的技術(shù)。動態(tài)檢測技術(shù)的優(yōu)點就是不需要修改目標程序源碼或其二進制代碼,這在一定程度上提高程序的保密性?;趧討B(tài)檢測技術(shù)的軟件安全漏洞檢測過程,需要綜合考慮對性能的影響、檢測全面性、誤報率、使用全面性、便于管理等多方面的因素,以便決定選擇最合適的動態(tài)檢測技術(shù)。