WebAssembly is a new programming language that is supported by modern Web browsers. It is gaining attention for its safety, portability, and high performance. WebAssembly runtimes boost speed by compiling the programs into machine code, but bugs in the compilers can break an application developer’s assumptions or induce a security problem by allowing attackers to escape the sandbox. In this research, we propose ORGFuzz, a new differential fuzzer for WebAssembly compilers. Our fuzzer efficiently tests optimization routines by generating test cases with the guidance of compiler optimization rules. Also, we propose a differential fuzzing-aware test case generation method that exposes semantic bugs to the results. With these two methods, ORGFuzz achieved 91.39% rule coverage on optimization rules, finding a total of 10 previously unknown bugs in two engines including one CVE.
웹 어셈블리는 최신 브라우저에서 지원되는 새로운 프로그래밍 언어이다. 웹 어셈블리는 안전성, 휴대 가능성, 그리고 높은 성능으로 주목을 받고 있다. 웹 어셈블리 런타임들은 컴파일러를 통해 프로그램들을 기계어로 바꾸어 속도를 높이는데, 이때 버그로 인해 잘못된 기계어를 생성하면 문제가 생긴다. 이는 앱들이 의도한 대로 동작하지 않게 하거나 공격자로 하여금 샌드박스에서 탈출하게 하는 등의 보안 문제를 야기할 수 있다. 본 연구에서는 웹 어셈블리를 위한 새로운 차등 퍼저를 제안한다. 이는 웹 어셈블리 런타임 wasmtime으로부터 최적화 규칙을 추출하여 테스트 프로그램을 생성함으로써 효과적으로 최적화 루틴들을 테스트한다. 또한, 새로운 차등 퍼징 인식 테스팅 생성 방법을 통해 의미론적인 버그들이 결과로 표출될 수 있도록 한다. 이들을 통해 퍼저는 91.39%의 최적화 규칙을 탐색할 수 있었으며, 두 개의 엔진에서 한 개의 CVE를 포함하여 총 10개의 새로운 버그를 발견하였다.