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