IPBUF安全漏洞报告
English
CVE-2026-34944 CVSS 5.7 中危

CVE-2026-34944 Wasmtime越界读取漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-34944
漏洞类型
越界读取
CVSS评分
5.7 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Wasmtime

相关标签

WebAssemblyWasmtimeCranelift越界读取拒绝服务沙箱逃逸

漏洞概述

Wasmtime是一个高性能的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访客不可见,但这依然违背了沙箱的安全隔离原则。

攻击链分析

STEP 1
1
攻击者准备一个包含f64x2.splat指令的恶意WebAssembly模块。
STEP 2
2
攻击者诱导运行着受影响版本Wasmtime的服务或用户加载并执行该模块。
STEP 3
3
Wasmtime在x86-64且SSE3禁用的环境下,通过Cranelift编译该模块,生成存在越界读取缺陷的机器码。
STEP 4
4
执行编译后的代码时,程序尝试读取守卫页或沙箱外的8字节数据。
STEP 5
5
如果未启用信号陷阱,进程因段错误崩溃(DoS);若守卫页禁用,可能导致沙箱隔离失效。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
(module ;; PoC for CVE-2026-34944 ;; This module targets the f64x2.splat compilation issue in Cranelift. ;; Must be run on a vulnerable Wasmtime version on x86-64 with SSE3 disabled. (memory $0 1) (export "memory" (memory $0)) (func (export "vuln_func") (result v128) ;; The f64x2.splat instruction triggers the incorrect code generation ;; leading to an 8-byte out-of-bounds read. f64.const 3.14 f64x2.splat ) )

影响范围

Wasmtime < 24.0.7
24.0.0 <= Wasmtime < 36.0.7
36.0.0 <= Wasmtime < 42.0.2
42.0.0 <= Wasmtime < 43.0.1

防御指南

临时缓解措施
如果无法立即升级,请确保Wasmtime配置中启用了基于信号的陷阱,并且不要禁用内存守卫页。这些缓解措施可以有效防止因该漏洞导致的进程崩溃,并降低内存数据泄露的风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表