- profiter du format compact wasm pour transmettre des fichiers rapidement sur le réseau et les charger en tant que modules JavaScript ;
- obtenir des performances quasi natives sans utiliser de plug-in ;
- écrire un code à la fois performant et sécurisé, car il s'exécute dans le sandbox de sécurité du navigateur ;
- avoir un choix de langages en dehors de JavaScript. Il permet par exemple aux développeurs d'écrire du code en C ou C++, puis de compiler directement en wasm, sans devoir compiler le code en JavaScript d'abord. En dehors de C/C++, des langages supplémentaires (tels que Rust, C#, TypeScript, Java, Kotlin ou encore Go) seront supportés à l'avenir.
En février de l’année en cours, les premiers projets WebAssembly ont été mis à la disposition du public.
Le groupe de travail WebAssembly a publié trois premiers projets de travail publics :
- WebAssembly Core Specification, qui décrit la version 1.0 de la norme WebAssembly de base, un format de code sécurisé, portable et de bas niveau conçu pour une exécution efficace et une représentation compacte ;
- WebAssembly JavaScript Interface, qui fournit une API JavaScript explicite pour interagir avec WebAssembly ;
- WebAssembly Web API, qui décrit l'intégration de WebAssembly avec des plateformes Web plus larges.
Cependant, selon John Bergbom, chercheur en sécurité chez Forcepoint, les ajouts à venir à la norme WebAssembly pourraient rendre inutiles certaines des mesures d'atténuation mises en place au niveau du navigateur contre les attaques de Meltdown et de Spectre.
Pour certains, la montée en puissance des mineurs cryptomonnaie dans le navigateur (scripts de cryptojacking) peut être attribuée à l'ajout de WebAssembly dans les principaux navigateurs, car nombreux sont les mineurs dans le navigateur qui fonctionnent sur WebAssembly, et non sur du JavaScript pur.
Bergbom soutient qu'il existe plusieurs problèmes de sécurité potentiels à prendre en compte avec Wasm.
« Tout d'abord, comme avec l'implémentation de toute nouvelle fonctionnalité, la surface d'attaque d'un navigateur a augmenté : il existe un risque réel de bogues d'implémentation dans le support Wasm qui peut donner aux attaquants la possibilité d'exécuter du code dans le navigateur d'une victime.
« Ensuite, les applications Wasm elles-mêmes sont potentiellement exposées à certaines (mais pas toutes) des classes de vulnérabilité vues dans les applications natives. Ceci est une possibilité particulière pour les applications compilées à partir de bases de code préexistantes avec seulement des modifications mineures pour leur permettre de fonctionner dans le framework d’un navigateur.
« En troisième lieu, il n'y a actuellement aucun moyen de vérifier l'intégrité des applications Wasm. Cela signifie qu'il n'y a aucun processus pour vérifier qu'une application Wasm n'a pas été falsifiée ».
Parlant des applications Wasm potentiellement malveillantes, il indique que
« Malgré un objectif de conception Wasm qui était de protéger les utilisateurs contre les applications malveillantes, les acteurs malveillants ont encore beaucoup d'opportunités ».
En guise d’exemple, il rappelle que « Le minage de crypto-monnaie est devenue une activité populaire pour les acteurs malveillants, tirant parti du CPU et de l'électricité de la victime pour gagner de l'argent. Les mineurs basés sur JavaScript peuvent être injectés dans des pages Web compromises. Avec une approche basée sur Wasm, le retour sur investissement sera plus élevé pour les acteurs malveillants, car de lourds calculs mathématiques peuvent être effectués plus rapidement avec Wasm qu'avec JavaScript. À ce jour, la majorité des échantillons de Wasm que nous avons analysés ont été associés à des mineurs de cryptomonnaie ».
Meltdown et Spectre
À l'époque où Meltdown et Spectre ont été présenté au public, des chercheurs ont publié un code de preuve de concept qu'un attaquant aurait pu utiliser pour exploiter à distance ces vulnérabilités du processeur, via Internet, en utilisant du code JavaScript exécuté dans le navigateur.
Ce code d'attaque utilisait les fonctions natives internes des navigateurs pour mesurer les intervalles de temps, tels que "SharedArrayBuffer" et "performance.now ()".
Les navigateurs comme Firefox et Chrome ont réagi en publiant des mises à jour qui ont atténué la précision de ces fonctions de temporisation, rendant inefficaces les attaques Meltdown et Spectre, ainsi que d'autres attaques par canal latéral.
Mais Bergbom avance « Qu’une autre opportunité pour un attaquant peut être l'exploitation de bogues matériels. Très récemment, une nouvelle attaque de canal secondaire du processeur, Speculative Store Bypass (CVE-2018-3639), a été annoncée. Plus tôt cette année, en réponse aux vulnérabilités du processeur Spectre et Meltdown, cette famille de vulnérabilités du processeur a été atténuée dans les navigateurs en réduisant la précision des temporisateurs en JavaScript. Cependant, une fois que Wasm a pris en charge les threads avec de la mémoire partagée (qui est déjà sur la feuille de route Wasm), des minuteurs très précis peuvent être créés. Cela peut rendre inefficaces les atténuations par navigateur de certaines attaques de canal côté processeur ».
En conclusion, il reconnaît que WebAssembly est une technologie intéressante, en particulier pour les développeurs cherchant à créer des programmes intensifs en performance qui s'exécutent indépendamment de la plate-forme dans les navigateurs (par exemple, les jeux).
Cependant, comme avec de nombreuses nouvelles technologies, il existe des problèmes de sécurité potentiels qui doivent être pris en compte. Collectivement, ils présentent de nouvelles opportunités pour les acteurs malveillants. Tout comme avec JavaScript, les possibilités avec Wasm sont extrêmement importantes.
Un membre de l'équipe WebAssembly a déclaré à qu'ils étaient conscients de ce problème et ont mis cette fonctionnalité en attente, pour le moment, même si aucun consensus n'a été trouvé pour décider de ce qu'il faut faire par la suite.
Source : ForcePoint
Voir aussi :
Sécurité des CPU : des chercheurs ont mis au point un nouveau « principe de conception », pour surmonter les vulnérabilités comme Meltdown et Spectre
Spectre/Meltdown : de nouvelles failles dans les processeurs, elles permettent de lire les registres internes, la mémoire kernel et celle de l'hôte
Des chercheurs révèlent de nouveaux défauts de fabrication dans les CPU, une nouvelle génération de vulnérabilités Spectre et Meltdown ?
Meltdown et Spectre : Intel abandonne le développement des mises à jour de microcodes pour certains processeurs, une décision qui ne surprend pas
Les premiers projets publics de travail de WebAssembly sont disponibles et portent sur la norme de base, l'interface JavaScript et l'API Web