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

时间:2016-09-23 06:35:06

标签: ios security operating-system heap-memory appstore-sandbox

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

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

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

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

如果还有其他漏洞,请与我们联系。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

这一切归结为:

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

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

但是你可以通过以下方式使其变得更加困难:

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

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