漏洞概述
安全研究专家发现iOS组件存在漏洞,攻击者可能利用该漏洞控制目标手机自动拨号(号码可控制)。在这种攻击场景中,攻击者可以短时间屏蔽用户手机的图形操作界面(UI)并阻止用户挂断电话。这是一个应用程序漏洞,主要是操作系统框架层的设计缺陷导致的。需要说明的是,该漏洞的利用方法非常简单,攻击者可以轻松利用该漏洞进行攻击,因此App开发者应尽快修复应用代码中的问题。安全研究人员已确认该漏洞存在于和iOS应用程序中,但还有许多其他应用程序也存在此问题。
对 911 报警电话的拒绝服务攻击
大约一周前,我看到一篇文章。本文大致描述了:一个人创建了一个恶意网页。当用户访问该页面时,用户的手机会自动拨打911报警号码,从而实现对911呼叫的拒绝服务攻击。看到这份报告后,我立即想到了我在 2008 年 10 月向苹果提交的一个漏洞[传送门]。攻击者使用的漏洞一定与手机调用拨号功能所使用的 TEL URI 有关。但我不认为攻击者利用了我之前报告的漏洞,因此我将进一步调查。
漏洞的严重性
攻击者可以在应用程序中嵌入恶意链接。当用户点击链接时,手机会自动拨打电话号码。如果您认为这不是一个大问题,请再考虑一下。对 911 电话的拒绝服务攻击已经够可怕的了,但攻击者甚至可以通过让你的手机自动拨打付费号码来获取巨额利润。此外,不法分子还可以控制目标手机给他打电话,从而使不法分子获取目标用户的手机号码。这一切都是你不愿意看到的。
所以我打算更新iOS版本
用于分析的应用程序。我在很短的时间内制作了一个可以工作的自动拨号器,我对它的简单程度感到震惊。我一开始以为这是我之前向苹果提交的漏洞,但仔细研究后发现,由于攻击者在攻击过程中使用了大量的脚本和各种弹窗,所以这应该是另一个漏洞。 ,至少这个漏洞的触发机制和之前的不一样。以前,我只需要一行 HTML 代码(指向 TEL URL 的元标记)即可触发该漏洞,因此我计划通过 bug 赏金计划向公司报告该漏洞。我以前从未参加过任何错误赏金计划,所以我认为这将是一次很好的经历。当然,几天后这个漏洞就被发现了,我也获得了漏洞赏金。
11 月 7 日,我更新了提交到 bug 报告的漏洞报告,其中添加了一个关于 UI 屏蔽的问题,还上传了演示视频。然而,他们关闭了我提交的错误,没有提供任何额外的评论,因为他们认为该问题与我之前提交的问题重复。但我觉得我们应该更“绅士”一点,至少要感谢我们这些利用业余时间帮他们挖坑的人。所以我决定,由于他们对我的“粗鲁”程度,我将发布该漏洞的详细信息。
漏洞分析
经过深入分析,我发现这个问题在用于显示内容的iOS应用程序中很常见。为了测试我的想法,我测试了手机上已安装的几个流行应用程序。包含漏洞的应用程序必须首先向用户提供 Web 链接。只有当应用程序中打开目标网页时,用户才会受到攻击。如果在 或 等移动浏览器中打开恶意链接,用户将不会受到此漏洞的影响。
考虑到它是一款商业社交媒体软件,我最初测试的是iOS App。用户可以使用该应用程序发送消息或状态更新,其中通常包括文本和链接。我发布了一个链接,然后点击了该链接。不出所料,点击后,我的手机开始拨打我的另一个号码。 (下面有演示视频)
所以我打算向 报告该漏洞,他们确实有相应的错误赏金计划。但不幸的是,漏洞赏金计划并不向公众开放,只有之前提交过漏洞的人才能参与该计划。经过一段时间的努力,结果却是徒劳。我想了想,决定不提交,而是将漏洞公开。毕竟已经是 2016 年了,既然他们不打算将我列为 bug 赏金目标,我尊重他们的选择。但通常情况下,我不会直接暴露漏洞......
漏洞触发机制
我记得我在2008年提交这个漏洞的时候,就附带了相应的PoC。我发现这个PoC仍然可以在App上运行。回顾一下,当时我们可以通过访问网站(重定向到手机的TEL URL)来触发该漏洞,并控制目标手机拨打电话。实现TEL URL重定向的方法有很多种,比如http-meta、.、.、或者HTTP重定向。这些方法可以直接调用。当然,用户可以在屏幕上看到拨打的电话号码,也可以按“挂断”按钮终止通话。但能够自动拨打电话就已经很糟糕了,不明真相的人看到这种情况肯定会一头雾水。
需要说明的是,我利用2008年提交的漏洞时,可以屏蔽用户手机的UI界面。虽然只能屏蔽几秒,但足以阻止用户挂断电话。所以我打算将这个小技巧应用到这个漏洞上,而这个技巧确实可以让iOS操作系统在拨号过程中打开另一个应用程序。实现方法也非常简单。你只需要打开一个URL地址就可以让iOS运行另一个应用程序。事实上,你只需要绑定一个URI,就可以运行任何iOS应用程序。
当时,我使用了一个(带有很长的电话号码)来阻塞 UI 线程。在我看来,该漏洞的主要原因是IPC子系统无法正确地将这些千字节的URL数据传输给应用程序,并且应用程序不希望接收这样的URL。我的 PoC 代码如下所示,我使用了元标记和 .在攻击代码中。我将延迟设置为 1.3 秒,以便我的拨号器首先运行。该延迟时间不能太长,否则短信应用程序将无法通过 URL 启动。所以时间必须设定得恰到好处。
漏洞触发演示
我在下面为您提供了两个攻击演示视频。可以明显看到手机UI界面短时间内无法响应用户操作。在此期间,有人拨打电话,尤其是某些公用电话。
演示视频地址一:
演示视频地址二:
正常App拨号操作
通常情况下,合法的App在执行某个URL之前,首先会对其进行检测,然后弹出一个对话框。当用户同意后,就会启动相应的App。如下图:
手机浏览器还会在用户拨打苹果服务号码之前提醒用户。这就是合法应用程序应该有的行为方式!
用户在拨打电话之前也会收到提示,但不会显示电话号码。不过,这总比没有提示好!
总结
苹果开发者应立即检查他们的应用程序是否受到此漏洞的影响,如果是,请立即修复问题。
你会喜欢的