如何對(duì)移動(dòng)應(yīng)用進(jìn)行黑盒測(cè)試
多數(shù)移動(dòng)應(yīng)用程序采用何種開(kāi)發(fā)技術(shù),都會(huì)給本地設(shè)備和企業(yè)帶來(lái)不同的風(fēng)險(xiǎn),因而在部署之前需要對(duì)其實(shí)施軟件測(cè)試和評(píng)估。本文首先討論黑盒測(cè)試技術(shù)和策略。
基于Web的移動(dòng)應(yīng)用的漏洞識(shí)別和利用
在評(píng)估基于Web的移動(dòng)應(yīng)用時(shí),我們建議評(píng)估者以匿名用戶的身份來(lái)執(zhí)行測(cè)試,并使用多種經(jīng)認(rèn)證的用戶角色的特權(quán)。因?yàn)榛赪eb的應(yīng)用是通過(guò)互聯(lián)網(wǎng)來(lái)訪問(wèn)的,測(cè)試團(tuán)隊(duì)?wèi)?yīng)當(dāng)使用PC上的傳統(tǒng)瀏覽器和標(biāo)準(zhǔn)的應(yīng)用安全評(píng)估工具。
在評(píng)估過(guò)程中,為了確認(rèn)基礎(chǔ)架構(gòu)水平的漏洞,應(yīng)當(dāng)對(duì)Web服務(wù)器進(jìn)行掃描。這種掃描的結(jié)果應(yīng)當(dāng)用于確認(rèn)常見(jiàn)的應(yīng)用程序問(wèn)題。評(píng)估者還可以利用人工技術(shù),充分利用所確認(rèn)的漏洞,并對(duì)自動(dòng)化工具常常遺漏的授權(quán)缺陷和業(yè)務(wù)邏輯進(jìn)行測(cè)試。這一點(diǎn)尤其重要!
此外,企業(yè)應(yīng)當(dāng)對(duì)網(wǎng)站執(zhí)行“非入侵性”分析,其中包括通過(guò)鏡像整個(gè)站點(diǎn)來(lái)檢查內(nèi)容,然后檢查客戶端的代碼漏洞。使用分析階段所產(chǎn)生的輸入,私有的專用工具應(yīng)當(dāng)動(dòng)態(tài)地測(cè)試Web服務(wù)器的組件,用以檢查常見(jiàn)的Web服務(wù)器和Web應(yīng)用漏洞,如SQL 注入漏洞、跨站腳本、跨站請(qǐng)求偽造等。此外,還應(yīng)當(dāng)利用商業(yè)化的工具來(lái)執(zhí)行漏洞掃描。
在確認(rèn)了漏洞之后,為了利用漏洞,測(cè)試人員應(yīng)當(dāng)執(zhí)行測(cè)試。此外,還有可能有如下內(nèi)容:不安全的cookie處理,繞過(guò)認(rèn)證,操縱表單欺詐,URL協(xié)議處理程序,基于位置的服務(wù),敏感信息泄露,應(yīng)用邏輯欺騙等。
在黑盒測(cè)試結(jié)束時(shí),應(yīng)當(dāng)執(zhí)行漏洞評(píng)估,并根據(jù)每個(gè)漏洞所帶來(lái)的風(fēng)險(xiǎn)進(jìn)行評(píng)級(jí)。
基于設(shè)備的移動(dòng)應(yīng)用測(cè)試環(huán)境
為移動(dòng)設(shè)備開(kāi)發(fā)的應(yīng)用程序帶來(lái)了傳統(tǒng)應(yīng)用所沒(méi)有的新的測(cè)試挑戰(zhàn)。例如,移動(dòng)設(shè)備對(duì)低級(jí)過(guò)程和例外日志擁有有限的直接訪問(wèn)權(quán)。移動(dòng)設(shè)備還支持應(yīng)用程序與GPS、相機(jī)、藍(lán)牙、WAP,以及傳統(tǒng)PC中所沒(méi)有的其它技術(shù)進(jìn)行交互。為解決這些困難,企業(yè)應(yīng)使用如下的兩種測(cè)試方法:
模擬器測(cè)試:每一種平臺(tái)都向開(kāi)發(fā)人員提供了應(yīng)用開(kāi)發(fā)的SDK,并提供了用于測(cè)試和調(diào)試的不同型號(hào)設(shè)備的模擬器。這些工具還允許測(cè)試人員在各種配置和設(shè)備中分析和測(cè)試應(yīng)用程序,而沒(méi)有物理設(shè)備的限制。模擬器測(cè)試的一個(gè)好處是,代碼并不需要由一個(gè)可信方來(lái)簽署就可以在模擬器中運(yùn)行。
物理設(shè)備測(cè)試:對(duì)物理設(shè)備的測(cè)試提供了在模擬器中測(cè)試所沒(méi)有的許多功能,如SMS、GPS、相機(jī)、藍(lán)牙等。不過(guò),由于缺乏對(duì)底層操作系統(tǒng)和應(yīng)用簽名要求,這種測(cè)試又受到了一定限制。#p#
基于設(shè)備的移動(dòng)應(yīng)用漏洞確認(rèn)
根據(jù)移動(dòng)應(yīng)用的功能,測(cè)試人員應(yīng)在模擬器或客戶端提供的物理設(shè)備中執(zhí)行測(cè)試,或兼而有之。在測(cè)試過(guò)程中,測(cè)試者應(yīng)確認(rèn)應(yīng)用的功能,并針對(duì)任何內(nèi)部的邏輯控制和外部連接。因?yàn)橐苿?dòng)應(yīng)用在許多方面是不同的,應(yīng)當(dāng)使用下面的步驟來(lái)測(cè)試每一種應(yīng)用:
1、映射應(yīng)用的功能
應(yīng)當(dāng)人工檢查應(yīng)用程序,確認(rèn)其功能和應(yīng)用程序訪問(wèn)不同組件的方法。評(píng)估團(tuán)隊(duì)?wèi)?yīng)當(dāng)重點(diǎn)關(guān)注如何確認(rèn)外部的網(wǎng)絡(luò)連接,以及數(shù)據(jù)存儲(chǔ)、用戶輸入和許可等問(wèn)題。
2、監(jiān)視連接
移動(dòng)應(yīng)用有許多連接到外部源的方式。測(cè)試者應(yīng)當(dāng)使用代理工具和網(wǎng)絡(luò)嗅探器,用來(lái)監(jiān)視每一個(gè)請(qǐng)求和響應(yīng)。還要記錄數(shù)據(jù)通信,以便于日后的分析。如果應(yīng)用程序使用了藍(lán)牙或其它連接,為了捕獲數(shù)據(jù)通信,開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)當(dāng)使移動(dòng)設(shè)備與一個(gè)服務(wù)器進(jìn)行配對(duì)使用。
3、檢查數(shù)據(jù)處理
由于應(yīng)用程序的使用,數(shù)據(jù)可能存在于多個(gè)不同的位置。用戶或非授權(quán)方有可能通過(guò)各種方式訪問(wèn)敏感信息或應(yīng)用。評(píng)估應(yīng)當(dāng)確認(rèn)敏感信息在何處產(chǎn)生,并分析如下情形中如何保護(hù)數(shù)據(jù):由于用戶交互而提交給應(yīng)用的用戶輸入;用于輸入到應(yīng)用程序中的文件;在正常使和應(yīng)用期間產(chǎn)生的文件;由于程序的例外進(jìn)程所生產(chǎn)的應(yīng)用程序日志;應(yīng)用程序和設(shè)備(它們有可能將敏感數(shù)據(jù)放在非正常的或非法的位置)的緩存機(jī)制;通過(guò)網(wǎng)絡(luò)連接而從外部服務(wù)器獲得的數(shù)據(jù)。
4、反編譯應(yīng)用程序
只要條件允許,就應(yīng)當(dāng)對(duì)應(yīng)用程序進(jìn)行反編譯,其目的是為了檢查有可能使應(yīng)用程序的漏洞被利用的危險(xiǎn)方法,如檢查是否有緩沖區(qū)溢出問(wèn)題。雖然許多移動(dòng)平臺(tái)是基于Java的,但它們自己的編譯器與傳統(tǒng)的安全工具并不兼容。如今許多平臺(tái)都有其反編譯器,如黑莓和安卓,蘋果也提供了一個(gè)反編譯器。這些工具能夠深入分析應(yīng)用程序的邏輯,并可以進(jìn)行有限的靜態(tài)代碼分析。
5、檢查加密機(jī)制
任何時(shí)候都應(yīng)當(dāng)保護(hù)靜態(tài)數(shù)據(jù)和傳輸中的數(shù)據(jù),使其不被未獲得授權(quán)的人員訪問(wèn)。測(cè)試人員應(yīng)當(dāng)檢查移動(dòng)設(shè)備和任何網(wǎng)絡(luò)服務(wù)器的通信加密情況,檢查應(yīng)用程序是否將文件保存到了設(shè)備上,或在備份過(guò)程中是否發(fā)生過(guò)轉(zhuǎn)移。#p#
基于設(shè)備的移動(dòng)應(yīng)用漏洞利用
利用在漏洞確認(rèn)階段所收集的信息,測(cè)試人員應(yīng)當(dāng)通過(guò)以下步驟,嘗試?yán)盟_認(rèn)的漏洞:
1、認(rèn)證和會(huì)話管理
由于可用性的限制,移動(dòng)應(yīng)用使用許多新的認(rèn)證技術(shù),如清除模式,其目的是為了減少口令的復(fù)雜性。為了測(cè)試是否可以繞過(guò)認(rèn)證控制或訪問(wèn)其它用戶的數(shù)據(jù),測(cè)試者應(yīng)當(dāng)測(cè)試移動(dòng)應(yīng)用的認(rèn)證機(jī)制。在通過(guò)認(rèn)證之后,測(cè)試者應(yīng)當(dāng)檢查應(yīng)用程序的會(huì)話管理。通過(guò)觀察應(yīng)用程序如何跟蹤、記錄用戶,測(cè)試人員可以評(píng)估是否能夠重新進(jìn)行會(huì)話或是否可以跳轉(zhuǎn)到另一個(gè)用戶會(huì)話。
2、授權(quán)
設(shè)備的授權(quán)許可應(yīng)當(dāng)專門定義,這種控制可以防止設(shè)備進(jìn)一步訪問(wèn)設(shè)備或其功能。在應(yīng)用程序環(huán)境中,還應(yīng)當(dāng)測(cè)試沒(méi)有得到許可的正常用戶是否能夠訪問(wèn)某些功能。
3、輸入驗(yàn)證
通過(guò)規(guī)定應(yīng)用程序的輸入?yún)^(qū)域,并觀察輸出,安全評(píng)估就可以判定在其它特定應(yīng)用的用戶瀏覽器中,是否能夠插入并執(zhí)行客戶端的JavaScript。此操作可以使某用戶捕獲其它用戶的會(huì)話機(jī)密或應(yīng)用的用戶名和口令等。
4、數(shù)據(jù)存儲(chǔ)
許多應(yīng)用程序收集關(guān)于用戶的使用數(shù)據(jù)。這種數(shù)據(jù)有可能過(guò)度冒犯用戶的隱私。測(cè)試人員應(yīng)當(dāng)檢查這種數(shù)據(jù),判定應(yīng)用程序收集并保存了哪些數(shù)據(jù)以及如何訪問(wèn)這些數(shù)據(jù)。測(cè)試人員還應(yīng)當(dāng)測(cè)試未經(jīng)授權(quán)的用戶或第三方是否能夠訪問(wèn)這種數(shù)據(jù)。
5、風(fēng)險(xiǎn)分析
在移動(dòng)黑盒測(cè)試的結(jié)束階段,測(cè)試人員應(yīng)當(dāng)評(píng)估每一種風(fēng)險(xiǎn)給企業(yè)帶來(lái)的危害。
本文闡述了黑盒測(cè)試的基本要點(diǎn),但如果開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中能夠牢記安全第一的原則,遵循最佳的開(kāi)發(fā)實(shí)踐,在發(fā)布軟件之前,積極檢查并修正錯(cuò)誤,反復(fù)測(cè)試,將極大地減輕測(cè)試人員的負(fù)擔(dān)。