2022-01-14 10:54:23

避免手機App安全陷阱 (上)

概述

主要挑戰

手機App安全疏失導致企業敏感數據丟失、基礎設施暴露、欺詐和違規

安全領導者在流程早期做出的架構決策時,將決定可用的安全功能。

手機App易受新型攻擊的影響,需要開發人員重新審視、學習和重新確定安全最佳實踐的優先級。

在為特別敏感的App尋求進階手機App安全功能時,情況是分散的,並且在技術上難以掌握。


分析

分析您的手機App的風險

敏感數據丟失: 缺乏足夠保護的App可能允許攻擊者獲取駐留在這些App中的敏感數據,例如支付憑證和智慧財產。一些威脅媒介可能是設備被盜或丟失、設備上的惡意軟件和不安全網上的中間人。

基礎設施暴露: 手機App需要與企業後端服務進行通信。這需要企業公開內部資源,例如 API 或企業數據庫。如果不加以控制,這種暴露可能會導致許多攻擊,例如 API 抓取和拒絕服務。

欺詐: 這種風險在金融服務和零售App中尤為突出,而且只要手機App包含需要交換支付憑證的金融交易功能。攻擊者使用的技術包括重新打包、通過惡意軟件抓取SMS、腳本注入和覆蓋攻擊

遵守: 不遵守特定法規可能會導致罰款。


選擇正確的架構

在查看架構選項之前,首先要考慮的是App是發佈到商業App商店還是通過企進行分發。對於面向消費者的App,選擇將是顯而易見的,而對於面向勞動力和合作夥伴的App來說則不然。私有分發的App將較少受到諸如逆向工程之類的攻擊,並且它們將允許更多的設備可見性。此外,還有多種選項可以部署和實施安全控制,其中包括通過 UEM 管理App和獨立App管理解決方案。

目前可用的手機App開發選項有三個主要架構選項:本機、混合或純基於 Web App。每個架構選項都會導致不同的安全考慮,並且需要在安全性和性能之間進行不同的權衡。

例如,雖然將企業 Web App轉換為移動 Web App既快速又容易,但App的緩存內容將難以有效加密。如果出於安全目的將緩存內容最小化和刪除過於頻繁,這將影響App的速度及其用戶體驗。保護App的時間可能更長,成本也更高,並且可能需要重新考慮架構決策。 

一個相關的考慮與設備和服務器端檢查有關攻擊者可以通過操縱設備或App來繞過在設備上執行的安全檢查。例如,在越獄或 root 的設備上,攻擊者可以繞過本機完整性檢查保護。

本機開發提供對 iOS Android 平台所有本機安全功能的訪問。本機App可以提供更好的性能,因為它們使用來自操作系統的本機 APIAndroid iOS 有關於在各自環境中本地開發的最佳實踐的文檔兩種本機環境都提供可滿足基本需求的安全功能,例如身份驗證和加密,但也提供進階功能,如設備證明和可信環境中的憑證儲存。另一方面,本機開發將需要維護至少兩個獨立的App版本。

對於競爭激烈的App類別,組織可能不得不採用原生架構。在其他情況下,混合架構可能代表安全性和可用性(或跨平台框架的使用,如 React NativeXamarin Flutter)之間的折衷。通過混合應用,敏感操作可以通過原生功能進行,展示可以使用基於HTML5Web架構進行交付。


保護手機App

安全App開發原則在移動領域內不會改變。然而,手機App至少將一部分軟邏輯移動到移動設備上。這意味著需要特別強調某些App安全最佳實踐。


不要將憑證寫死

手機App開發人員傾向於在開發時對App中的憑證進行寫死。與用戶向App進行身份驗證的更明顯的身份驗證憑證不同,這裡我們打算使用App使用的服務的身份驗證憑證。例如,當App與第三方交互時,API 開發人員將使用他們自己的身份驗證憑證。攻擊者可以獲得使用這些憑證,尤其是當它們是特權憑證時,從 API 竊取數據。


最小化應用權限

權限賦予App權力,但這也為許多風險打開了大門。具有不必要權限的合法App不僅會危害隱私和合規性,還可能成為攻擊者的目標。默認情況下,App不應需要任何設備權限。當需要執行特定功能時,應選擇性地添加權限。由於大多數開發人員重用現有的庫進行開發,因此他們的App最終會要求比他們真正需要的更多的權限。SRM 領導者應確保所使用的資料庫具有良好的質量,並且不會請求他們不使用的權限。



保護敏感數據

移動設備中的一個常見陷阱是在沒有適當保護的情況下將敏感儲存App中。攻擊者可以對代碼進行逆向工程並竊取此息。如果訪問憑證和加密密鑰必須駐留在設備上,則應安全儲存它們。iOS Android 都為憑證和敏感數據提供了專用儲存,分別稱為 Keychain Keystore,可以通過本機函數訪問另一種方法是最大限度地減少駐留在設備上的敏感數據。然而,如前所述,這些決定應該通過評估客戶端到服務器交互可能需要對性能的影響來做出。使用本機密鑰的一種更複雜的替代方法是白盒機制,在需要時,超越基礎部分。

除了使用加密之外,該App還應該能夠通過遠程命令其數據,以應對設備丟失的情況。


盡可能使用證書固定

由於手機App可以隨時使用,因此與 Web App相比,它們更頻繁地從不安全的網連接。證書鎖定是一種對抗可能發生在此類網上的中間人攻擊的技術。關於認證固定的使用存在一些爭議,使用它的建議帶有一些警告:NDR 工具可能無法工作,因為流量檢查更難做。此外,某些瀏覽器可能不支證書鎖定,這對混合App來說是一個挑戰。


Loading...