Linux 測試軟件:從源代碼開始
現(xiàn)在,大量的網(wǎng)絡(luò)服務(wù)器開始使用Linux操作系統(tǒng),Linux服務(wù)器的安全性也開始受到關(guān)注。對Linux服務(wù)器攻擊的定義是:攻擊是一種旨在妨礙、損害、削弱、破壞Linux服務(wù)器安全的未授權(quán)行為,攻擊的范圍可以從服務(wù)拒絕直至完全危害和破壞Linux服務(wù)器。對Linux服務(wù)器攻擊有許多種類,從攻擊深度的角度說明,我們可以把攻擊分為四級:服務(wù)拒絕攻擊(DoS)、本地用戶獲取了非授權(quán)的文件的讀寫權(quán)限、遠(yuǎn)程用戶獲得特權(quán)文件的讀寫權(quán)限、遠(yuǎn)程用戶獲得根權(quán)限。下面,我們將選取一些linux 測試軟件有針對性的經(jīng)典工具,一一加以說明。
Linux系統(tǒng)中最常見的缺陷就是緩沖區(qū)溢出,緩沖區(qū)以前可能被定義為“包含相同數(shù)據(jù)類型的實(shí)例的一個(gè)連續(xù)計(jì)算機(jī)內(nèi)存塊”。極其常見的緩沖區(qū)種類是簡單的字符數(shù)組,溢出就是數(shù)據(jù)被添加到分配給該緩沖區(qū)的內(nèi)存塊之外。由此,我們可以看到,作為開源系統(tǒng),Linux系統(tǒng)中的代碼檢查就顯得十分重要。對于攻擊者和管理員來說,誰首先重視它,就在一定程度上取得了主動權(quán)。
(1)linux 測試軟件SPIKE
SPIKE是immunitysec公司的Dave Aitel寫的一個(gè)黑盒進(jìn)行安全測試的工具。SPIKE提供了各種各樣的構(gòu)造函數(shù)。例如s_binary可以構(gòu)造二進(jìn)制數(shù)據(jù),s_string可以構(gòu)造字符串,s_unistring可以構(gòu)造UNICODE字符串等。SPIKE的另一個(gè)優(yōu)勢是Dave Aitel的Fuzz理論,它可以構(gòu)造一些特殊的數(shù)字或者字符串作為程序的輸入,檢查程序是否能夠處理這些異常數(shù)據(jù)。此外,SPIKE里邊提供了常見的協(xié)議支持,例如SUN RPC和MS RPC。
(2)linux 測試軟件Lint
Lint能夠檢查的部分錯(cuò)誤列表:可能的空指針;在釋放內(nèi)存之后使用了該指針;賦值次序問題;拼寫錯(cuò)誤等。通常,一個(gè)C/C++的編譯器假設(shè)程序是正確的,而Lint恰恰相反,因此,它優(yōu)于編譯器執(zhí)行的一般性檢查。Lint還可以貫穿多個(gè)文件來執(zhí)行它的錯(cuò)誤檢查和代碼分析,這是編譯器做不到的。比較流行的Lint 程序有:PC-lint是一個(gè)由Gimpel Software提供的支持C/C++的商用程序;Splint (原來的 LCLint) 是一個(gè)GNU免費(fèi)授權(quán)的 Lint程序,但是只支持C不支持C++。
運(yùn)行 Lint時(shí),和正常的編譯器一樣,只要把直接加入的makefile 中就可以了。通過配置選項(xiàng)、代碼注釋等方法可以控制和校準(zhǔn)Lint的輸出。例如,這里有一個(gè)返回NULL指針的函數(shù),Splint可以通過下面的注釋 /*@null@*/ 來識別:
- /*@null@*/ void *test(void)
- {
- // a function that returns NULL!
- return NULL;
- }
這樣做有兩個(gè)目的:防止Splint為這個(gè)返回Null指針的函數(shù)告警;保證Splint 檢查任何調(diào)用該函數(shù)的代碼中使用該函數(shù)的返回指針是有效的。
(3)linux 測試軟件Flawfinder
Flawfinder 是一款用Python編寫的c、c++程序安全審核工具,可以檢查潛在的安全風(fēng)險(xiǎn)。它通過搜索檢測文件源代碼從而得到潛在的安全漏洞,支持檢測數(shù)據(jù)庫,以HTML格式生成報(bào)告。
【編輯推薦】