2016-09-23 62 views
2

是否可以从正在运行的应用程序读取内存中的数据。即可以转储正在运行的ios应用程序的内存并能够知道变量中的数据。ios 10应用程序执行期间内存中有敏感数据

由于我们在windows操作系统上有用于更改正在运行的应用程序的变量的内存编辑,是否可以执行相同或至少从变量中读取数据。

例如:如果有一个带有敏感数据(字符串)的变量被加密,并且用户只能通过提供密码来解密数据。是否有可能在应用程序执行期间,同一用户能够从内存中获取加密形式的数据(以便他可以使用暴力破解或其他技术解密数据而不需要密码)

PS:加密的数据将通过网络提供,所以它不会被硬编码到应用程序中。

请让我知道是否还有其他漏洞。

通过在Sandbox中运行应用程序,无论如何都是安全的。

回答

1

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

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

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

过去,iOS的越狱已经可以让设备所有者绕过操作系统中各种安全机制。在越狱设备上,所有投注都关闭 - 如果设备所有者可以绕过iOS的安全功能,他们可以轻松访问应用内存的内容。

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

这一切都归结为是:

你最终提供用户数据,他们设备上。

对于确定的攻击者,您无法保证100%的安全性,并且您不应该假设某人完全修改您设备上应用的行为(包括访问您提供的所有数据)是不可能的。

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

  • 尽量减少一次性地存储在内存中的未加密的数据量,和它保持未加密的持续时间。

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

+0

非常感谢您的回复。在这里,我的假设是,iPhone不是监狱破碎。在这种情况下,我相信数据在内存中是安全的。如果我错了,请纠正我的错误,并请求用户使用服务器进行身份验证。 – share75

相关问题