
Nouvelle vulnérabilité découverte par TonBit, filiale de BitsLab, dans la machine virtuelle TON : l'instruction RUNVM pourrait entraîner une pollution de l'environnement d'exécution des contrats intelligents
TechFlow SélectionTechFlow Sélection

Nouvelle vulnérabilité découverte par TonBit, filiale de BitsLab, dans la machine virtuelle TON : l'instruction RUNVM pourrait entraîner une pollution de l'environnement d'exécution des contrats intelligents
Un attaquant peut, au moment où la sous-machine virtuelle épuise le gas, corrompre les bibliothèques (libraries) de la machine virtuelle hôte et provoquer l’échec des appels ultérieurs, entraînant ainsi un comportement anormal des contrats dépendant de l’intégrité des bibliothèques.
Auteur : BitsLab
TonBit, filiale de BitsLab, a découvert un nouveau « bombe invisible » dans le code profond de la machine virtuelle TON (TVM) : une vulnérabilité de migration d'état non atomique liée à l'instruction RUNVM. Un attaquant peut exploiter l'instant où une sous-machine virtuelle épuise son gas pour contaminer les bibliothèques (libraries) de la machine virtuelle parente et provoquer des échecs lors des appels suivants, entraînant ainsi un comportement anormal des contrats dépendant de l'intégrité des bibliothèques.
Nous conservons ci-dessous le texte technique original afin de présenter aux développeurs le processus complet de découverte et de vérification de cette vulnérabilité, permettant ainsi à la communauté de mieux comprendre ce problème et d'améliorer sa vigilance face à des risques similaires.

Description détaillée de la vulnérabilité :
L'instruction RUNVM dans TVM peut contaminer l'état de l'appelant et rendre les bibliothèques inaccessibles. Une nouvelle vulnérabilité a été découverte dans le code de l'instruction 'RUNVM', permettant de corrompre l'état de l'appelant. L'extrait de code concerné est le suivant :

Le code ci-dessus est responsable du démarrage d'une sous-machine virtuelle. Il transfère les éléments 'log' et 'libraries' du VmState actuel vers un nouvel objet VmState appelé 'new_state', puis remplace le VmState courant par 'new_state'.
Le problème réside dans le fait que cette opération n'est pas véritablement atomique. Avant l'exécution de l'instruction '*this = std::move(new_state);', la machine virtuelle peut s'interrompre en cas d'épuisement du gas, empêchant ainsi 'new_state' de remplacer correctement l'état actuel. À ce stade, 'libraries' peut déjà avoir été transféré, laissant les bibliothèques de la sous-machine virtuelle dans un état vidé (déplacé).
Étant donné que l'instruction RUNVM implémente une isolation de consommation de gas entre la sous-machine et la machine parente via le paramètre isolate_gas, cela conduit au scénario suivant :
Même si la sous-machine virtuelle déclenche une exception due à l'épuisement du gas, la machine virtuelle parente conserve suffisamment de gas pour continuer l'exécution. Cependant, pendant la transition d'état ayant échoué, les bibliothèques ont déjà été déplacées ou vidées par la sous-machine, ce qui fait que toutes les opérations ultérieures dépendant de 'libraries' échoueront. Cette situation peut induire un comportement inattendu chez certains contrats supposant l'intégrité des bibliothèques.
Vérification de la vulnérabilité (preuve de concept - PoC)
Nous avons réussi à reproduire cette vulnérabilité grâce au cas de test suivant :



Explication des modifications clés du test :
Pour faciliter l'observation locale de l'état des bibliothèques, nous avons modifié l'instruction NOP afin d'enregistrer de force une entrée dans la bibliothèque :

Procédure de reproduction :
1) Ajouter ce cas de test au fichier crypto/test/vm.cpp
2) Exécuter le programme exécutable test-vm
3) Observer l'exception levée par l'instruction XLOAD en raison d'une bibliothèque vide
Comportement attendu :
Après exécution de l'instruction NOP : la bibliothèque contient 1 entrée
Après exécution de l'instruction RUNVMX : bien que la machine virtuelle parente continue de fonctionner, la bibliothèque devient vide
L'instruction XLOAD échoue et déclenche une exception
Cela démontre clairement qu'en combinaison, la migration non atomique d'état et le mécanisme d'isolation du gas produisent un état incohérent qui viole l'intégrité du contexte d'exécution.
Cette découverte illustre une fois de plus l'expertise approfondie de TonBit, filiale de BitsLab, dans la recherche sur la sécurité de l'écosystème TON. Nous avons immédiatement transmis les détails techniques et une proposition de correctif à la Fondation TON, et aidé à finaliser la correction. Nous recommandons vivement à tous les développeurs de mettre à jour leurs bibliothèques dès la publication du correctif officiel, et d'intégrer dans leurs propres contrats des vérifications plus strictes de l'intégrité des bibliothèques ainsi qu'une gestion rigoureuse du gas, afin d'empêcher toute exploitation malveillante similaire. BitsLab continuera de respecter le principe de « divulgation responsable » et œuvrera main dans la main avec la communauté pour renforcer la sécurité du Web3.
À propos de BitsLab
BitsLab est une organisation dédiée à la protection et au développement des nouveaux écosystèmes Web3, dont la vision est de devenir un acteur de sécurité Web3 respecté par l'industrie et les utilisateurs. Elle regroupe trois marques distinctes : MoveBit, ScaleBit et TonBit.
BitsLab se concentre sur le développement des infrastructures et les audits de sécurité des nouveaux écosystèmes, notamment (sans s'y limiter) Sui, Aptos, TON, Linea, BNB Chain, Soneium, Starknet, Movement, Internet Computer et Solana. Par ailleurs, BitsLab dispose d'une expertise avérée dans l'audit de plusieurs langages de programmation, notamment Circom, Halo2, Move, Cairo, Tact, FunC, Vyper et Solidity.
L'équipe BitsLab réunit plusieurs experts de premier plan en recherche de vulnérabilités, ayant remporté à plusieurs reprises des prix internationaux lors de compétitions CTF, et ayant découvert des vulnérabilités critiques dans des projets renommés tels que TON, Aptos, Sui, Nervos, OKX et Cosmos.
À propos de TonBit
TonBit, marque phare de BitsLab, est un expert et pionnier de la sécurité au sein de l'écosystème TON. En tant que principal fournisseur de sécurité pour la blockchain TON, TonBit se spécialise dans des audits de sécurité complets, y compris ceux portant sur les langages Tact et FunC, garantissant ainsi l'intégrité et la résilience des projets basés sur TON. À ce jour, TonBit a réalisé avec succès des audits pour plusieurs projets célèbres tels que Catizen, Algebra et UTonic, découvrant de nombreuses vulnérabilités critiques, démontrant ainsi son excellence dans le domaine de la sécurité blockchain. De plus, TonBit a organisé avec succès la compétition TON CTF, attirant de nombreux participants et suscitant un large intérêt, consolidant davantage sa position d'expert en sécurité au sein de l'écosystème TON. À l'avenir, TonBit continuera de protéger la sécurité blockchain et de soutenir le développement technologique et écologique durable.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














