黑客越来越多地使用 WebAssembly 编码的加密矿工来逃避检测
多达 207 个网站已经感染了恶意代码,这些恶意代码旨在通过在浏览器上利用 WebAssembly (Wasm) 来启动加密货币矿工。
发布了该活动细节的网络安全公司 Sucuri 表示,在其一位客户每次导航到他们自己的 WordPress 门户时,他们的计算机都显着变慢后,它发起了一项调查。
这发现了一个主题文件的妥协,从远程服务器注入恶意 JavaScript 代码 - hxxps://wm.bmwebm[.]org/auto.js - 每当访问网站的页面时都会加载该代码。
Sucuri 恶意软件研究员 Cesar Anjos说: “一旦解码,auto.js 的内容会立即显示加密矿工的功能,当访问者登陆受感染的站点时,该加密矿工就会开始挖矿。 ”
更重要的是,去混淆的 auto.js 代码利用 WebAssembly 直接在浏览器上运行低级二进制代码。
所有主流浏览器都支持的WebAssembly是一种二进制指令格式,它比 JavaScript 提供了性能改进,允许用 C、C++ 和 Rust 等语言编写的应用程序被编译成一种低级的类汇编语言,可以直接在浏览器上运行。
“在 Web 浏览器中使用时,Wasm 在其自己的沙盒执行环境中运行,”Anjos 说。“由于它已经被编译成汇编格式,浏览器可以以 JavaScript 本身无法比拟的速度读取和执行其操作。”
参与者控制的域 wm.bmwebm[.]org 据说已于 2021 年 1 月注册,这意味着基础设施继续保持活跃超过 1.5 年而没有引起任何关注。
最重要的是,该域还具有自动生成 JavaScript 文件的能力,这些文件伪装成看似无害的文件或像 Google Ads 一样的合法服务(例如,adservicegoogle.js、wordpresscore.js 和 facebook-sdk.js),以隐瞒其恶意行为。
Anjos 指出:“此功能还使不良行为者可以在受感染网站的多个位置注入脚本,并且仍然保持注入在环境中‘属于’的外观。”
这不是WebAssembly在网页上运行高性能应用程序的能力第一次引发潜在的 安全 危险信号。
撇开 Wasm 的二进制格式使传统防病毒引擎的检测和分析更具挑战性这一事实不谈,该技术可能会为更复杂的基于浏览器的攻击打开大门,例如可以在雷达下长时间飞行的电子浏览。
更复杂的是,Wasm 模块缺乏完整性检查,实际上无法确定应用程序是否已被篡改。
为了帮助说明 WebAssembly 的安全弱点,斯图加特大学和慕尼黑联邦国防大学的一组学者在2020 年进行的一项研究发现了可用于写入任意内存、覆盖敏感数据和劫持控制流的安全问题。
2021 年 11 月发布的后续研究基于将 4,469 个具有已知缓冲区溢出漏洞的 C 程序翻译为 Wasm,发现“在没有额外预防措施的情况下将现有 C 程序编译到 WebAssembly 可能会妨碍其安全性。”
与此类似,一项涉及编译 17,802 个 C 程序的后续调查发现,当它们的 WebAssembly 和它们的 x86 二进制文件执行时,4,911 个 C 程序在 64 位 x86 和 WebAssembly 二进制文件中表现出已知的弱点,或者通过打印不同的输出,或通过不同的返回代码。
“将现有的 C 程序编译为 WebAssembly 以进行跨平台分发可能需要修改源代码;否则,WebAssembly 应用程序的安全性可能会受到威胁,”研究人员说。
为了应对经典代码缺陷从原始程序转移到交叉编译的 Wasm 二进制文件的情况,里斯本大学的学者发布了一个名为Wasmati的静态漏洞扫描程序来识别 Wasm 二进制文件中的问题。
