导语:据Forcepoint的安全研究员John Bergbom称,即将增加的WebAssembly标准可能会导致一些浏览器对Meltdown和Specter攻击的缓解措施变得毫无用处。
据Forcepoint的安全研究员John Bergbom称,即将增加的WebAssembly标准可能会导致一些浏览器对Meltdown和Specter攻击的缓解措施变得毫无用处。
WebAssembly(WA或Wasm)是去年发布的一项新技术,目前支持所有主流浏览器,如Chrome,Edge,Firefox和Safari。
这项技术是一种紧凑的二进制语言,浏览器将转换成机器码并直接在CPU上运行。
浏览器制造商创建WebAssembly以提高JavaScript代码的交付速度和性能,他们还为开发人员创建了一种将来自其他高级语言(如C,C++ 等)的代码移植到Wasm ,然后在浏览器中运行它。
总而言之,WebAssembly标准在网络开发社区中被视为成功的标准,并且倍受赞美。
WebAssembly
但是像所有的技术一样,它也带来了一些无法预料的副作用和滥用案例。对于初学者来说,浏览器内的加密货币矿工(cryptojacking脚本)的兴起可以追溯到主要浏览器中添加WebAssembly,因为所有浏览器中的矿工都运行在WebAssembly之上,而不是纯粹的JavaScript。
目前,Forcepoint的一位研究人员认为,Web用户可能会出现WebAssembly的另一个意想不到的副作用。
Bergbom说,“一旦Wasm获得对共享内存线程的支持(这已经存在Wasm路线图上),就可以创建非常准确的[JavaScript]定时器,这可能会导致浏览器缓解某些CPU端通道攻击失效。
“定时攻击”
Bergbom准确地提到了“定时攻击”,这是一类旁路攻击。
定时攻击是一类密码攻击,第三方观察者可以通过记录和分析执行加密算法所花费的时间来推断加密数据的内容。
最近公开的 Meltdown and Spectre CPU漏洞,连同它们的多种变型[ 1,2,3 ]都是定时攻击的核心。
他们依赖攻击者测量精确时间间隔的能力,这是执行侧向通道攻击所需的参数,并从加密的数据块中恢复足够的信息以确定其余部分。
浏览器在1月份解决了这个问题
当Meltdown和Specter在1月份被曝光时,研究人员发布了概念验证码,攻击者可以利用浏览器中运行的JavaScript代码,通过互联网远程利用这些CPU漏洞。
此攻击代码利用浏览器的内部原生函数来测量时间间隔,如“SharedArrayBuffer”和“performance.now()”。
像Firefox和Chrome这样的浏览器通过发布更新来反应这些定时器功能的精度,从而导致Meltdown和Spectre攻击以及其他定时副信道攻击效率低下。
但现在,Bergbom表示,一旦WebAssembly中增加了对“线程”的支持,并且此功能可以访问现代浏览器,那么这些缓解措施就会变得毫无用处,因为攻击者有一条通过WebAssembly来测量精确时间的新途径。
Bergbom说,
像许多新技术一样,此技术也有潜在的安全问题需要考虑。总的来说,这些问题为恶意行为者提供了新的机会,就像JavaScript一样,Wasm的可能性是非常广泛的。
为防止这种情况发生,需要浏览器供应商再次采用同样的方法,通过限制WebAssembly即将推出的“线程”支持,来防止攻击者制造出足够精确的计时器。
WebAssembly团队的一名成员告诉Bleeping Computer他们意识到了这个问题,所以暂时搁置了这个功能,目前还没有就下一步做什么达成共识。