IPBUF安全漏洞报告
English
CVE-2026-35186 CVSS 7.5 高危

CVE-2026-35186 Wasmtime Winch编译器DoS及信息泄露漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-35186
漏洞类型
拒绝服务, 内存泄露
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Wasmtime

相关标签

WasmtimeWebAssemblyDoS内存泄露WinchCVE-2026-35186

漏洞概述

Wasmtime的Winch编译器后端在处理`table.grow`操作符时存在类型标注错误,将32位值误作64位处理。该缺陷可能导致主机进程崩溃(DoS),或在特定配置下泄露线性内存前16字节的数据。默认配置下仅受DoS影响。

技术细节

该漏洞源于Wasmtime的Winch编译器后端在翻译`table.grow`指令时产生的内部状态错误。对于32位表,Winch错误地将操作结果标记为64位值而非32位值。当该值被后续操作消费时,错误的类型表示会导致异常。主要后果是允许访问线性内存之前的16字节地址空间。由于Wasmtime默认配置在线性内存前设置了保护页,访问这些未映射内存会触发检测并中止进程,构成拒绝服务攻击。若管理员显式禁用了保护页,攻击者可能利用此漏洞读取主机内存敏感信息,造成数据泄露。值得注意的是,Cranelift是默认编译器,Winch需显式启用。

攻击链分析

STEP 1
1. 构造恶意Wasm代码
攻击者编写包含特定`table.grow`操作的WebAssembly代码,旨在触发Winch后端的类型标注错误。
STEP 2
2. 部署与执行
将代码上传至使用Winch后端(非默认Cranelift)的Wasmtime运行环境中执行。
STEP 3
3. 触发越界访问
Winch编译器错误处理返回值,导致程序访问线性内存之前的16字节区域。
STEP 4
4. 产生后果
若启用了保护页,进程因访问违规崩溃(DoS);若禁用了保护页,可能读取到主机内存数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
(module ;; Conceptual PoC for Wasmtime Winch backend vulnerability ;; This attempts to trigger the table.grow type confusion (table $0 1 10 funcref) (func (export "test") (result i32) ;; Attempt to grow the table, potentially returning -1 on failure ;; which may be mishandled by the Winch backend table.grow $0 (ref.null func) (i32.const 1) drop i32.const 0 ) )

影响范围

Wasmtime 25.0.0 至 36.0.7 之前
Wasmtime 42.0.0 至 42.0.2 之前
Wasmtime 43.0.0 至 43.0.1 之前

防御指南

临时缓解措施
确保线性内存前的保护页未被禁用,这可以将漏洞影响限制在拒绝服务,防止内存泄露。

参考链接

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