CVE-2026-34987Wasmtime是一款WebAssembly运行时。在25.0.0至特定版本前,若启用非默认的Winch编译器后端,精心构造的guest Wasm代码可突破线性内存沙箱限制,非法访问主机内存。该漏洞源于编译器对寄存器高位清零的错误假设,可能导致主机进程崩溃、敏感数据泄露甚至潜在的远程代码执行,风险极高。
该漏洞存在于Wasmtime的Winch编译器后端,这是一种非默认的编译器选项。漏洞产生的根本原因是Winch编译器在处理内存偏移量时,错误地假设存储在64位寄存器中的32位内存偏移量的高位已被清零。然而,在实际执行过程中,这些高位可能包含未预期的值,导致计算出的内存地址发生偏移。攻击者可以通过构造特定的Wasm guest代码,利用此缺陷访问线性内存区域之前或之后的内存空间。在aarch64架构上已有可用的概念验证代码,x86-64架构理论上也存在风险。利用该漏洞,攻击者可以绕过沙箱保护,读取主机进程的任意内存数据(信息泄露),或写入数据导致段错误(拒绝服务)。在写入操作可控的情况下,甚至可能实现主机进程的任意代码执行(RCE)。