黑客越來越多地使用 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 二進制文件中的問題。