Owi: Performant Parallel Symbolic Execution Made Easy, an Application to WebAssembly - Archive ouverte HAL
Article Dans Une Revue The Art, Science, and Engineering of Programming Année : 2024

Owi: Performant Parallel Symbolic Execution Made Easy, an Application to WebAssembly

Résumé

In this paper, we present the design of Owi, a symbolic interpreter for WebAssembly written in OCaml, and how we used it to create a state-of-the-art tool to find bugs in programs combining C and Rust code. WebAssembly (Wasm) is a binary format for executable programs. Originally intended for web applications, Wasm is also considered a serious alternative for server-side runtimes and embedded systems due to its performance and security benefits. Despite its security guarantees and sandboxing capabilities, Wasm code is still vulnerable to buffer overflows and memory leaks, which can lead to exploits on production software. To help prevent those, different techniques can be used, including symbolic execution. Owi is built around a modular, monadic interpreter capable of both normal and symbolic execution of Wasm programs. Monads have been identified as a way to write modular interpreters since 1995 and this strategy has allowed us to build a robust and performant symbolic execution tool which our evaluation shows to be the best currently available for Wasm. Moreover, because WebAssembly is a compilation target for multiple languages (such as Rust and C), Owi can be used to find bugs in C and Rust code, as well as in codebases mixing the two. We demonstrate this flexibility through illustrative examples and evaluate its scalability via comprehensive experiments using the 2024 Test-Comp benchmarks. Results show that Owi achieves comparable performance to state-of-the-art tools like KLEE and Symbiotic, and exhibits advantages in specific scenarios where KLEE's approximations could lead to false negatives.
Fichier principal
Vignette du fichier
main.pdf (285.1 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-04627413 , version 1 (27-06-2024)
hal-04627413 , version 2 (02-09-2024)
hal-04627413 , version 3 (08-10-2024)
hal-04627413 , version 4 (25-10-2024)

Identifiants

  • HAL Id : hal-04627413 , version 2

Citer

Léo Andrès, Filipe Marques, Arthur Carcano, Pierre Chambart, José Fragoso Femenin dos Santos, et al.. Owi: Performant Parallel Symbolic Execution Made Easy, an Application to WebAssembly. The Art, Science, and Engineering of Programming, In press, 9 (2). ⟨hal-04627413v2⟩

Collections

INSERM
458 Consultations
322 Téléchargements

Partager

More