iOS 10应用程序在执行期间内存中存在敏感数据

3
可以从运行中的应用程序中读取内存中的数据吗?也就是说,是否可以转储正在运行的iOS应用程序的内存并能够知道变量中的数据。
在Windows操作系统上有内存编辑器,用于更改正在运行的应用程序的变量,是否可能做到相同的事情或至少读取变量中的数据。
例如:如果有一个包含敏感数据(字符串)的变量,该数据被加密,并且用户只能通过提供密码来解密数据。同一用户是否可以在应用程序执行期间从内存中获取数据的加密形式(以便他可以使用暴力破解或其他技术来解密数据而无需密码)。
附言:加密数据将通过网络提供,因此不会硬编码到应用程序中。
请告诉我是否存在其他漏洞。
通过在沙箱中运行应用程序,是否安全。
1个回答

3

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

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

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

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

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

所有这些归结为:

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

您无法确保针对决心攻击者的100%安全性,并且永远不应该假定某人无法完全修改其设备上应用程序的行为(包括访问您提供给他们的所有数据)。

但是,您可以通过以下方式使其更加困难:

  • 最小化一次存储在内存中的未加密数据量以及保持其未加密的时间。

  • 确保访问检查由服务器执行-而不是信任客户端仅解密用户被允许访问的数据。(例如:使用客户端向服务器验证用户,并要求服务器仅提供该用户被允许访问的数据。)


非常感谢您的回复。在这里,我的假设是iPhone没有越狱。在这种情况下,我相信数据在内存中是安全的。如果我错了,请纠正我,是的,我要求用户与服务器进行身份验证。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接