Litcius/Paper detail

That’s a Tough Call: Studying the Challenges of Call Graph Construction for WebAssembly

Daniel Lehmann, Michelle Davies Thalakottur, Frank Tip, Michael Pradel

202311 citationsDOI

Abstract

WebAssembly is a low-level bytecode format that powers applications and libraries running in browsers, on the server side, and in standalone runtimes. Call graphs are at the core of many interprocedural static analysis and optimization techniques. However, WebAssembly poses some unique challenges for static call graph construction. Currently, these challenges are neither well understood, nor is it clear to what extent existing techniques address them. This paper presents the first systematic study of WebAssembly-specific challenges for static call graph construction and of the state-of-the-art in call graph analysis. We identify and classify 12 challenges, encode them into a suite of 24 executable microbenchmarks, and measure their prevalence in real-world binaries. These challenges reflect idiosyncrasies of WebAssembly, such as indirect calls via a mutable function table, interactions with the host environment, and unmanaged linear memory. We show that they commonly occur across a set of more than 8,000 real-world binaries. Based on our microbenchmarks and a set of executable real-world binaries, we then study the soundness and precision of four existing static analyses. Our findings include that, surprisingly, all of the existing techniques are unsound, without this being documented anywhere. We envision our work to provide guidance for improving static call graph construction for WebAssembly. In particular, the presented microbenchmarks will enable future work to check whether an analysis supports challenging language features, and to quantify its soundness and precision.

Topics & Concepts

Computer scienceCall graphSoundnessExecutableStatic analysisBytecodeGraphProgramming languageSet (abstract data type)SuiteTheoretical computer scienceJavaArchaeologyHistoryAdvanced Malware Detection TechniquesSoftware Testing and Debugging TechniquesSoftware Engineering Research
That’s a Tough Call: Studying the Challenges of Call Graph Construction for WebAssembly | Litcius