Le module de sécurité des références Move présente une vulnérabilité de débordement d'entier
Récemment, une vulnérabilité grave de dépassement d'entier a été découverte dans le module de sécurité des références du langage Move. Cette vulnérabilité pourrait entraîner des attaques par déni de service, représentant une menace potentielle pour la sécurité du langage Move.
Le langage Move effectue une vérification de code avant d'exécuter le bytecode, qui se divise en plusieurs étapes. Cette vulnérabilité apparaît dans l'étape reference_safety, qui est responsable de la vérification de la sécurité des références, y compris le contrôle de l'existence de références suspendues et la sécurité d'accès aux références mutables.
La source de la vulnérabilité réside dans un problème de débordement d'entier dans le module de sécurité référencé. Lorsque la somme du nombre de paramètres de fonction et du nombre de variables locales dépasse 256, l'utilisation du type u8 pour itérer sur les variables locales peut entraîner un débordement d'entier. Ce débordement peut être exploité pour contourner les vérifications de sécurité, entraînant finalement une attaque par déni de service.
Plus précisément, le processus d'exploitation des vulnérabilités est le suivant :
Construire un bloc de code Move contenant une boucle pour qu'il s'exécute plusieurs fois.
Définir de nombreux paramètres de fonction et variables locales, de sorte que leur somme dépasse 256.
Lors de la première exécution, en raison d'un débordement d'entier, la longueur de la nouvelle carte des locaux deviendra une très petite valeur.
Lors de l'exécution ultérieure, tenter d'accéder à un index de variable locale inexistant entraîne un panic et un plantage du programme.
Cette vulnérabilité révèle que même des langages axés sur la sécurité comme Move peuvent avoir des failles de sécurité négligées. Elle nous rappelle l'importance des audits de code et la nécessité d'une prise en compte plus globale de la sécurité dans la conception des langages.
Pour les utilisateurs et développeurs du langage Move, il est conseillé de suivre de près les mises à jour de sécurité officielles. En même temps, lors de l'écriture de code Move, il est également important de contrôler le nombre de paramètres de fonction et de variables locales, afin d'éviter de déclencher ce type de situation limite.
D'un point de vue plus macro, cette vulnérabilité reflète également le fait que s'appuyer uniquement sur une validation statique peut ne pas suffire à garantir une sécurité totale. À l'avenir, le langage Move pourrait nécessiter l'ajout de davantage de vérifications dynamiques à l'exécution pour éviter des problèmes de sécurité similaires.
Dans l'ensemble, la découverte de cette vulnérabilité prouve à nouveau l'importance de la recherche continue en matière de sécurité pour améliorer la sécurité des technologies blockchain. Avec l'application croissante du langage Move dans le domaine du Web3, nous espérons voir davantage de mesures d'amélioration de la sécurité être introduites pour construire un écosystème de contrats intelligents plus robuste et fiable.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
17 J'aime
Récompense
17
9
Partager
Commentaire
0/400
FUDwatcher
· 07-11 15:51
J'ai encore parlé de la perte de débordement la semaine dernière en faisant référence à Move.
Voir l'originalRépondre0
PriceOracleFairy
· 07-10 20:42
omg le mouvement se fait démolir par le débordement de base u8... comment les auditeurs ont-ils raté ça smh
Voir l'originalRépondre0
ImpermanentLossEnjoyer
· 07-08 18:08
move ça a aussi échoué, n'est-ce pas
Voir l'originalRépondre0
FastLeaver
· 07-08 18:00
Franchement, move a maintenant G.
Voir l'originalRépondre0
UnluckyLemur
· 07-08 17:59
move c'est vraiment insupportable.
Voir l'originalRépondre0
HackerWhoCares
· 07-08 17:58
C’est trop végétal8, les déversements peuvent déborder
La menace de la vulnérabilité de dépassement d'entier du module de sécurité référencé par le langage Move.
Le module de sécurité des références Move présente une vulnérabilité de débordement d'entier
Récemment, une vulnérabilité grave de dépassement d'entier a été découverte dans le module de sécurité des références du langage Move. Cette vulnérabilité pourrait entraîner des attaques par déni de service, représentant une menace potentielle pour la sécurité du langage Move.
Le langage Move effectue une vérification de code avant d'exécuter le bytecode, qui se divise en plusieurs étapes. Cette vulnérabilité apparaît dans l'étape reference_safety, qui est responsable de la vérification de la sécurité des références, y compris le contrôle de l'existence de références suspendues et la sécurité d'accès aux références mutables.
La source de la vulnérabilité réside dans un problème de débordement d'entier dans le module de sécurité référencé. Lorsque la somme du nombre de paramètres de fonction et du nombre de variables locales dépasse 256, l'utilisation du type u8 pour itérer sur les variables locales peut entraîner un débordement d'entier. Ce débordement peut être exploité pour contourner les vérifications de sécurité, entraînant finalement une attaque par déni de service.
Plus précisément, le processus d'exploitation des vulnérabilités est le suivant :
Construire un bloc de code Move contenant une boucle pour qu'il s'exécute plusieurs fois.
Définir de nombreux paramètres de fonction et variables locales, de sorte que leur somme dépasse 256.
Lors de la première exécution, en raison d'un débordement d'entier, la longueur de la nouvelle carte des locaux deviendra une très petite valeur.
Lors de l'exécution ultérieure, tenter d'accéder à un index de variable locale inexistant entraîne un panic et un plantage du programme.
Cette vulnérabilité révèle que même des langages axés sur la sécurité comme Move peuvent avoir des failles de sécurité négligées. Elle nous rappelle l'importance des audits de code et la nécessité d'une prise en compte plus globale de la sécurité dans la conception des langages.
Pour les utilisateurs et développeurs du langage Move, il est conseillé de suivre de près les mises à jour de sécurité officielles. En même temps, lors de l'écriture de code Move, il est également important de contrôler le nombre de paramètres de fonction et de variables locales, afin d'éviter de déclencher ce type de situation limite.
D'un point de vue plus macro, cette vulnérabilité reflète également le fait que s'appuyer uniquement sur une validation statique peut ne pas suffire à garantir une sécurité totale. À l'avenir, le langage Move pourrait nécessiter l'ajout de davantage de vérifications dynamiques à l'exécution pour éviter des problèmes de sécurité similaires.
Dans l'ensemble, la découverte de cette vulnérabilité prouve à nouveau l'importance de la recherche continue en matière de sécurité pour améliorer la sécurité des technologies blockchain. Avec l'application croissante du langage Move dans le domaine du Web3, nous espérons voir davantage de mesures d'amélioration de la sécurité être introduites pour construire un écosystème de contrats intelligents plus robuste et fiable.