0day影响 Chrome和 Safari,谷歌不修复
编译:奇安信代码卫士团队
通过这一属性,我们可以通过以下方式得出某对象是否位于给定地址:
1、 分配目标对象
2、 将地址放到栈上的查询中
3、 删除目标对象的所有现有引用中并触发垃圾回收器
4、 如果目标对象仍然存在,则表明所查询的地址指向目标对象
因此,这里存在两个问题:一个和将任意数据放置到垃圾回收器快速浏览的栈上有关,另外一个与检测目标对象是否通过了垃圾回收有关。
我们可通过 WebAssembly 解决第一个问题。如果我们通过较大参数执行函数,那么耗尽所有未参数保留的注册表后,它将开始使用该栈存储余下的参数。解决第二个问题的方法很多。对于 Chrome 而言是使用 FinalizationRegistry,可允许未收集对象时调用的对象进行回调。
综合以上的解决方案,PoC 演示表示可以破解 ASLR。应该会对映射页面地址发出警告。该问题已在 Chrome 86.0.4240.111(官方版本)(x86_64) 中的 MacOS 上测试成功。根据平台的不同,可能需要调整 kScanBeginAddress 和 kScanEndAddress。
该漏洞影响版本是稳定版的 Chrome 86.0.4240.111,OS 版本是 OS X 11.0.0。
研究人员指出,该漏洞除了影响 Chrome,还影响 Safari 浏览器,并已将问题告知苹果公司。而由于 Firefox 并不拥有保守型垃圾回收器因此并不受影响。
谷歌回应称,虽然漏洞真实存在,但由于保守型垃圾回收器和 FinalizationRegistry 还有存在的必要性,因此不打算修复,不过仍然将考虑为研究员颁发漏洞奖励。谷歌回应称 ASLR 还可通过 Spectre 类的exploit 被绕过。
谷歌修复已遭利用的 Chrome 0day
一年太久,研究员决定不等补丁直接披露 Safari 0day 详情
我一口气发现7个Safari 0day,苹果奖了7.5万美元
https://bugs.chromium.org/p/chromium/issues/detail?id=1144662
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。