只需几行CSS代码就可另iPhone崩溃?

926 阅读2分钟

描述

逛推特时发现一个有趣的新闻,Sabri Haddouche发现Safari使用的WebKit渲染引擎中存在一个漏洞,该漏洞会令使用IOS操作系统的iPhone和iPad系统崩溃并重新启动。 以下是源链接

点击我(需要科学上网)

原理

简单点说,就是攻击利用 -webkit-backdrop-filter CSS 属性(背景过滤器)中的弱点,通过使用具有该属性的嵌套 div,可以快速消耗所有图形资源并崩溃或冻结操作系统。此攻击都不需要 Javascript,因此它也适用于 Mail。在 macOS 上,表现为 UI 冻结。在 iOS 上, 表现为设备重启。此攻击会影响 iOS 上的所有浏览器,以及 macOS 中的 Safari 和 Mail,因为它们都使用 WebKit 渲染引擎。

具体实现

本着实践才出真理的原则,就赶紧来试了一下,随便写一个HTML,在backdrop filter 中嵌套3000个 <div> 标签。

看完源码是不是想说,这不逗我吗?这就没了? 对,没错,就是这么简单,3000个标签就把iPhone玩坏了。 主要是因为Webkit的漏洞,图形渲染资源快速消耗,导致了崩溃。

有趣的是IOS 12发布之后,苹果依旧没有修复它。

Apple强制App Store上列出的所有浏览器和支持HTML的应用程序都使用其WebKit渲染引擎,这意味着该问题很可能会导致任何能够加载网页的APP崩溃。 【手动滑稽脸】苹果用户哭哭

HTML源码:click to me

测试链接

Warning:如果您要尝试打开以下的链接,请认真阅读。这将重新启动您的手机,任何未保存的数据,您可能已经打开在Safari或任何其他应用程序可能会丢失。我不负责任何损害可能发生在您的设备作为这个bug的结果。

点击我之前请保存好数据

写在最后

以上只是我写的一些小实践,做一些技术谈论,有任何问题也欢迎大家交流指正。具体漏洞产生的原因还得看苹果官方的回复啦。不可利用此漏洞用于破坏哦,与作者无关哦!