如何做好軟件安全測(cè)試_第1頁(yè)
如何做好軟件安全測(cè)試_第2頁(yè)
如何做好軟件安全測(cè)試_第3頁(yè)
如何做好軟件安全測(cè)試_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、如何做好軟件安全測(cè)試近來(lái),在我負(fù)責(zé)的公司某軟件產(chǎn)品的最后測(cè)試工作,常常被問(wèn)到這樣一個(gè)問(wèn)題:在做測(cè)試過(guò)程中,我們的 軟件產(chǎn)品在安全性方面考慮了多少 ?應(yīng)該如何測(cè)評(píng)一個(gè)軟件到底有多安全 ?這個(gè)軟件因?yàn)樯婕翱蛻羯虡I(yè)上重要的信息資料,因此用戶關(guān)心的核心問(wèn)題始終圍繞“這個(gè)軟件安全嗎 ”。一個(gè)由于設(shè)計(jì)導(dǎo)致的安全漏洞和一個(gè)由于實(shí)現(xiàn)導(dǎo)致的安全漏洞,對(duì)用戶的最終影響都是巨大的。我的任務(wù)就 是確保這個(gè)軟件在安全性方面能滿足客戶期望。什么是軟件安全性測(cè)試(1) 什么是軟件安全 軟件安全屬于軟件領(lǐng)域里一個(gè)重要的子領(lǐng)域。 在以前的單機(jī)時(shí)代, 安全問(wèn)題主要是操作系統(tǒng)容易感染病毒, 單機(jī)應(yīng)用程序軟件安全問(wèn)題并不突出。但是自

2、從互聯(lián)網(wǎng)普及后,軟件安全問(wèn)題愈加顯加突顯,使得軟件安 全性測(cè)試的重要性上升到一個(gè)前所未有的高度。軟件安全一般分為兩個(gè)層次, 即應(yīng)用程序級(jí)別的安全性和操作系統(tǒng)級(jí)別的安全性。 應(yīng)用程序級(jí)別的安全性, 包括對(duì)數(shù)據(jù)或業(yè)務(wù)功能的訪問(wèn),在預(yù)期的安全性情況下,操作者只能訪問(wèn)應(yīng)用程序的特定功能、有限的數(shù) 據(jù)等。操作系統(tǒng)級(jí)別的安全性是確保只有具備系統(tǒng)平臺(tái)訪問(wèn)權(quán)限的用戶才能訪問(wèn),包括對(duì)系統(tǒng)的登錄或遠(yuǎn) 程訪問(wèn)。本文所講的軟件安全主要是應(yīng)用程序?qū)拥陌踩?,包括兩個(gè)層面:是應(yīng)用程序本身的安全性。一般來(lái)說(shuō), 應(yīng)用程序的安全問(wèn)題主要是由軟件漏洞導(dǎo)致的,這些漏洞可以是設(shè)計(jì)上的缺陷或是編程上的問(wèn)題,甚至是 開(kāi)發(fā)人員預(yù)留的后門(mén)。是

3、應(yīng)用程序的數(shù)據(jù)安全,包括數(shù)據(jù)存儲(chǔ)安全和數(shù)據(jù)傳輸安全兩個(gè)方面。(2) 軟件安全性測(cè)試 一般來(lái)說(shuō),對(duì)安全性要求不高的軟件,其安全性測(cè)試可以混在單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試?yán)镆黄鹱觥?但對(duì)安全性有較高需求的軟件, 則必須做專門(mén)的安全性測(cè)試, 以便在破壞之前預(yù)防并識(shí)別軟件的安全問(wèn)題。安全性測(cè)試 (Security Testing) 是指有關(guān)驗(yàn)證應(yīng)用程序的安全等級(jí)和識(shí)別潛在安全性缺陷的過(guò)程。應(yīng)用程 序級(jí)安全測(cè)試的主要目的是查找軟件自身程序設(shè)計(jì)中存在的安全隱患,并檢查應(yīng)用程序?qū)Ψ欠ㄇ秩氲姆婪?能力 , 根據(jù)安全指標(biāo)不同測(cè)試策略也不同。注意:安全性測(cè)試并不最終證明應(yīng)用程序是安全的,而是用于 驗(yàn)證所設(shè)立策略的

4、有效性,這些對(duì)策是基于威脅分析階段所做的假設(shè)而選擇的。例如,測(cè)試應(yīng)用軟件在防 止非授權(quán)的內(nèi)部或外部用戶的訪問(wèn)或故意破壞等情況時(shí)的運(yùn)作。軟件安全性測(cè)試過(guò)程(1) 安全性測(cè)試方法 有許多的測(cè)試手段可以進(jìn)行安全性測(cè)試,目前主要安全測(cè)試方法有: 靜態(tài)的代碼安全測(cè)試:主要通過(guò)對(duì)源代碼進(jìn)行安全掃描,根據(jù)程序中數(shù)據(jù)流、控制流、語(yǔ)義等信息與其 特有軟件安全規(guī)則庫(kù)進(jìn)行匹對(duì),從中找出代碼中潛在的安全漏洞。靜態(tài)的源代碼安全測(cè)試是非常有用的方 法,它可以在編碼階段找出所有可能存在安全風(fēng)險(xiǎn)的代碼, 這樣開(kāi)發(fā)人員可以在早期解決潛在的安全問(wèn)題。 而正因?yàn)槿绱耍o態(tài)代碼測(cè)試比較適用于早期的代碼開(kāi)發(fā)階段,而不是測(cè)試階段。動(dòng)態(tài)的

5、滲透測(cè)試:滲透測(cè)試也是常用的安全測(cè)試方法。是使用自動(dòng)化工具或者人工的方法模擬黑客的輸 入,對(duì)應(yīng)用系統(tǒng)進(jìn)行攻擊性測(cè)試,從中找出運(yùn)行時(shí)刻所存在的安全漏洞。這種測(cè)試的特點(diǎn)就是真實(shí)有效, 一般找出來(lái)的問(wèn)題都是正確的,也是較為嚴(yán)重的。但滲透測(cè)試一個(gè)致命的缺點(diǎn)是模擬的測(cè)試數(shù)據(jù)只能到達(dá) 有限的測(cè)試點(diǎn),覆蓋率很低。程序數(shù)據(jù)掃描。一個(gè)有高安全性需求的軟件,在運(yùn)行過(guò)程中數(shù)據(jù)是不能遭到破壞的,否則就會(huì)導(dǎo)致緩沖 區(qū)溢出類型的攻擊。數(shù)據(jù)掃描的手段通常是進(jìn)行內(nèi)存測(cè)試,內(nèi)存測(cè)試可以發(fā)現(xiàn)許多諸如緩沖區(qū)溢出之類的 漏洞,而這類漏洞使用除此之外的測(cè)試手段都難以發(fā)現(xiàn)。例如,對(duì)軟件運(yùn)行時(shí)的內(nèi)存信息進(jìn)行掃描,看是 否存在一些導(dǎo)致隱患的

6、信息,當(dāng)然這需要專門(mén)的工具來(lái)進(jìn)行驗(yàn)證,手工做是比較困難的。(2) 反向安全性測(cè)試過(guò)程 大部分軟件的安全測(cè)試都是依據(jù)缺陷空間反向設(shè)計(jì)原則來(lái)進(jìn)行的, 即事先檢查哪些地方可能存在安全隱患, 然后針對(duì)這些可能的隱患進(jìn)行測(cè)試。因此,反向測(cè)試過(guò)程是從缺陷空間出發(fā),建立缺陷威脅模型,通過(guò)威 脅模型來(lái)尋找入侵點(diǎn),對(duì)入侵點(diǎn)進(jìn)行已知漏洞的掃描測(cè)試。好處是可以對(duì)已知的缺陷進(jìn)行分析,避免軟件 里存在已知類型的缺陷,但是對(duì)未知的攻擊手段和方法通常會(huì)無(wú)能為力。建立缺陷威脅模型。 建立缺陷威脅模型主要是從已知的安全漏洞入手, 檢查軟件中是否存在已知的漏洞。 建立威脅模型時(shí),需要先確定軟件牽涉到哪些專業(yè)領(lǐng)域,再根據(jù)各個(gè)專業(yè)領(lǐng)

7、域所遇到的攻擊手段來(lái)進(jìn)行建 模。 尋找和掃描入侵點(diǎn)。檢查威脅模型里的哪些缺陷可能在本軟件中發(fā)生,再將可能發(fā)生的威脅納入入侵點(diǎn) 矩陣進(jìn)行管理。如果有成熟的漏洞掃描工具,那么直接使用漏洞掃描工具進(jìn)行掃描,然后將發(fā)現(xiàn)的可疑問(wèn) 題納入入侵點(diǎn)矩陣進(jìn)行管理。 入侵矩陣的驗(yàn)證測(cè)試。創(chuàng)建好入侵矩陣后,就可以針對(duì)入侵矩陣的具體條目設(shè)計(jì)對(duì)應(yīng)的測(cè)試用例,然后 進(jìn)行測(cè)試驗(yàn)證。(3) 正向安全性測(cè)試過(guò)程 為了規(guī)避反向設(shè)計(jì)原則所帶來(lái)的測(cè)試不完備性,需要一種正向的測(cè)試方法來(lái)對(duì)軟件進(jìn)行比較完備的測(cè)試, 使測(cè)試過(guò)的軟件能夠預(yù)防未知的攻擊手段和方法。 先標(biāo)識(shí)測(cè)試空間。對(duì)測(cè)試空間的所有的可變數(shù)據(jù)進(jìn)行標(biāo)識(shí),由于進(jìn)行安全性測(cè)試的代價(jià)高

8、昂,其中要重 點(diǎn)對(duì)外部輸入層進(jìn)行標(biāo)識(shí)。例如,需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼這幾個(gè)階段都要對(duì)測(cè)試空間進(jìn)行 標(biāo)識(shí),并建立測(cè)試空間跟蹤矩陣。 精確定義設(shè)計(jì)空間。重點(diǎn)審查需求中對(duì)設(shè)計(jì)空間是否有明確定義,和需求牽涉到的數(shù)據(jù)是否都標(biāo)識(shí)出了 它的合法取值范圍。在這個(gè)步驟中,最需要注意的是精確二字,要嚴(yán)格按照安全性原則來(lái)對(duì)設(shè)計(jì)空間做精 確的定義。 標(biāo)識(shí)安全隱患。根據(jù)找出的測(cè)試空間和設(shè)計(jì)空間以及它們之間的轉(zhuǎn)換規(guī)則,標(biāo)識(shí)出哪些測(cè)試空間和哪些 轉(zhuǎn)換規(guī)則可能存在安全隱患。例如 ,測(cè)試空間愈復(fù)雜,即測(cè)試空間劃分越復(fù)雜或可變數(shù)據(jù)組合關(guān)系越多也越 不安全。還有轉(zhuǎn)換規(guī)則愈復(fù)雜,則出問(wèn)題的可能性也愈大,這些都屬于安全隱患。

9、 建立和驗(yàn)證入侵矩陣。安全隱患標(biāo)識(shí)完成后,就可以根據(jù)標(biāo)識(shí)出來(lái)的安全隱患建立入侵矩陣。列出潛在安全隱患,標(biāo)識(shí)出存在潛在安全隱患的可變數(shù)據(jù),和標(biāo)識(shí)出安全隱患的等級(jí)。其中對(duì)于那些安全隱患等級(jí) 高的可變數(shù)據(jù),必須進(jìn)行詳盡的測(cè)試用例設(shè)計(jì)。(4) 正向和反向測(cè)試的區(qū)別 正向測(cè)試過(guò)程是以測(cè)試空間為依據(jù)尋找缺陷和漏洞,反向測(cè)試過(guò)程則是以已知的缺陷空間為依據(jù)去尋找軟 件中是否會(huì)發(fā)生同樣的缺陷和漏洞,兩者各有其優(yōu)缺點(diǎn)。反向測(cè)試過(guò)程主要的一個(gè)優(yōu)點(diǎn)是成本較低,只要 驗(yàn)證已知的可能發(fā)生的缺陷即可,但缺點(diǎn)是測(cè)試不完善,無(wú)法將測(cè)試空間覆蓋完整,無(wú)法發(fā)現(xiàn)未知的攻擊 手段。正向測(cè)試過(guò)程的優(yōu)點(diǎn)是測(cè)試比較充分,但工作量相對(duì)來(lái)說(shuō)較大

10、。因此,對(duì)安全性要求較低的軟件, 一般按反向測(cè)試過(guò)程來(lái)測(cè)試即可,對(duì)于安全性要求較高的軟件,應(yīng)以正向測(cè)試過(guò)程為主,反向測(cè)試過(guò)程為 輔。常見(jiàn)的軟件安全性缺陷和漏洞 軟件的安全有很多方面的內(nèi)容,主要的安全問(wèn)題是由軟件本身的漏洞造成的,下面介紹常見(jiàn)的軟件安全性 缺陷和漏洞。(1) 緩沖區(qū)溢出 緩沖區(qū)溢出已成為軟件安全的頭號(hào)公敵,許多實(shí)際中的安全問(wèn)題都與它有關(guān)。造成緩沖區(qū)溢出問(wèn)題通常有 以下兩種原因。設(shè)計(jì)空間的轉(zhuǎn)換規(guī)則的校驗(yàn)問(wèn)題。即缺乏對(duì)可測(cè)數(shù)據(jù)的校驗(yàn),導(dǎo)致非法數(shù)據(jù)沒(méi)有在外部 輸入層被檢查出來(lái)并丟棄。非法數(shù)據(jù)進(jìn)入接口層和實(shí)現(xiàn)層后,由于它超出了接口層和實(shí)現(xiàn)層的對(duì)應(yīng)測(cè)試空 間或設(shè)計(jì)空間的范圍,從而引起溢出。

11、局部測(cè)試空間和設(shè)計(jì)空間不足。當(dāng)合法數(shù)據(jù)進(jìn)入后,由于程序?qū)?現(xiàn)層內(nèi)對(duì)應(yīng)的測(cè)試空間或設(shè)計(jì)空間不足,導(dǎo)致程序處理時(shí)出現(xiàn)溢出。(2) 加密弱點(diǎn) 這幾種加密弱點(diǎn)是不安全的:使用不安全的加密算法。加密算法強(qiáng)度不夠,一些加密算法甚至可以用窮 舉法破解。加密數(shù)據(jù)時(shí)密碼是由偽隨機(jī)算法產(chǎn)生的,而產(chǎn)生偽隨機(jī)數(shù)的方法存在缺陷,使密碼很容易被 破解。身份驗(yàn)證算法存在缺陷??蛻魴C(jī)和服務(wù)器時(shí)鐘未同步,給攻擊者足夠的時(shí)間來(lái)破解密碼或修改 數(shù)據(jù)。未對(duì)加密數(shù)據(jù)進(jìn)行簽名,導(dǎo)致攻擊者可以篡改數(shù)據(jù)。所以,對(duì)于加密進(jìn)行測(cè)試時(shí),必須針對(duì)這些 可能存在的加密弱點(diǎn)進(jìn)行測(cè)試。(3) 錯(cuò)誤處理 一般情況下,錯(cuò)誤處理都會(huì)返回一些信息給用戶,返回的出

12、錯(cuò)信息可能會(huì)被惡意用戶利用來(lái)進(jìn)行攻擊,惡意用戶能夠通過(guò)分析返回的錯(cuò)誤信息知道下一步要如何做才能使攻擊成功。如果錯(cuò)誤處理時(shí)調(diào)用了一些不該有的功能,那么錯(cuò)誤處理的過(guò)程將被利用。錯(cuò)誤處理屬于異??臻g內(nèi)的處理問(wèn)題,異??臻g內(nèi)的處理要 盡量簡(jiǎn)單,使用這條原則來(lái)設(shè)計(jì)可以避免這個(gè)問(wèn)題。但錯(cuò)誤處理往往牽涉到易用性方面的問(wèn)題,如果錯(cuò)誤 處理的提示信息過(guò)于簡(jiǎn)單,用戶可能會(huì)一頭霧水,不知道下一步該怎么操作。所以, 在考慮錯(cuò)誤處理的安全性的同時(shí),需要和易用性一起進(jìn)行權(quán)衡。(4) 權(quán)限過(guò)大 如果賦予過(guò)大的權(quán)限,就可能導(dǎo)致只有普通用戶權(quán)限的惡意用戶利用過(guò)大的權(quán)限做出危害安全的操作。例 如沒(méi)有對(duì)能操作的內(nèi)容做出限制,就可能

13、導(dǎo)致用戶可以訪問(wèn)超出規(guī)定范圍的其他資源。進(jìn)行安全性測(cè)試時(shí) 必須測(cè)試應(yīng)用程序是否使用了過(guò)大的權(quán)限,重點(diǎn)要分析在各種情況下應(yīng)該有的權(quán)限,然后檢查實(shí)際中是否 超出了給定的權(quán)限。權(quán)限過(guò)大問(wèn)題本質(zhì)上屬于設(shè)計(jì)空間過(guò)大問(wèn)題,所以在設(shè)計(jì)時(shí)要控制好設(shè)計(jì)空間,避免 設(shè)計(jì)空間過(guò)大造成權(quán)限過(guò)大的問(wèn)題。做好安全性測(cè)試的建議 許多軟件安全測(cè)試經(jīng)驗(yàn)告訴我們,做好軟件安全性測(cè)試的必要條件是:一是充分了解軟件安全漏洞,二是 評(píng)估安全風(fēng)險(xiǎn),三是擁有高效的軟件安全測(cè)試技術(shù)和工具。(1) 充分了解軟件安全漏洞Common評(píng)估一個(gè)軟件系統(tǒng)的安全程度,需要從設(shè)計(jì)、實(shí)現(xiàn)和部署三個(gè)環(huán)節(jié)同時(shí)著手。我們先看一下Criteria 是如何評(píng)估軟件系

14、統(tǒng)安全的。首先要確定軟件產(chǎn)品對(duì)應(yīng)的 Protection Pro) 。一個(gè) PP 定義了一類 軟件產(chǎn)品的安全特性模板。例如數(shù)據(jù)庫(kù)的PP、防火墻的PP等。然后,根據(jù)PP再提出具體的安全功能需求,如用戶的身份認(rèn)證實(shí)現(xiàn)。最后,確定安全對(duì)象以及是如何滿足對(duì)應(yīng)的安全功能需求的。因此,一個(gè)安 全軟件的三個(gè)環(huán)節(jié),哪個(gè)出問(wèn)題都不行。(2) 安全性測(cè)試的評(píng)估當(dāng)做完安全性測(cè)試后, 軟件是否能夠達(dá)到預(yù)期的安全程度呢 ?這是安全性測(cè)試人員最關(guān)心的問(wèn)題,因此需要建立對(duì)測(cè)試后的安全性評(píng)估機(jī)制。一般從以下兩個(gè)方面進(jìn)行評(píng)估。安全性缺陷數(shù)據(jù)評(píng)估。如果發(fā)現(xiàn)軟件 的安全性缺陷和漏洞越多,可能遺留的缺陷也越多。進(jìn)行這類評(píng)估時(shí),必須建立基線數(shù)據(jù)作為參照,否則 評(píng)估起來(lái)沒(méi)有依據(jù)就無(wú)法得到正確的結(jié)論。采用漏洞植入法來(lái)進(jìn)行評(píng)估。漏洞植入法和可靠性測(cè)試?yán)锏?故障插入測(cè)試是同一道理,只不過(guò)這里是在軟件里插入一些有安全隱患的問(wèn)題。采用漏洞植入法時(shí),先讓 不參加安全測(cè)試的特定人員在軟件中預(yù)先植入一定數(shù)量的漏洞, 最后測(cè)試完后看有多少植入的漏洞被

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論