ios 10 个应用程序在执行期间在内存中包含敏感数据

ios 10 application with sensitive data in memory during execution

是否可以从 运行 应用程序读取内存中的数据。即是否可以转储 运行 ios 应用程序的内存并能够知道变量中的数据。

由于我们对 windows OS 进行了内存编辑,用于更改 运行 应用程序的变量,是否可以执行相同的操作或至少读取来自变量的数据。

例如:如果有一个带有敏感数据(字符串)的变量是加密的,用户只有提供密码才能解密数据。同一用户是否有可能在应用程序执行期间从内存中获取加密形式的数据(这样他就可以在没有密码的情况下使用暴力或其他技术解密数据)

P.S : 加密数据将通过网络提供,因此不会硬编码到应用程序中。

如果还有其他漏洞,请告诉我。

据运行 无论如何,沙盒中的应用程序是安全的。

iOS 上的应用程序被沙盒化,无法访问彼此的内存或数据(除非通过各种方法明确共享)。

存储在磁盘上的数据可以通过配置严格的数据保护 class 来进一步保护,例如 NSFileProtectionComplete。 (尽管您应该仔细评估哪种数据保护 class 适合您的应用 - 最严格的 class 会在设备锁定时阻止数据访问,即使您的应用 运行 在后台.)

但是,所有这些都假设设备的安全性仍然完好无损(按设计)。

过去,iOS 可以使用越狱功能,使设备所有者能够绕过 OS 中的各种安全机制。在越狱设备上,所有赌注都没有了 - 如果设备所有者可以绕过 iOS 的安全功能,他们就可以轻松访问您应用程序内存的内容。

操作系统或支持库中的安全漏洞也可能会导致任意内存访问或在您的应用上下文中远程执行代码。

这一切归结为:

您最终是在 他们的 设备上向用户提供数据。

您无法确保 100% 安全以抵御坚定的攻击者,并且您永远不应假设某人不可能完全修改您的应用在其设备上的行为(包括访问您提供给他们的所有数据)。

但您可以通过以下方式增加难度:

  • 最大限度地减少一次存储在内存中的未加密数据量,以及保持未加密状态的持续时间。

  • 确保在您的服务器上执行访问检查 - 而不是通过信任客户端只解密允许用户访问的数据。 (例如:让客户端向服务器验证用户,让服务器只提供允许该用户访问的数据。)