WebAssembly 應用程式運行時 Wasmtime 中的嚴重漏洞

Wasmtime 6.0.1、5.0.1 和 4.0.1 修補程式修復了一個被評為嚴重漏洞 (CVE-2023-26489)。此漏洞允許資料寫入隔離 WebAssembly 程式碼邊界之外的記憶體區域,攻擊者可能會利用漏洞在隔離 WASI 環境之外執行其程式碼。

Wasmtime 是一個運行時,用於將帶有 WASI(WebAssembly 系統介面)擴充功能的 WebAssembly 應用程式作為常規獨立應用程式執行。該工具包採用 Rust 語言編寫,漏洞是由於 Cranelift 程式碼產生器在確定線性記憶體尋址規則時出現邏輯錯誤引起的,該程式碼產生器將與硬體無關的中間表示轉換為 x86_64 架構的可執行機器碼。

具體來說,對於 WebAssembly 應用程序,計算的是 35 位元有效位址,而不是 WebAssembly 允許的 33 位元位址,這將允許虛擬記憶體讀寫操作的限制推到了 34 GB,而沙盒環境設定從基底位址開始對 6 GB 提供了保護。因此,距離基址 6 到 34 GB 的虛擬記憶體範圍可供 WebAssembly 應用程式讀取和寫入。此記憶體可能託管其他 WebAssembly 執行時間或 WebAssembly 執行時間元件。

如果無法更新 Wasmtime 版本,阻止錯誤的解決方法包括指定「Config::static_memory_maximum_size(0)」選項以對任何線性記憶體存取啟用強制單獨邊界檢查(會導致顯著的效能損失)。另一種選擇是使用「Config::static_memory_guard_size(1 < 36)」設定來增加在有問題的虛擬記憶體範圍內分配的保護頁的數量(如果訪問,則會引發異常)(導致保留大量虛擬記憶體並限制可以同時運行的 WebAssembly 應用程式的數量)。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster