Fondations formelles et exécution vérifiée pour WebAssembly

par Son Ho

Projet de thèse en Informatique

Sous la direction de Karthikeyan Bhargavan.

Thèses en préparation à l'Université Paris sciences et lettres , dans le cadre de École doctorale Sciences mathématiques de Paris centre , en partenariat avec DIENS - Département d'informatique de l'École normale supérieure (laboratoire) et de École normale supérieure (Paris ; 1985-....) (établissement opérateur d'inscription) depuis le 01-09-2020 .


  • Résumé

    Introduit en 2017, le WebAssembly est un environnement d'exécution portable associé à un format d'exécutables binaire moderne et doté d'une sémantique formelle assurant des propriétés fortes telles que sûreté et isolement des exécutions. Bien qu'initialement conçu comme une alternative au JavaScript et comme un moyen d'exécuter du code natif et haute performance dans les navigateurs Web, le WebAssembly est un langage extrêmement versatile et désormais utilisé dans de nombreux autres domaines - réseaux de diffusion de contenu, IoT, blockchain… Ces bonnes propriétés de sécurité sont cependant mitigées par le risque d'existence de failles d'implémentation et de portes dérobées dans les implémentations actuelles de compilateurs et d'environnements d'exécution. L'existence de ce risque, les fondations solides de ce langage et sa diffusion en font une cible de choix pour étudier la formalisation et la vérification de tels environnements. Nous avons pour projet de développer une version mécanisée de la sémantique formelle du WebAssembly, ainsi qu'une notion de sandboxing pour environnement d'exécution, dotée d'objectifs de sécurité. Nous implémenterons ensuite un environnement d'exécution vérifié pour WebAssembly et prouverons qu'il satisfait ces objectifs de sécurité. Enfin, nous utiliserons ce framework pour concevoir des implémentations sécurises de diverses applications distribuées.

  • Titre traduit

    Formal foundations and verified execution for WebAssembly


  • Résumé

    Introduced in 2017, WebAssembly is a modern portable execution environment combined to a binary executable format which possesses formal semantics enforcing strong properties such as security and insulation of the executions. Though initially designed as an alternative to JavaScript and as a way to execute high performance native code in Web browsers, WebAssembly is an extremely versatile language nowadays used in many other fields – IoT, blockchain… Those good security properties are however mitigated by the potential existence of security vulnerabilities and backdoors in the current implementations of compilers and execution environments. The existence of this risk, the solid foundations of this language and its large adoption make it a choice target to study the formalization and verification of such environments. We plan to develop a mechanized version of the WebAssembly formal semantics as well as a notion of execution environment sandboxing with security goals. We will then implement a verified WebAssembly execution environment and will prove that it reaches those security goals. Finally, we will use this framework to design secured implementations of various distributed applications.