查看原文
其他

0day影响 Chrome和 Safari,谷歌不修复

mlippautz 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队


安全研究员发现,Oilpan 的保守型垃圾回收器在扫描栈查找指针时,由于无法区别整数和指针,因此如果整数指向一个分配的对象,则会假设它是合法的指针并标记该对象。


通过这一属性,我们可以通过以下方式得出某对象是否位于给定地址:

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 同步功能可滥用于 C2 通信及数据提取
谷歌修复已遭利用的 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)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 或 "” 吧~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存