An Analysis of Modern Web Security Vulnerabilities Inside WebAssembly Applications

Cette étude démontre que les vulnérabilités binaires dans les modules WebAssembly peuvent compromettre la sécurité des applications web en contournant les mécanismes de défense habituels, et propose des stratégies pour atténuer ces risques.

Lorenzo Corrias, Lorenzo Pisu, Davide Maiorca, Giorgio Giacinto

Publié Wed, 11 Ma
📖 5 min de lecture🧠 Analyse approfondie

Each language version is independently generated for its own context, not a direct translation.

Voici une explication simple et imagée de ce papier de recherche, comme si nous en discutions autour d'un café.

🌍 Le Contexte : La Nouvelle Voiture de Course sur la Route du Web

Imaginez que le Web (Internet) est une grande autoroute. Pendant des années, toutes les voitures (les applications web) roulaient avec un moteur standard appelé JavaScript. C'est fiable, mais parfois un peu lent pour les courses très rapides ou très complexes (comme la modélisation 3D ou les jeux vidéo).

Pour aller plus vite, les développeurs ont introduit un nouveau moteur : WebAssembly (WASM). C'est comme si on prenait des voitures de course de Formule 1 (écrites en C ou C++) et qu'on les adaptait pour rouler sur l'autoroute du Web. Elles sont incroyablement rapides !

Le problème ? Ces voitures de course ont été construites pour des circuits privés (des ordinateurs classiques) où les règles de sécurité sont différentes. Sur l'autoroute du Web, elles n'ont pas les mêmes ceintures de sécurité ni les mêmes airbags.

⚠️ Le Danger : Quand la mécanique casse la sécurité

Les chercheurs de ce papier (Lorenzo et son équipe) ont découvert quelque chose d'inquiétant : les défauts mécaniques de la voiture de course peuvent faire exploser les règles de sécurité de l'autoroute.

Habituellement, on pense que si une voiture a un problème de moteur (une faille de sécurité informatique), elle s'arrête juste. Mais ici, un petit problème mécanique dans le code WASM peut permettre à un voleur de pirater tout le système de l'application web, même si l'application elle-même est bien protégée.

Voici les trois scénarios principaux qu'ils ont testés, expliqués avec des analogies :

1. L'Injection SQL : Le Voleur qui modifie la commande

  • La situation : Imaginez un serveur de restaurant (la base de données) qui reçoit des commandes écrites sur des petits papiers. Pour éviter les erreurs, le chef utilise un système de "commandes pré-remplies" (les requêtes préparées) où le client ne peut écrire que son nom, pas modifier la recette.
  • L'attaque WASM : Le cuisinier (le module WASM) a un problème de mémoire : il écrit la commande sur un petit bout de papier trop petit. Si le client écrit une commande trop longue, l'encre déborde et recouvre la recette originale !
  • Le résultat : Au lieu de dire "Apportez-moi un café", la commande déborde et devient "Apportez-moi TOUS les cafés ET donnez-moi les codes secrets du coffre". Le chef, confiant, exécute la nouvelle commande.
  • La leçon : Même si vous avez un système de sécurité parfait, si le cuisinier (WASM) est maladroit, il peut écraser vos règles.

2. L'Injection de Modèle (SSTI) : Le Faux Ticket de Métro

  • La situation : Le serveur web génère des pages web en utilisant un modèle (un gabarit). Il remplit les trous avec des informations sûres, comme un "numéro de sécurité" (un nonce) généré par le module WASM. Le serveur fait confiance à ce numéro.
  • L'attaque WASM : Le module WASM, à cause d'un bug, génère un numéro de sécurité qui contient en réalité une instruction cachée, comme "Ouvre la porte arrière".
  • Le résultat : Le serveur, voyant que le numéro vient du module WASM (qu'il fait confiance), l'accepte et exécute l'instruction cachée. C'est comme si un faux billet de métro disait "Je suis un billet valide" mais qu'en réalité, il contenait un code pour ouvrir les portes de la banque.
  • La leçon : Ne faites pas aveuglément confiance à ce que produit le module WASM. C'est comme ne pas vérifier si un livreur a bien fermé sa caisse avant de lui donner vos clés.

3. Les XS-Leaks : Le Chronomètre du Voleur

  • La situation : Imaginez que vous voulez savoir si un voleur a trouvé un secret dans votre maison, mais vous ne pouvez pas entrer chez lui pour regarder.
  • L'attaque WASM : Le voleur envoie une question très complexe au module WASM (comme un casse-tête mathématique).
    • Si le secret est "A", le module met 1 seconde à répondre.
    • Si le secret est "B", il répond en 0 seconde.
  • Le résultat : En mesurant le temps de réponse avec un chronomètre ultra-précis, le voleur devine lettre par lettre votre secret, sans jamais avoir besoin de lire le contenu directement.
  • La leçon : Le simple fait de réfléchir plus longtemps peut trahir un secret, même si le module WASM est isolé dans une boîte.

🛡️ Comment se protéger ? (Les Conseils des Chercheurs)

Les chercheurs ne disent pas "arrêtez d'utiliser WASM", mais ils donnent des conseils pour ne pas se faire avoir :

  1. Vérifiez les frontières : Quand le Web (JavaScript) parle au moteur de course (WASM), vérifiez deux fois les informations. Ne faites jamais confiance aveugle.
  2. Réduisez les portes : N'ouvrez au module WASM que les pièces strictement nécessaires. Moins il a accès, moins il peut faire de dégâts.
  3. Ajoutez des airbags : Utilisez des outils de compilation (comme Emscripten) qui ajoutent des protections automatiques contre les débordements de mémoire, même si cela rend la voiture un tout petit peu moins rapide.
  4. Nettoyez les entrées : Même si le module est rapide, nettoyez toujours ce qui entre et ce qui sort.

🎯 En résumé

Ce papier nous dit : La vitesse ne doit pas tuer la sécurité.

WebAssembly est une technologie géniale pour rendre le web plus rapide, mais elle ramène avec elle les vieux problèmes des langages comme le C (comme les débordements de mémoire). Si les développeurs ne sont pas prudents, un petit bug mécanique dans le code WASM peut permettre à un pirate de voler des données, de modifier des bases de données ou de lire des secrets, en contournant toutes les protections habituelles du web.

Il faut traiter ces modules WASM avec la même rigueur de sécurité que n'importe quel logiciel critique, et ne jamais supposer qu'ils sont "magiquement" sûrs juste parce qu'ils tournent dans un navigateur.