OWASP Mobile Top 10:弱點說明及預防措施
如何確保行動App安全?
在過去五年,行動應用程式安全性已成為App開發組織的首要目標,以在這充滿想利用行動平台漏洞中惡意軟體及駭客的世界中生存。若您有參與開發、部署或行銷行動App,該是時候制定您的行動應用程式資安標準(倘若您還沒有的話)。
在這方面,您必須瞭解行動應用程式安全的基本知識,以及如何防止風險透過行動 App進入企業組織。儘管安全性原則與網頁應用程式相同,但行動應用程式安全為企業組織帶來不同的風險,而這些都是開發、資安團隊所必須注意的事情。平台與作業系統為企業組織帶來全新的風險,而且更廣泛的存取點範圍(包括裝置本身),創造出比許多網頁應用程式更廣大的攻擊面。
最好先研究OWASP Mobile Top 10,此可作為任何參與行動應用程式安全的基礎。OWASP Mobile Top 10 線上資源除了提供一般最佳做法之外,還提供保護行動應用程式開發的特定平台指南。我們在本文中將深入探討十個最常見的行動 App 弱點,以及避免這些弱點的最佳方式。
審視OWASP Mobile 前十大弱點:有哪些資安風險及如何預防
M1:伺服器端安全控制脆弱(Weak Server Side Controls)
有何風險?
脆弱的伺服器端控制是行動App最常被惡意利用的安全威脅,會給應用程式及其背後的企業組織帶來後果嚴重的大災難。脆弱的伺服器端控制所造成的重大問題是,應用程式與不安全的後端進行通訊,得以讓未經授權的使用者存取在那裏儲存的資料。
確保您的伺服器安全是在開發和部署行動應用程式時,最重要的重點項目之一,但令人諷刺的是,這件事基本上與您的應用程式毫無關聯。然而既然這是OWASP Mobile Top Ten的第一名,您最好記住。
如何預防:
絕不相信用戶端
謹慎設計行動裝置的伺服器端控制
絕不使用用戶端應用程式執行存取控制
M2:不安全的資料儲存於用戶端(Insecure Data Storage)
有何風險?
不安全的資料儲存弱點,也會對行動應用程式及裝置本身造成許多破壞,正如同一個行動App中的弱點也會敞開大門讓人存取本機檔案,暴露任何儲存於此處的敏感資料。這包括存取密碼、驗證Token,以及儲存於應用程式內的任何地理、個人及財務資訊。
如何預防:
不允許敏感資料儲存在記錄檔中。在記錄檔中的資訊可能會從iOS裝置上傳到電腦
將敏感檔案加密,因此即使存取加密檔案,也無法讀取
M3:傳輸層保護不足(Insufficient Transport Layer Protection)
有何風險?
應用程式若無法在驗證執行個體或使用者過時或不當設定的憑證之外,使用 SSL/TLS,資料很容易就會被外洩或公開而被攔截,故使得攻擊者能夠掌控帳戶,最危險的莫過於掌控系統管理員帳戶。尤其透過WiFi使用App時特別危險,會使攻擊者透過簡易的中間人(MitM) 攻擊存取資料。必須謹慎保護行動App中的用戶端-伺服器關係,以預防此類攻擊。
如何預防:
持續注意網路流量,是否出現可能的攻擊跡象
確保應用程式已正確設定在使用者工作階段全程啟用SSL/TLS,或至少對特別敏感的資料啟用,並隨時謹記App收集之資料的商業價值
使您的SSL憑證保持在最新狀態,並確保其符合您的行動App與後端關聯的所有網域
M4:非故意或意外造成的資料外洩(Unintended Data Leakage)
有何風險?
資料外洩來源包括行動App各式各樣的可能瑕疵。例如,我們常喜歡App能在進入背景「睡眠」後,能夠迅速載入App。然而,我們在銀行工作階段中結束App時,就已擷取此資料的螢幕畫面,因此若此螢幕擷取畫面被傳送到未受保護之處,則會有資料遭竊的風險。
不慎洩漏資料有時來自常見的舉動,例如偵錯訊息、將資料儲存於剪貼簿、甚至是按鍵輸入記錄。由於很容易忽略這類舉動,但後果卻難以忽視,因此此屬於常見的行動App弱點。OWASP Mobile Top 10上不安全的資料洩漏頁面所述的此弱點風險包括侵犯隱私權及PCI、聲譽受損,以及詐騙。
如何預防:
將裝置可收集的資料限制在其所需的範圍
切勿將敏感資料儲存於公共場所,或裝置原生金鑰鏈(keychain)或加密資料庫以外的任何一處
瞭解並密切監控您的應用程式處理如剪下-貼上緩衝、應用程式背景處理、瀏覽器Cookie物件、URL快取及鍵盤按下快取等動作
M5:身分鑑別與授權機制不嚴謹(Poor Authorization and Authentication)
有何風險?
行動App可存取無線連線,因此需要許多應用程式提供無線存取,包括驗證程序。這會帶來重大的風險,包括攻擊者能夠存取系統管理員帳戶。更糟的是將非常難追蹤攻擊者,因此在最糟的情況下,能夠匿名控制應用程式的系統管理功能。
如何預防:
若您的App無須離線存取,請停用此功能
若您的應用程式需維持機密性,請進行雙因素身分驗證
善用如Microsoft存取控制服務等服務,此類服務提供行動開發商授權與驗證App以外使用者的簡易方法
務必使用裝置的原生金鑰鏈(keychain)或您自己的加密資料庫儲存敏感資訊
M6:加密方法不嚴謹或失效(Broken Cryptography)
有何風險?
若您的密碼編譯通訊協定不夠好,攻擊者便可將儲存在App或裝置內的任何關鍵資訊解密。密碼編譯不佳的風險包括侵犯隱私權、竊取程式碼與逆向工程,以及竊取資料。
如何預防:
使用App平台的原生金鑰鏈(keychain)儲存任何敏感資料
切勿將加密金鑰跟加密資料儲存在一起
M7:客戶端注入(Client Side Injection)
有何風險?
尤其是下載並完全在用戶端執行的Android應用程式,用戶端插入弱點是另一個企業組織需要密切掌握的常見問題。SQL插入式攻擊與跨網站指令碼 (XSS) 皆可透過用戶端瑕疵入侵,導致未經授權之人存取敏感資料,或是攻擊者存取系統管理員帳戶。
如何預防:
使用白名單方法是抵擋XSS的最佳方法
驗證並編碼所有儲存在裝置上的資料
若使用SQLite,請確保使用者資料通過參數化的查詢,並監控記錄檔是否出現奇怪的行為
M8:對於不受信任輸入來源的資安處置(Security Decisions Via Untrusted Inputs)
有何風險?
如您喜愛的影音訊息App等某些App可在不要求同意的情況下,連線到他方,而此稱為行程間通訊 (IPC)。App的設計不佳時,則容易受到XSS、SQL 插入式攻擊及許多其他攻擊所害 – 全都是因為前門完全敞開的緣故。風險包括攻擊者變更如Cookie等輸入,以覆寫驗證與授權通訊協定,並能夠存取敏感資訊。
如何預防:
確保所有傳送至第三方的資訊均已在伺服器上驗證及編碼
若您的App不需要,請停用IPC機制
切勿透過IPC機制傳送敏感資訊
M9:不當的工作階段處理/ 網路傳輸的連線和身分的識別不嚴謹(Improper Session Handling)
有何風險?
App無法正確登出使用者,或無法使用安全的通訊協定時,您便是冒著風險讓攻擊者輕鬆存取使用者及商業資料(需是App及使用者而定)。
如何預防:
尤其是高價商業或財務應用程式,請在規定的時間後登出使用者
切勿將裝置ID作為工作階段Token使用,因為它們從不會過期
確保使用強式、安全的工作階段Token
M10:封裝檔案保護不足/ 缺少二進位保護(Lack of Binary Protections)
有何風險?
Binary保護可確保攻擊者無法透過逆向工程獲得您的App。若為正確實作Binary保護,將會讓攻擊者可使用您的App進行您絕對不想做的事,包括修改App來停用或新增某些功能,以及奪取儲存於程式碼中的任何敏感資料。
如何預防:
切勿將程式碼儲存在不受您控制的不安全環境下
確保正確使用越獄偵測、憑證綁定及偵錯工具偵測控制
監控執行階段程式碼是否在App活動中出現異常
以上資訊來源,截取至GSS資安電子報0132期【OWASP Mobile Top 10:弱點說明及預防措施】
在過去五年,行動應用程式安全性已成為App開發組織的首要目標,以在這充滿想利用行動平台漏洞中惡意軟體及駭客的世界中生存。若您有參與開發、部署或行銷行動App,該是時候制定您的行動應用程式資安標準(倘若您還沒有的話)。
在這方面,您必須瞭解行動應用程式安全的基本知識,以及如何防止風險透過行動 App進入企業組織。儘管安全性原則與網頁應用程式相同,但行動應用程式安全為企業組織帶來不同的風險,而這些都是開發、資安團隊所必須注意的事情。平台與作業系統為企業組織帶來全新的風險,而且更廣泛的存取點範圍(包括裝置本身),創造出比許多網頁應用程式更廣大的攻擊面。
最好先研究OWASP Mobile Top 10,此可作為任何參與行動應用程式安全的基礎。OWASP Mobile Top 10 線上資源除了提供一般最佳做法之外,還提供保護行動應用程式開發的特定平台指南。我們在本文中將深入探討十個最常見的行動 App 弱點,以及避免這些弱點的最佳方式。
審視OWASP Mobile 前十大弱點:有哪些資安風險及如何預防
M1:伺服器端安全控制脆弱(Weak Server Side Controls)
有何風險?
脆弱的伺服器端控制是行動App最常被惡意利用的安全威脅,會給應用程式及其背後的企業組織帶來後果嚴重的大災難。脆弱的伺服器端控制所造成的重大問題是,應用程式與不安全的後端進行通訊,得以讓未經授權的使用者存取在那裏儲存的資料。
確保您的伺服器安全是在開發和部署行動應用程式時,最重要的重點項目之一,但令人諷刺的是,這件事基本上與您的應用程式毫無關聯。然而既然這是OWASP Mobile Top Ten的第一名,您最好記住。
如何預防:
絕不相信用戶端
謹慎設計行動裝置的伺服器端控制
絕不使用用戶端應用程式執行存取控制
M2:不安全的資料儲存於用戶端(Insecure Data Storage)
有何風險?
不安全的資料儲存弱點,也會對行動應用程式及裝置本身造成許多破壞,正如同一個行動App中的弱點也會敞開大門讓人存取本機檔案,暴露任何儲存於此處的敏感資料。這包括存取密碼、驗證Token,以及儲存於應用程式內的任何地理、個人及財務資訊。
如何預防:
不允許敏感資料儲存在記錄檔中。在記錄檔中的資訊可能會從iOS裝置上傳到電腦
將敏感檔案加密,因此即使存取加密檔案,也無法讀取
M3:傳輸層保護不足(Insufficient Transport Layer Protection)
有何風險?
應用程式若無法在驗證執行個體或使用者過時或不當設定的憑證之外,使用 SSL/TLS,資料很容易就會被外洩或公開而被攔截,故使得攻擊者能夠掌控帳戶,最危險的莫過於掌控系統管理員帳戶。尤其透過WiFi使用App時特別危險,會使攻擊者透過簡易的中間人(MitM) 攻擊存取資料。必須謹慎保護行動App中的用戶端-伺服器關係,以預防此類攻擊。
如何預防:
持續注意網路流量,是否出現可能的攻擊跡象
確保應用程式已正確設定在使用者工作階段全程啟用SSL/TLS,或至少對特別敏感的資料啟用,並隨時謹記App收集之資料的商業價值
使您的SSL憑證保持在最新狀態,並確保其符合您的行動App與後端關聯的所有網域
M4:非故意或意外造成的資料外洩(Unintended Data Leakage)
有何風險?
資料外洩來源包括行動App各式各樣的可能瑕疵。例如,我們常喜歡App能在進入背景「睡眠」後,能夠迅速載入App。然而,我們在銀行工作階段中結束App時,就已擷取此資料的螢幕畫面,因此若此螢幕擷取畫面被傳送到未受保護之處,則會有資料遭竊的風險。
不慎洩漏資料有時來自常見的舉動,例如偵錯訊息、將資料儲存於剪貼簿、甚至是按鍵輸入記錄。由於很容易忽略這類舉動,但後果卻難以忽視,因此此屬於常見的行動App弱點。OWASP Mobile Top 10上不安全的資料洩漏頁面所述的此弱點風險包括侵犯隱私權及PCI、聲譽受損,以及詐騙。
如何預防:
將裝置可收集的資料限制在其所需的範圍
切勿將敏感資料儲存於公共場所,或裝置原生金鑰鏈(keychain)或加密資料庫以外的任何一處
瞭解並密切監控您的應用程式處理如剪下-貼上緩衝、應用程式背景處理、瀏覽器Cookie物件、URL快取及鍵盤按下快取等動作
M5:身分鑑別與授權機制不嚴謹(Poor Authorization and Authentication)
有何風險?
行動App可存取無線連線,因此需要許多應用程式提供無線存取,包括驗證程序。這會帶來重大的風險,包括攻擊者能夠存取系統管理員帳戶。更糟的是將非常難追蹤攻擊者,因此在最糟的情況下,能夠匿名控制應用程式的系統管理功能。
如何預防:
若您的App無須離線存取,請停用此功能
若您的應用程式需維持機密性,請進行雙因素身分驗證
善用如Microsoft存取控制服務等服務,此類服務提供行動開發商授權與驗證App以外使用者的簡易方法
務必使用裝置的原生金鑰鏈(keychain)或您自己的加密資料庫儲存敏感資訊
M6:加密方法不嚴謹或失效(Broken Cryptography)
有何風險?
若您的密碼編譯通訊協定不夠好,攻擊者便可將儲存在App或裝置內的任何關鍵資訊解密。密碼編譯不佳的風險包括侵犯隱私權、竊取程式碼與逆向工程,以及竊取資料。
如何預防:
使用App平台的原生金鑰鏈(keychain)儲存任何敏感資料
切勿將加密金鑰跟加密資料儲存在一起
M7:客戶端注入(Client Side Injection)
有何風險?
尤其是下載並完全在用戶端執行的Android應用程式,用戶端插入弱點是另一個企業組織需要密切掌握的常見問題。SQL插入式攻擊與跨網站指令碼 (XSS) 皆可透過用戶端瑕疵入侵,導致未經授權之人存取敏感資料,或是攻擊者存取系統管理員帳戶。
如何預防:
使用白名單方法是抵擋XSS的最佳方法
驗證並編碼所有儲存在裝置上的資料
若使用SQLite,請確保使用者資料通過參數化的查詢,並監控記錄檔是否出現奇怪的行為
M8:對於不受信任輸入來源的資安處置(Security Decisions Via Untrusted Inputs)
有何風險?
如您喜愛的影音訊息App等某些App可在不要求同意的情況下,連線到他方,而此稱為行程間通訊 (IPC)。App的設計不佳時,則容易受到XSS、SQL 插入式攻擊及許多其他攻擊所害 – 全都是因為前門完全敞開的緣故。風險包括攻擊者變更如Cookie等輸入,以覆寫驗證與授權通訊協定,並能夠存取敏感資訊。
如何預防:
確保所有傳送至第三方的資訊均已在伺服器上驗證及編碼
若您的App不需要,請停用IPC機制
切勿透過IPC機制傳送敏感資訊
M9:不當的工作階段處理/ 網路傳輸的連線和身分的識別不嚴謹(Improper Session Handling)
有何風險?
App無法正確登出使用者,或無法使用安全的通訊協定時,您便是冒著風險讓攻擊者輕鬆存取使用者及商業資料(需是App及使用者而定)。
如何預防:
尤其是高價商業或財務應用程式,請在規定的時間後登出使用者
切勿將裝置ID作為工作階段Token使用,因為它們從不會過期
確保使用強式、安全的工作階段Token
M10:封裝檔案保護不足/ 缺少二進位保護(Lack of Binary Protections)
有何風險?
Binary保護可確保攻擊者無法透過逆向工程獲得您的App。若為正確實作Binary保護,將會讓攻擊者可使用您的App進行您絕對不想做的事,包括修改App來停用或新增某些功能,以及奪取儲存於程式碼中的任何敏感資料。
如何預防:
切勿將程式碼儲存在不受您控制的不安全環境下
確保正確使用越獄偵測、憑證綁定及偵錯工具偵測控制
監控執行階段程式碼是否在App活動中出現異常
以上資訊來源,截取至GSS資安電子報0132期【OWASP Mobile Top 10:弱點說明及預防措施】
瀏覽數:
分享