Search papers, labs, and topics across Lattice.
This paper introduces an automated static verification method for a subset of WebAssembly programs using constrained Horn clauses (CHCs) satisfiability solvers, addressing challenges associated with indirect function calls and complex panic handlers. By leveraging type information to filter candidates for indirect calls and employing control-flow analysis to summarize panic handlers, the authors significantly reduce the complexity of verification. Preliminary experiments demonstrate the effectiveness of this approach, suggesting a promising avenue for enhancing the safety and efficiency of WebAssembly applications.
Indirect function calls in WebAssembly can be effectively managed by filtering candidates, drastically simplifying the verification process.
WebAssembly is a stack-based imperative language widely used to develop safe and efficient Web applications. In this paper, we propose an automated static verification method for a subset of WebAssembly using a constrained Horn clauses (CHCs) satisfiability solver. Our main challenges are how to handle indirect function calls effectively and how to analyze huge panic handlers. A na茂ve approach to the former problem would be to model a function reference table as an array of functions' entry points, but it would suffer from having too many candidates for indirect calls, resulting in a large case analysis. We address the problem by utilizing type information and filtering candidates for each indirect function call. For the latter problem, a panic handler, which is a function that is called when an error occurs, can be very large and complex. We mitigate this problem by summarizing the panic handler using control-flow analysis. We confirmed the effectiveness of our approach through preliminary experiments.