一个网页如何控制你的 iPhone?

一个网页如何控制你的 iPhone?

运行 iOS 13.0(2019 年 9 月发布)至 17.2.1(2023 年 12 月发布)版本的苹果 iPhone 机型的全新强大漏洞利用工具包近期引起热议。该工具包由开发者命名为“Coruna”,包含五条完整的 iOS 漏洞利用链,共计 23 个漏洞利用程序。

Coruna 不是一个单独漏洞,而是一套完整的 iOS 攻击链样本。它把多个已经存在的漏洞串联起来,从一个网页入口开始,逐步获取设备的控制权。

攻击从浏览器触发。iOS 上所有浏览器都依赖 WebKit,其核心执行引擎是 JavaScriptCore(JSC)。当用户打开网页时,页面中的 JavaScript 会在这个引擎中运行。如果引擎存在漏洞,网页就可以成为攻击入口。

第一步是在浏览器内获得代码执行能力。Coruna 利用的主要是 JSC 中的几类典型问题。包括通过 addrof / fakeobj 获取内存地址并伪造对象,从而影响程序内部结构;利用 JIT 的类型混淆,让引擎执行错误的机器代码;以及利用垃圾回收中的 Use-After-Free,在被释放的内存中构造可控数据。这一步的结果,是在浏览器进程内实现远程代码执行。

第二步是沙盒逃逸。即使已经可以在浏览器中执行代码,仍然被限制在沙盒环境内。通过系统漏洞,可以突破这一限制,访问更底层的系统接口。

第三步是内核提权。利用内核漏洞获取更高权限,并绕过系统的保护机制,使攻击代码获得接近完整的控制能力。

当这三步完成后,最初只是网页中的一段脚本,就变成了可以控制整台设备的代码。这也是 Coruna 的核心价值:不是展示单个漏洞,而是展示如何把多个漏洞组合成一条稳定的攻击路径。所谓“23 个漏洞”,指的是用于构建这些攻击链的多个漏洞利用,而不是一个单点问题。

这类攻击之所以成立,关键在于 JavaScriptCore 提供的能力本身。如果这些能力被限制,漏洞就很难被转化为实际利用。

针对这一点,opa334 提供了一种直接的防护思路:对 WebContent 进程中的 JavaScriptCore 进行安全加固。它通过调整引擎配置,限制几类关键利用原语,包括获取内存地址和伪造对象(addrof / fakeobj)、依赖 JIT 的类型混淆路径,以及基于垃圾回收的 Use-After-Free 利用条件。这样做并不会消除漏洞,但会显著提高利用难度,使攻击链难以成立。

如何防御这类攻击?

你可以选择将iOS更新到最新版本,越狱用户目前opa334发布了lockdown Tweak,你可以点击前往软件源合集页面找到并添加外星源搜索安装lockdown,当前仅支持roothide越狱,安装即生效,安装生效后的设备测试Coruna漏洞利用无法成功,部分设备可能无法生效。

图片[1]-一个网页如何控制你的 iPhone?-6Z:由Intz智领

从 Coruna 可以看出,网页已经成为现实的攻击入口。而像opa334这样的方案,本质是在降低浏览器引擎的可利用性。如果无法避免漏洞的存在,那么让漏洞难以被利用,是更现实的防护方式。

THE END