Paul Gauthier
Publié par Paul Gauthier
le 25/09/2018

WebAssembly: opportunités et dangers

Forcepoint a récemment commencé à s'attaquer au WebAssembly (aussi WA ou Wasm), dont la technologie implique de nombreux points de sécurité internet. Grossièrement, le Wasm est un moyen de distribuer du code dans le but d'être exécuté dans un navigateur web.

Qu'est-ce qu'un Wasm ?

Il s'agit d'un langage binaire et compact qui ne peut pas être directement lancé dans le processeur. Le code sera compilé dans un bytecode intermédiaire (similaire au CIL), qui pourra ensuite être rapidement converti en machine code dans le navigateur même, pour enfin être exécuté avec beaucoup plus d'efficacité qu'avec JavaScript. En effet, la vitesse d'exécution était la priorité lors de l'invention du Wasm.

Comme les programmes faits avec des langages comme le C ou le C++ peuvent être compilés en Wasm pour être exécutés dans un navigateur, de nouvelles possibilités apparaissent lors du portage d'application Windows vers des versions web.

Le modèle de sécurité Wasm

Les visées du modèle de sécurité Wasm sont:

  • Protéger les utilisateurs des applications vulnérables à cause de bugs;
  • Protéger les utilisateurs des applications malignes;
  • Fournir aux développeurs une solution pour limiter l'utilisation de failles.

Pour ce faire, quelques spécificités sont conçues dans les Wasm afin de permettre d'atteindre ces objectifs:

  • Une application Wasm se lance dans une sandbox;
  • L'appel de fonctions ne peut se faire vers des adresses arbitraires. À la place, les fonctions sont limitées et leur nombre est un index dans une fonction de table;
  • Les appels de fonction incorrects sont sujets à une vérification de signature;

Toutefois, il n'y a pas de sécurité 100% efficace sur une application Wasm et des abus restent possibles.

Problèmes de sécurité potentiels avec les Wasm

Plusieurs points critiques de sécurité sont à prendre en considération avec les Wasm.

Premièrement, comme pour toute implémentation de nouvelles fonctions, la surface d'attaque d'un navigateur augmente : il y a un risque réel d'implémentation de bug qui pourrait donner aux hackeurs une opportunité d'exécuter un code dans le navigateur de la victime.

Deuxièmement, les applications Wasm elles-mêmes sont potentiellement exposées à quelques-unes des vulnérabilités croisées dans les applications natives.

Enfin, il n'y a pour le moment aucun moyen d'effectuer un test d'intégrité sur les applications Wasm. Cela veut dire qu'il n'y a aucun moyen de vérifier si une application Wasm a été altérée ou non, ce qui peut provoquer certains problèmes au niveau de la sécurité.

Les applications malveillantes

Malgré l'objectif des Wasm en matière de protection des utilisateurs de lutter contre les applications malveillantes, les personnes mal intentionnées ont encore de nombreuses opportunités. Prenons quelques exemples.

L'exploitation de crypto-monnaie est devenue une activité populaire pour ces personnes, exploitant le processeur et l'électricité d'une victime pour gagner de l'argent. Les mineurs basés sur JavaScript peuvent en effet être injectés via des pages Web compromises.

Analyser les Wasm

Du fait que les Wasm sont des technologies encore récentes, il y a très peu d'outils disponibles pour le grand public, qui permettent d'analyser le format des Wasm. Plus d'info sur ce blog de Forcepoint. De la même manière, il existe très peu de documentation qui expliquent comment analyser les applications Wasm pour l'instant. Cela signifie que globalement, une application Wasm inconnue peut être comparée à une boite noire pour un analyste. Les chercheurs peuvent se servir des Wasm pour analyser uniquement le trafic réseau, sans pour autant être capables de comprendre comment fonctionne le code.

Il faut donc s'attendre à ce que la situation s'améliore avec le temps, à mesure que de nouveaux outils et documents seront publiés.

WebAssembly: conclusion

Le WebAssembly est donc une technologie intéressante, particulièrement pour les développeurs désireux de créer des programmes très performants, et ce indépendamment de la plateforme puisqu'exécutés dans un navigateur. Toutefois, l'utilisation de ce genre d'application soulève encore des beaucoup de questions et, comme pour de nombreuses nouvelles technologies, il existe des problèmes de sécurité potentiels à prendre en compte.

Ceux-ci présentent donc de nouvelles opportunités pour les personnes mal intentionnées. Tout comme avec JavaScript, les possibilités du Wasm sont très larges, pour ne pas dire infinies.

Pas encore membre de businest ?

Pour accéder à toutes les informations du réseau et interagir avec les autres membres :

Créez votre compte