WebAssembly 技术修订或导致 Meltdown 和 Spectre 浏览器补丁失效
翻译:360代码卫士团队
Forcepoint 公司的安全研究员 John Bergbom 指出,WebAssembly 标准修订可能导致针对 Meltdown 和 Spectre 漏洞的浏览器补丁失效。
WebAssembly (WA 或 Wasm)是于去年推出的一种新技术,目前受所有主流浏览器如 Chrome、Edge、火狐和 Safari 的支持。它是一种压缩的二进制语言,浏览器将其转换为机器代码然后直接在 CPU 运行。
浏览器厂商创建 WebAssembly 是为了提高 JavaScript 代码的交付和性能速度,不过它还允许开发人员从其它高级语言(如 C、C++等)将代码导入 Wasm,然后在浏览器中执行。
总而言之,WebAssembly 标准被认为是 web 开发社区的成功,因此被赞誉有加。
WebAssembly 并非坚不可摧
但和其它技术一样,它还存在某些不可预测的副作用以及遭滥用情况。浏览器密币挖矿机(密币劫持脚本)可被精确追踪到主流浏览器中的 WebAssembly 内容,因为所有浏览器挖矿机都在 WebAssembly 上运行而非仅仅是 JavaScript。
Bergbom指出,这可能是 WebAssembly 为 web 用户带来的副作用。他指出,“一旦 Wasm 获得对共享内存线程的支持(已在 Wasm 路线图上),就可创建非常准确的 JavaScript 定时器,它可能导致某些 CPU 端信道攻击的浏览器缓解措施失效。”
WebAssembly 或绕过某些浏览器缓解措施
Bergbom 在声明中指出的攻击,更确切的是“定时攻击”,它也属于侧信道攻击的一种。
定时攻击是一种加密攻击,第三方可借此通过记录和分析执行加密算法的时间演绎加密数据的内容。最近发现的 Meltdown 和 Spectre CPU 漏洞及其很多变种从核心来讲都属于定时攻击。
这种攻击依赖攻击者测量精确时间间隔的能力,该参数能执行侧信道攻击并从加密 blob 数据中恢复足够的信息再判断余下部分。
曾解决过该问题
当1月份爆发 Meltdown 和Spectre 问题时,研究人员发布 PoC 代码称攻击者可经由互联网通过使用浏览器中运行的 JavaScript 代码远程利用这些 CPU 漏洞。
该攻击代码利用浏览器的内部原生函数策略时间间隔如 “ShareArrayBuffer” 和 “performance.now()”。
火狐和 Chrome 等浏览器发布更新稀释了这些定时器函数的精度,从而导致 Meltdown 和 Spectre 攻击和其它定时侧信道攻击效率低下。
但 Bergbom 表示,一旦在 WebAssembly 中加入对“线程”的支持并放到现代浏览器中,这些缓解措施就会失效,因为攻击者拥有了通过 WebAssembly 测量精确时间的新方法。
Bergbom 表示,“和很多新技术一样,需要考虑潜在的安全问题。总体而言,它们为恶意人员提供了新机遇。和 JavaScript 引发的很多问题一样,Wasm 触发问题的几率如果不是穷尽的话,几率很高。”
为此,浏览器厂商需要限制对 WebAssembly 未来“线程”的支持,以阻止攻击者构造足够精确的定时器。
关联阅读
原文链接
https://www.bleepingcomputer.com/news/security/changes-in-webassembly-could-render-meltdown-and-spectre-browser-patches-useless/
本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。