摘 要:軟件安全性測(cè)試是保證軟件安全性的重要手段。本文論述了軟件安全性測(cè)試的特點(diǎn)和主要內(nèi)容,重點(diǎn)研究了國(guó)內(nèi)外軟件安全性測(cè)試的主要方法,最后總結(jié)了當(dāng)前研究工作并指出了未來軟件安全性測(cè)試技術(shù)的研究重點(diǎn)與發(fā)展方向。
關(guān)鍵詞:安全性測(cè)試;安全功能測(cè)試;語法測(cè)試;模糊測(cè)試
中圖分類號(hào):TP311.52
安全性是軟件質(zhì)量的一個(gè)重要屬性。本文將重點(diǎn)關(guān)注安全性測(cè)試的主要方法、技術(shù)及工具。有
1 軟件測(cè)試步驟
一個(gè)大型軟件系統(tǒng)通常由若干個(gè)子系統(tǒng)構(gòu)成,每個(gè)子系統(tǒng)又由若干個(gè)模塊構(gòu)成。軟件測(cè)試分以下幾個(gè)步驟:
1.1 單元測(cè)試。又稱模塊測(cè)試。它是針對(duì)軟件設(shè)計(jì)的最小單位——程序模塊進(jìn)行正確性檢驗(yàn)的測(cè)試工作,其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。
1.2 集成測(cè)試。通常在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng),對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。
1.3 確認(rèn)測(cè)試。又稱有效性測(cè)試。它的任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。
1.4 系統(tǒng)測(cè)試。是將通過確認(rèn)測(cè)試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素結(jié)合在一起。
2 安全性測(cè)試主要方法
隨著軟件安全性受到人們的重視,安全性測(cè)試方法相關(guān)研究取得了一定進(jìn)展。
2.1 形式化安全測(cè)試。形式化方法的基本思想是建立軟件的數(shù)學(xué)模型,并在形式規(guī)格說明語言的支持下,提供軟件的形式規(guī)格說明。形式化安全測(cè)試方法可分為兩類,即定理證明和模型檢測(cè)。定理證明方法將程序轉(zhuǎn)換為邏輯公式,然后使用公理和規(guī)則證明程序是一個(gè)合法的定理。模型檢測(cè)用狀態(tài)遷移系統(tǒng)S描述軟件的行為,用時(shí)序邏輯、計(jì)算樹邏輯或演算公式F表示軟件執(zhí)行必須滿足的性質(zhì),通過自動(dòng)搜索S中不滿足公式F的狀態(tài)來發(fā)現(xiàn)軟件中的漏洞。
NASA(national aeronautics and space administration)的一個(gè)實(shí)驗(yàn)室JPL(jet propulsion laboratory)開展過形式化安全測(cè)試方面的項(xiàng)目。主要思路是建立安全需求的形式化模型,例如狀態(tài)機(jī)模型。輸入輸出序列決定安全狀態(tài)轉(zhuǎn)換。安全測(cè)試即搜索狀態(tài)空間,看是否能從起始狀態(tài)找到一條路徑到達(dá)違反規(guī)約的不安全的狀態(tài)。隨著模型大小與復(fù)雜性增長(zhǎng),狀態(tài)空間呈指數(shù)增長(zhǎng),JPL 開發(fā)了一種使用SPIN 的形式化建??蚣埽╢lexible modeling framework,F(xiàn)MF)解決狀態(tài)爆炸問題,并開發(fā)了基于屬性的測(cè)試工具(property based tester,PBT)。
2.2 基于模型的安全功能測(cè)試?;谀P偷臏y(cè)試方法是對(duì)軟件的行為和結(jié)構(gòu)進(jìn)行建模,生成測(cè)試模型,由測(cè)試模型生成測(cè)試用例,驅(qū)動(dòng)軟件測(cè)試。常用的軟件測(cè)試模型有有限狀態(tài)機(jī)、UML 模型、馬爾可夫鏈等。
Mark Blackburn、Robert Busser研究了基于模型的安全功能測(cè)試。主要項(xiàng)目支撐是NIST CSD(computer security division)部門的項(xiàng)目Automated Security Functional Testing。主要思路是利用SCRModeling 工具對(duì)軟件的安全功能需求進(jìn)行建模,使用表單方式設(shè)計(jì)軟件的安全功能行為模型,將表單模型轉(zhuǎn)換為測(cè)試規(guī)格說明模型,利用T-VEC工具生成測(cè)試向量(由一組輸入變量,期望輸出變量組成),開發(fā)測(cè)試驅(qū)動(dòng)模式和目標(biāo)測(cè)試環(huán)境的對(duì)象映射,將測(cè)試向量輸入測(cè)試驅(qū)動(dòng)模式執(zhí)行測(cè)試。這種方法是一種一般的安全功能測(cè)試方法,它的適用范圍取決于安全功能的建模能力,特別適用于建模用與或子句表達(dá)邏輯關(guān)系的安全需求,對(duì)授權(quán)、訪問控制等安全功能測(cè)試比較適用。
2.3 語法測(cè)試。語法測(cè)試是根據(jù)被測(cè)軟件的功能接口的語法生成測(cè)試輸入,檢測(cè)被測(cè)軟件對(duì)各類輸入的響應(yīng)。接口可以有多種類型,命令行、文件、環(huán)境變量、套接字等。語法測(cè)試基于這樣一種思想,軟件的接口或明確或隱含規(guī)定了輸入的語法。語法定義了軟件接受的輸入數(shù)據(jù)的類型、格式。語法定義可采用BNF 或正則表達(dá)式。語法測(cè)試的步驟是識(shí)別被測(cè)軟件接口的語言,定義語言的語法,根據(jù)語法生成測(cè)試用例并執(zhí)行測(cè)試。
生成的測(cè)試輸入應(yīng)當(dāng)包含各類語法錯(cuò)誤,符合語法的正確輸入,不符合語法的畸形輸入等。通過察看被測(cè)軟件對(duì)各類輸入的處理情況,確定被測(cè)軟件是否存在安全缺陷。語法測(cè)試適用于被測(cè)軟件有較明確的接口語法,易于表達(dá)語法并生成測(cè)試輸入的情況。語法測(cè)試結(jié)合故障注入技術(shù)可得到更好的測(cè)試效果。
2.4 基于故障注入的安全性測(cè)試。Wenliang Du將故障注入技術(shù)用于軟件安全性測(cè)試,建立軟件與環(huán)境交互(environment-application interaction,EAI) 的故障模型。故障注入針對(duì)應(yīng)用與環(huán)境的交互點(diǎn),主要包括用戶輸入、文件系統(tǒng)、網(wǎng)絡(luò)接口、環(huán)境變量等引起的故障。相關(guān)項(xiàng)目有OUSPG(university of oulu,secure programming group)的項(xiàng)目PROTOS Security Testing of Protocol Implementations,該項(xiàng)目的目標(biāo)是測(cè)試協(xié)議實(shí)現(xiàn)的安全性。主要思路是通過構(gòu)造各類協(xié)議數(shù)據(jù)包測(cè)試目標(biāo)軟件是否能正確處理。實(shí)質(zhì)是在各類協(xié)議數(shù)據(jù)包中植入故障,如修改某些協(xié)議字段的值等,支持的協(xié)議有HTTP、SIP、WAP、SNMP 等。故障注入可以有效地模擬各種各樣的異常程序行為,通過故障注人函數(shù)能夠強(qiáng)制性地使程序進(jìn)入到某些特定的狀態(tài),而這些狀態(tài)在采用常規(guī)的標(biāo)準(zhǔn)測(cè)試技術(shù)的情況下一般是無法到達(dá)的。
2.5 模糊測(cè)試。模糊測(cè)試是一種發(fā)現(xiàn)安全漏洞的有效的測(cè)試方法,在安全性測(cè)試中越來越受到重視。模糊測(cè)試將隨機(jī)的壞數(shù)據(jù)插入程序,觀察程序是否能容忍雜亂輸入。模糊測(cè)試是不合邏輯的,只是產(chǎn)生雜亂數(shù)據(jù)攻擊程序。采用模糊測(cè)試攻擊應(yīng)用程序可發(fā)現(xiàn)其它采用邏輯思維來測(cè)試很難發(fā)現(xiàn)的安全缺陷。
2.6 基于屬性的測(cè)試。描述了基于屬性的測(cè)試方法,采用TASPEC 語言對(duì)軟件的安全屬性進(jìn)行描述,生成安全屬性規(guī)格說明,利用程序切片技術(shù)抽取與這個(gè)安全屬性相關(guān)的代碼,并測(cè)試這部分代碼是否違反安全屬性規(guī)格說明?;趯傩缘臏y(cè)試有針對(duì)性的測(cè)試目標(biāo)軟件的特定安全屬性,可滿足安全屬性的分類和優(yōu)先級(jí)排序要求,且部分與具體軟件無關(guān)的屬性規(guī)格說明是可重用的。
3 結(jié)束語
軟件測(cè)試是所有工程學(xué)科的基本組成單元,是軟件開發(fā)的重要部分。軟件測(cè)試是為了發(fā)現(xiàn)故障而執(zhí)行程序的過程,其目的是以盡可能少的時(shí)間和人力發(fā)現(xiàn)并改正軟件中潛在的各種故障及缺陷。如何利用較少的測(cè)試用例,實(shí)現(xiàn)最大的測(cè)試覆蓋,最大限度地發(fā)現(xiàn)軟件瑕疵,是軟件測(cè)試的目標(biāo)之一;制定完善的測(cè)試計(jì)劃、測(cè)試方案、結(jié)果分析、文檔資料管理,亦是保證軟件測(cè)試功效的前提。軟件測(cè)試只能查找程序中的錯(cuò)誤,不能證明程序中沒有錯(cuò)誤。
未來軟件安全性測(cè)試技術(shù)主要發(fā)展方向包括:軟件授權(quán)、訪問控制等安全功能建模與測(cè)試研究;形式化安全測(cè)試方法研究;基于風(fēng)險(xiǎn)的安全測(cè)試及其在軟件工程實(shí)踐中的應(yīng)用;故障注入、模糊測(cè)試、語法測(cè)試、基于屬性的安全測(cè)試方法研究;利用威脅模型與攻擊樹指導(dǎo)安全測(cè)試過程;漏洞發(fā)現(xiàn)過程的建模及利用模型定量預(yù)測(cè)安全漏洞。
另外近年來基于Web 服務(wù)的分布式軟件快速發(fā)展,如何對(duì)Web 服務(wù)開展安全性測(cè)試是分布式軟件安全性測(cè)試面臨的嶄新課題。
參考文獻(xiàn):
[1]陸璐,王柏勇.軟件自動(dòng)化測(cè)試技術(shù)[M].北京:清華大學(xué)出版社,2006.
[2]郭群.軟件測(cè)試設(shè)計(jì)技術(shù)[J].電腦知識(shí)與技術(shù),2007(17).
[3]Robert Culbertson Chris Brown Gary Cobb 著.王海鵬,譯.快速測(cè)試[M].北京:人民郵電出版社,2004.
作者單位:天津市神州商龍科技有限公司,天津 300384