1.操作系統(tǒng)使用不當
使用操作系統(tǒng)開發(fā)人員推薦的安全最佳實踐非常重要。例如,應用程序可能無法正確使用操作系統(tǒng)實施的指紋掃描儀安全框架,而是通過指紋讀取器使用憑據(jù)執(zhí)行用戶登錄。這種不匹配可能會意外地將用戶的憑據(jù)暴露給第三方。
避免這種危險的最佳方法是遵循手機操作系統(tǒng)開發(fā)商和制造商推薦的移動應用安全最佳實踐。
2.不安全的數(shù)據(jù)存儲
另一個移動應用程序安全問題涉及攻擊者在通過盜竊或虛擬通過惡意軟件物理訪問用戶設備時暴露的漏洞。當開發(fā)人員未能使用安全加密來存儲個人身份信息 (PII) 或其他敏感數(shù)據(jù)時,攻擊者可以輕松地將設備連接到具有免費軟件的計算機,該軟件允許他們訪問設備上的任何內容。移動應用程序安全最佳實踐要求使用適當?shù)募用芊椒ǎ苑乐构粽吣軌蜃x取私有數(shù)據(jù),即使他們有權訪問這些數(shù)據(jù)。
重要的是要了解哪些信息存在風險,然后對軟件如何使用該信息進行建模——應用程序是將信息保存在本地數(shù)據(jù)庫中還是將其發(fā)送到第三方 API。最初,最好將設備連接到計算機并使用Android Studio或 Xcode 等工具手動瀏覽設備以查找未加密文件。如果相關設備使用 Android 操作系統(tǒng),開發(fā)人員可以使用 SQLite 數(shù)據(jù)庫下載數(shù)據(jù)庫文件并在本地連接到查詢表,以確保對敏感信息進行加密。
3. 不安全的流量和 API 調用
不安全的通信是指從應用程序通過某個網絡發(fā)送到另一臺服務器的信息的安全性。應用程序通常充當客戶端-服務器關系中的客戶端,因此它們可能需要與主服務器聯(lián)系以檢索信息或驗證用戶身份。這樣做時,同一網絡上可能會有其他設備監(jiān)控流量。IT 組織應考慮到其他人監(jiān)聽應用程序流量并使用適當?shù)陌踩珔f(xié)議,例如安全套接字層/傳輸層安全(SSL/TLS)。否則,攻擊者可能會破壞數(shù)據(jù)。
例如,考慮一個使用基于令牌的身份驗證的應用程序。應用程序使用加密發(fā)送用戶憑據(jù),但一旦收到令牌,應用程序在后續(xù) API 調用期間以明文形式發(fā)送令牌。網絡上的任何人都可以攔截這些請求,讀取明文令牌并使用被盜的用戶令牌進行惡意 API 調用。防止這些漏洞的移動應用程序安全最佳實踐是始終對任何敏感的應用程序流量使用 SSL/TLS。
4. 代碼篡改和越獄設備
代碼篡改是攻擊者獲取合法應用程序、修改源代碼然后重新分發(fā)應用程序的地方。在這種情況下,攻擊者可能會使用網絡釣魚攻擊結合修改后的應用程序的鏈接來引誘用戶下載這些惡意應用程序。
這些惡意攻擊通常利用植根或越獄設備,用戶允許應用程序進行操作系統(tǒng)通常不允許的更改。有一些方法可以檢測 root 或越獄設備,例如檢測設備上是否存在某些應用程序或庫。一旦開發(fā)人員檢查了這些庫,他們就可以指示他們的應用程序關閉并避免程序員無意中引入源代碼的任何漏洞。