Sécurité et confidentialité

Des failles critiques d'évasion du bac à sable de Wasmtime corrigées dans les dernières versions

Deux failles critiques dans l'exécution Wasmtime permettent à des modules WebAssembly malveillants de s'échapper des bacs à sable. Des correctifs sont disponibles pour les versions prises en charge.

Un cube en verre fissuré contenant du code lumineux, représentant un bac à sable brisé.
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

Les mainteneurs de l'exécution WebAssembly Wasmtime ont publié des correctifs de sécurité urgents les 19 et 20 octobre 2026 pour corriger deux vulnérabilités critiques. Ces failles, notées 9,9 sur 10 sur l'échelle CVSS, pourraient permettre à un module malveillant de sortir de son bac à sable et d'exécuter du code arbitraire sur le système hôte.

Ce qui s'est passé

La Bytecode Alliance, qui maintient Wasmtime, a identifié deux bugs distincts dans Cranelift, le compilateur par défaut utilisé pour traduire le WebAssembly en code machine. La première vulnérabilité, suivie sous le nom CVE-2026-115889, affecte les installations de Wasmtime sur toutes les architectures de processeur. La seconde, CVE-2026-115893, est spécifique aux systèmes ARM64 (aarch64). Les deux problèmes permettent une évasion du bac à sable si un attaquant peut fournir un module WebAssembly conçu spécifiquement à une exécution vulnérable.

Le risque est particulièrement aiguë pour les plateformes qui compilent et exécutent du code fourni par l'utilisateur, comme les environnements de calcul sans serveur. Par exemple, des services tels que la plateforme Compute de Fastly reposent sur Wasmtime pour isoler le code client. Bien que les avis ne nomment pas de victimes spécifiques ni ne détaillent l'accès post-exploitation, le potentiel de compromission totale de l'hôte est grave. Au 26 octobre, aucune exploitation active n'a été signalée, et aucune des deux failles n'apparaît dans le catalogue des vulnérabilités connues exploitées de la CISA.

Le statut de support joue un rôle majeur dans l'exposition. Seules les lignes de version 36, 48, 49 et 50 reçoivent actuellement des mises à jour de sécurité. Les anciennes lignes, y compris la branche LTS 24.x dont le support a pris fin le 20 août 2026, ne recevront pas de correctifs. Les utilisateurs sur des versions non prises en charge doivent mettre à niveau vers une ligne supportée pour atténuer ces risques.

Comment cela fonctionne

CVE-2026-115889 provient d'un débordement d'entier dans la façon dont Cranelift suit les valeurs au sein d'une fonction. Dans les versions antérieures à 43.0.0, le compilateur stockait ces numéros de suivi dans des champs de 24 bits. Si une fonction était assez grande ou complexe pour dépasser cette limite, la valeur débordait silencieusement dans les builds de release. Cela poussait Cranelift à référencer des valeurs incorrectes, entraînant une confusion de type et un code machine généré qui violait les contraintes du bac à sable. Le correctif élargit ces champs à 32 bits, un changement initialement fusionné en février pour des raisons de performance mais rétroportée sur la ligne LTS 36.x le 19 octobre pour des raisons de sécurité.

La faille spécifique à ARM64, CVE-2026-115893, concerne l'instruction br_table, qui gère les branches multiples. Lorsqu'un index tombe hors de la plage de la table, l'exécution saute vers une cible par défaut. Sur ARM64, Cranelift implémentait cela en utilisant une instruction de branchement avec une portée limitée d'environ 1 MiB. Si une br_table contenait plus d'environ 256 000 cibles, la table de sauts dépassait cette plage, faisant pointer le branchement vers un emplacement mémoire non intentionnel. Cela permettait à un module conçu spécifiquement de rediriger l'exécution vers du code arbitraire. Le patch modifie le flux de contrôle pour router les index hors plage via la table de sauts elle-même et plafonne la taille de br_table à 65 520 cibles.

Détails clés

  • CVE-2026-115889 affecte toutes les architectures ; CVE-2026-115893 affecte uniquement les systèmes ARM64.
  • Les deux vulnérabilités portent un score CVSS de 9,9, indiquant une sévérité critique.
  • Les versions corrigées incluent 36.0.19, 48.0.7, 49.0.4 et 50.0.0.
  • La ligne LTS 24.x n'est plus prise en charge et n'a reçu aucun patch ; les utilisateurs doivent migrer.
  • Dependabot pourrait ne pas alerter pour la faille ARM64 car GitHub ne dispose pas d'une entrée revue pour celle-ci.
  • La version 4.2.4 du framework Spin a été mise à jour vers Wasmtime 50.0.0 le 21 octobre.

Pourquoi c'est important

Pour les ingénieurs construisant des plateformes qui exécutent du WebAssembly non fiable, ces bugs représentent une défaillance fondamentale de l'isolation. Le bac à sable est le principal mécanisme de défense dans ce type d'architectures. Si un module peut s'échapper, il acquiert les privilèges du processus hôte, permettant potentiellement l'exfiltration de données, le mouvement latéral ou l'interruption de service. Le fait qu'un bug ait existé depuis 2020 souligne la difficulté d'auditer la logique des compilateurs de bas niveau, en particulier pour les cas limites spécifiques à une architecture.

De plus, la dépendance à des outils automatisés comme Dependabot peut donner un faux sentiment de sécurité. Parce que GitHub nécessite des entrées revues pour déclencher des alertes, et que la faille ARM64 en manquait fin octobre, certaines équipes pourraient rester inconscientes de leur exposition. Cela souligne la nécessité d'une vérification manuelle des arbres de dépendances contre les avis officiels des fournisseurs, en particulier pour les composants d'infrastructure critiques comme les exécutions.

Ce que vous pouvez faire

  • Identifiez votre version actuelle de Wasmtime et vérifiez si elle se situe dans les plages affectées listées dans l'avis.
  • Mettez à niveau vers 36.0.19, 48.0.7, 49.0.4 ou 50.0.0 selon votre ligne de version.
  • Si vous utilisez Wasmtime comme bibliothèque, reconstruisez votre application avec la version corrigée ; mettre à jour l'outil CLI est insuffisant.
  • Migrez loin des lignes de version non prises en charge comme 24.x, car elles ne recevront pas de futures corrections de sécurité.
  • Exécutez cargo-audit pour vérifier RUSTSEC-2026-0380 et RUSTSEC-2026-0379 dans vos fichiers de verrouillage de dépendances.
  • Surveillez les mises à jour des frameworks en aval comme Spin si vous ne gérez pas Wasmtime directement.
  • #wasmtime
  • #security
  • #webassembly
  • #vulnerability
  • #rust

Outils de la Boutique Bytechap

Continuer la lecture

Tous les articles