Building Call Graph of WebAssembly Programs via Abstract Semantics

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Paccamiccio, Mattia, Raimondi, Franco, Loreti, Michele
Format: Preprint
Veröffentlicht: 2024
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866929428726022144
author Paccamiccio, Mattia
Raimondi, Franco
Loreti, Michele
author_facet Paccamiccio, Mattia
Raimondi, Franco
Loreti, Michele
contents WebAssembly is a binary format for code that is gaining popularity thanks to its focus on portability and performance. Currently, the most common use case for WebAssembly is execution in a browser. It is also being increasingly adopted as a stand-alone application due to its portability. The binary format of WebAssembly, however, makes it prone to being used as a vehicle for malicious software. For instance, one could embed a cryptocurrency miner in code executed by a browser. As a result, there is substantial interest in developing tools for WebAssembly security verification, information flow control, and, more generally, for verifying behavioral properties such as correct API usage. In this document, we address the issue of building call graphs for WebAssembly code. This is important because having or computing a call graph is a prerequisite for most inter-procedural verification tasks. In this paper, we propose a formal solution based on the theory of Abstract Interpretation. We compare our approach to the state-of-the-art by predicting how it would perform against a set of specifically crafted benchmark programs.
format Preprint
id arxiv_https___arxiv_org_abs_2407_14527
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Building Call Graph of WebAssembly Programs via Abstract Semantics
Paccamiccio, Mattia
Raimondi, Franco
Loreti, Michele
Software Engineering
Cryptography and Security
WebAssembly is a binary format for code that is gaining popularity thanks to its focus on portability and performance. Currently, the most common use case for WebAssembly is execution in a browser. It is also being increasingly adopted as a stand-alone application due to its portability. The binary format of WebAssembly, however, makes it prone to being used as a vehicle for malicious software. For instance, one could embed a cryptocurrency miner in code executed by a browser. As a result, there is substantial interest in developing tools for WebAssembly security verification, information flow control, and, more generally, for verifying behavioral properties such as correct API usage. In this document, we address the issue of building call graphs for WebAssembly code. This is important because having or computing a call graph is a prerequisite for most inter-procedural verification tasks. In this paper, we propose a formal solution based on the theory of Abstract Interpretation. We compare our approach to the state-of-the-art by predicting how it would perform against a set of specifically crafted benchmark programs.
title Building Call Graph of WebAssembly Programs via Abstract Semantics
topic Software Engineering
Cryptography and Security
url https://arxiv.org/abs/2407.14527