7.4.2 軟件安壘測(cè)試
1.軟件安全測(cè)試基本概念
一般來(lái)說(shuō),對(duì)安全性要求不高的軟件,其安全性測(cè)試可以混在單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試之中一起做。但是對(duì)于安全性要較高要求的軟件,則必須做專門的安全性測(cè)試,以便在部署之前預(yù)防并識(shí)別軟件的安全問(wèn)題。
顯然,傳統(tǒng)的軟件測(cè)試重點(diǎn)在于功能測(cè)試,其強(qiáng)調(diào)軟件的肯定需求,強(qiáng)調(diào)軟件應(yīng)當(dāng)做什么。但是,在工程項(xiàng)目中,這種軟件測(cè)試并不能用來(lái)發(fā)現(xiàn)軟件中的安全缺陷,不能用來(lái)驗(yàn)證軟件安全性。因此,需要考慮采用專門的安全測(cè)試來(lái)保證軟件安全性。事實(shí)上,軟件安全性測(cè)試技術(shù)有著與其他傳統(tǒng)測(cè)試類型不同的關(guān)注重點(diǎn)。相比傳統(tǒng)軟件測(cè)試,軟件安全測(cè)試的重點(diǎn)在于軟件的否定需求,安全性測(cè)試不但強(qiáng)調(diào)軟件應(yīng)當(dāng)做什么,而且更加強(qiáng)調(diào)軟件不應(yīng)該做什么。例如,未授權(quán)用戶不能訪問(wèn)系統(tǒng)數(shù)據(jù)。
隨著軟件技術(shù)的發(fā)展,安全性作為軟件系統(tǒng)的質(zhì)量屬性受到越來(lái)越多的重視。軟件安全測(cè)試是確定軟件的安全特性實(shí)現(xiàn)是否與預(yù)期設(shè)計(jì)一致的過(guò)程,是驗(yàn)證軟件安全等級(jí)和識(shí)別潛在安全缺陷的過(guò)程,檢查軟件系統(tǒng)是否具有一定程度的保護(hù)機(jī)制和防止受到非法侵入的能力。
安全性測(cè)試應(yīng)該以攻擊者所有可能的方式探測(cè)系統(tǒng),尋找軟件中可以被利用的弱點(diǎn)。安全性測(cè)試在由風(fēng)險(xiǎn)分析階段發(fā)現(xiàn)的系統(tǒng)風(fēng)險(xiǎn)指導(dǎo)時(shí)最有效。這意味著安全性測(cè)試是一種創(chuàng)造性的測(cè)試形式,它受限于已識(shí)別的風(fēng)險(xiǎn)和測(cè)試人員的安全專業(yè)知識(shí)。
實(shí)踐證明,代碼覆蓋范圍是理解一組測(cè)試能發(fā)現(xiàn)多少系統(tǒng)缺陷的度量標(biāo)準(zhǔn)。對(duì)于安全性測(cè)試,代碼覆蓋范圍扮演了更關(guān)鍵的角色。簡(jiǎn)而言之,如果程序的某個(gè)模塊沒(méi)有被測(cè)試,則其安全性就應(yīng)該受到懷疑。一個(gè)明顯的風(fēng)險(xiǎn)是未經(jīng)測(cè)試的代碼可能會(huì)包含特洛伊木馬,表面上無(wú)害的代碼會(huì)由此進(jìn)行攻擊。更為普遍的風(fēng)險(xiǎn)是未經(jīng)驗(yàn)證的代碼含有嚴(yán)重的錯(cuò)誤,這些錯(cuò)誤可能被攻擊者利用。