"WebAssem私家侦探,侦探公司,调查公司,查人找物,商务调查,出轨外遇调查,婚外情调查,私人调查,19209219596bly安全探索:新趋势与模糊测试实践

 人参与 | 时间:2026-03-23 06:32:53

0关于WebAssembly

WebAssembly(Wasm)是种新型的高效且可移植的二进制指令格式,它能够作为多种编程语言(如C/C++/ Rust 等)的编译器的目标,并能在 Web 上运行出接近原始性能的程序。

在浏览器里,JavaScript被虚拟机(VM)执行,并使用即时编译技术(JIT)以提升性能。虽然JavaScript是当前最快的动态语言之一,但在性能上仍无法与C/C++这类原生编程语言相提并论。正是Wasm的优势所在,它运行在与JavaScript相同的VM中,但性能却更优。两者可以自由交互,并互相补充,让开发者能够享受到JavaScript生态丰富的生态系统和友好的语法,又能获得接近原生的高性能。

在开发WASM模块时,大多数程序员会使用C语言等编程语言来构建模块。然后,他们需要将这个模块编译成可执行的.wasm文件,并确保它可以被加载到浏览器中执行。但需要注意的是,这些.wasm文件不能直接被浏览器识别或访问,必须通过JavaScript中的代码进行添加和配置以使得它们在浏览器中运行。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

越来越多的安全问题与WebAssembly组件有关

Wasm作为现代Web应?的核心技术之一,通过沙箱化的执行机制,实现了接近原生的性能和安全性的双重保障,其应用范围已超越浏览器,快速渗透到云计算、物联网、边缘计算等关键领域。然而,随着Wasm的普及,其安全隐患也逐渐显现。

根据厂商所揭示的信息显示,更多的安全漏洞来自于Wasm组件方面。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

Wasm的安全威胁已多次通过黑客实验证明。在去年举办的Pwn2Own 2021竞赛中,研究人员发现并利用了Safari浏览器中的JavaScriptCore引擎的编译器漏洞(CVE-2021-1801),成功实现了远程代码执行(RCE)。同年举办的Pwn2Own 2023竞赛同样也证实V8引擎的相关Wasm安全漏洞,攻破了Chrome浏览器。各大软件公司的漏洞公告平台上也能看到越来越多的针对Wasm的安全漏洞信息。

自2017年11月Wasm社区组(CG)发布最小可行产品(MVP)标准以来,该技术栈始终处于动态演进状态。四大主流浏览器厂商(Chrome、Edge、Firefox、Safari)通过标准化进程持续推进特性扩展。截至目前,虽然还有许多特性尚未完全支持,但是Wasm标准也在不断更新,这些新特性的引入势必会带来潜在的漏洞风险。因此,Wasm已成为当前浏览器漏洞挖掘的热点,并具有长期的研究价值。

云鼎实验室专注于WASM安全审计,在此领域已深耕多年,他们通过深人研究发现并成功挖掘出了一系列重大漏洞,随后将这些漏洞详细列出,提交给各大安全认证机构及主流浏览器公司进行验证与确认,并得到了苹果Safari和Mozilla基金会的官方认可。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

2WebAssembly模糊测试实践

从2022年到2024年的Black Hat大会,私家侦探,侦探公司,调查公司,查人找物,商务调查,出轨外遇调查,婚外情调查,私人调查,19209219596都聚焦了有关Wasm安全的讨论。在这些研讨会中,主要应用模糊测试(fuzzing)方法来发掘和探索潜在的安全漏洞。

云鼎实验室在Wasm领域曾经开展过模糊测试工作,但由于当时的效果并不明显,他们决定吸取Black Hat上的教训,并对Wasm进行重构后编写Fuzzer,最终成功发现新漏洞。

改写后的Wasm Fuzzer工作流程如下:

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

1. 生成种群:从语料库抽取初始种子,再通过随机变异性变化,进而形成新的随机输入输出组合。

生成器:将随机输入转换给生成器,映射为结构完整且有效的WebAssembly模块。

3. JS 模板嵌入:将生成的 WASM 模块嵌入到预先准备好的 JS 模板中。

4. 执行与反馈:使用浏览器的JS引擎解释执行生成的JS样本,并回传覆盖率信息,形成反馈循环。

在这之中,关键技术集中在以下几点:

●生成器的设计:Wasm模块是一个结构化的输入,因此Fuzzer的核心在于如何让生成器尽可能生成合法且多样化的样本。随着Wasm标准的更新以及新特性的引入,构建一个支持全面特性的高效生成器具有挑战性。

·JS模板设计:精心设计的JS模板有助于提高引擎对各种行为的有效触发能力。例如,通过构建循环结构,可以显著增加热点代码的执行频率,进而促使不同级别的JIT编译器调用。

在分析现有工作后,云鼎实验室发现Chrome V8为了方便内部测试而提供了构建Wasm的接口,使用这些接口,开发者可以更细致地构建和部署Wasm模块。这一举措显著降低了开发成本,并紧跟了V8对Wasm新特性的支持。

此外,云鼎实验室也创建了JavaScript模板来引发JIT和捕获未中断错误。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

很短时间之后,新的改进版Fuzz测试器就取得了显著的效果。

3新的漏洞:CVE-2025-1933

Firefox也是这样做的,它也有JIT 编译器,它的三个级别:基线(Baseline)、离子(Ion)和优化(Optimizing)。更具体地说,代码的执行频率越高,优化级别就越高。也就是说,同一个函数的首次执行与1000次执行生成的机器码可能会完全不同,因为编译器可能已经发生变化了。

这个漏洞就产生了。

在这个过程中的单个函数调用中,执行了通过Wasm-Ion编译器编译的函数,并从其返回了一个整数3。对应的操作码如下所示: 汇编代码如下: 0: mov [ebp+12], 3 // 指针到栈顶的第一个存储单元,将整数值3存储在栈上

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

当函数运行结束时,它会在堆上分配并返回一个结果,而该值随后需要被提取以供后续使用。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

然而实际弹出值是0x7ffd00000003,其中低32位是对期望的值3正确的存储,但是高32位却未初始化成零。这是由于调用函数仅存储了一个int32(32位整数),没有正确清除高32位数据。 接着程序返回到JIT入口桩代码(JIT entry stub),执行了以下代码:

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

这段文字的注释中提到了一个名为`boxNonDouble`的函数,它的作用是处理某种特定的数据类型,并且假设了输入寄存器中的高32位已被清零。但是,在某些情况下,如果高位出现了错误数据(即垃圾数据),那么这个函数的结果可能就会出错,最终导致程序出现崩溃的问题。

4漏洞如何发生?如何修复?

由于未在64位操作系统中对int32类型的有效性进行正确检测,CVE-2025-1933的出现是必然的。

在系统不恰当地管理高位数据时,可能会出现高位数据残留在输出中。例如,在将返回值进行转储到对象存储或字符串处理等操作时,如果高位位数包含非零值,并转换成JavaScript的对象的Value类型的数值,那么这个数值可能被误读为其他类型的数据。

就详细情况而言,在GenerateJitEntry函数中,处理结果时未使用适当的方法来扩展int32类型的结果。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

然而,在使用boxNonDouble函数时,该函数默认假定ReturnReg数组中最高位已经清除,并且没有适当的零扩展,这可能导致高位位置上存储了无效的数据,当在与类型标签相加(或其他算术操作)之后,便得到不正确的结果。

此漏洞的危害性比较重大,被评级为高危级别。恶意黑客如果巧妙地编造Wasm模 块文件,则有可能通过注入恶意程序的方式,利用栈溢出等技术手段迫使引擎在返回值的高位留下可被黑客控制的数据,从而实现程序的任意执行。

修补程序的修复办法简单直接。

要在64位系统中使用Masm.widenInt32(ReturnReg)功能扩展整数32位值,确保高32位被正确清除并防止出现高位残留数据问题,下面的补丁可以实现此目标: ``` Masm.widenInt32(ReturnReg); ``` 请注意将`RetunReg`替换为你的实际内存寄存器名。

【技术探索】WebAssembly安全研究:浏览器攻击面的新趋势与模糊测试实践

5大模型在WasmFuzzing中的应用

随着大规模语言模型的发展,在使用大规模语言模型进行模糊测试的方法变得越来越热门。理论研究显示,由于这类大模型能够理解以及生成源代码,因此它们能够帮助创造出更复杂和全面的测试样本以覆盖尽可能多的编程路径。

在Wasm Fuzzing领域,LLM可以用于:

将使用LLM来了解Wasm模块的架构和意义,生成更符合特定目的的测试样本。

●漏洞预测与分类:采用基于历史漏洞数据的技术,构建模型对即将可能出现的漏洞进行提前识别和分类。这有助于在实际测试工作中更加高效地筛选出需要特别关注的安全问题点。

辅助缺陷搜寻:当系统崩溃时,请使用LLM来协助定位并查明根源,这样就能更快地修复问题。

作为一种崭新的技术,Wasm还处于迅速成长中,是现代浏览器面临的主要威胁之一。新的特性以及新标准的引入,将会对网络安全研究人员带来新的挑战和机遇。腾讯安全及云鼎实验室也将继续监控并深入研究Wasm的相关内容,帮助企业及时发现安全风险,并不断完善防护措施。

参考来源

刘晓超博士,"Wasm执行期间利用现代浏览器的弱点:JavaScript引擎的软肋", 黑客大会2024

2.Cao, Y."Attacking WebAssembly Compiler of WebKit." Black Hat Asia 2023.

3.Ventuzelo, A."A Journey Into Fuzzing WebAssembly Virtual Machines." Black Hat USA 2022.

4.WebAssemblyCommunity Group."WebAssembly Features."

5.Apple Inc."JavaScriptCore."WebKit Source Code.

6.Google Inc."V8 JavaScript Engine."

7.Mozilla Foundation."gecko-dev."

顶: 288踩: 3