iOS 应用程序(例如 WhatsApp)的错误版本如何使整个设备崩溃或被接管

信息安全 恶意软件 IOS 手机 whatsapp 视频
2021-08-12 06:39:46

最近有很多关于 WhatsApp 中的安全漏洞的重要新闻,该漏洞也影响了该应用程序的 iOS 版本。易受攻击性被描述为带有攻击者使设备崩溃的风险(例如,在 Google Project Zero 的原始报告中提到)或接管智能手机的控制权(例如,heise.de在这里用德语提到;翻译由 Google 提供在这里翻译)。建议的补救措施是至少升级到 iOS 应用程序的 2.18.93 版本;显然不需要对 iOS 本身进行更新。

由于这被描述为应用程序(而不是 iOS 本身)中的错误,这让我想知道:应用程序(合法或其他)如何首先崩溃或接管 iOS 设备?FWIK 没有 SDK 调用可以授予应用程序这样的权力,而且报告确实提到了堆损坏。但是,单个应用程序中的堆损坏如何对整个系统造成如此严重的破坏呢?我可以想象,如果应用程序的堆以一种特殊的方式与操作系统拥有的内存重叠,这样应用程序的(错误版本)可能会在那里注入恶意代码。但在这种情况下,我希望这会被视为 iOS(不仅仅是应用程序)中的一个错误,而这里的情况并非如此。

那么这里发生了什么?应用程序(例如 WhatsApp)的错误版本如何使 iOS 设备崩溃或允许其被完全接管?

更新 这篇文章提到了两名谷歌工程师的名字。他们的推特句柄是@natashenka@taviso也许拥有 Twitter 帐户的人可以联系他们并引起对这个问题的关注。

1个回答

我想这里可能发生的事情是库中存在(曾经)一个错误,该错误可能会被 WhatsApp 应用程序、iOS、Android 等使用。这可以解释为什么问题在 iOS 和 Android 中明显出现在根级别。也许在这种情况下会发生什么是谷歌通知操作系统供应商,谁通知上游库的维护者,然后呢?

为了通过示例使这一点更加具体,这里是 iOS 12 的摘录Settings| General| About| Legal

在此处输入图像描述

这里有一段来自cisco/libsrtp的 GitHub 项目的文字(srtp_protect在原始报告中也提到了):

  • srtp_protect()函数假定保存 rtp 数据包的缓冲区已分配足够的存储空间,以便可以将身份验证标签写入该数据包的末尾。如果这个假设不成立,就会发生内存损坏。

该项目至少有点活跃(最后一次提交是在 7 天前),但它的issue #322显然自 2017 年 7 月开放。我不是经验丰富的白帽(也不是黑帽),但我目前的估计是公平的在这种情况下发布这样一个(理论)示例正是因为所有成分都已经公开。也许一个人甚至可以通过谷歌搜索(不是双关语)这样的东西来获得谷歌零工程师的资格:)

更新对于它的价值,Sonatype OSS 索引(开发人员用来识别开源依赖项并确定是否存在任何已知的、公开披露的漏洞的免费服务)目前没有列出任何libsrtp.