2016-09-23 50 views
2

是否可以從正在運行的應用程序讀取內存中的數據。即可以轉儲正在運行的ios應用程序的內存並能夠知道變量中的數據。ios 10應用程序執行期間內存中有敏感數據

由於我們在windows操作系統上有用於更改正在運行的應用程序的變量的內存編輯,是否可以執行相同或至少從變量中讀取數據。

例如:如果有一個帶有敏感數據(字符串)的變量被加密,並且用戶只能通過提供密碼來解密數據。是否有可能在應用程序執行期間,同一用戶能夠從內存中獲取加密形式的數據(以便他可以使用暴力破解或其他技術解密數據而不需要密碼)

PS:加密的數據將通過網絡提供,所以它不會被硬編碼到應用程序中。

請讓我知道是否還有其他漏洞。

通過在Sandbox中運行應用程序,無論如何都是安全的。

回答

1

iOS上的應用程序是沙盒,不能訪問彼此的內存或數據(除非通過各種方法明確共享)。

通過配置嚴格的數據保護類(如NSFileProtectionComplete)可以進一步保護存儲在磁盤上的數據。 (儘管您應該仔細評估哪些數據保護類適用於您的應用程序 - 即使您的應用程序在後臺運行,最嚴格的類也會阻止設備鎖定時的數據訪問。)

但是,所有這些假定設備的安全性仍然完好無損(按設計)。

過去,iOS的越獄已經可以讓設備所有者繞過操作系統中各種安全機制。在越獄設備上,所有投注都關閉 - 如果設備所有者可以繞過iOS的安全功能,他們可以輕鬆訪問應用內存的內容。

操作系統或支持庫中的安全漏洞也可能導致任意內存訪問或在您的應用上下文中執行遠程代碼。

這一切都歸結爲是:

你最終提供用戶數據,他們設備上。

對於確定的攻擊者,您無法保證100%的安全性,並且您不應該假設某人完全修改您設備上應用的行爲(包括訪問您提供的所有數據)是不可能的。

但是你可以把它更加困難:

  • 儘量減少一次性地存儲在內存中的未加密的數據量,和它保持未加密的持續時間。

  • 確保在您的服務器上執行訪問檢查 - 而不是通過信任客戶端僅解密允許用戶訪問的數據。(例如:讓客戶端向服務器驗證用戶身份,並讓服務器僅提供該用戶允許訪問的數據。)

+0

非常感謝您的回覆。在這裏,我的假設是,iPhone不是監獄破碎。在這種情況下,我相信數據在內存中是安全的。如果我錯了,請糾正我的錯誤,並請求用戶使用服務器進行身份驗證。 – share75