- 相關(guān)推薦
測試軟件安全的方法
測試軟件安全的方法【1】
摘要:科學(xué)技術(shù)不斷更新、發(fā)展,使得計算機的軟件有了越來(lái)越廣泛的應用范圍。
然而軟件的安全問(wèn)題也變得越來(lái)越重要,安全是軟件在它的一個(gè)軟件生命周期中最最重要的環(huán)節之一,我們只有解決好軟件的安全問(wèn)題才能促使軟件更好的發(fā)展。
該文主要介紹了軟件測試的注意事項和測試軟件安全的方法。
關(guān)鍵詞:軟件;安全;測試;方法
Abstract: With the development of science and technology, the computer software has been applied more and more range.
But the security of software is becoming more and more important, safety is one of the most important link in a software cycle life. Only when we solve software security issues well we can urge software better development. This paper mainly introduces attentions and methods of the software testing.
Key words: software; security; testing; methods
軟件的安全測試的目的是為了保證軟件能夠滿(mǎn)足與軟件預期的設計要求相符合的安全系數,和平常的軟件缺陷不同的是,計算機的軟件安全測試檢測的是軟件不應該做什么,而軟件缺陷是軟件應該做什么沒(méi)有做到。
檢測軟件的安全性能我們可以分成安全功能和漏洞兩個(gè)方面來(lái)進(jìn)行檢測。
功能的測試是為了驗證計算機的軟件安全功能能不能達到安全所需要的要求。
檢測軟件的安全功能會(huì )涉及到比較廣的內容和方面,大致包含授權、機密、安全管理以及訪(fǎng)問(wèn)的控制等。
[1]安全漏洞的檢測主要是針對軟件存在的缺陷有哪些可能以及這些缺陷可能會(huì )引起的軟件使用過(guò)程中發(fā)生危險。
就軟件安全檢測工作本身而言研究檢測軟件安全方法具有很高的價(jià)值和意義,軟件安全的測試方法的研究是保障計算機軟件安全重要的保障之一。
軟件的安全檢測作為開(kāi)發(fā)過(guò)程中重要的環(huán)節之一,主要的目的就是要發(fā)現軟件存在的漏洞,通過(guò)對程序進(jìn)行執行、檢查,從而有效的發(fā)現、解決、更正軟件存在的潛在風(fēng)險和問(wèn)題。
[2]我們就目前應用在計算機軟件的安全檢測技術(shù)情況而言,我們通常使用的軟件安全測試方法大致可以分為手工檢測以及靜態(tài)、動(dòng)態(tài)檢測等數種方法。
1計算機軟件安全檢測是應注意的問(wèn)題
我們在檢測軟件的安全性的時(shí)候要特別的注意一些問(wèn)題:首先我們要從實(shí)際出發(fā),根據所要檢測計算機軟件的自身特點(diǎn)以及安全性的要求進(jìn)行綜合的分析判斷,在這些基礎上科學(xué)的選擇最適合此軟件的安全檢測方法,安全檢測方案的制定貴在實(shí)事求是的合理選擇。
其次,我們在檢測軟件安全的時(shí)候要注意好身邊的人員的分配,最好進(jìn)行多元化的配置,因為在檢測軟件安全的過(guò)程我們要配備的不僅僅是軟件的安全分析員,還要找一些熟悉那個(gè)軟件系統的、以及設計這個(gè)軟件系統的設計人員,讓他們一同加入軟件的安全測試中去,多領(lǐng)域配合會(huì )使得軟件的安全檢測更全面更有效。
[3]最后,我們要注意在檢測軟件安全的時(shí)候,要積極的認真的分析需求級、系統級以及代碼級,在適當那個(gè)的時(shí)候比如規模大的軟件,我們還應該分析軟件的結構設計。
計算機軟件的安全檢測過(guò)程是系統化的,我們不能用簡(jiǎn)單的方法來(lái)解決,我們要向全面的檢測出系統所有的安全問(wèn)題就要選擇合理的檢測方法,安排配置好檢測人員。
2軟件安全漏洞檢測方法
2.1手工分析
現在絕大多數的安全研究員采用的依然是最古老的最傳統的手工分析方法。
手工分析方法如果運用在開(kāi)源軟件上,這種方法一般通過(guò)Source Insight這樣的源碼閱讀工具來(lái)進(jìn)行源碼的查詢(xún)和檢索。
例如我們分析C語(yǔ)言或者C++的程序,最簡(jiǎn)單的辦法是首先審查軟件系統中的gets、strcpy等輸入命令有沒(méi)有存在危險的函數調用,接著(zhù)需要審核的就是庫函數以及軟件中的循環(huán)。
[4]對于閉源軟件來(lái)說(shuō),他們和開(kāi)源不同,閉源的源代碼獲得比較的困難,所以我們要使用必要的反匯編以及調試器,我們利用反匯編來(lái)得到軟件的匯編代碼,在這個(gè)代碼的基礎上再來(lái)分析軟件的安全性,閉源軟件的手工分析難度比源代碼閱讀要高得多,這就會(huì )造成理解源程序以及程序的逆向工程分析困難。
總之不論是用什么手工分析方法,我們都要求我們的安全分析員能夠深入的了解軟件安全漏洞原理,對軟件結構和功能的掌握也是必不可少的。
用手工分析的方法來(lái)檢測軟件的安全性能,軟件開(kāi)發(fā)員即使精通檢測軟件安全漏洞技術(shù),手工撿漏仍然非常的費時(shí)耗力。
可是現在還沒(méi)有完全自動(dòng)化的檢測軟件安全的技術(shù),而且機器的檢測最終還需要我們去驗證,因此人工參與是一個(gè)必須的也是不可或缺的過(guò)程,在確認靜態(tài)分析結果、分析動(dòng)態(tài)程序數據的構造等操作的時(shí)候我們也少不了手工分析。
2.2動(dòng)態(tài)測試
軟件的動(dòng)態(tài)測試的目的是檢驗軟件運行過(guò)程中的動(dòng)態(tài)行為以及結果的正確性。
現在,動(dòng)態(tài)測試成為了軟件安全測試主要的方法之一。
這個(gè)測試需要執行程序的來(lái)完成測試需要,動(dòng)態(tài)分析在運行程序以后可以得到一次或者多次的信息,然后工作人員根據得到的信息檢測特定的漏洞,進(jìn)而完成安全分析。
最常見(jiàn)的動(dòng)態(tài)測試是程序的測試以及剖析,動(dòng)態(tài)測試對程序的測試結果非常的準確,因為動(dòng)態(tài)測試沒(méi)有抽象化處理程序,在程序的執行過(guò)程中是哪條路被執行了,計算得出的數據是多少,程序運行時(shí)使用的內存、執行的時(shí)間等都可以很明確的知道。
可是動(dòng)態(tài)測試的結果不完整,因為程序的執行的一個(gè)情況無(wú)法代表程序還可能會(huì )執行的其他情況。
也就是如果輸入的一個(gè)數據集無(wú)法保證程序能夠執行完所有可能的路徑,程序一次甚至多次執行還是可能會(huì )有一些安全的問(wèn)題無(wú)法被發(fā)現軟件,可是這些漏洞是真實(shí)存在的,我們要做好動(dòng)態(tài)測試就是要設計好分支和狀態(tài)覆蓋測試。
2.3靜態(tài)測試
我們在安全檢查的時(shí)候還有一種效率比較高的軟件安全分析方法就是靜態(tài)測試,它的應用越來(lái)越受到人們的重視。
只要用戶(hù)給出抽象語(yǔ)義,靜態(tài)測試技術(shù)就可以自動(dòng)的發(fā)現軟件所有可能執行的狀態(tài),以及狀態(tài)下的軟件屬性。
軟件的靜態(tài)測試分析速度快、自動(dòng)化程度高,在實(shí)際的應用中我們也發(fā)現靜態(tài)測試和動(dòng)態(tài)相比效率更高,而且找到缺陷的速度也快不少。
雖然軟件的靜態(tài)分析有可能會(huì )發(fā)生漏報、誤報可是到目前為止和其他的安全測試方法比起來(lái)靜態(tài)測試最實(shí)用、有效的方法。
靜態(tài)測試使用靜態(tài)分析技術(shù),直接分析程序的源代碼,通過(guò)詞法分析、語(yǔ)法分析和靜態(tài)語(yǔ)義分析,檢測程序中潛在的安全漏洞。
現在,主要有類(lèi)型推斷、數據流以及約束分析三種靜態(tài)分析方法。
2.3.1類(lèi)型推斷
我們知道我們分析運算符作用的對象、賦值,實(shí)際參數的傳遞時(shí),或多或少都會(huì )存在一些類(lèi)型合適不合適的情況。
我們所說(shuō)的類(lèi)型推斷屬于處理過(guò)程,它的目的是保證進(jìn)行對象的每個(gè)操作的數目和類(lèi)型都是正確、合理的,確保操作有效。
類(lèi)型推斷可以檢查類(lèi)型錯誤,選擇合適的操作,根據情況確定必要的類(lèi)型轉換。
這種方法簡(jiǎn)單、高效,對快速的檢測軟件的安全性非常的適合。
我們在檢查操作系統內核權限、遇到程序中字符串格式化漏洞和內核中不安全的指針使用的安全檢測的時(shí)候采用類(lèi)型推斷方法檢測。
2.3.2數據流分析
在編譯的時(shí)候我們可以使用數據流分析技術(shù),這種技術(shù)可以收集程序代碼中的語(yǔ)義信息,然后用代數的方式對它進(jìn)行編譯,從而確定變量定義以及變量的使用。
我們可以用數據流分析來(lái)優(yōu)化編譯、調試、驗證、并行、測試、向量化程序的環(huán)境因素。
在安全檢測中數據流分析有非常廣泛的應用,我們用數據流分析可以檢測程序軟件中的數組的越界等多種類(lèi)型的安全漏洞。
2.3.3約束分析
約束分析分為約束產(chǎn)生、約束求解兩個(gè)步驟,約束分析的第一步是利用約束規則建立分析狀態(tài)和變量類(lèi)型的約束,第二步是求解這些約束系統。
約束系統分為三種形式:等式、集合以及混合。
約束項之間僅僅存在等式關(guān)系的是等式約束,集合約束是把程序變量看作值集,混合約束系統由部分等式約束和部分集合約束組成。
在安全檢測中我們使用約束分析來(lái)測試軟件的安全性能也是比較廣泛的。
例如我們利用集合約束的方法來(lái)測試程序中緩沖區是不是存在溢出漏洞。
以上三種靜態(tài)檢測方法各有各的利弊,通過(guò)對各自的比較我們可以看出,檢測能力強但是速度慢的是約束分析,這種分析方法檢測軟件安全比較適合;檢測強速度較快的是數據流分析,這種方法最適合的是要求考慮控制流信息并且變量之間的操作簡(jiǎn)單的問(wèn)題;最檢測能力弱檢測速度快的是類(lèi)型推斷,這種方法最適合的問(wèn)題是與控制流無(wú)關(guān)、屬性域有限的安全屬性。
2.4偵聽(tīng)技術(shù)
我們所說(shuō)的偵聽(tīng)技術(shù)有的也叫做網(wǎng)絡(luò )監聽(tīng),這種方法可以獲取網(wǎng)絡(luò )傳輸的信息,獲取的信息并非發(fā)給自己的。
在測試軟件的安全性時(shí)網(wǎng)絡(luò )偵聽(tīng)技術(shù)是常用手段,這種方法可有效診斷、管理網(wǎng)絡(luò )問(wèn)題,可以很好的檢查軟件網(wǎng)絡(luò )安全存在的威脅。
我們現在最常用的網(wǎng)絡(luò )是一個(gè)廣播型的網(wǎng)絡(luò ),我們可以從該網(wǎng)中的任何的一臺計算機都可以偵聽(tīng)到這個(gè)網(wǎng)段所有的數據傳輸包。
我們可以利用這種技術(shù)對軟件進(jìn)行安全性檢測,防止軟件泄露一些重要的數據,我們可以利用工具或者是自己編的小程序復制我們偵聽(tīng)到的數據包并把他們存儲下來(lái),然后我們就可以通過(guò)得到的這些信息數據來(lái)分析網(wǎng)絡(luò )、軟件的安全。
我們最好把偵聽(tīng)放在路由器、網(wǎng)關(guān)、防火墻、交換機等設備的地方,由于這些地方流過(guò)的信息包多,所以這里的監聽(tīng)效果最好。
我們經(jīng)常使用的網(wǎng)絡(luò )偵聽(tīng)經(jīng)典程序有Snoop等,一般來(lái)說(shuō)偵聽(tīng)程序還不能做到把偵聽(tīng)到的數據包馬上進(jìn)行分解分析,這些軟件一般是先進(jìn)行不停地存儲,然后慢慢再進(jìn)行分析,這樣可以防止數據包的遺漏。
3總結
從上面的介紹和論述中我們可以看出,軟件的安全是計算機信息安全最重要的組成部分之一,安全性測試的重要性越來(lái)越得到軟件開(kāi)發(fā)以及測試人員的認可。
現在軟件安全的檢測辦法有很多,我們主要了解介紹了比較傳統但是不可缺少的手動(dòng)分析方法,還有動(dòng)態(tài)分析和靜態(tài)分析,通過(guò)對程序的執行來(lái)檢測軟件的安全,還有偵聽(tīng)技術(shù),保證網(wǎng)絡(luò )和軟件的安全使用,保證軟件的重要數據不被泄露。
但是我們現在的測試軟件安全的方法還不夠的系統全面,還或多或少的存在著(zhù)這樣那樣的問(wèn)題,這些還需要我們進(jìn)一步的去研究。
在接下來(lái),我們要深入的研究軟件的授權等安全功能建模與測試技術(shù),把安全測試方法形式化,研究模糊測試、故障注入以及基于屬性的安全測試方法還有很多新的軟件安全測試技術(shù)等著(zhù)我們去深入的研究開(kāi)發(fā),我相信,通過(guò)我們的努力,我們一定能夠開(kāi)發(fā)出更好的軟件安全測試技術(shù),讓軟件的安全性能得到保障。
參考文獻:
[1]黎連業(yè),王華,李淑春.軟件測試與測試技術(shù)[M].北京:清華大學(xué)出版社,2009(5):24.
[2]羅國慶.實(shí)用軟件測試方法與應用[M].北京:電子工業(yè)出版社,2007:129-130.
[3]陳璇.淺談關(guān)于軟件安全性測試方法研究[J].電腦知識與技術(shù),2009(3):78.
[4]黎連業(yè),王華,李淑春.軟件測試與測試技術(shù)[M].北京:清華大學(xué)出版社,2009:45-48.
軟件安全性測試方法研究【2】
摘 要為了提高軟件研發(fā)的安全性,需要對軟件的安全性進(jìn)行測試,筆者根據軟件安全測試的主要內容及特征,總結出了相關(guān)的軟件安全測試的方法,為提高軟件質(zhì)量及安全性提供借鑒。
【關(guān)鍵詞】軟件 安全測試 方法 研究
軟件安全性是指在其運行的過(guò)程中,采用相關(guān)的技術(shù)方法將可能發(fā)生的風(fēng)險控制在可以接受的范圍內,避免系統發(fā)生不能接受的風(fēng)險,提高軟件系統的安全性能。
雖然作為系統不會(huì )直接威脅到人們的生命財產(chǎn)安全,但是一旦人工操作失誤也會(huì )造成危機。
例如,在運用航天軟件時(shí),一旦飛機比預期的高度低,航天軟件就要及時(shí)發(fā)送警告,避免飛機下墜。
對軟件的安全性進(jìn)行分析測試,及時(shí)發(fā)現和排除錯誤,減少損失。
目前國內的安全軟件測試針對性不強,缺乏測試依據,需要改進(jìn)。
1 軟件安全性測試的特點(diǎn)和分類(lèi)
對軟件進(jìn)行安全測試就是看其安全特性是否和設計時(shí)要求的效果一致,包含對軟件的功能測試,驗證測試及滲透測試。
軟件安全測試有其獨特性,安全性的缺陷和普通的軟件缺陷不同,安全方面出現漏洞會(huì )使很多的用戶(hù)受到損失,注重強調軟件不應該做什么而不是強調讓軟件做什么,強調的是其否定需求,比如說(shuō),未經(jīng)允許用戶(hù)沒(méi)有權利訪(fǎng)問(wèn)數據。
軟件安全測試可以分為兩類(lèi),安全功能測試(Security Functional Testing)和安全漏洞測試(Security Vulnerability Testing),前者主要從軟件功能角度出發(fā),根據安全功能的要求測試軟件的安全性是否達標,軟件的功能要求主要有軟件的完整性、機密性、不可否認性及隱私保護等等;后者相關(guān)的漏洞測試主要站在攻擊者的層面上看,主要目標是發(fā)現軟件的安全漏洞,主要的安全漏洞包括,軟件在操作、設計、運行方面是否有漏洞或者缺陷。
因為一旦漏洞被攻擊者利用,必然使軟件處于危險狀態(tài),所以,安全漏洞測試就是辨識軟件的缺陷及漏洞。
2 軟件測試的方法
2.1 靜態(tài)測試
在測試軟件的代碼時(shí),并不真實(shí)運行被測試的軟件,靜態(tài)測試還經(jīng)常被應用于軟件文檔測試,比如,可以檢測或者驗證文檔,對系統軟件設計的文檔或者軟件代碼的檢查。
2.2 動(dòng)態(tài)測試
和靜態(tài)測試不同的就是需要在檢測時(shí)實(shí)際運行軟件,通過(guò)運行檢測軟件的運行情況及動(dòng)態(tài)的行為。
所以,在進(jìn)行動(dòng)態(tài)測試時(shí),一定要運行被測試的軟件,真正輸入數據進(jìn)行驗證檢測。
2.3 功能測試
功能測試時(shí)建立在刺痛或者程序的功能上,測試的人員無(wú)需知道程序的運行過(guò)程,重點(diǎn)關(guān)注軟件程序的功能是否符合標準、規格。
2.4 結構測試
結構測試要求測試工作人員了解程序軟件的內部結構和邏輯過(guò)程,重點(diǎn)關(guān)注軟件生成的代碼,可以忽略功能測試,不關(guān)注功能是否匹配。
3 安全性測試的主要方法
3.1 形式化安全測試
形式化安全測試就是通過(guò)建立數學(xué)模型,運用形式規范的語(yǔ)言,供給軟件的說(shuō)明。
可以將這種測試方法氛圍兩類(lèi),
3.1.1 定理證明
就是把相關(guān)的軟件程序轉變?yōu)檫壿嫻,運用之前的理論及規則證實(shí)程序的合法性。
3.1.2 模型檢測
在描述軟件行為方面使用S代表狀態(tài)遷移系統,在描述軟件執行必須滿(mǎn)足的性質(zhì)方面用計算樹(shù)邏輯F代表,然后對S這一過(guò)程進(jìn)行自動(dòng)搜索,找到不能滿(mǎn)足F這一公式的狀態(tài)的方式發(fā)現軟件漏洞。
NASA的一個(gè)實(shí)驗室叫JPL曾經(jīng)進(jìn)行過(guò)形式化安全測試,通過(guò)建立形式化模型,比如,狀態(tài)機,對軟件進(jìn)行形式化安全測試就是通過(guò)搜索狀態(tài)空間,尋找路徑使其達到違背規約的不安全狀態(tài),模型不斷增大,逐漸變得復雜,狀態(tài)空間也不斷增長(cháng),JPL研發(fā)了一種方式避免狀態(tài)爆炸。
3.2 建立在模型基礎上的安全功能測試
通過(guò)對軟件的行為和機構建模,再將測試模型生成測試軟件,一般會(huì )用到的測試模型有UML模型、有限狀態(tài)機及馬爾可夫鏈等等。
Mark Blackburn、Robert Busser研發(fā)了安全功能測試,就是通過(guò)利用SCRModeling建模,運用表單的形式建立安全功能行為模型,把相應的表單模型轉化為說(shuō)明模型,運用T-VEC生成向量,包括輸入和輸出變量,研發(fā)測試驅動(dòng)模式,再將測試向量輸入測試驅動(dòng)模式,運行測試模式。
通過(guò)這種安全功能測試,能夠有效測試軟件的安全性,但是它只適用于安全功能建模能力達到一定的程度,例如,對授權、訪(fǎng)問(wèn)控制等進(jìn)行軟件應用進(jìn)行測試。
3.3 語(yǔ)法測試
這種測試方法是用來(lái)檢測軟件對各種輸入情況的反應,檢測軟件的功能接口的語(yǔ)法生成測試輸入。
接口的類(lèi)型有很多,例如,命令行、環(huán)境變量等等,接口需要已經(jīng)規定了所要求輸入的語(yǔ)法,這一語(yǔ)法對輸入的數據的格式及類(lèi)型進(jìn)行了定義。
測試的一般過(guò)程就是辨識接口的語(yǔ)法形式,據此生成測試用例,執行測試。
測試時(shí)正確、錯誤及畸形的語(yǔ)法都應該包括在測試范圍內,檢測軟件的處理情況及缺陷,語(yǔ)法測試和故障注入技術(shù)相結合效果會(huì )更好。
3.4 模糊測試
在發(fā)現軟件的安全漏洞方面,模糊測試是一種很重要的方法,它是通過(guò)將隨機的不完善的數據插入到程序中,觀(guān)測軟件程序是否能夠接受胡亂的數據輸入,模糊測試一般是不符合邏輯的,通過(guò)產(chǎn)生雜亂的數據供給程序來(lái)達到測試的目的,通過(guò)這種間接的測試方法可以可以檢測出來(lái)正常邏輯思維難以發(fā)現的安全漏洞。
4 結語(yǔ)
軟件安全測試時(shí)軟件研發(fā)過(guò)程中的重要環(huán)節,通過(guò)發(fā)現軟件之星時(shí)的故障和缺陷,及時(shí)更正,避免造成更大的破壞,軟件測試的最理想效果就是使用較少的測試用例實(shí)現較大的安全測試。
在進(jìn)行軟件安全測試前,要針對所要測試軟件的類(lèi)型,制定測試方案,分析測試結果,整理測試資料,查找漏洞。
出了筆者探討的上述安全測試方法之外,還有建立在故障注入基礎上的安全性測試方法,基于屬性的安全測試方法等。
在未來(lái),Web服務(wù)軟件發(fā)展迅速,怎樣針對Web服務(wù)進(jìn)行安全測試是需要研究的新課題。
參考文獻
[1]陸璐,王柏勇.軟件自動(dòng)化測試技術(shù)[M].北京:清華大學(xué)出版社,2006.
[2]郭群.軟件測試設計技術(shù)[J].電腦知識與技術(shù),2007(17).
[3]游歷貞,郭宇春,李純喜.AJAX引擎的原理和應用[J].微計算機信息,2006(22):2-3.
[4]黃愛(ài)明.國內軟件測試現狀及對策研究[J].中國管理信息化,2007(02).
軟件安全測試的原則【3】
摘要:軟件安全性是一個(gè)廣泛而復雜的主題,要避免因安全性缺陷問(wèn)題受各種可能類(lèi)型的攻擊是不切實(shí)際的。
本文從軟件安全測試需要考慮的問(wèn)題,來(lái)探討軟件安全測試原則,通過(guò)遵循這些原則避免許多常見(jiàn)的安全性測試問(wèn)題出現。
關(guān)鍵詞:軟件安全;測試;原則
軟件安全性是一個(gè)廣泛而復雜的主題,每一個(gè)新的軟件總可能有完全不符合所有已知模式的新型安全性缺陷出現。
要避免因安全性缺陷問(wèn)題受各種可能類(lèi)型的攻擊是不切實(shí)際的。
在軟件安全測試時(shí),運用一組好的原則來(lái)避免不安全的軟件上市、避免不安全軟件受攻擊,就顯得十分重要。
一、軟件安全性測試基本概念
軟件安全性測試包括程序、網(wǎng)絡(luò )、數據庫安全性測試。
根據系統安全指標不同測試策略也不同。
1.用戶(hù)程序安全的測試要考慮問(wèn)題包括:①明確區分系統中不同用戶(hù)權限;②系統中會(huì )不會(huì )出現用戶(hù)沖突;③系統會(huì )不會(huì )因用戶(hù)的權限的改變造成混亂;④用戶(hù)登陸密碼是否是可見(jiàn)、可復制;⑤是否可以通過(guò)絕對途徑登陸系統(拷貝用戶(hù)登陸后的鏈接直接進(jìn)入系統);⑥用戶(hù)推出系統后是否刪除了所有鑒權標記,是否可以使用后退鍵而不通過(guò)輸入口令進(jìn)入系統。
2.系統網(wǎng)絡(luò )安全的測試要考慮問(wèn)題包括:①測試采取的防護措施是否正確裝配好,有關(guān)系統的補丁是否打上;② 模擬非授權攻擊,看防護系統是否堅固;③采用成熟的網(wǎng)絡(luò )漏洞檢查工具檢查系統相關(guān)漏洞;④ 采用各種木馬檢查工具檢查系統木馬情況;⑤ 采用各種防外掛工具檢查系統各組程序的客外掛漏洞。
3.數據庫安全考慮問(wèn)題:①系統數據是否機密(比如對銀行系統,這一點(diǎn)就特別重要,一般的網(wǎng)站就沒(méi)有太高要求);② 系統數據的完整性; ③系統數據可管理性; ④系統數據的獨立性;⑤系統數據可備份和恢復能力(數據備份是否完整,可否恢復,恢復是否可以完整)。
二、根據軟件安全測試需要考慮的問(wèn)題
1.保護了最薄弱的環(huán)節
攻擊者往往設法攻擊最易攻擊的環(huán)節,這對于您來(lái)說(shuō)可能并不奇怪。
即便他們在您系統各部分上花費相同的精力,他們也更可能在系統最需要改進(jìn)的部分中發(fā)現問(wèn)題。
這一直覺(jué)是廣泛適用的,因此我們的安全性測試應側重于測試最薄弱的部分。
如果執行一個(gè)好的風(fēng)險分析,進(jìn)行一次最薄弱環(huán)節的安全測試,標識出您覺(jué)得是系統最薄弱的組件應該非常容易,消除最嚴重的風(fēng)險,是軟件安全測試的重要環(huán)節。
2.是否具有縱深防御的能力
縱深防御背后的思想是:使用多重防御策略來(lái)測試軟件,以至少有一層防御將會(huì )阻止完全的黑客破壞。
“保護最薄弱環(huán)節”的原則適用于組件具有不重疊的安全性功能。
當涉及到冗余的安全性措施時(shí),所提供的整體保護比任意單個(gè)組件提供的保護要強得多,縱深防御能力的測試是軟件安全測試應遵循的原則。
3.是否有保護故障的措施
大量的例子出現在數字世界。
經(jīng)常因為需要支持不安全的舊版軟件而出現問(wèn)題。
例如,比方說(shuō),該軟件的原始版本十分“天真”,完全沒(méi)有使用加密。
現在該軟件想修正這一問(wèn)題,但已建立了廣大的用戶(hù)基礎。
此外,該軟件已部署了許多或許在長(cháng)時(shí)間內都不會(huì )升級的服務(wù)器。
更新更聰明的客戶(hù)機和服務(wù)器需要同未使用新協(xié)議更新的較舊的客戶(hù)機進(jìn)行互操作。
該軟件希望強迫老用戶(hù)升級,沒(méi)有指望老用戶(hù)會(huì )占用戶(hù)基礎中如此大的一部分,以致于無(wú)論如何這將真的很麻煩。
怎么辦呢?讓客戶(hù)機和服務(wù)器檢查它從對方收到的第一條消息,然后從中確定發(fā)生了什么事情。
如果我們在同一段舊的軟件“交談”,那么我們就不執行加密。
遺憾的是,老謀深算的黑客可以在數據經(jīng)過(guò)網(wǎng)絡(luò )時(shí),通過(guò)篡改數據來(lái)迫使兩臺新客戶(hù)機都認為對方是舊客戶(hù)機。
更糟的是,在有了支持完全(雙向)向后兼容性的同時(shí)仍無(wú)法消除該問(wèn)題。
對這一問(wèn)題的一種較好解決方案是從開(kāi)始就采用強制升級方案進(jìn)行設計;使客戶(hù)機檢測到服務(wù)器不再支持它。
如果客戶(hù)機可以安全地檢索到補丁,它就升級。
否則,它告訴用戶(hù)他們必須手工獲得一個(gè)新的副本。
但是從一開(kāi)始就應準備使用這一解決方案,就會(huì )得罪早期用戶(hù)。
測試采取的防護措施是否正確裝配好,有關(guān)系統的補丁是否打上就十分的重要。
4.最小特權
最小特權原則規定:確定只授予執行操作所必需的最少訪(fǎng)問(wèn)權,并且對于該訪(fǎng)問(wèn)權只準許使用所需的最少時(shí)間。
當軟件給出了某些部分的訪(fǎng)問(wèn)權時(shí),一般會(huì )出現濫用與那個(gè)訪(fǎng)問(wèn)權相關(guān)的特權的風(fēng)險。
例如,我們假設您出去度假并把您家的鑰匙給了您的朋友,好讓他來(lái)喂養您的寵物、收集郵件等等。
盡管您可能信任那位朋友,但總是存在這樣的可能:您的朋友未經(jīng)您同意就在您的房子里開(kāi)派對或發(fā)生其它您不喜歡的事情。
一位程序員可能希望訪(fǎng)問(wèn)某種數據對象,但只需要從該對象上進(jìn)行讀。
不過(guò),不管出于什么原因,通常該程序員實(shí)際需要的不僅是必需的特權。
通常,該程序員是在試圖使編程更容易一些。
如果軟件設置的訪(fǎng)問(wèn)權結構不是“完全訪(fǎng)問(wèn)或根本不準訪(fǎng)問(wèn)”,那么最小特權原則會(huì )非常有效。
5.分隔
分隔背后的基本思想是如果我們將系統分成盡可能多的獨立單元,那么我們可以將對系統可能造成損害的量降到最低。
通常,如果攻擊者利用了代碼中的緩沖區溢出,對磁盤(pán)進(jìn)行原始寫(xiě)并胡亂修改內核所在內存中的任何數據。
沒(méi)有保護機制能阻止他這樣做。
因此,系統進(jìn)行適度的分隔顯得十分重要,軟件要能直接支持本地磁盤(pán)上永遠不能被擦去的日志文件,這意味著(zhù)直到
攻擊者闖入時(shí),才不能保持精確的審計信息。
適度使用的分隔,將利于系統的管理,但是對每一個(gè)功能都進(jìn)行分隔,那么系統將很難管理。
三、安全性測試的主要目的是查找軟件自身程序設計中存在的安全隱患,并檢查應用程序對非法侵入的防范能力, 根據安全指標不同測試策略也不同,如果遵循相同的原則,去證明軟件的安全性,將有利于軟件安全測試的工作規范的進(jìn)行,有利于軟件安全測試工作的發(fā)展。
參考文獻:
[1]《Windows漏洞攻擊與安全防范 計算機與網(wǎng)絡(luò )安全實(shí)用叢書(shū)》 蔡毅 周繼軍 彭海龍
[2]《軟件安全-使安全成為軟件開(kāi)發(fā)必需的部分》(美)麥克勞
[3]《軟件安全開(kāi)發(fā)生命周期》 Michael Howard
【測試軟件安全的方法】相關(guān)文章:
10-26
10-26
10-26
10-05
10-05
10-06
11-25
05-19
11-23