国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件全生命周期安全性測(cè)試方法研究

2013-01-27 09:24尹黨輝
中國(guó)測(cè)試 2013年2期
關(guān)鍵詞:代碼安全性軟件

尹黨輝,趙 穎,董 超

(總后勤部后勤科學(xué)研究所,北京 100071)

0 引 言

安全性,是軟件質(zhì)量屬性的重要方面,是軟件受到惡意攻擊時(shí)仍能提供所需功能的能力[1],避免造成不可接受風(fēng)險(xiǎn)的能力。

軟件安全性測(cè)試,是驗(yàn)證軟件的安全功能和識(shí)別潛在安全性缺陷的過(guò)程,是排除軟件中可能引發(fā)嚴(yán)重后果的錯(cuò)誤、降低軟件安全風(fēng)險(xiǎn)[2]的重要手段。安全性測(cè)試不同于其他測(cè)試類型,它強(qiáng)調(diào)的是軟件不可以做什么。

軟件安全性測(cè)試可分為安全功能驗(yàn)證和安全漏洞檢測(cè)兩個(gè)方面[3]。安全功能驗(yàn)證重點(diǎn)關(guān)注需求設(shè)計(jì)是否全部得到了實(shí)現(xiàn)和需求設(shè)計(jì)的要求是否一致,實(shí)現(xiàn)的功能運(yùn)行是否正確無(wú)誤。軟件安全功能需求通常包括數(shù)據(jù)安全、用戶管理、訪問(wèn)控制、傳輸安全等方面。安全漏洞測(cè)試,則是站在攻擊者角度去識(shí)別軟件可能存在的安全漏洞。所謂安全漏洞,是指軟件在設(shè)計(jì)、實(shí)現(xiàn)、應(yīng)用和管理過(guò)程中存在的可被利用的缺陷。這些漏洞一旦在軟件投產(chǎn)后被攻擊者利用,即可使軟件進(jìn)入不安全狀態(tài),造成一系列損失,因此安全漏洞檢測(cè)也是軟件安全性測(cè)試的一個(gè)重要方面。

1 常見的軟件安全性問(wèn)題

軟件安全性問(wèn)題多種多樣,本文介紹4類應(yīng)用中最為常見的問(wèn)題及其產(chǎn)生原因。

1.1 緩沖區(qū)溢出

緩沖區(qū)溢出安全性問(wèn)題通常由兩種情況引發(fā):(1)設(shè)計(jì)空間不足,合法數(shù)據(jù)進(jìn)入時(shí),由于程序?qū)崿F(xiàn)層內(nèi)對(duì)應(yīng)的設(shè)計(jì)空間不足,導(dǎo)致程序處理時(shí)出現(xiàn)溢出;(2)缺乏對(duì)數(shù)據(jù)的校驗(yàn),非法數(shù)據(jù)沒有在外部輸入層被檢查出來(lái)并丟棄,導(dǎo)致非法數(shù)據(jù)進(jìn)入接口層和實(shí)現(xiàn)層,因超出對(duì)應(yīng)的空間范圍,從而引起溢出。

1.2 突破數(shù)據(jù)加密

引起數(shù)據(jù)加密安全性問(wèn)題[4]的因素很多,主要有:加密算法強(qiáng)度不夠,甚至應(yīng)用窮舉法即可破解;用存在缺陷的偽隨機(jī)算法產(chǎn)生數(shù)據(jù)加密密碼,導(dǎo)致密碼易被破解;客戶機(jī)和服務(wù)器時(shí)鐘未嚴(yán)格同步,攻擊者可抓住時(shí)間差破解密碼或破壞數(shù)據(jù)等。

1.3 用戶權(quán)限問(wèn)題

權(quán)限設(shè)計(jì)[5]分配不當(dāng),或?qū)崿F(xiàn)后存在可突破漏洞,將可能導(dǎo)致只有普通用戶權(quán)限的惡意用戶利用過(guò)大的權(quán)限做出危害安全的操作,訪問(wèn)超出規(guī)定范圍的其他資源。

1.4 利用錯(cuò)誤處理信息

軟件在對(duì)錯(cuò)誤操作進(jìn)行處理時(shí),為提高用戶體驗(yàn),通常都會(huì)給用戶返回一些信息,這些錯(cuò)誤處理信息可能會(huì)被某些惡意用戶利用來(lái)實(shí)施攻擊。

2 軟件安全性測(cè)試方法

針對(duì)軟件全生命周期的安全性測(cè)試方法主要有以下4個(gè)方面。

2.1 軟件需求安全性

用戶需求是軟件產(chǎn)品成敗的根本,所以在產(chǎn)品研發(fā)的需求分析階段就應(yīng)納入安全性需求考慮,提出必要的軟件安全功能、安全策略和安全完整性要求。

在此階段,測(cè)試人員應(yīng)根據(jù)軟件安全性需求分析的結(jié)果和初步的結(jié)構(gòu)設(shè)計(jì)文檔,包括分配的功能需求、接口需求以及隱含需求[6],對(duì)產(chǎn)品安全性需求進(jìn)行映射,形成軟件安全測(cè)試需求分析報(bào)告,該報(bào)告應(yīng)經(jīng)過(guò)用戶和產(chǎn)品設(shè)計(jì)人員的認(rèn)可。測(cè)試人員依據(jù)該報(bào)告,綜合分析安全性需求的合理性、可行性、全面性,發(fā)現(xiàn)可能存有的漏洞,提出修改意見,還可以提出對(duì)后續(xù)軟件設(shè)計(jì)階段的建議。例如,某軟件需求分析階段沒有明確定義用戶權(quán)限,測(cè)試人員在需求分析階段的安全性測(cè)試中發(fā)現(xiàn)并提出,產(chǎn)品設(shè)計(jì)人員及時(shí)補(bǔ)充完善此部分功能定義,可避免產(chǎn)品應(yīng)用后出現(xiàn)的權(quán)限問(wèn)題。

2.2 軟件概要設(shè)計(jì)安全性

軟件概要設(shè)計(jì)是制定軟件基本安全性策略的階段,負(fù)責(zé)定義主要軟件部件,以及它們?nèi)绾谓换?,如何獲得所要求的安全屬性,特別是安全完整性,是軟件安全性需求在結(jié)構(gòu)定義中實(shí)現(xiàn)的階段。通常,數(shù)據(jù)加密算法會(huì)在軟件概要設(shè)計(jì)中進(jìn)行基本明確。對(duì)概要設(shè)計(jì)進(jìn)行安全性測(cè)試要做到將全部軟件安全性需求綜合到軟件的體系結(jié)構(gòu)設(shè)計(jì)中,確定結(jié)構(gòu)中與安全性相關(guān)的部分,并評(píng)價(jià)概要設(shè)計(jì)的安全性。

概要設(shè)計(jì)是開發(fā)人員對(duì)系統(tǒng)期望功能和功能實(shí)現(xiàn)方式的表示方法,設(shè)計(jì)的合理性,通常會(huì)影響到安全完整性。測(cè)試員應(yīng)根據(jù)軟件概要設(shè)計(jì)安全策略,設(shè)計(jì)測(cè)試項(xiàng)和測(cè)試用例。驗(yàn)證軟件安全策略的有效性,通常應(yīng)采用有效類和無(wú)效類的方法設(shè)計(jì)測(cè)試用例,用動(dòng)畫/仿真技術(shù)證實(shí)功能的實(shí)現(xiàn)狀態(tài),借助接口分析技術(shù)分析安全相關(guān)部件與其他部件的相互依賴關(guān)系和獨(dú)立性。這一階段測(cè)試員應(yīng)熟悉軟件的安全策略及實(shí)現(xiàn)方式,有針對(duì)性地設(shè)計(jì)測(cè)試用例。

2.3 軟件詳細(xì)設(shè)計(jì)安全性

軟件詳細(xì)設(shè)計(jì)進(jìn)一步細(xì)化高層的體系結(jié)構(gòu)設(shè)計(jì),將軟件結(jié)構(gòu)中的主要部件劃分為能獨(dú)立編碼、編譯和測(cè)試的軟件單元,并進(jìn)行軟件單元的設(shè)計(jì)。

在這一階段中,測(cè)試員需要依據(jù)軟件需求、結(jié)構(gòu)設(shè)計(jì)描述、軟件集成測(cè)試[7]計(jì)劃之前所獲得的軟件安全性分析的結(jié)果,對(duì)軟件的設(shè)計(jì)和實(shí)現(xiàn)階段是否符合軟件安全性需求進(jìn)行驗(yàn)證。

測(cè)試員應(yīng)該仔細(xì)分析:(1)軟件詳細(xì)設(shè)計(jì)是否已覆蓋了軟件安全性需求;(2)軟件詳細(xì)設(shè)計(jì)是否與軟件概要設(shè)計(jì)保持了外部一致性;

(3)軟件詳細(xì)設(shè)計(jì)是否滿足模塊化、可驗(yàn)性、易安全修改的要求。

軟件詳細(xì)設(shè)計(jì)既是對(duì)軟件需求的具體細(xì)化,又是程序編碼的最直接依據(jù)。常見的錯(cuò)誤處理安全缺陷和用戶權(quán)限過(guò)大或過(guò)小漏洞等會(huì)出現(xiàn)在此階段。對(duì)于軟件處于邊界條件下的安全性,是軟件在詳細(xì)設(shè)計(jì)中常常被忽略的環(huán)節(jié),軟件的邊界存在于接口、數(shù)據(jù)、時(shí)間、狀態(tài)等方面。在測(cè)試過(guò)程中必須對(duì)邊界、界外及邊界結(jié)合部進(jìn)行分段測(cè)試。軟件詳細(xì)設(shè)計(jì)安全性分析更關(guān)乎整個(gè)軟件的安全性。軟件詳細(xì)設(shè)計(jì)安全性常見的安全性測(cè)試手段和技術(shù)有設(shè)計(jì)邏輯分析、設(shè)計(jì)約束分析和復(fù)雜性度量。

設(shè)計(jì)邏輯分析:評(píng)價(jià)軟件設(shè)計(jì)的方程式、算法和邏輯,可以包括失效檢測(cè)/診斷、冗余管理、變量報(bào)警和禁止命名邏輯的檢測(cè)。

設(shè)計(jì)約束分析:給出一些約束,來(lái)評(píng)價(jià)軟件在這些約束下運(yùn)行的能力。比如:物理時(shí)間約束和響應(yīng)時(shí)間對(duì)軟件性能的檢查。

復(fù)雜性度量:高度復(fù)雜的數(shù)據(jù)結(jié)構(gòu)難以徹底測(cè)試,可以采用McCabe或Halstead等這樣一些復(fù)雜性評(píng)估技術(shù)來(lái)標(biāo)示出需要進(jìn)一步改進(jìn)的區(qū)域。

2.4 軟件編碼安全性

軟件編碼完成軟件詳細(xì)設(shè)計(jì)的實(shí)現(xiàn)。所以,代碼應(yīng)該體現(xiàn)軟件詳細(xì)設(shè)計(jì)所提出的設(shè)計(jì)要求,實(shí)現(xiàn)設(shè)計(jì)過(guò)程中開發(fā)的安全性設(shè)計(jì)特征和方法,遵循設(shè)計(jì)過(guò)程中提出的各種約束以及編碼標(biāo)準(zhǔn)。

測(cè)試員一般采用代碼走查或靜態(tài)檢查工具來(lái)檢查源代碼,主要從以下兩個(gè)方面分析:

(1)分析軟件代碼是否滿足模塊化、可驗(yàn)證、易安全修改的要求;

(2)分析軟件編碼中所使用技術(shù)的安全性和方法的合理性。

常見的代碼安全性測(cè)試技術(shù)有代碼邏輯分析、代碼數(shù)據(jù)分析和復(fù)雜性度量。

代碼邏輯分析[8]:如有不可達(dá)代碼,或代碼結(jié)構(gòu)過(guò)于復(fù)雜,維護(hù)性降低。通過(guò)實(shí)施邏輯重構(gòu)、方程式重構(gòu)和存儲(chǔ)器解碼來(lái)進(jìn)行。

代碼數(shù)據(jù)分析:關(guān)注如何定義和組織數(shù)據(jù)項(xiàng)。變量忘記賦初值,或變量聲明了卻沒有使用,或出現(xiàn)了冗余代碼。

復(fù)雜性度量:復(fù)雜軟件不穩(wěn)定,也經(jīng)不起不可預(yù)測(cè)的行為。所以,努力使軟件的復(fù)雜度變小。如果有條件采用某種自動(dòng)化工具,可以通過(guò)工具對(duì)軟件設(shè)計(jì)/用代碼進(jìn)行控制,用圖形化的方法反映出軟件結(jié)構(gòu)中的控制流和數(shù)據(jù)流,通過(guò)連結(jié)數(shù)/調(diào)用數(shù)、節(jié)點(diǎn)數(shù)、嵌套深度等這樣一些結(jié)構(gòu)關(guān)系的檢查,獲得復(fù)雜度的度量,將會(huì)獲得很好的效果。

3 結(jié)束語(yǔ)

經(jīng)過(guò)多年的軟件測(cè)試實(shí)踐,軟件測(cè)試作為驗(yàn)證軟件功能性和安全性的重要手段,其采用的測(cè)試方法和測(cè)試技術(shù)影響著測(cè)試結(jié)果,關(guān)系著后續(xù)軟件的變更和測(cè)試的有效性,一些測(cè)試經(jīng)驗(yàn)和猜錯(cuò)法也是十分必要的。軟件測(cè)試安全性分析既包括事前分析,也包括對(duì)測(cè)試結(jié)果的評(píng)價(jià),對(duì)測(cè)試結(jié)果進(jìn)行分析,以驗(yàn)證所有的安全性需求是否得到了滿足。在執(zhí)行任何軟件變更之前,應(yīng)建立軟件變更規(guī)程。如果必須進(jìn)行軟件變更,則應(yīng)該對(duì)已經(jīng)受控的規(guī)格說(shuō)明、需求、設(shè)計(jì)、編碼、計(jì)劃、規(guī)程、系統(tǒng)、環(huán)境、用戶文檔的任何變更都進(jìn)行安全性分析。

[1]McGraw Gary,Potter Bruce.Software security testing[J].IEEE Security&Privacy,2004,2(5):81-85.

[2]劉學(xué)敏,周經(jīng)倫,羅鵬程.基于小世界網(wǎng)絡(luò)的軟件安全風(fēng)險(xiǎn)傳播分析[J].江蘇大學(xué)學(xué)報(bào),2011,32(1):89-93.

[3]施寅生,鄧世偉,谷天陽(yáng).軟件安全性測(cè)試方法與工具[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(1):27-30.

[4]任德昊,吳少華,顏開.局域網(wǎng)中的數(shù)據(jù)安全問(wèn)題研究[J].中國(guó)民航飛行學(xué)院學(xué)報(bào),2005,16(5):28-31.

[5]呂宜洪,宋瀚濤,龔圓明.大型應(yīng)用系統(tǒng)用戶權(quán)限構(gòu)成分析及訪問(wèn)控制策略研究[J].小型微型計(jì)算機(jī)系統(tǒng),2004,25(2):195-198.

[6]Jorgensen P C.軟件測(cè)試[M].2 版.韓柯,杜旭濤.譯.北京:機(jī)械工業(yè)出版社,2003.

[7]尹黨輝,連堯,董超.嵌入式軟件測(cè)試技術(shù)研究[J].中國(guó)測(cè)試,2011,37(z):74-77.

[8]尹黨輝,于佳偉,李虎.軟件覆蓋測(cè)試技術(shù)研究[J].中國(guó)測(cè)試,2012,38(z):42-44.

猜你喜歡
代碼安全性軟件
兩款輸液泵的輸血安全性評(píng)估
新染料可提高電動(dòng)汽車安全性
禪宗軟件
某既有隔震建筑檢測(cè)與安全性鑒定
加強(qiáng)廣播電視信息安全性的思考
軟件對(duì)對(duì)碰
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
温州市| 古蔺县| 德江县| 东阿县| 安康市| 封丘县| 友谊县| 平武县| 巴彦淖尔市| 黄龙县| 南安市| 旺苍县| 昭觉县| 新和县| 巨鹿县| 微博| 阿巴嘎旗| 东丰县| 衢州市| 凌海市| 苏尼特右旗| 法库县| 隆子县| 雅安市| 奉贤区| 华阴市| 天长市| 岚皋县| 芜湖县| 广平县| 綦江县| 定襄县| 抚州市| 盐亭县| 张掖市| 东丽区| 崇明县| 海伦市| 滦南县| 隆德县| 东兰县|