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