CVE-2026-34944Wasmtime是一个高性能的WebAssembly运行时。在24.0.7、36.0.7、42.0.2和43.0.1版本之前,当运行在禁用SSE3的x86-64平台上时,Cranelift编译器在处理f64x2.splat指令时存在漏洞。该缺陷导致编译器生成的代码可能会比必要情况多加载8个字节的内存。如果禁用了基于信号的陷阱机制,这种越界访问会导致因访问未映射的守卫页面而引发段错误,从而导致拒绝服务。若守卫页也被禁用,则存在读取沙箱外数据的风险。
该漏洞位于Wasmtime使用的Cranelift代码生成器中。在x86-64架构且SSE3指令集被禁用的特定环境下,编译器将WebAssembly的f64x2.splat指令转换为机器码时,未能正确限制内存加载范围。具体而言,生成的指令会执行一次超出预定边界的内存读取操作,额外读取8字节的数据。
在默认配置下,Wasmtime依赖基于信号的陷阱来捕获非法内存访问。然而,当该机制被禁用时,越界读取将直接触发操作系统的内存保护,导致访问未映射的守卫页面并引发SIGSEGV信号,最终导致进程崩溃。此外,如果系统管理员为了性能优化而禁用了内存守卫页,攻击者可能利用此漏洞读取沙箱边界之外的内存数据,尽管描述指出这些数据对WebAssembly访客不可见,但这依然违背了沙箱的安全隔离原则。