賀英杰++趙正海
摘要:Web應(yīng)用軟件的使用日益廣泛,為了保證軟件的安全性,Web安全測(cè)試必不可少,而設(shè)計(jì)全面、有效的安全測(cè)試用例則是關(guān)鍵。該文對(duì)Web安全漏洞進(jìn)行了分類,研究了Web安全測(cè)試內(nèi)容,闡述了安全測(cè)試用例設(shè)計(jì)原則。
關(guān)鍵詞:Web應(yīng)用軟件;安全測(cè)試;用例設(shè)計(jì)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)06-0069-02
1 概述
隨著電子商務(wù)和互聯(lián)網(wǎng)的廣泛應(yīng)用,Web應(yīng)用軟件被越來(lái)越廣泛的使用。除了傳統(tǒng)的應(yīng)用如電子郵件、新聞網(wǎng)站等,目前Web應(yīng)用軟件也被越來(lái)越多的關(guān)鍵性任務(wù)使用,例如互聯(lián)網(wǎng)證券、互聯(lián)網(wǎng)銀行、網(wǎng)絡(luò)購(gòu)物等涉及金錢交易的應(yīng)用,以及政府部門的電子政務(wù)等業(yè)務(wù)通過(guò)互聯(lián)網(wǎng)來(lái)開展等。上述關(guān)鍵性的應(yīng)用對(duì)軟件安全的要求越來(lái)越高,假如由于軟件的不安全造成系統(tǒng)被破壞或信息被泄露,將會(huì)給國(guó)家、集體甚至個(gè)人帶來(lái)巨大的損失。所以,確保Web應(yīng)用軟件的安全是非常重要的,設(shè)計(jì)全面、有效的安全測(cè)試用例則是重中之重。
2常見Web安全問(wèn)題
研究Web應(yīng)用軟件的安全性測(cè)試技術(shù),首先應(yīng)對(duì)已知的應(yīng)用軟件安全問(wèn)題進(jìn)行研究,了解各種漏洞產(chǎn)生的原因、觸發(fā)的條件、造成的后果,抽象出各類漏洞的特征,進(jìn)行科學(xué)的分類,才能有效指導(dǎo)安全性測(cè)試工作,保障其科學(xué)性、高效性和針對(duì)性。OWASP(The Open Web Application Security Project)是一個(gè)致力于web應(yīng)用安全的國(guó)際組織,OWASP分析實(shí)際應(yīng)用中經(jīng)常出現(xiàn)的安全漏洞,并對(duì)各類漏洞進(jìn)行總結(jié)描述,發(fā)布每年度的最危險(xiǎn)的十大漏洞,能夠很好地反映Web安全所面臨的威脅和這些威脅的發(fā)展趨勢(shì),被眾多權(quán)威性機(jī)構(gòu)(如美國(guó)國(guó)防部、國(guó)際信用卡數(shù)據(jù)安全技術(shù)標(biāo)準(zhǔn)、美國(guó)聯(lián)邦貿(mào)易委員會(huì)等)列為應(yīng)用程序安全規(guī)范。根據(jù)OWASP提出的Web應(yīng)用安全漏洞數(shù)據(jù)分布來(lái)看,Web應(yīng)用程序面臨的安全形勢(shì)依然嚴(yán)峻,常見的安全問(wèn)題包括:
1)注入式攻擊。例如SQL、OS以及LDAP注入,發(fā)生在不受信任的數(shù)據(jù)作為一條指令或是查詢要求的一部分被發(fā)往解釋程序之時(shí)。攻擊者所植入的惡意數(shù)據(jù)可以騙過(guò)解釋程序,導(dǎo)致該指令或查詢要求在無(wú)意中被執(zhí)行。
2)跨站點(diǎn)腳本(簡(jiǎn)稱XSS) 。每當(dāng)一個(gè)應(yīng)用程序攜帶了不受信任的數(shù)據(jù)并將其發(fā)送至頁(yè)面瀏覽器而又未經(jīng)過(guò)相關(guān)驗(yàn)證及轉(zhuǎn)換解析時(shí),XSS類漏洞就會(huì)蠢蠢欲動(dòng)。XSS允許攻擊者在受害者的瀏覽器中執(zhí)行腳本,這會(huì)導(dǎo)致用戶的會(huì)話遭受劫持、網(wǎng)站受到破壞或者是將用戶的訪問(wèn)目標(biāo)重新定向至某些惡意網(wǎng)站。
3)無(wú)效的認(rèn)證及會(huì)話管理功能。應(yīng)用程序的相關(guān)認(rèn)證及會(huì)話管理功能在執(zhí)行過(guò)程中常常發(fā)生各種問(wèn)題,導(dǎo)致攻擊者有可能獲取到密碼、密鑰、會(huì)話授權(quán)或是通過(guò)利用其他執(zhí)行
性漏洞來(lái)盜取用戶身份。
4)對(duì)不安全對(duì)象的直接引用。當(dāng)開發(fā)者公開引用某種對(duì)內(nèi)部執(zhí)行對(duì)象,例如索引系統(tǒng)、一個(gè)文檔或是數(shù)據(jù)庫(kù)關(guān)鍵信息時(shí),就有可能發(fā)生這種不利情況。由于缺乏訪問(wèn)控制檢查等安全保護(hù)措施,攻擊者能夠利用引用信息對(duì)未獲授權(quán)的數(shù)據(jù)進(jìn)行訪問(wèn)。
5)偽造的跨站點(diǎn)請(qǐng)求 (簡(jiǎn)稱CSRF)。CSRF類攻擊的特點(diǎn)是,強(qiáng)迫受害者的某個(gè)已進(jìn)行登錄操作的瀏覽器向安全保護(hù)薄弱的頁(yè)面應(yīng)用程序發(fā)送一條偽造的HTTP請(qǐng)求,包括受害者會(huì)話緩存內(nèi)容及其他任何自動(dòng)產(chǎn)生的包含認(rèn)證信息的內(nèi)容。這就導(dǎo)致了攻擊者可以通過(guò)強(qiáng)制受害者瀏覽器向具有漏洞的應(yīng)用程序傳遞請(qǐng)求的方式,使相關(guān)的應(yīng)用程序認(rèn)定該請(qǐng)求是受害者本人所發(fā)出的合理請(qǐng)求。
3 Web安全測(cè)試內(nèi)容
攻擊者攻擊網(wǎng)絡(luò)的手段多種多樣,目的在于尋找并利用網(wǎng)絡(luò)中存在的漏洞。要想實(shí)現(xiàn)周密的安全防范,就需要分析攻擊者入侵網(wǎng)絡(luò)的方式。攻擊者對(duì)網(wǎng)絡(luò)攻擊的方式包括本地攻擊、遠(yuǎn)程攻擊和偽遠(yuǎn)程攻擊。他們的目的主要包括:非法訪問(wèn)目標(biāo)系統(tǒng),以獲取不應(yīng)有的訪問(wèn)權(quán)限;篡改相關(guān)數(shù)據(jù),修改重要資料;獲取所需資料;使用有關(guān)資源,發(fā)布虛假信息、占用存儲(chǔ)空間甚至發(fā)動(dòng)分布式攻擊等。
攻擊者進(jìn)行Web應(yīng)用攻擊行為的過(guò)程包括:首先,發(fā)現(xiàn)Web系統(tǒng)或應(yīng)用程序中已存在的漏洞;然后,根據(jù)具體漏洞的類別采取對(duì)應(yīng)的、有效的攻擊手段;最后,人工分析攻擊結(jié)果,獲取想要的信息或權(quán)限。按照目前常見的攻擊手段,應(yīng)該有針對(duì)性的進(jìn)行測(cè)試,主要的測(cè)試內(nèi)容如下:
1)漏洞掃描。安全漏洞掃描一般需要借助特定的漏洞掃描器完成,漏洞掃描器其實(shí)就是一種能自動(dòng)檢測(cè)本地主機(jī)或遠(yuǎn)程端安全性弱點(diǎn)的程序。系統(tǒng)管理員通過(guò)漏洞掃描器能及時(shí)發(fā)現(xiàn)維護(hù)的信息系統(tǒng)中存在的安全漏洞,這樣在保衛(wèi)信息系統(tǒng)網(wǎng)絡(luò)安全過(guò)程中可以有的放矢,及時(shí)對(duì)漏洞進(jìn)行修補(bǔ)。按照常規(guī)標(biāo)準(zhǔn)劃分,漏洞掃描一般分為兩類,分別為網(wǎng)絡(luò)漏洞掃描器(Net Scanner)和主機(jī)漏洞掃描器(Host Scanner)。網(wǎng)絡(luò)漏洞掃描器是指通過(guò)網(wǎng)絡(luò),遠(yuǎn)程檢測(cè)目標(biāo)主機(jī)或網(wǎng)絡(luò)系統(tǒng)的安全漏洞的程序,典型的程序包括ISS Internet Scanner、Satan等。主機(jī)漏洞掃描器是指在本地主機(jī)或網(wǎng)絡(luò)系統(tǒng)上運(yùn)行檢測(cè)安全漏洞的程序,如著名的COPS、Tiger等軟件。
2)功能驗(yàn)證。功能驗(yàn)證屬于軟件測(cè)試當(dāng)中的黑盒測(cè)試方法,對(duì)涉及軟件的安全功能,如權(quán)限管理功能、用戶管理功能、認(rèn)證功能、加密功能等進(jìn)行測(cè)試,驗(yàn)證上述功能是否安全有效。進(jìn)行黑盒測(cè)試的目的是為了模擬一個(gè)用戶可能采取的惡意行為,觀察Web應(yīng)用系統(tǒng)及其配套的安全措施能否真正地起到防護(hù)過(guò)濾惡意行為的作用。
3)網(wǎng)絡(luò)偵聽。實(shí)際上,網(wǎng)絡(luò)偵聽是指在數(shù)據(jù)交互或數(shù)據(jù)通信過(guò)程中對(duì)數(shù)據(jù)進(jìn)行截取并分析的過(guò)程。目前,比較通用的網(wǎng)絡(luò)偵聽技術(shù)就是捕獲網(wǎng)絡(luò)數(shù)據(jù)包,我們通常稱為Capture,黑客可以通過(guò)該項(xiàng)技術(shù)盜取公司或個(gè)人有價(jià)值的數(shù)據(jù),同理,測(cè)試人員一樣可以利用該項(xiàng)技術(shù)測(cè)試Web應(yīng)用軟件或系統(tǒng)的安全性。
4)模擬攻擊測(cè)試。模擬攻擊測(cè)試對(duì)于安全測(cè)試來(lái)說(shuō)是一種特殊的黑盒測(cè)試案例,我們通過(guò)模擬攻擊的方式來(lái)驗(yàn)證信息系統(tǒng)或軟件的安全防護(hù)能力,在數(shù)據(jù)處理與數(shù)據(jù)通信環(huán)境中常見的攻擊包括冒充、重演、消息篡改、服務(wù)拒絕、內(nèi)部攻擊、外部攻擊、陷阱門、特洛伊木馬等。
4測(cè)試用例設(shè)計(jì)原則
一個(gè)完整的Web安全測(cè)試用例體系設(shè)計(jì)可以從身份驗(yàn)證、加密、輸入驗(yàn)證、敏感數(shù)據(jù)、配置管理、授權(quán)、異常管理、會(huì)話管理、參數(shù)操作、審核和日志記錄、部署與基礎(chǔ)結(jié)構(gòu)等幾個(gè)方面入手。下面將詳細(xì)描述測(cè)試用例設(shè)計(jì)時(shí)需要注意的要點(diǎn)。
1)數(shù)據(jù)加密設(shè)計(jì)原則。執(zhí)行數(shù)據(jù)傳輸操作需要對(duì)某些數(shù)據(jù)進(jìn)行信息加密和過(guò)濾,比如用戶登錄密碼信息、用戶信用卡信息等。此時(shí),其他操作也需要相應(yīng)進(jìn)行,如解密發(fā)送到客戶瀏覽器或用戶電子郵箱、將信息存儲(chǔ)到數(shù)據(jù)庫(kù)等。目前的加密算法種類越來(lái)越多,設(shè)計(jì)越來(lái)越復(fù)雜,但數(shù)據(jù)加密的過(guò)程一般是可逆的,意思就是能對(duì)數(shù)據(jù)進(jìn)行加密,也能對(duì)數(shù)據(jù)進(jìn)行解密。一般可在后臺(tái)數(shù)據(jù)庫(kù)查看登錄的賬戶和密碼是否進(jìn)行了加密。
2)目錄設(shè)計(jì)原則。Web的目錄安全是一個(gè)不容忽視的因素,如果Web服務(wù)器或Web應(yīng)用程序的設(shè)計(jì)不合理,攻擊者就可以通過(guò)簡(jiǎn)單的URL推測(cè)和替換,完全獲取整個(gè)Web目錄的權(quán)限,這樣就對(duì)Web站點(diǎn)造成很大的安全性隱患。我們可以采取一定的預(yù)防措施,如在訪問(wèn)每個(gè)目錄時(shí)設(shè)置index.htm,或者訪問(wèn)Web服務(wù)器的目錄時(shí)對(duì)權(quán)限進(jìn)行嚴(yán)格的設(shè)定,從而使發(fā)生安全問(wèn)題的可能性盡可能地降低到最小程度。
3)登錄設(shè)計(jì)原則。一般的Web應(yīng)用站點(diǎn)都會(huì)采用登錄或注冊(cè)后使用的方式,所以必須對(duì)用戶名和密碼進(jìn)行匹配校驗(yàn),以防止用戶非法登錄。進(jìn)行登錄測(cè)試時(shí),需要考慮的方面包括輸入的密碼是否區(qū)分大小寫、是否有長(zhǎng)度條件限制,最多可以嘗試登錄多少次,哪些文件或者頁(yè)面需要登錄后才能訪問(wèn)或下載等。
4)服務(wù)器腳本語(yǔ)言設(shè)計(jì)原則。腳本語(yǔ)言存在一定的安全隱患,每種腳本語(yǔ)言的細(xì)節(jié)略有不同,有些腳本語(yǔ)言允許訪問(wèn)根目錄,其他腳本語(yǔ)言只允許訪問(wèn)郵件服務(wù)器,但是有經(jīng)驗(yàn)的黑客可以通過(guò)腳本漏洞獲取服務(wù)器的用戶名和口令。設(shè)計(jì)測(cè)試用例時(shí)需確認(rèn)站點(diǎn)使用了哪種腳本語(yǔ)言,并研究該語(yǔ)言的漏洞,還需要考慮是否存在沒(méi)有經(jīng)過(guò)授權(quán)就在服務(wù)器端編輯或放置腳本的情況。
5)SSL設(shè)計(jì)原則?,F(xiàn)在越來(lái)越多的Web站點(diǎn)使用SSL安全協(xié)議進(jìn)行數(shù)據(jù)傳送。SSL是Secure Sockets Layer(安全套接字協(xié)議層)的縮寫,是Netscape首先發(fā)布的網(wǎng)絡(luò)數(shù)據(jù)安全傳輸協(xié)議。SSL的原理是通過(guò)私有密鑰/公開密鑰的加密技術(shù)(RSA),在TCP層和HTTP層之間對(duì)用戶與服務(wù)器之間的通信進(jìn)行加密,確保信息傳遞的安全性。SSL是在私人密鑰和公共密鑰的基礎(chǔ)上進(jìn)行工作,任何用戶都可以獲取公共密鑰來(lái)加密數(shù)據(jù),但解密數(shù)據(jù)需要使用相應(yīng)的私人密鑰。打開一個(gè)SSL站點(diǎn)后,有時(shí)候能看到瀏覽器彈出警告信息,地址欄的http變成https,對(duì)SSL進(jìn)行測(cè)試的時(shí)候需要確認(rèn)上述特征,以及站點(diǎn)是否具備時(shí)間鏈接限制等相關(guān)的安全保護(hù)措施。
5結(jié)束語(yǔ)
Web應(yīng)用是一種典型的應(yīng)用程序,Web應(yīng)用本身越來(lái)越復(fù)雜,同時(shí)它所使用的開發(fā)語(yǔ)言和開發(fā)模型在不斷發(fā)展,所有這些因素給測(cè)試帶來(lái)了很大的難度。目前的安全測(cè)試主要依賴測(cè)試工程師的直覺(jué)和經(jīng)驗(yàn),Web安全測(cè)試被認(rèn)為是一個(gè)耗時(shí)、代價(jià)昂貴的過(guò)程,因此,迫切需要設(shè)計(jì)一套系統(tǒng)的Web安全測(cè)試用例對(duì)Web應(yīng)用進(jìn)行全面的測(cè)試。本文正是基于以上目的,對(duì)Web安全漏洞進(jìn)行分類,研究了Web安全測(cè)試內(nèi)容,闡述了安全測(cè)試用例設(shè)計(jì)原則。
參考文獻(xiàn):
[1] 方建超,徐全軍.網(wǎng)絡(luò)安全漏洞檢測(cè)技術(shù)分析[J].計(jì)算機(jī)安全,2005(10):32-33.
[2] 施寅生,鄧世偉,谷天陽(yáng).服務(wù)安全性測(cè)試技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),2007,29(10):11-13.
[3] 劉煥洲,繆淮扣. Web應(yīng)用程序建模和測(cè)試用例生成方法[J].計(jì)算機(jī)工程,2008,34(6): 60-62.
[4] The Open Web Application Security Project[EB/OL]. http://www.owasp.org/index.php/Main_Page.
[5] 范紅,馮登國(guó),吳亞非.信息安全風(fēng)險(xiǎn)評(píng)估方法與應(yīng)用[M].北京:清華大學(xué)出版社,2006.