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