本文來自微信公眾號“安全牛”。
隨著移動互聯(lián)網(wǎng)用戶數(shù)量急劇增長,移動應(yīng)用系統(tǒng)已經(jīng)實現(xiàn)了典型生活場景的全覆蓋,并滲透到了多個企業(yè)級應(yīng)用領(lǐng)域。移動應(yīng)用的快速擴(kuò)張也帶來了諸如數(shù)據(jù)違規(guī)收集、數(shù)據(jù)惡意濫用、數(shù)據(jù)非法獲取、數(shù)據(jù)惡意散播等安全風(fēng)險。這些安全風(fēng)險廣泛存在于當(dāng)前主流的移動應(yīng)用系統(tǒng)中,嚴(yán)重威脅數(shù)據(jù)安全與個人信息安全。
近日,OWASP(全球開放應(yīng)用軟件安全項目組織)發(fā)布了最新版移動應(yīng)用系統(tǒng)10大安全風(fēng)險目錄,這是自2016年以來該機構(gòu)首次對移動應(yīng)用系統(tǒng)相關(guān)的風(fēng)險進(jìn)行更新,重點增加了對供應(yīng)鏈安全、隱私保護(hù)等方面的風(fēng)險關(guān)注。這份目錄對廣大移動應(yīng)用程序開發(fā)人員來說很重要,它描述了移動應(yīng)用程序開發(fā)時最嚴(yán)重的安全風(fēng)險相關(guān)信息,同時也給出了緩解方法和建議。
1
憑據(jù)使用不當(dāng)
OWASP認(rèn)為,當(dāng)前移動應(yīng)用程序開發(fā)的主要風(fēng)險是來自憑據(jù)、API密鑰及其他秘密信息的安全性。黑客可以利用移動應(yīng)用程序中硬編碼憑據(jù)和使用不當(dāng)?shù)倪\行時秘密信息,對移動應(yīng)用程序的關(guān)鍵功能實現(xiàn)未授權(quán)訪問。此外,如果攻擊者借助一些定制的工具和腳本,就可以進(jìn)一步通過被盜的密鑰來訪問后端系統(tǒng)和API。
防護(hù)建議:
開發(fā)則應(yīng)該嚴(yán)格禁止將憑據(jù)、密鑰等信息保留在應(yīng)用程序代碼中,同時應(yīng)該采取措施以保護(hù)運行中的移動應(yīng)用程序靜態(tài)和傳輸中秘密信息。此外,組織應(yīng)該確保能夠定期快速地輪換任何密鑰,尤其是第三方API密鑰。
2
供應(yīng)鏈安全性不足
供應(yīng)鏈攻擊是針對企業(yè)使用的外部組建或工具的攻擊,能夠在組織不知覺的情況下將漏洞、不安全內(nèi)容或惡意代碼引入到應(yīng)用程序中。這些組件如果沒有得到適當(dāng)?shù)谋Wo(hù),可能會帶來各種安全風(fēng)險。例如,第三方組件可能訪問敏感數(shù)據(jù)或允許惡意代碼在設(shè)備上運行。供應(yīng)鏈攻擊路徑可能是組織內(nèi)部的惡意員工、系統(tǒng)中引用的某段第三方代碼,以及對組織的系統(tǒng)獲得訪問特權(quán)的黑客。
防護(hù)建議:
組織應(yīng)該加強監(jiān)控和檢查移動應(yīng)用程序中所使用的所有第三方代碼,并在發(fā)布移動應(yīng)用程序代碼之前進(jìn)行簽名,這樣應(yīng)用程序可以在運行時被證明是真實的、未被篡改的,一旦發(fā)現(xiàn)來自篡改過的應(yīng)用程序訪問請求,就應(yīng)該立即阻止。
3
不安全的身份驗證/授權(quán)
身份驗證是驗證用戶是否是真實、合法的用戶,而授權(quán)是驗證用戶是否擁有訪問特定資源或服務(wù)級別的憑據(jù)。身份驗證能夠有效防止竊取和使用用戶憑據(jù),然后使用這些憑據(jù)登錄到應(yīng)用程序或直接訪問后端服務(wù)器。而授權(quán)問題通常歸因于數(shù)據(jù)和資源的訪問級別實施不當(dāng)。
防護(hù)建議:
通過開展應(yīng)用程序認(rèn)證可以有效防護(hù)上述風(fēng)險。在移動應(yīng)用程序運行時進(jìn)行完整性檢查可以檢測出任何未經(jīng)授權(quán)的代碼更改。
4
API輸入/輸出驗證不足
應(yīng)用程序編程接口(API)允許移動應(yīng)用程序相互通信和共享數(shù)據(jù),因此,大量第三方API需要被集成到移動應(yīng)用程序中以提供更多功能的服務(wù)。而API中的常見漏洞是由惡意代理篡改輸入數(shù)據(jù)引起的。這類攻擊包括SQL注入、命令注入和跨站腳本(XSS)攻擊,它們經(jīng)常出現(xiàn)在OWASP各類應(yīng)用風(fēng)險名單上。未經(jīng)授權(quán)的代碼執(zhí)行、數(shù)據(jù)泄露、數(shù)據(jù)損壞或服務(wù)中斷都是可能會出現(xiàn)的危險后果。
防護(hù)建議:
企業(yè)組織應(yīng)該確保移動應(yīng)用程序所使用的第三方API是安全的。此外,安全人員還應(yīng)該進(jìn)一步驗證API接口的安全措施是否有效。OWASP已經(jīng)給出了關(guān)于測試和緩解最常見API漏洞的詳細(xì)指導(dǎo)準(zhǔn)則。一個重要的行動原則就是要阻止非真實應(yīng)用程序所發(fā)出的訪問請求。這可以有效地防止攻擊者利用和API相關(guān)的零日漏洞。
5
不安全的網(wǎng)絡(luò)通信
移動應(yīng)用程序運行會面臨與傳輸或接收數(shù)據(jù)相關(guān)的威脅。移動應(yīng)用生態(tài)系統(tǒng)中的一個關(guān)鍵攻擊面就是移動應(yīng)用程序與后端服務(wù)器之間的鏈接通道。針對這條通道發(fā)起的中間人(MitM)攻擊可以對移動用戶構(gòu)成了重大威脅。如果攻擊者可以控制客戶端,那么即便使用SSL,中間人攻擊活動也可以通過應(yīng)用程序重新打包或使用Frida之類的鉤子工具在運行時篡改應(yīng)用程序的行為來發(fā)生。移動應(yīng)用程序開發(fā)者要假設(shè)網(wǎng)絡(luò)層的通信活動可能會被竊聽,因此客戶端設(shè)備上的信任證書存儲區(qū)可能會被人惡意篡改,這點很重要。
防護(hù)建議:
動態(tài)證書綁定可以有效阻止MitM攻擊,并消除靜態(tài)綁定的成本負(fù)擔(dān)。它允許在服務(wù)器端更新pin碼,而無需更新應(yīng)用程序。此外,動態(tài)綁定與應(yīng)用程序和客戶端認(rèn)證相結(jié)合,可以防止通過篡改移動客戶端信息來實施MitM攻擊。
6
隱私控制能力不足
隱私控制不足是本次更新中新加入的安全風(fēng)險。隱私控制主要指保護(hù)用戶的個人身份信息(PII)安全,這些信息可能被攻擊者用于欺詐或勒索。通常來說,PII可能被泄露(即違反保密性)、操縱(違反完整性)或銷毀/阻止(違反可用性)。
防護(hù)建議:
移動應(yīng)用程序設(shè)計和開發(fā)時應(yīng)將所處理的PII數(shù)量和種類保持在絕對最低限度,并充分驗證應(yīng)用程序能夠符合GDPR、CCPA以及我國《個人信息保護(hù)法》等隱私法規(guī)的監(jiān)管要求。
7
二進(jìn)制代碼保護(hù)不足
移動應(yīng)用程序的二進(jìn)制代碼通??梢詮膽?yīng)用程序商店下載或從移動設(shè)備中復(fù)制,所以二進(jìn)制攻擊很容易通過反向工程或代碼篡改來策劃發(fā)起,從而竊取知識產(chǎn)權(quán)或篡改應(yīng)用程序功能。
防護(hù)建議:
通過使用代碼混淆技術(shù)保護(hù)代碼可以有效阻礙對二進(jìn)制代碼的攻擊,應(yīng)考慮將其作為一種保護(hù)知識產(chǎn)權(quán)避免被競爭性應(yīng)用程序濫用的手段。此外,應(yīng)該使用運行時保護(hù)和應(yīng)用程序完整性檢查方案,及時識別和阻止以任何方式被篡改的應(yīng)用程序。同時,前面所介紹的輪換API密鑰和秘密信息保護(hù)方法也是增加對二進(jìn)制代碼保護(hù)的關(guān)鍵要素。
8
安全錯誤配置
移動應(yīng)用數(shù)據(jù)泄漏通常意味著存在未經(jīng)授權(quán)的數(shù)據(jù)傳輸,當(dāng)移動應(yīng)用程序本身缺乏有效的安全保護(hù)特性時,就會發(fā)生這種情況。由于時間限制、缺乏意識或開發(fā)過程中的人為錯誤等因素,移動應(yīng)用程序中經(jīng)常會出現(xiàn)錯誤的安全配置,有些甚至缺乏安全性設(shè)計。
防護(hù)建議:
防止移動應(yīng)用程序中的安全錯誤配置需要遵循安全編碼和配置實踐。OWASP給出的建議包括特別注意默認(rèn)憑據(jù)以及對用戶訪問運用最小特權(quán)原則。移動應(yīng)用程序在正式發(fā)布前,開發(fā)者就應(yīng)該保障其運行時具有正確合理的數(shù)據(jù)安全策略和措施。
9
不安全的數(shù)據(jù)存儲
移動應(yīng)用程序中不安全的數(shù)據(jù)存儲就會讓威脅分子找到可以趁機利用的漏洞。漏洞包括未經(jīng)授權(quán)訪問設(shè)備的文件系統(tǒng)、利用弱加密、攔截傳輸?shù)臄?shù)據(jù),以及利用安裝在設(shè)備端的惡意軟件或惡意應(yīng)用程序。此外,被破解的計算設(shè)備也為攻擊者繞過安全措施、直接訪問敏感數(shù)據(jù)提供了機會。
防護(hù)建議:
前面所介紹的各種建議在這里都能發(fā)揮作用,例如:實施訪問控制和會話管理,確保強加密和安全數(shù)據(jù)傳輸,以及留意第三方代碼和依賴項,這些都很重要。此外,運行時保護(hù)可以阻止對運行中的應(yīng)用程序進(jìn)行篡改從而竊取數(shù)據(jù)的黑客。
10
加密能力不足
加密是對重要移動應(yīng)用數(shù)據(jù)進(jìn)行防護(hù)的基本要求,使數(shù)據(jù)在沒有密鑰的情況下無法被讀取。如果缺乏足夠強大的加密防護(hù),數(shù)據(jù)將會處在危險的狀態(tài)下,很容易被黑客訪問。許多移動應(yīng)用程序開發(fā)人員都會忽視如何正確的加密數(shù)據(jù),這也導(dǎo)致了很多嚴(yán)重的數(shù)據(jù)泄露發(fā)生。這可能表現(xiàn)為采用不安全的加密算法,或未使用安全數(shù)據(jù)傳輸(HTTPS)。移動應(yīng)用程序中不安全加密的攻擊主要涉及加密機制中的漏洞,導(dǎo)致數(shù)據(jù)泄露或未經(jīng)授權(quán)的訪問。
防護(hù)建議:
確保應(yīng)用程序正確且安全地使用加密技術(shù)是非常重要的,這包括使用強算法進(jìn)行加密、使用安全協(xié)議進(jìn)行通信以及正確保管密鑰。此外,組織要始終使用HTTPS,確保加密密鑰安全地存儲在移動設(shè)備上,不是采用明文格式或放在易于訪問的位置。