青海省測(cè)試計(jì)算中心 劉 鑫
國產(chǎn)軟件安全測(cè)試方法探討
青海省測(cè)試計(jì)算中心 劉 鑫
進(jìn)行軟件的安全測(cè)試,是在將軟件投入市場(chǎng)之前必不可少的重要前提條件之一,只有經(jīng)過安全測(cè)試達(dá)到標(biāo)準(zhǔn)之后,才能夠正式投入市場(chǎng)。我國國產(chǎn)的軟件在科技含量和運(yùn)行流暢程度方面具有一定的劣勢(shì),在市場(chǎng)競(jìng)爭(zhēng)中往往處于不利地位,因此更需要加強(qiáng)安全測(cè)試環(huán)節(jié),保證投入市場(chǎng)的軟件的安全性,促進(jìn)軟件行業(yè)的良性發(fā)展。
國產(chǎn)軟件;安全測(cè)試;軟件安全;測(cè)試方法
一個(gè)軟件的安全性代表著這一軟件的質(zhì)量,而軟件的安全測(cè)試則是為了檢驗(yàn)軟件的潛在安全缺陷,并且確認(rèn)軟件的安全性能否達(dá)到與預(yù)期一致。對(duì)軟件進(jìn)行安全測(cè)試,是軟件開發(fā)環(huán)節(jié)中比較重要的一環(huán),最終目的就是在軟件投入使用之前,就檢測(cè)出其是否存在問題,并對(duì)可能存在的問題提前設(shè)置解決的辦法,從而達(dá)到對(duì)軟件潛在故障的修正目的。
軟件進(jìn)行安全測(cè)試在本質(zhì)上是為了能夠有效地查找出程序中的錯(cuò)誤,其方法通常包括靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試兩類。靜態(tài)測(cè)試,是對(duì)源代碼進(jìn)行掃描,直接在代碼中找出可能存在的安全漏洞。動(dòng)態(tài)測(cè)試是通過模擬黑客的行為模式,對(duì)系統(tǒng)進(jìn)行攻擊,從系統(tǒng)的應(yīng)對(duì)和反應(yīng)中找出可能存在的漏洞。這種測(cè)試相對(duì)而言比較真實(shí)有效,淡數(shù)據(jù)有限,無法達(dá)成對(duì)軟件的全面測(cè)試[1]。
對(duì)軟件的安全進(jìn)行測(cè)試,主要包括兩個(gè)方面。其一是針對(duì)軟件的漏洞進(jìn)行測(cè)試,測(cè)試條件是要求檢查出軟件內(nèi)部具有的缺陷;另一方面是安全性測(cè)試,它所測(cè)試的是軟件的“禁止區(qū)”,檢查軟件所不能進(jìn)行的行動(dòng)是否保障其不會(huì)進(jìn)行,也就是對(duì)軟件是否能夠遵守規(guī)約進(jìn)行測(cè)試,要求軟件在輸入A命令時(shí)決不能執(zhí)行B命令。
2.1 注意事項(xiàng)
軟件安全測(cè)試包括滲透、功能、驗(yàn)證等環(huán)節(jié)的測(cè)試,其必要的條件在于三個(gè)方面,其一是了解軟件有可能存在的安全漏洞,其二是去評(píng)估軟件可能出現(xiàn)的安全風(fēng)險(xiǎn),三是需要擁有效率和質(zhì)量水準(zhǔn)都比較高的安全測(cè)試工具,以高質(zhì)量的技術(shù)進(jìn)行測(cè)試。針對(duì)軟件進(jìn)行檢測(cè)的過程中,需要根據(jù)具體出現(xiàn)的情況進(jìn)行綜合性的分析,在進(jìn)行了深入分析之后,需要選擇適合的檢測(cè)技術(shù),制定出一個(gè)足夠高效的測(cè)試計(jì)劃。而在另一方面,在安全測(cè)試計(jì)劃的執(zhí)行期間,也要根據(jù)測(cè)試人和需要用到的測(cè)試設(shè)備的保養(yǎng)狀況等實(shí)際情況進(jìn)行,要配備的不僅包括能夠?qū)浖踩M(jìn)行專門的專業(yè)分析人員,而且也要對(duì)被測(cè)試的軟件系統(tǒng)整體情況有高度熟悉度、最好是這一系統(tǒng)的設(shè)計(jì)人員加入到軟件安全測(cè)試的計(jì)劃中,通過進(jìn)行多方面的合作,進(jìn)而更好的完成測(cè)試計(jì)劃[2]。
在進(jìn)行軟件安全測(cè)試時(shí),各個(gè)等級(jí)的分析工作必不可少。當(dāng)需要進(jìn)行測(cè)試的軟件規(guī)模相對(duì)較大,對(duì)軟件結(jié)構(gòu)設(shè)計(jì)本身進(jìn)行分析的工作也同樣需要專業(yè)人員的支持和加入,因此在對(duì)軟件進(jìn)行分析的過程中,需要測(cè)試和分析人員能夠根據(jù)實(shí)際需求對(duì)分析技術(shù)進(jìn)行高效的選擇,并且如果測(cè)試要求中有這個(gè)必要,那么也可以構(gòu)建一個(gè)仿真環(huán)境,通過方針的分析工具進(jìn)行協(xié)助性的測(cè)試。軟件的安全檢測(cè)是一個(gè)非常系統(tǒng)化的工作,無法通過使用一個(gè)簡(jiǎn)單而單純的測(cè)試方法,來解決整個(gè)系統(tǒng)的測(cè)試,不可能建立一個(gè)測(cè)試體系和測(cè)試環(huán)境,通過全自動(dòng)的方式一鍵將系統(tǒng)整體測(cè)試完畢。因此,在軟件安全測(cè)試實(shí)際進(jìn)行的過程中,非常有必要來選擇一個(gè)足夠高效和合理的測(cè)試方法。
2.2 評(píng)估方法
在軟件安全性測(cè)試結(jié)束之后,對(duì)于判斷這一軟件能否真正達(dá)到預(yù)期中的安全程度,需要測(cè)試人員能夠建立一個(gè)行之有效的安全評(píng)估體系。建立這一體系能夠從兩個(gè)方面進(jìn)行全面的評(píng)估。
其一是對(duì)軟件的缺陷數(shù)據(jù)進(jìn)行評(píng)估。如果軟件中被發(fā)現(xiàn)的漏洞越多,這就意味著會(huì)被留下的缺陷也就越多。因此在進(jìn)行評(píng)估時(shí),需要建立一個(gè)能夠作為參照系的基線數(shù)據(jù),以此進(jìn)行全面評(píng)估,否則其結(jié)果就會(huì)沒有依據(jù),即使最后得到了結(jié)果,這個(gè)結(jié)論也無法肯定是否正確。
其二是需要采用漏洞植入法對(duì)軟件進(jìn)行進(jìn)一步的評(píng)估。這一做法具體而言,就是直接在被測(cè)試軟件中插入安全隱患,要求令不參加測(cè)試的工作者在軟件中植入一定漏洞,通過測(cè)試后,將結(jié)果與這些工作者進(jìn)行核對(duì),看他們所植入的漏洞中有多少能夠被發(fā)現(xiàn),來評(píng)估軟件安全性。
對(duì)軟件進(jìn)行安全檢測(cè),一般而言的進(jìn)行方式是模塊測(cè)試(單元測(cè)試)——集成測(cè)試——系統(tǒng)測(cè)試這一順序。模塊測(cè)試(單元測(cè)試)就是針對(duì)軟件中最小的單位進(jìn)行安全檢測(cè),檢查各個(gè)模塊中的每一個(gè)部分是否能夠正確地去實(shí)現(xiàn)其功能,最終的目的是為了能夠發(fā)現(xiàn)各個(gè)模塊中可能存在的缺陷。集成測(cè)試是把通過了之前的單元測(cè)試的模塊進(jìn)行組裝,測(cè)試軟件的體系結(jié)構(gòu)是否安全。系統(tǒng)測(cè)試則是在完成了以上兩個(gè)步驟之后,將軟件實(shí)際運(yùn)行,與其它的系統(tǒng)組合測(cè)試,以此來確認(rèn)軟件能否實(shí)現(xiàn)其在設(shè)計(jì)之初預(yù)期達(dá)到的各種功能。
進(jìn)行軟件的安全測(cè)試,具體全面的測(cè)試方法包括多個(gè)方面的復(fù)數(shù)內(nèi)容,其中系統(tǒng)安全性的測(cè)試方法包括:源代碼評(píng)審法、基于風(fēng)險(xiǎn)的安全測(cè)試、滲透性測(cè)試方法 、模糊測(cè)試方法。代碼安全性檢驗(yàn)方法包括:程序代碼安全性、C++/Java安全性列表、JavaScript安全性列表、代碼安全性掃描工具。對(duì)系統(tǒng)功能安全性驗(yàn)證主要包括:口令安全性、用戶權(quán)限、非授權(quán)攻擊、配置管理以及功能失效、異常帶來的安全風(fēng)險(xiǎn)等。數(shù)據(jù)安全性驗(yàn)證主要包括:數(shù)據(jù)編碼驗(yàn)證、加密和解密,系統(tǒng)數(shù)據(jù)完整性、管理性、獨(dú)立性、備份和災(zāi)難恢復(fù)等[3]。而在其中,能夠有效地達(dá)成對(duì)軟件進(jìn)行的安全測(cè)試,可行的方法包括以下六種:
第一是語法測(cè)試。這種方法是對(duì)受測(cè)軟件的功能接口進(jìn)行測(cè)試,通過對(duì)其功能接口輸入多種不同的命令,檢測(cè)軟件是否能夠根據(jù)命令進(jìn)行符合設(shè)計(jì)者預(yù)期的運(yùn)行,最終確定其結(jié)果是否能夠達(dá)到預(yù)期的效果。
第二種是屬性測(cè)試。這種檢測(cè)方法具體而言需要確認(rèn)軟件的編程規(guī)則,對(duì)已經(jīng)經(jīng)過確認(rèn)了的編程規(guī)則編碼進(jìn)行驗(yàn)證,檢測(cè)的主要內(nèi)容是確認(rèn)系統(tǒng)程序中正在運(yùn)行的代碼是否能夠遵守軟件編寫之初建立起的規(guī)則。這種檢測(cè)方法能夠有效地對(duì)安全漏洞進(jìn)行分析,檢驗(yàn)其交互性。
第三種是比較常見的故障注入測(cè)試,通過進(jìn)行故障分析,來尋找會(huì)導(dǎo)致軟件發(fā)生事故的中間事件與底端事件,以此進(jìn)行邏輯構(gòu)架,構(gòu)成故障樹,其檢測(cè)的效率比較高。
我國軟件在國際市場(chǎng)上具有一定的劣勢(shì),因此需要格外加強(qiáng)在軟件安全檢測(cè)環(huán)節(jié)的嚴(yán)格性。另一方面,如果能夠選擇正確有效的方式進(jìn)行檢測(cè),那么在工作環(huán)節(jié)中就能夠事半功倍,起到更好的效果。本次研究通過對(duì)軟件安全測(cè)試的重要性進(jìn)行分析,確定進(jìn)行軟件安全測(cè)試過程中所需要注意的問題,確立了幾種有效的軟件測(cè)試方法,為加強(qiáng)軟件測(cè)試環(huán)節(jié)的針對(duì)性和有效性提供理論支持。
[1]張升,陳恒如,韓利凱.軟件安全測(cè)試方法探討[J].科技視界,2015,11(22):89+110.
[2]崔天意,肖洋.安全關(guān)鍵軟件測(cè)試設(shè)計(jì)方法[J].甘肅科技,2015,04(14):6-7.
[3]高寧寧.面向國產(chǎn)安全數(shù)據(jù)庫的測(cè)試體系的構(gòu)建[D].中國科學(xué)院大學(xué)(工程管理與信息技術(shù)學(xué)院),2014.