CVE-2026-34941Wasmtime是一个用于执行WebAssembly的高性能运行时。在特定旧版本中,该组件存在一处严重的安全漏洞,涉及UTF-16字符串转码过程中的内存越界读取。问题根源在于系统在执行边界检查时,错误地将代码单元数量当作字节长度进行验证,未能正确处理UTF-16编码的双字节特性。此漏洞可能被攻击者利用,导致主机进程崩溃从而实现拒绝服务攻击,甚至在特定配置下造成敏感内存信息泄露。
该漏洞的核心技术细节在于Wasmtime运行时在处理UTF-16到latin1+utf16组件模型编码转换时的边界验证逻辑缺陷。在受影响的版本中,开发人员在进行内存边界检查时,错误地使用了字符串的代码单元数量而非字节长度作为依据。由于UTF-16编码规范中,每个字符通常占用2个字节,实际所需的内存缓冲区大小应为代码单元数量的两倍。这种计算偏差导致验证机制失效,使得程序误判缓冲区边界。攻击者可以通过构造特制的WebAssembly模块,利用此漏洞触发越界读取操作。在默认配置下,这种越界访问会触及未映射的内存保护页,导致操作系统抛出段错误并终止进程,形成拒绝服务(DoS)。然而,若管理员为了性能优化禁用了保护页机制,攻击者将能够读取线性内存边界之外的宿主进程数据,从而导致严重的信息泄露风险。