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