0%

WRTester

Cao S, He N, She X, et al. WRTester: Differential Testing of WebAssembly Runtimes via Semantic-aware Binary Generation[J]. arXiv preprint arXiv:2312.10456, 2023.

摘要

现有的测试框架受到测试用例质量的限制,即它们在生成语义丰富和语法正确的Wasm二进制文件方面面临挑战,因此无法触发复杂的错误。对真实世界Wasm二进制文件的反汇编和汇编来生成复杂的Wasm测试用例,从而触发Wasm运行时之间的隐藏不一致性。为了进一步确定意外行为的根本原因,我们设计了一种与运行时无关的根本原因定位方法,可以准确地定位错误。广泛的评估表明,WRTester在效率和效果方面优于现有技术。

在流行的Wasm运行时中发现了33个漏洞,其中25个已经得到确认。

Introduction

尽管最近的自动化测试方法通过Wasm二进制生成在识别Wasm运行时错误方面取得了有希望的结果,但它们受到无法生成语义丰富二进制文件的限制,因此无法触发复杂的错误。

例如,WADIFF只能测试单个指令级别的实现错误,因为它无法生成具有大量指令的测试用例,而真实世界的Wasm二进制文件实际上要复杂得多。具体而言,Wasm中存在超过430种指令和13种具有不同功能的部分类型,这表明Wasm是一种具有丰富语义的字节码格式。为了进行全面的测试,确保生成的Wasm二进制文件尽可能涵盖多样的语义是至关重要和必要的。

此外,不可能任意生成Wasm二进制文件,因为每个Wasm二进制文件在执行之前都应该经过语法正确性验证,包括堆栈平衡验证等,这确保了生成的Wasm二进制文件应该是符合语法的。

主要工作:从真实世界的Wasm二进制文件中提取基本元素,并将它们随机组装成具有有效语法和丰富语义的Wasm二进制文件的算法。

NeoDiff是随机在已有字节码后拼接、翻转比特、插入字节或进行特殊操作

image-20240113223841937

对应的CVE,确认时间