Wasmtime 的维护方 Bytecode Alliance 在 10 月 19 日发布的两份安全公告中,给两个漏洞都打了 9.9 分(CVSS 满分 10 分)。这两个漏洞都出在 Cranelift 上——Wasmtime 默认用来把 WebAssembly 编译成机器码的编译器。恶意 WebAssembly 模块有可能借此逃出本该困住它的沙箱。
![]()
Wasmtime 的定位是在浏览器之外运行 WebAssembly 代码,它常被当作库编进别的软件里。沙箱的作用是给模块划死边界:模块只能用自己的内存和宿主交给它的函数,代码只能跳到经过检查的位置。两个漏洞都要求攻击者能让存在漏洞的 Wasmtime 构建去编译自己控制的模块,因此风险最高的是那些编译他人所写模块的服务。
Fastly 就表示,其 Compute 平台用 Wasmtime 运行客户代码。公告没有点名任何受影响的服务,也没有说明攻击者逃出沙箱后能接触到什么。截至 10 月 26 日,这两个漏洞都不在美国网络安全和基础设施安全局(CISA)的已知被利用漏洞目录中,维护方也未报告任何攻击事件。
两个漏洞分别是什么
- CVE-2026-115889:影响所有处理器架构上的 Wasmtime。
- CVE-2026-115893:只影响 ARM64,也称 aarch64。
前者源于 Cranelift 记录函数内部值编号的方式。43 版之前,这些编号被塞进 24 位字段,在 release 构建中,超出字段容量的编号会静默溢出、不报任何错误。Cranelift 随后可能引用错误的值,生成错误的机器码。按公告说法,一个非常大的 WebAssembly 函数,或者刻意使用大量值的函数,可以借此制造类型混淆并逃出沙箱。
Wasmtime 主线其实早已移除这个问题:2 月 18 日合并的一项改动把字段拓宽到 32 位,随 3 月 20 日的 Wasmtime 43.0.0 发布,当时的描述只把它当作编译更大函数的手段,没提安全。36.x LTS 线在 10 月 19 日拿到同一改动,公告未说明安全影响是何时被认识到的。
后者涉及 br_table,这条 WebAssembly 指令按索引跳到代码中的多个位置之一,索引超出表范围则走默认目标。在 ARM64 上,Cranelift 用一个只能覆盖约 1 MiB 的分支把越界索引送往默认目标。当 br_table 的目标超过约 256,000 个,跳转表就大到超出该分支的覆盖范围,分支会静默指向错误位置。公告称,ARM64 上任何使用默认设置的 Wasmtime 引擎“都能被用户控制的 Wasm 模块强制跳到任意代码”。这个缺陷自 Wasmtime 于 2020 年首次支持 ARM64 起就存在。修复方式是让越界索引走跳转表本身,不再需要长分支;修复版本还会拒绝编译目标超过 65,520 个的 br_table。
哪些版本受影响
两个漏洞的修复时间不同,是否受影响取决于发布线和处理器架构。Wasmtime 的长期支持(LTS)版本号是 12 的倍数,支持两年;其他版本支持两个月。安全修复只对受支持的版本提供保证。目前仍在支持期的只有 36、48、49、50 四条发布线,其余发布线都没有修复,包括支持已于 2026 年 8 月 20 日结束的 24.x LTS 线。
还有一个容易漏掉的点:为修复早前一个 ARM64 上的 Cranelift 沙箱逃逸而在 4 月升级到 36.0.7、42.0.2 或 43.0.1 的 ARM64 主机,仍受 CVE-2026-115893 影响。
该怎么做
按各自发布线升级到修复版本:36.0.19、48.0.7 或 49.0.4。10 月 20 日发布的 Wasmtime 50.0.0 对两个漏洞都已修复。停留在不受支持发布线上的主机需要迁移到上述版本之一。
由于 Wasmtime 可作为库编进其他程序,只更新命令行工具并不能修好它们,每个内含 Wasmtime 的程序都需要用修复版本重新构建。两份公告都没有列出变通方案,在主机完成更新前,风险来自任何外部可提供的模块。
两个漏洞已收录进 RustSec——cargo-audit 工具用来检查 Cargo.lock 文件的数据库,编号为 RUSTSEC-2026-0380 和 RUSTSEC-2026-0379。截至 10 月 26 日,GitHub 的公告数据库对 CVE-2026-115889 有已审核条目,对 CVE-2026-115893 则没有。GitHub 表示只有已审核条目才会触发 Dependabot 告警,因此 Dependabot 用户不要指望收到 ARM64 漏洞的提醒。
用于构建无服务器 WebAssembly 应用、运行在 Wasmtime 之上的开源工具 Spin,已在 10 月 21 日发布的 4.2.4 版中切换到 Wasmtime 50.0.0。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.