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

?

基于攻擊場景的安全測試生成方法

2011-06-05 09:50:09李曉紅馮志勇AARONMarback
關(guān)鍵詞:測試用例攻擊者威脅

何 可,李曉紅,馮志勇,AARON Marback

基于攻擊場景的安全測試生成方法

何 可1,李曉紅1,馮志勇1,AARON Marback2

(1. 天津大學計算機科學與技術(shù)學院,天津 300072;2. 美國北達科他州立大學計算機科學系,法戈58108)

為了更加有效地開發(fā)安全可信的軟件,需要在軟件開發(fā)生命周期中盡早考慮安全問題.為了解決這一問題,提出了一種基于設(shè)計級別的攻擊場景生成安全測試的方法,該方法包括建模并驗證攻擊場景,用攻擊場景生成安全測試序列,基于輸入語法生成測試輸入數(shù)據(jù),生成模型級別的安全測試用例,將模型級別的安全測試用例轉(zhuǎn)化為可執(zhí)行的安全測試用例.設(shè)計并實現(xiàn)了一個實驗,驗證了所提出方法的可行性和有效性.

軟件安全;攻擊場景;安全測試序列;安全測試生成;可信軟件

隨著互聯(lián)網(wǎng)的普及,軟件安全性已經(jīng)成為一個嚴重的問題.人們普遍認識到應(yīng)該在軟件開發(fā)生命周期中盡早考慮安全問題[1].安全性已經(jīng)成為軟件系統(tǒng)的一個重要可信性質(zhì)[2].設(shè)計級別的安全問題難以解決使得安全設(shè)計(如設(shè)計階段的威脅建模)成為安全軟件開發(fā)成功的關(guān)鍵[1].Li與He[3]提出了一種統(tǒng)一威脅模型,在設(shè)計階段能夠有效地分析與評估軟件可能面臨的威脅,改進軟件設(shè)計的安全性.但是,軟件實現(xiàn)可能違背設(shè)計引入安全漏洞,安全設(shè)計并不能確保軟件實現(xiàn)的安全性.使用安全設(shè)計的產(chǎn)物(如統(tǒng)一威脅模型)測試軟件實現(xiàn)的安全性成為必要.

軟件安全測試通過運行安全測試用例發(fā)現(xiàn)系統(tǒng)中的安全漏洞,是一種確保系統(tǒng)安全性的有效方法[4].從安全設(shè)計的產(chǎn)物生成安全測試用例需要解決2個關(guān)鍵問題.

(1)從設(shè)計產(chǎn)物生成模型級別的安全測試用例.攻擊通常是由攻擊者的惡意行為和故意選擇的無效輸入所造成.軟件結(jié)構(gòu)和輸入空間的復雜性使得測試一個軟件的所有無效輸入極其困難.因此,自動或者半自動的安全測試成為關(guān)鍵.

(2)生成可執(zhí)行的安全測試用例.由于軟件設(shè)計先于實現(xiàn),從設(shè)計級別的產(chǎn)物生成的安全測試用例不是直接可執(zhí)行的.將設(shè)計級別的安全測試用例轉(zhuǎn)化為實現(xiàn)級別的可執(zhí)行的安全測試用例時,需要解決將模型級別的元素(如事件)映射到實現(xiàn)級別的結(jié)構(gòu)(如面向?qū)ο蟪绦蛑械姆椒?,以及為安全測試參數(shù)提供輸入等問題.

為了解決上述問題,本文提出了一種基于攻擊場景的安全測試生成方法,使用設(shè)計級別的攻擊場景模型生成可執(zhí)行的安全測試用例,設(shè)計并實現(xiàn)了一個實驗驗證了該方法的可行性和有效性.

1 相關(guān)工作

軟件工程領(lǐng)域的研究人員已經(jīng)提出了多種基于場景的測試方法.Ryser與Glinz[5]提出了一種基于場景的軟件驗證與測試方法.Thomas等[6]提出了一種使用場景和狀態(tài)機的目標驅(qū)動測試方法.Tsai等[7]提出了一個基于場景的面向?qū)ο鬁y試框架用于快速測試.但是,上述方法都不支持開發(fā)與安全測試相關(guān)的場景和測試用例.Mouratidis和Giorgini[8]提出了一種基于場景的安全測試方法(M&G方法),用于信息系統(tǒng)設(shè)計階段的安全測試.本文提出的方法與M&G方法存在3點不同:①M&G方法采用Tropos方法作為基礎(chǔ),而本文采用擴展活動圖和統(tǒng)一威脅模型作為基礎(chǔ),UML活動圖和威脅樹分別是擴展活動圖和統(tǒng)一威脅模型的基礎(chǔ),廣泛應(yīng)用于軟件功能建模和威脅建模[1];②本文引入信任邊界和攻擊路徑的概念,使得設(shè)計人員能夠更好地理解攻擊者可能從何處以及采用何種方法滲透系統(tǒng)以實現(xiàn)威脅;③M&G方法沒有提供生成可執(zhí)行的安全測試用例的方法,而本文提出了一種從攻擊場景生成可執(zhí)行的安全測試用例的方法,并通過實驗驗證了該方法的可行性和有效性.

威脅建模[1]已經(jīng)成為一種有價值的安全軟件開發(fā)實踐.威脅建模過程簡潔抽象地描述了攻擊者滲透系統(tǒng)實現(xiàn)威脅的方法,可以用于各種抽象級別或者不同的軟件開發(fā)階段,例如需求分析、設(shè)計、實現(xiàn),甚至測試階段.Wang等[9]提出了一種威脅模型驅(qū)動的安全測試方法,用于發(fā)現(xiàn)運行時的威脅行為.該研究用UML順序圖建模違背安全策略的威脅,再從設(shè)計級別的威脅模型中提取威脅蹤跡集合.其中,每條威脅蹤跡是系統(tǒng)運行期間不應(yīng)該發(fā)生的一個事件序列,否則便是一個威脅.與此工作不同,本文的工作基于攻擊場景,用擴展活動圖建模系統(tǒng)功能,用統(tǒng)一威脅模型建模系統(tǒng)可能面臨的威脅,并從攻擊場景生成可執(zhí)行的安全測試用例.

陳小峰[10]提出了一種用于可信平臺模塊的形式化分析與測試方法,以可信平臺模塊的密碼子系統(tǒng)為例,用Z語言給出了該子系統(tǒng)的形式化規(guī)格說明,并且基于該規(guī)格說明給出了擴展有限狀態(tài)機模型.最后將該有限狀態(tài)機模型應(yīng)用于測試用例的自動生成.與此工作不同,本文的工作是基于設(shè)計階段的攻擊場景模型來生成可執(zhí)行的安全測試用例.

2 攻擊場景

基于攻擊場景的安全測試生成方法中,建模設(shè)計級別的攻擊場景需要對系統(tǒng)的功能和可能面臨的威脅建模[11].其中,威脅被認為是由數(shù)據(jù)跨越不同信任等級時所作的錯誤假設(shè)造成的.為此,擴展UML活動圖,引入新的建模元素——信任邊界,基于擴展的UML活動圖建模系統(tǒng)功能,并采用統(tǒng)一威脅模型建模系統(tǒng)可能面臨的威脅.

定義1信任等級、信任邊界和擴展活動圖(extended activity diagram).信任等級是系統(tǒng)某一部分所達到的信任程度,記為TL,TL∈{low, medium,high,unknown}.信任邊界是不同信任等級的物理或虛擬邊界,記為TB.稱帶有信任邊界擴展的活動圖為擴展活動圖,記為EAD.

定義2 AND節(jié)點和OR節(jié)點[12].AND節(jié)點是指父節(jié)點的所有子節(jié)點之間存在AND邏輯關(guān)系,即當且僅當實現(xiàn)所有子節(jié)點時,才能實現(xiàn)父節(jié)點.其中,實現(xiàn)子節(jié)點的默認順序為從左到右.OR節(jié)點是指父節(jié)點的所有子節(jié)點之間存在OR邏輯關(guān)系,即當且僅當實現(xiàn)任一子節(jié)點時,就能實現(xiàn)父節(jié)點.

定義3 統(tǒng)一威脅模型(unified threat model).統(tǒng)一威脅模型是一個表示、分析與評估系統(tǒng)可能面臨的威脅的模型,記為UTM,UTM=(Tr,Al,H),其中

(1)Tr是具有一個或多個AND/OR節(jié)點的統(tǒng)一威脅樹,Tr=(N,E,At).N為一個非空有限AND/OR節(jié)點的集合.節(jié)點分為3種:根節(jié)點、中間節(jié)點和葉節(jié)點.根節(jié)點Nroot_node表示攻擊要實現(xiàn)的最終威脅目標,代表達到最終攻擊目標的攻擊方式,可以分解為若干個子目標.中間節(jié)點Nintermediate_nodes表示為實現(xiàn)父節(jié)點目標而分解出的若干個子目標,代表達到最終威脅目標的中間級攻擊方式,可以分解為若干個低一級的子目標.葉節(jié)點Nleaf_nodes表示具體目標,代表達到最終威脅目標的具體攻擊方式,不再分解.這3種子集.如果節(jié)點N1∈N,N2∈N,且存在一條由N1指向N2的有向邊,則稱N1為前提目標,N2為后繼目標.At為統(tǒng)一威脅模型的屬性集合,包括實現(xiàn)威脅的前置條件和后置條件等等.

(2)Al為分析與評估系統(tǒng)可能面臨的威脅的算法集合.

(3)H為安全事件的歷史統(tǒng)計信息集合.

統(tǒng)一威脅模型是擴展的威脅樹模型,威脅樹模型常應(yīng)用于威脅建模過程[1].建模統(tǒng)一威脅模型時,統(tǒng)一威脅樹的根節(jié)點分解為若干個中間節(jié)點,而中間節(jié)點進一步分解,直到葉節(jié)點.這是一個逐步求精的過程,最終,根節(jié)點由葉節(jié)點集合所構(gòu)成的若干個序組實現(xiàn).一個序組表示一種攻擊者實現(xiàn)威脅的潛在方法,稱為攻擊路徑,由分解過程中節(jié)點之間的AND/OR邏輯關(guān)系決定.

定義4攻擊路徑(attack path).攻擊路徑是實現(xiàn)統(tǒng)一威脅樹Tr根節(jié)點所需要的若干個相關(guān)葉節(jié)點構(gòu)是Tr的一個最小割集.其中,割集Cu滿足條件:①是Tr的葉節(jié)點構(gòu)成的一個n元序組,1n≤≤時,能夠?qū)崿F(xiàn)Tr的根節(jié)點.最小割集Cumin滿足條件:①是一個割集;②若去掉該割集的任一葉節(jié)點就不再成為割集.

場景已經(jīng)廣泛應(yīng)用于計算機科學研究的多個領(lǐng)域[6-8].攻擊場景由擴展活動圖、統(tǒng)一威脅模型和攻擊連接構(gòu)成.攻擊場景架起了系統(tǒng)功能設(shè)計和安全分析之間的橋梁,縮小了二者之間的差距.

定義5攻擊場景(attack scenario).攻擊場景描述了系統(tǒng)的功能、參與者、可能面臨的威脅,攻擊者及其意圖和目標,表示了攻擊者滲透系統(tǒng)實現(xiàn)威脅的方法及其與系統(tǒng)功能之間的關(guān)聯(lián),記為ASc,ASc= (EAD,UTM,ALink).其中,EAD表示了系統(tǒng)功能,EAD中的泳道和對象節(jié)點分別表示了參與者和攻擊目標.UTM表示了系統(tǒng)可能面臨的威脅,UTM中的攻擊路徑表示了攻擊者滲透系統(tǒng)實現(xiàn)威脅的方法.攻擊連接(ALink)表示了具體攻擊方式和攻擊目標之間的關(guān)聯(lián).

3 基于攻擊場景的安全測試生成方法

基于攻擊場景的安全測試生成方法致力于識別攻擊者的意圖和目標,并從攻擊場景生成安全測試用例以測試系統(tǒng)的安全性.該方法包括6個步驟:①用擴展活動圖建模系統(tǒng)功能,用統(tǒng)一威脅模型建模系統(tǒng)可能面臨的威脅,建模攻擊場景;②驗證攻擊場景;③從攻擊場景生成安全測試序列;④基于語法生成安全測試輸入;⑤將安全測試輸入整合到安全測試序列中,生成模型級別的安全測試用例;⑥結(jié)合領(lǐng)域知識和實現(xiàn)知識將模型級別的安全測試用例轉(zhuǎn)化為可執(zhí)行的安全測試用例.圖1表示了各個步驟之間的關(guān)系.首先,構(gòu)建并驗證攻擊場景.然后,生成安全測試序列和安全測試輸入,并將安全測試輸入整合到安全測試序列中構(gòu)成模型級別的安全測試用例.最后,基于領(lǐng)域知識和實現(xiàn)知識,將模型級別的安全測試用例轉(zhuǎn)化為實現(xiàn)級別的可執(zhí)行的安全測試用例.為了系統(tǒng)地闡明所提出的安全測試用例生成方法,以實驗中為被測的基于Web的電子商務(wù)系統(tǒng)osCommerce建模的一個SQL注入攻擊場景(圖2)為例進行說明.值得指出的是,雖然本文的實驗是針對一個基于Web的電子商務(wù)系統(tǒng),但是本文所提出的方法具有一定的普適性,能夠用于建模各種類型Web系統(tǒng)(如基于Web的電子政務(wù)系統(tǒng)、網(wǎng)上銀行系統(tǒng)、內(nèi)容管理系統(tǒng)、遠程教育系統(tǒng)等)的攻擊場景,并基于攻擊場景生成安全測試用例.因為本文建模的攻擊場景(如SQL注入、URL跳躍、目錄遍歷、跨站點腳本、信息泄露等攻擊場景)不僅存在于基于Web的電子商務(wù)系統(tǒng)中,也存在于其他類型的Web系統(tǒng)中[13].

圖1 基于攻擊場景的安全測試生成方法的流程Fig.1 Process of the attack scenario based approach to security test generation

圖2 osCommerce系統(tǒng)的SQL注入攻擊聲景Fig.2 Attack scenario of SQL injection in osCommerce system

3.1 攻擊場景建模與驗證

分析攻擊者的意圖和目標所獲得的信息使開發(fā)人員能夠理解攻擊者可能從何處滲透系統(tǒng),以及攻擊者如何滲透系統(tǒng).這些信息為建模攻擊場景奠定了基礎(chǔ).攻擊場景建模包括3個步驟:①用擴展活動圖建模系統(tǒng)功能;②用統(tǒng)一威脅模型建模系統(tǒng)可能面臨的威脅;③用攻擊連接關(guān)聯(lián)統(tǒng)一威脅模型中的具體攻擊方式和擴展活動圖中的攻擊目標.用擴展活動圖建模系統(tǒng)功能的過程中,引入的信任邊界建模元素指出了系統(tǒng)功能模型中數(shù)據(jù)跨越不同信任等級的地方,經(jīng)過這些地方的數(shù)據(jù)常成為攻擊目標.信任邊界確定了攻擊者的潛在攻擊目標以及從何處滲透系統(tǒng).如圖2所示的SQL注入攻擊場景中,osCommerce系統(tǒng)為用戶提供了瀏覽網(wǎng)上商店,選擇商品,向購物車中添加商品,移除商品,更新購物車,結(jié)賬等功能.當用戶選擇了商品,將相關(guān)信息由客戶端提交到服務(wù)器端時,該信息跨越了互聯(lián)網(wǎng)終端(信任等級為低)和osCommerce網(wǎng)上商店(信任等級為中)之間的信任邊界,但是缺乏足夠的保護措施,導致攻擊者可以進行SQL注入攻擊.

用統(tǒng)一威脅模型建模系統(tǒng)可能面臨的威脅的過程中,攻擊路徑表示了攻擊者滲透系統(tǒng)的方法.實驗中,對osCommerce系統(tǒng)建模了7個攻擊場景,在此詳述其中5個攻擊場景的統(tǒng)一威脅模型.圖2所示的SQL注入攻擊場景中,統(tǒng)一威脅模型有3條攻擊路徑.osCommerce系統(tǒng)中,變量$option和$value是從shoppingCart類中的$this→contents獲得,而$this→contents是由shopping_cart.php文件中的$cart→get_products()函數(shù)調(diào)用獲得.這些變量的值是從會話數(shù)據(jù)中取得,但是系統(tǒng)對會話數(shù)據(jù)沒有進行恰當?shù)霓D(zhuǎn)義處理,攻擊者將一個商品添加到購物車時可以通過id[]數(shù)組控制會話數(shù)據(jù).攻擊者向id[]數(shù)組中注入SQL腳本可以獲得用戶的信用卡信息、個人信息或登錄信息.

圖3為URL跳躍攻擊場景的統(tǒng)一威脅模型,有3條攻擊路徑.在用戶結(jié)賬的流程中,缺乏保護措施確認用戶的請求流程頁面與規(guī)定的結(jié)賬流程頁面是否一致,導致攻擊者能夠使用URL跳躍攻擊跳過支付信息頁面、配送信息頁面或二者都跳過.

圖3 URL跳躍攻擊場景的統(tǒng)一威脅模型Fig.3 Unified threat model of URL jumping

圖4為目錄遍歷攻擊場景的統(tǒng)一威脅模型,有2條攻擊路徑.由于osCommerce系統(tǒng)沒有驗證請求file_manage.php頁面和admin目錄的變量,導致攻擊者能夠以假的URL執(zhí)行目錄遍歷命令,下載保密文件(例如Linux系統(tǒng)中存儲用戶名和密碼的文件).

圖4 目錄遍歷攻擊場景的統(tǒng)一威脅模型Fig.4 Unified threat model of directory traversal

圖5為跨站點腳本攻擊場景的統(tǒng)一威脅模型,有4條攻擊路徑.osCommerce系統(tǒng)的多個php文件中傳遞給“page”參數(shù)的輸入,以及admin目錄下geo_zones.php文件中傳遞給“zpage”參數(shù)的輸入都沒有經(jīng)過恰當?shù)膬艋幚砭头祷亟o用戶.這導致攻擊者能夠利用這些受影響的php文件執(zhí)行任意HTML代碼和腳本代碼.攻擊者能夠通過發(fā)送隱藏圖片、表單、浮動DIV或IFrame腳本獲取用戶的會話ID.

圖5 跨站點腳本攻擊場景的統(tǒng)一威脅模型Fig.5 Unified threat model of cross site scipt

圖6為信息泄露攻擊場景的統(tǒng)一威脅模型,有2條攻擊路徑.osCommerce系統(tǒng)對用戶登錄時嘗試用戶名和密碼的次數(shù)缺乏限制,使得攻擊者能夠通過多次嘗試獲取用戶名和密碼,并登錄系統(tǒng)更改用戶賬戶信息.攻擊者能夠通過字典攻擊或暴力破解的方式獲得用戶名和密碼.

圖6 信息泄露攻擊場景的統(tǒng)一威脅模型Fig.6 Unified threat model of information disclosure

軟件審查是一種有效的驗證方法[11],因此采用這種方法驗證攻擊場景.驗證過程包括2個步驟:①識別并解決擴展活動圖和統(tǒng)一威脅模型語法中可能存在的不一致問題;②識別并解決攻擊場景之間可能存在的不一致性問題.使用軟件審查方法進行驗證后得到的攻擊場景稱為有效攻擊場景.

3.2 安全測試序列生成

建模并驗證攻擊場景后需要從攻擊場景生成安全測試序列.安全測試序列是以攻擊路徑為模板生成的,因為攻擊路徑表達了攻擊者滲透系統(tǒng)的潛在攻擊方法.以下是基于攻擊場景生成安全測試序列的算法.該算法采用遞歸設(shè)計從攻擊場景生成安全測試序列.其中,Nroot_node、Nleaf_nodes、NOR和NAND分別是根節(jié)點、葉節(jié)點、OR節(jié)點和AND節(jié)點;nroot_node是Nroot_node的子節(jié)點個數(shù);Bi是父節(jié)點Nroot_node的第i個子節(jié)點;ni是Bi的子節(jié)點個數(shù).Bi.Pa是到達節(jié)點Bi的攻擊路徑集合.

算法:generateSecurityTestSeqence (Nroot_node,nroot_node)

從攻擊場景生成可執(zhí)行的安全測試用例時可以應(yīng)用不同的測試覆蓋準則,包括:①葉節(jié)點覆蓋:統(tǒng)一威脅模型中每一個葉節(jié)點至少被一個安全測試用例覆蓋;②攻擊路徑覆蓋:統(tǒng)一威脅模型中的每一條攻擊路徑至少被一個安全測試用例覆蓋.在攻擊場景中,攻擊路徑是依據(jù)統(tǒng)一威脅模型節(jié)點之間的AND/OR邏輯關(guān)系生成的,包含了節(jié)點的有序排列情況(AND邏輯關(guān)系),一個葉節(jié)點可能在多條攻擊路徑中出現(xiàn),故葉節(jié)點覆蓋準則是攻擊路徑覆蓋準則的子集合,因此選擇攻擊路徑覆蓋準則.

應(yīng)用安全測試序列生成算法,圖2所示SQL注入攻擊場景生成3個安全測試序列:①用戶瀏覽osCommerce網(wǎng)上商店→選擇商品→編輯商品信息→注入獲取用戶信用卡信息的SQL腳本→將商品加入到購物車;②用戶瀏覽osCommerce網(wǎng)上商店→選擇商品→編輯商品信息→注入獲取用戶個人信息的SQL腳本→將商品加入到購物車;③用戶瀏覽osCommerce網(wǎng)上商店→選擇商品→編輯商品信息→注入獲取用戶登錄信息的SQL腳本→將商品加入到購物車.

安全測試序列是從設(shè)計級別的攻擊場景生成,需要將它轉(zhuǎn)化為可執(zhí)行的安全測試用例.攻擊場景中可能存在一些攻擊方式(即事件)難以轉(zhuǎn)化為可執(zhí)行的安全測試用例(如社會化攻擊、硬件篡改等)或者可以與其他的攻擊方式進行合并.為了解決這一問題,開發(fā)安全測試用例的人員需要對安全測試序列中必要和可行的事件進行綁定以生成可執(zhí)行的安全測試用例.以SQL注入攻擊場景為例,用戶瀏覽osCommerce網(wǎng)上商店事件不是必要的操作,可以直接通過傳遞商品id參數(shù)(http://example.com/product_ info.php?products_id=2)完成打開osCommerce網(wǎng)上商店和選擇商品的操作.編輯商品信息事件與對id[]數(shù)組進行SQL注入事件的測試代碼是合并在一起的,這種情況下不需要將其轉(zhuǎn)化為單獨的可執(zhí)行的測試代碼片段.

攻擊操作還需要關(guān)聯(lián)參數(shù).因為一個安全測試序列可能包含多個事件,而每個事件可能有多個參數(shù).跟蹤全部事件的所有參數(shù)并維護參數(shù)的順序成為一個難點.為了解決這一難點,首先在統(tǒng)一威脅模型的葉節(jié)點中為事件指定參數(shù),這些參數(shù)最終會導出到生成的安全測試序列中;然后,生成安全測試序列后,遍歷序列中的事件為參數(shù)創(chuàng)建一個參數(shù)列表;該參數(shù)列表隨后以注釋語句的形式生成到最終的可執(zhí)行安全測試代碼的頂端,提醒安全測試用例的開發(fā)人員注意參數(shù)的正確個數(shù).在SQL注入攻擊場景中,選擇一個商品的事件有2個參數(shù)(product_id和options_id) .

3.3 基于語法的安全測試輸入生成

獲得安全測試序列和參數(shù)以后,需要為安全測試用例提供實際輸入.采用基于語法的測試方法,這是一種基于語法的輸入數(shù)據(jù)驅(qū)動測試方法[3].

SQL注入攻擊場景的示例中,需要參數(shù)product_id,該參數(shù)所滿足的最簡單語法是正則表達式*a.其中,a是任一可打印的ASCII字符,這個集合的勢是無窮大,因此不實用.可以限制字符串長度來減少輸入數(shù)據(jù)總量.這種情況下一個長度為L的字符串的輸入數(shù)據(jù)總量為95L(95為可打印的ASCII字符數(shù)).可見指定長度約束后的輸入數(shù)據(jù)總量還是過于龐大.為了減少輸入數(shù)據(jù)總量,采用等價劃分和邊界值分析的方法對輸入數(shù)據(jù)進行分組.通常情況下,輸入數(shù)據(jù)劃分為以下4類.

(1)有效輸入:這些輸入滿足設(shè)計需求并且使得系統(tǒng)功能正常運行.

(2)被處理過的無效輸入:這些輸入是無效的,但是系統(tǒng)設(shè)計了一些錯誤處理機制進行處理.

(3)未被處理過的無效輸入,但沒有導致安全威脅:這些輸入是有意義的,但不是本文的研究重點.

(4)未被處理過的無效輸入,但導致安全威脅:這些數(shù)據(jù)可能導致系統(tǒng)漏洞,是本文安全測試輸入生成部分的重點研究內(nèi)容.

為了進行邊界值分析,必須檢查被測系統(tǒng)osCommerce的設(shè)計文檔以發(fā)現(xiàn)等價劃分的邊界.在SQL注入攻擊場景的示例中,通過檢查設(shè)計文檔發(fā)現(xiàn)product_id的賦值為32位的整數(shù)值.使用數(shù)據(jù)庫存儲常用的有效或無效字符串.例如,SQL注入腳本字符串和跨站點腳本字符串.數(shù)據(jù)庫還能提供功能以組合某些互相依賴的參數(shù).例如,在數(shù)據(jù)庫中為product_id參數(shù)創(chuàng)建一個可被osCommerce系統(tǒng)接受的賦值表.一些product_id參數(shù)(如顯卡)有一些相應(yīng)的options_id參數(shù)選擇(如一個顯卡可以選擇配備128 MB顯存或者256 MB顯存) .在數(shù)據(jù)庫的表中,配備不同容量顯存(128 MB的options_id=0,256 MB的options_id=1)的顯卡(product_id=2)所對應(yīng)的可被接受賦值是{(2,0),(2,1)}.為了觀察安全測試用例中獨立的參數(shù)對系統(tǒng)安全性造成的影響,對安全測試序列中事件的獨立參數(shù)至少生成一個可執(zhí)行的安全測試用例.

3.4 實 現(xiàn)

為了支持基于攻擊場景的安全測試生成方法,用Java語言開發(fā)了一個原型工具.該工具包括以下3種模塊:①攻擊場景建模與安全測試序列生成模塊,該模塊提供圖形化的攻擊場景建模功能,并從攻擊場景生成安全測試序列;②安全測試用例賦值模塊,該模塊允許用戶為安全測試序列中事件的參數(shù)賦值;③可執(zhí)行的安全測試用例生成模塊,該模塊將模型級別的安全測試用例轉(zhuǎn)化為可執(zhí)行的安全測試用例.

可執(zhí)行的安全測試用例包括:安全測試用例ID、前置條件、后置條件、安全測試參數(shù)和安全測試代碼.其中安全測試用例ID、前置條件、后置條件、安全測試參數(shù)都是以注釋的形式置于安全測試代碼的頂端.實驗中,用Selenium IDE的Firefox擴展和Selenium Remote Control測試環(huán)境來運行大部分安全測試用例.對于一些過于復雜而不能用Selenium運行的安全測試用例,則借助Perl語言的WWW:: Mechanize和LWP包.所有可執(zhí)行的安全測試用例都用Perl語言編寫.

以SQL注入攻擊場景的第1個安全測試序列為例.需要安全測試用例執(zhí)行:①選擇一個商品;②注入獲取用戶信用卡信息的SQL腳本;③將商品加入到購物車.需要注意的是,如前文所述,該安全測試用例中并不包含用戶瀏覽osCommerce網(wǎng)上商店和編輯商品信息這2個事件.為了完成這個安全測試用例,需要為安全測試序列中的每一個事件開發(fā)相應(yīng)的測試代碼,然后將代碼組合成一個完整的安全測試用例,并為其提供輸入.下文為SQL注入攻擊場景中第1個安全測試序列對應(yīng)的一個可執(zhí)行的安全測試用例.該安全測試用例需要用戶選擇一個商品(product_id)并確定其相應(yīng)的選項(options_id).這些輸入數(shù)據(jù)可以從測試數(shù)據(jù)庫中相應(yīng)表的字段中獲取.使用設(shè)計文檔和測試數(shù)據(jù)庫提供所需要的安全測試輸入.

需要特別指出的是,生成可執(zhí)行的安全測試用例時需要考慮盡量減小安全測試的破壞性.例如,在信息泄露攻擊場景中,生成的可執(zhí)行的安全測試用例只需要確認攻擊者的攻擊方法能夠成功破解用戶登錄信息即可,而不需要執(zhí)行修改用戶賬戶信息的事件,這樣能夠減小安全測試對被測系統(tǒng)的破壞性.

4 實 驗

為了驗證基于攻擊場景的安全測試生成方法的可行性和有效性,設(shè)計并實現(xiàn)了一個實驗,使用該方法對osCommerce系統(tǒng)進行安全測試.

4.1 實驗設(shè)計與環(huán)境

實驗使用的被測系統(tǒng)osCommerce是一個基于Web的網(wǎng)上購物系統(tǒng),用PHP語言編寫并使用MySQL數(shù)據(jù)庫存儲后臺數(shù)據(jù).osCommerce系統(tǒng)是一個開源平臺,是大多數(shù)愿意自己部署網(wǎng)上購物系統(tǒng)的零售商的一個主要選擇.實驗一共建模了7個攻擊場景:①SQL注入攻擊場景;②URL跳躍攻擊場景;③目錄遍歷攻擊場景;④跨站點腳本攻擊場景;⑤信息泄露攻擊場景;⑥數(shù)據(jù)篡改攻擊場景;⑦登錄信息篡改攻擊場景.在第3節(jié)詳細描述了前5個攻擊場景的統(tǒng)一威脅模型.使用開發(fā)的工具生成了41個安全測試序列和1 532個帶有輸入的可執(zhí)行的安全測試用例.

實驗是在同一臺主機的2臺虛擬機(其中一臺為客戶端機器,一臺為服務(wù)器)上進行.客戶端機器的操作系統(tǒng)為Ubuntu 8.10,服務(wù)器端操作系統(tǒng)為openSUSE 11.1.服務(wù)器運行Apache作為HTTP服務(wù)器以及MySQL作為后端數(shù)據(jù)庫.值得注意的是網(wǎng)絡(luò)連接速度對運行安全測試的時間有直接影響,在同一臺主機的2臺虛擬機上進行實驗可以提供一個接近最優(yōu)的網(wǎng)絡(luò)連接速度.

4.2 實驗結(jié)果與討論

實驗目的是驗證生成的安全測試用例是否能夠發(fā)現(xiàn)系統(tǒng)中存在的威脅.表1展示了實驗中安全測試用例的運行結(jié)果.第1項為攻擊場景,第2項為每個攻擊場景生成的安全測試序列數(shù)目,第3項為每個攻擊場景生成的可執(zhí)行的安全測試用例數(shù)目,第4項為發(fā)現(xiàn)系統(tǒng)中存在威脅的安全測試用例數(shù)目.其中,前5個攻擊場景是由系統(tǒng)中存在的威脅建模而成,實驗結(jié)果表明這5個攻擊場景生成的每個安全測試用例都發(fā)現(xiàn)了系統(tǒng)中存在的威脅,表明通過安全測試發(fā)現(xiàn)了系統(tǒng)中存在的威脅.后2個攻擊場景是從osCommerce系統(tǒng)設(shè)計已經(jīng)恰當處理過的威脅建模而成,實驗結(jié)果表明這2個攻擊場景生成的安全測試用例都沒有發(fā)現(xiàn)系統(tǒng)中可能存在的威脅,說明系統(tǒng)設(shè)計能夠防范這2個攻擊場景中的攻擊方法.運行全部1,532個安全測試用例耗時1,562.64,s,平均每個安全測試用例運行耗時1.02,s.這驗證了基于攻擊場景的安全測試生成方法的可行性和有效性.

表1 實驗結(jié)果Tab.1 Experiment results

實驗結(jié)果表明,基于攻擊場景的安全測試生成方法是一種有效的技術(shù),能夠開發(fā)安全測試用例用于發(fā)現(xiàn)系統(tǒng)中可能存在的威脅.通過這種方法,能夠識別攻擊者的攻擊目標,這些目標正是安全測試的目標,需要測試攻擊者是否能夠?qū)崿F(xiàn)這些攻擊目標;還能夠識別攻擊者如何實現(xiàn)攻擊目標,一種實現(xiàn)攻擊目標的方法就形成一條攻擊路徑,而攻擊路徑則成為生成安全測試序列的模板.

盡管實驗結(jié)果理想,但是實驗仍然存在以下不足.

(1)如何建模攻擊場景.一方面,由于缺乏實驗對象osCommerce系統(tǒng)的全面的設(shè)計文檔,進行實驗時從系統(tǒng)中存在的威脅建模攻擊場景而非完全依靠設(shè)計文檔.另一方面,所提出的方法需要開發(fā)人員建模攻擊場景并輔助開發(fā)安全測試用例,該方法的有效性可能直接受到開發(fā)人員建模攻擊場景與開發(fā)安全測試用例能力的影響.

(2)實驗對象缺乏多樣性.通過對一個大型、易部署的Web應(yīng)用程序osCommerce進行真實的安全測試來減少這一不足.

5 結(jié) 語

本文提出了一種基于攻擊場景的安全測試生成方法以測試軟件的安全性,設(shè)計并實現(xiàn)了一個實驗驗證了該方法的可行性與有效性.主要貢獻在于:①能夠使用攻擊場景識別攻擊者的攻擊目標;②能夠從攻擊場景中生成可執(zhí)行的安全測試用例,并通過運行安全測試用例,發(fā)現(xiàn)系統(tǒng)的安全漏洞以確保軟件安全性;③能夠確認系統(tǒng)設(shè)計成功防范某些攻擊方法,即這些攻擊方法想要實現(xiàn)的威脅在系統(tǒng)設(shè)計階段已經(jīng)被恰當考慮和處理過了,從而確保軟件系統(tǒng)的安全性.

[1] Michael H,David L. Writing Secure Code[M]. 2nd ed.Redmond,Washington,WA:Microsoft Press,2003.

[2] 陳火旺,王 戟,董 威. 高可信軟件工程技術(shù)[J]. 電子學報,2003,31(12A):1933-1938.

Chen Huowang,Wang Ji,Dong Wei. High confidence software engineering technologies[J]. Acta Electronica Sinica,2003,31(12A):1933-1938(in Chinese).

[3] Li X,He K. A unified threat model for assessing threat in web applications[C]// Proceedings of the 2nd International Conference on Information Security and Assurance. Busan,Korea,2008:142-145.

[4] Chris W,Lucas N,Dino D Z,et al. The Art of Software Security Testing:Identifying Software Security Flaws (Symantec Press)[M]. Boston,MA:Addison-Wesley Professional,2006.

[5] Ryser J,Glinz M. A scenario-based approach to validating and testing software systems using statecharts[C]// Proceedings of 12th International Conference on Software and Systems Engineering and Their Applications. Paris,F(xiàn)rance,1999.

[6] Thomas A A,Debra J R,Thomas A S. Scenarios,state machines and purpose-driven testing[C]// Proceedings of the Fourth International Workshop on Scenarios and State Machines:Model,Algorithms and Tools. St. Louis,USA,2005:1-5.

[7] Tsai W T,Saimi A,Yu L,et al. Scenario-based objectoriented testing framework[C]//Proceedings of Third International Conference on Quality Software.Dallas,USA,2003:410-417.

[8] Mouratidis H,Giorgini P. Security attack testing(SAT)-testing the security of information systems at design time [J]. Information Systems,2007,32(8):1166-1183.

[9] Wang L,Wong W,Xu D. A threat model driven approach for security testing[C]// The 3rd International Workshop on Software Engineering for Secure Systems. Minneapolis,2007.

[10] 陳小峰. 可信平臺模塊的形式化分析與測試[J]. 計算機學報,2009,32(4):646-653.

Chen Xiaofeng. The formal analysis and testing of trusted platform module[J]. Chinese Journal of Computers,2009,32(4):646-653(in Chinese).

[11] Aurum A,Petersson H,Wohlin C. State-of-the-art:Software inspections after 25 years[J]. Software Testing,Verification and Reliability,2002,12(3):133-154.

[12] Russell S,Norvig P. Artifical Intelligence:A Modern Approach[M]. 2nd ed. Upper Saddle River,NJ:Prentice Hall,2002.

[13] Whittaker J A,Thompson H. How to Break Software Security:Effective Techniques for Security Testing[M]. City of Westminster,London:Pearson,2003.

Attack Scenario Based Approach to Security Test Generation

HE Ke1,LI Xiao-hong1,F(xiàn)ENG Zhi-yong1,AARON Marback2
(1. School of Computer Science and Technology,Tianjin University,Tianjin 300072,China;2. Department of Computer Science,North Dakota State University,F(xiàn)argo 58108,ND,USA)

In order to build secure and trusted software in a cost-effective way,it is necessary to consider security problems as early as possible in the software development life cycle. To solve this problem,an approach to security test generation based on design level attack scenario was presented. This approach consists of modeling and validating attack scenario,generating security test sequences from attack scenario,generating security test input based on input syntax,generating model level security test cases,and converting model security test cases into executable security test cases. An experiment has been conducted to validate the feasibility and effectiveness of the presented approach.

software security;attack scenario;security test sequence;security test generation;trusted software

TP309

A

0493-2137(2011)04-0344-09

2010-01-22;

2010-07-02.

國家高技術(shù)研究發(fā)展計劃(863計劃)資助項目(2007AA01Z130);國家自然科學基金資助項目(90718023).

何 可(1981— ),男,博士研究生,kehe@tju.edu.cn.

馮志勇,zyfeng@tju.edu.cn.

猜你喜歡
測試用例攻擊者威脅
基于微分博弈的追逃問題最優(yōu)策略設(shè)計
自動化學報(2021年8期)2021-09-28 07:20:18
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
人類的威脅
受到威脅的生命
基于混合遺傳算法的回歸測試用例集最小化研究
正面迎接批判
愛你(2018年16期)2018-06-21 03:28:44
面對孩子的“威脅”,我們要會說“不”
家教世界(2017年11期)2018-01-03 01:28:49
Why Does Sleeping in Just Make Us More Tired?
英語學習(2015年2期)2016-01-30 00:23:16
有限次重復博弈下的網(wǎng)絡(luò)攻擊行為研究
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
乾安县| 吉隆县| 沾化县| 瑞金市| 抚宁县| 贵溪市| 塘沽区| 鲁山县| 阿坝县| 久治县| 惠安县| 凯里市| 泊头市| 台北市| 常熟市| 柘荣县| 新泰市| 许昌市| 松潘县| 洛浦县| 额敏县| 赤水市| 黎平县| 吉首市| 鹿邑县| 巢湖市| 邢台县| 永川市| 阳春市| 泰来县| 贵港市| 佛学| 安陆市| 阿克| 兖州市| 五台县| 万宁市| 昭觉县| 道孚县| 三亚市| 靖西县|