通過真實案例了解 OWASP Mobile 的 10 大風險
已發表: 2020-01-28擁有開發 100% 防黑客應用程序的行業記錄伴隨著責任和基線保證,以我們的名義開發的任何數字解決方案都不會面臨安全漏洞。
作為實現這一目標的一種方式,Appinventiv 的質量保證團隊熟悉應用程序可能面臨的所有可能的安全風險。 了解風險可以很容易地忽略陷阱並編寫安全的應用程序。
全面了解OWASP 安全編碼實踐(開放 Web 應用程序安全項目)有助於我們在確保安全方面處於領先地位。 它是一個由安全專家組成的在線社區,他們開發了免費文檔、學習材料和工具,用於構建安全的移動和 Web 應用程序。
除了其他內容外,他們還編制了一份OWASP Mobile 移動應用程序中的十大安全威脅列表。
雖然OWASP 安全實踐文檔相當清晰,但企業有時很難將其與實際案例聯繫起來。
在本文中,我們將為您提供 10 大移動安全風險的基本概述,並舉例說明現實世界中每個風險的披露漏洞。 當我們處理您的應用程序時,它將讓您深入了解我們在 Appinventiv 所做的準備工作。
在研究風險之前,讓我們先看看統計數據。
NowSecure調查了 Google Play 商店中的應用,App Store 發現超過 85% 的應用違反了其中一項風險。
在這些應用程序中,50% 的數據存儲不安全,並且相同數量的應用程序存在不安全的通信風險。 這是一張圖表,顯示了OWASP 移動前 10 大風險的發生百分比
移動應用程序最常見的 10 種威脅列表以及避免它們的最佳實踐
M1:平台使用不當
OWASP 安全測試的類別包括濫用設備功能或使用平台安全控制時的故障實例。 它可以包括平台權限、Android 意圖、TouchID 的濫用、鑰匙串等。
真實案例:
三個 iOS 應用程序:“健身平衡應用程序”、“心率監測器”和“卡路里跟踪器應用程序”因繞過 Apple 的 Touch ID 而曝光。 他們要求用戶使用指紋來獲取健身信息,同時使用指紋從 App Store 收費。
應避免的最佳做法:
- 開發者不得允許通過服務器路由進行 Keychain 加密,並將密鑰僅保存在一台設備中,以免在其他服務器或設備上被利用。
- 開發人員必須通過 Keychain 保護應用程序,以存儲具有專用訪問控制列表的應用程序機密。
- 開發人員必須獲得許可來限制允許哪些應用程序與其應用程序通信。
- 開發人員必須通過定義顯式意圖來控制 OWASP Mobile Top 10 列表中的第一個,從而阻止所有其他組件訪問意圖中存在的信息。
M2:不安全的數據存儲
當有人訪問丟失/被盜的移動設備或惡意軟件或其他重新打包的應用程序開始代表對手行動並在移動設備上執行操作時,OWASP 將其視為威脅。
不安全的數據存儲漏洞通常會導致以下風險:
- 欺詐罪
- 身份盜竊
- 物質損失。
- 聲譽受損
- 外部政策違規 (PCI)
真實案例:
Tinder、OKCupid 和 Bumble 等約會應用程序因其不安全的數據存儲做法而一再受到審查。 這些應用程序上存在的安全漏洞根據可行性、嚴重性和可行性而有所不同,除了其他個人帳戶活動外,還可能暴露用戶的姓名、登錄詳細信息、消息歷史記錄甚至位置。
應避免的最佳做法:
- 對於 iOS, OWASP 安全實踐建議使用特意製作的易受攻擊的應用程序(如 iGoat)對其開發框架和應用程序進行威脅建模。 這將幫助ios 應用程序開發人員了解 API 如何處理應用程序流程和信息資產。
- Android 應用程序開發人員可以使用 Android Debug Bridge shell 來檢查目標應用程序的文件權限和 DBMS 來檢查數據庫加密。 他們還應該使用內存分析工具和 Android 設備監視器來確保設備內存沒有意外數據。
M3:不安全的通信
在設計移動應用程序時,數據以客戶端-服務器模型進行交換。 所以,數據傳輸時,首先要經過設備的運營商網絡和互聯網。 威脅代理可以在通過網絡傳輸時利用漏洞並攔截敏感數據。 以下是存在的不同威脅代理:
- 共享您的本地網絡的對手 - 受損的 Wi-Fi
- 網絡或運營商設備——手機信號塔、代理、路由器等。
- 移動設備上的惡意軟件。
通過通信渠道攔截敏感數據最終會侵犯隱私,這可能導致:
- 身份盜竊
- 欺詐罪
- 名譽受損。
真實案例:
Rapid7 安全公司披露了兒童智能手錶附帶的幾個漏洞。 這些手錶作為父母用於跟踪孩子並向他們發送消息或在他們的智能手錶上撥打電話的手錶銷售。
這些手錶本應通過白名單模式通過批准的聯繫號碼聯繫,但該公司發現過濾器甚至無法正常工作。 手錶甚至通過短信接受配置命令。 這意味著黑客可以更改手錶設置並使兒童處於危險之中。
Rapid7 的物聯網研究負責人 Deral Heiland 說:“您可以確定電話或孩子在哪裡,您可以訪問音頻或給孩子打電話。”
應避免的最佳做法:
- 開發人員不僅應該尋找應用程序和服務器之間通信的流量洩漏,還應該尋找保存應用程序和其他設備或本地網絡的設備。
在傳輸敏感信息和其他敏感數據時,將 TLS/SSL 應用於傳輸通道也是要考慮的移動應用安全最佳實踐之一。
- 使用受信任的 SSL 鏈驗證提供的證書。
- 不要通過彩信、短信或推送通知等替代渠道發送敏感數據。
- 在提供給 SSL 通道之前,對敏感數據應用單獨的加密層。
M4:不安全的身份驗證
利用身份驗證漏洞的威脅代理通過使用定製或可用工具的自動攻擊來實現這一目標。
M4 的業務影響可以是:
- 信息盜竊
- 名譽受損
- 未經授權訪問數據。
真實案例:
2019 年,一家美國銀行遭到網絡攻擊者的黑客攻擊,該攻擊者利用該銀行的網站漏洞繞過了為保護賬戶而實施的雙因素身份驗證。
攻擊者通過竊取的受害者憑據登錄系統,並在到達必須輸入 PIN 或安全答案的頁面後,攻擊者在 Web URL 中使用了一個經過操縱的字符串,該字符串已將計算機設置為可識別的計算機。 這使他能夠跨過舞台並啟動電匯。
應避免的最佳做法:
- 應用安全團隊必須研究應用身份驗證,並在離線模式下通過二進制攻擊對其進行測試,以確定它是否可以被利用。
- OWASP Web 應用程序測試安全協議必須與移動應用程序相匹配。
- 盡可能使用在線身份驗證方法,就像使用 Web 瀏覽器一樣。
- 在服務器對用戶會話進行身份驗證之前,不要啟用應用程序數據加載。
- 最終使用本地數據的地方,確保通過從用戶登錄憑據派生的加密密鑰對其進行加密。
- 持久認證請求也必須存儲在服務器上。
- 安全團隊應該小心應用程序中以設備為中心的授權令牌,因為如果設備被盜,應用程序可能會受到攻擊。
- 由於未經授權的設備物理訪問很常見,因此安全團隊必須從服務器端強制執行定期用戶憑據身份驗證。
M5:密碼學風險不足
在這種情況下,威脅代理是那些對被錯誤加密的數據進行物理訪問的人。 或者惡意軟件代表對手行事。
損壞的密碼學通常會導致以下情況:
- 信息盜竊
- 知識產權盜竊
- 密碼盜竊
- 侵犯隱私權
- 名譽受損。
真實案例:
有時,DHS 工業控制系統的網絡緊急響應小組和飛利浦諮詢會發出警報,警告用戶飛利浦 HealthSuite Health Android 應用程序可能存在漏洞。
該問題被追溯到加密強度不足,將應用程序開放給黑客,他們可以訪問用戶的心率活動、血壓、睡眠狀態、體重和身體成分分析等。
應避免的最佳做法:
- 為了解決這個最常見的OWASP 十大移動風險之一,開發人員必須選擇現代加密算法來加密他們的應用程序。 算法的選擇在很大程度上照顧了漏洞。
- 如果開發人員不是安全專家,他們必須避免創建自己的加密代碼。
M6:不安全的授權風險
在這種情況下,威脅代理通常能夠通過使用定製或可用工具的自動攻擊來訪問其他人的應用程序。
它可能導致以下問題:
- 信息盜竊
- 名譽受損
- 欺詐罪
真實案例:
Pen Test Partners 的信息安全專家入侵了智能汽車報警系統Pandora 。 從理論上講,該應用程序用於跟踪汽車,如果被盜則切斷發動機並將其鎖定直到警察到達。
另一方面,黑客可以劫持帳戶並訪問所有數據和智能警報功能。 此外,他們可以:
- 跟踪車輛運動
- 啟用和禁用警報系統
- 鎖定和解鎖車門
- 切斷發動機
- 以 Pandora 為例,黑客可以通過防盜系統的麥克風訪問車內討論的所有內容。
應避免的最佳做法:
- QA 團隊必須通過為敏感命令運行低權限會話令牌來定期測試用戶權限。
- 開發者必須注意,用戶授權方案在離線模式下會出錯。
- 防止這種風險的最佳方法是在服務器而不是移動設備上對經過身份驗證的用戶的權限和角色運行授權檢查。
M7:代碼質量差的風險
在這些情況下,實體將不受信任的輸入傳遞給在移動代碼中進行的方法調用。 這樣做的影響可能是技術問題,這些問題可能導致性能下降、內存使用量大和前端架構工作不佳。
真實案例:
WhatsApp去年修補了一個漏洞,黑客利用該漏洞在智能手機上安裝名為 Pegasus Spyware 的監控惡意軟件。 他們所要做的就是在目標電話號碼上進行 WhatsApp 音頻通話。
只需幾個簡單的步驟,黑客就能夠進入用戶的設備並遠程訪問它。
應避免的最佳做法:
- 根據OWASP 安全編碼實踐,代碼應該在移動設備中重寫,而不是在服務器端修復它們。 開發人員必須注意,服務器端的糟糕編碼與客戶端級別的糟糕編碼非常不同。 意思是,弱服務器端控件和客戶端控件都應該單獨注意。
- 開發人員必須使用第三方工具進行靜態分析,以識別緩衝區溢出和內存洩漏。
- 團隊必須創建第三方庫列表並定期檢查更新版本。
- 開發人員應該將所有客戶端輸入視為不受信任並驗證它們,無論它們來自用戶還是應用程序。
M8:代碼篡改風險
通常,在這種情況下,攻擊者通過第三方應用商店中託管的應用的惡意形式來利用代碼修改。 他們還可能通過網絡釣魚攻擊誘騙用戶安裝應用程序。
應避免的最佳做法:
- 開發人員必須確保應用程序能夠在運行時檢測代碼更改。
- 必須檢查 build.prop 文件是否存在 Android 中的非官方 ROM,並確定設備是否已植根。
- 開發人員必須使用校驗和並評估數字簽名以查看是否發生了文件篡改。
- 一旦發現篡改,編碼人員可以確保刪除應用程序密鑰、代碼和數據。
M9:逆向工程風險
攻擊者通常會從應用商店下載目標應用,並使用一套不同的工具在其本地環境中對其進行分析。 之後,他們可以更改代碼並使應用程序功能不同。
真實案例:
Pokemon Go最近發現用戶對應用程序進行了逆向工程以了解 Pokemons 的附近並在幾分鐘內捕捉到它們,因此最近面臨安全漏洞的關注。
應避免的最佳做法:
- 根據OWASP 移動安全,保護應用程序免受風險的最佳方法是使用與黑客用於逆向工程相同的工具。
- 開發人員還必須混淆源代碼,使其難以閱讀,然後進行逆向工程。
M10:無關功能風險
通常,黑客會查看移動應用程序中的無關功能,以便發現後端系統中的隱藏功能。 攻擊者將在沒有任何最終用戶參與的情況下利用他們自己系統中的無關功能。
真實案例:
Wifi File Transfer 應用程序的想法是在 Android 上打開端口並允許來自計算機的連接。 問題? 沒有諸如密碼之類的身份驗證,這意味著任何人都可以連接到設備並獲得其完全訪問權限。
應避免的最佳做法:
- 確保最終構建中沒有測試代碼
- 確保配置設置中沒有隱藏開關
- 日誌不得包含任何後端服務器進程描述
- 確保 OEM 不會將完整的系統日誌暴露給應用程序
- API 端點必須有據可查。