Nouvelle découverte d'une vulnérabilité de débordement d'entiers dans le langage Move
Récemment, des chercheurs en sécurité ont découvert une nouvelle vulnérabilité de dépassement d'entier lors de l'analyse approfondie du langage Move. Cette vulnérabilité se produit lors du processus de vérification de la sécurité des références du langage Move, ce qui pourrait entraîner un crash des nœuds.
Le langage Move effectue une validation du code avant l'exécution du bytecode, qui se divise en quatre étapes. Cette vulnérabilité se trouve dans l'étape de vérification de la sécurité des références. La vérification de la sécurité des références vérifie principalement s'il existe des références flottantes, si l'accès aux références mutables est sécurisé, et si l'accès aux références de stockage global est sécurisé, etc.
Le processus de vérification analysera chaque bloc de base. Un bloc de base est une séquence de code sans instructions de branchement, à l'exception des entrées et sorties. Move identifie les blocs de base en parcourant le bytecode, en recherchant des instructions de branchement et des instructions de boucle.
Le processus principal pour vérifier la sécurité des références est le suivant : exécuter le code pour chaque bloc de base, générer l'état après exécution, puis fusionner les états avant et après l'exécution, mettre à jour l'état du bloc et le propager aux blocs suivants. Ce processus sera exécuté de manière répétée jusqu'à ce que l'état ne change plus ou qu'une erreur se produise.
Une vulnérabilité se produit lors du processus d'état de fusion. Si la longueur des paramètres de la fonction plus la longueur des variables locales dépasse 256, cela entraînera un débordement de type u8. Bien qu'il existe un contrôle de code sur le nombre de variables locales, la longueur des paramètres n'est pas incluse.
L'utilisation de ce débordement peut changer l'état du bloc, rendant le nouvel état différent de l'ancien. Lorsqu'on exécute à nouveau le bloc de base, accéder à un index qui n'existe pas dans le nouvel état provoquera un crash du programme.
Les chercheurs ont fourni un code de preuve de concept qui peut déclencher cette vulnérabilité et provoquer un crash du nœud. Cela montre que même les langages à typage statique peuvent avoir des problèmes de sécurité, il est donc important d'effectuer des audits de code. Il est conseillé que le langage Move ajoute davantage de vérifications de sécurité à l'exécution, et pas seulement lors de la phase de validation.
La découverte de cette vulnérabilité démontre une fois de plus qu'il n'existe pas de code absolument sécurisé. Même les langages à typage fort peuvent avoir des vulnérabilités. Les chercheurs en sécurité continueront d'analyser en profondeur le langage Move à la recherche de problèmes potentiels.
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
9 J'aime
Récompense
9
7
Reposter
Partager
Commentaire
0/400
BlockchainRetirementHome
· Il y a 5h
Move doit-il refroidir ?
Voir l'originalRépondre0
MemeEchoer
· Il y a 5h
Encore en panne, c'est la quelle fois aujourd'hui ?
Voir l'originalRépondre0
AirdropBlackHole
· Il y a 5h
Cette vague de tendance s'est alignée~ move a encore explosé
Voir l'originalRépondre0
UncleLiquidation
· Il y a 5h
Il faut encore réparer la casserole.
Voir l'originalRépondre0
MidnightSnapHunter
· Il y a 5h
move est devenu frais
Voir l'originalRépondre0
ApeWithNoChain
· Il y a 5h
move encore en panne ? Ce n'est plus digne d'attente...
Voir l'originalRépondre0
ZenChainWalker
· Il y a 5h
Après avoir regardé, j'ai juste envie de m'allonger...
Une nouvelle découverte de vulnérabilité de débordement d'entier dans le langage Move peut provoquer l'effondrement des Nœuds.
Nouvelle découverte d'une vulnérabilité de débordement d'entiers dans le langage Move
Récemment, des chercheurs en sécurité ont découvert une nouvelle vulnérabilité de dépassement d'entier lors de l'analyse approfondie du langage Move. Cette vulnérabilité se produit lors du processus de vérification de la sécurité des références du langage Move, ce qui pourrait entraîner un crash des nœuds.
Le langage Move effectue une validation du code avant l'exécution du bytecode, qui se divise en quatre étapes. Cette vulnérabilité se trouve dans l'étape de vérification de la sécurité des références. La vérification de la sécurité des références vérifie principalement s'il existe des références flottantes, si l'accès aux références mutables est sécurisé, et si l'accès aux références de stockage global est sécurisé, etc.
Le processus de vérification analysera chaque bloc de base. Un bloc de base est une séquence de code sans instructions de branchement, à l'exception des entrées et sorties. Move identifie les blocs de base en parcourant le bytecode, en recherchant des instructions de branchement et des instructions de boucle.
Le processus principal pour vérifier la sécurité des références est le suivant : exécuter le code pour chaque bloc de base, générer l'état après exécution, puis fusionner les états avant et après l'exécution, mettre à jour l'état du bloc et le propager aux blocs suivants. Ce processus sera exécuté de manière répétée jusqu'à ce que l'état ne change plus ou qu'une erreur se produise.
Une vulnérabilité se produit lors du processus d'état de fusion. Si la longueur des paramètres de la fonction plus la longueur des variables locales dépasse 256, cela entraînera un débordement de type u8. Bien qu'il existe un contrôle de code sur le nombre de variables locales, la longueur des paramètres n'est pas incluse.
L'utilisation de ce débordement peut changer l'état du bloc, rendant le nouvel état différent de l'ancien. Lorsqu'on exécute à nouveau le bloc de base, accéder à un index qui n'existe pas dans le nouvel état provoquera un crash du programme.
Les chercheurs ont fourni un code de preuve de concept qui peut déclencher cette vulnérabilité et provoquer un crash du nœud. Cela montre que même les langages à typage statique peuvent avoir des problèmes de sécurité, il est donc important d'effectuer des audits de code. Il est conseillé que le langage Move ajoute davantage de vérifications de sécurité à l'exécution, et pas seulement lors de la phase de validation.
La découverte de cette vulnérabilité démontre une fois de plus qu'il n'existe pas de code absolument sécurisé. Même les langages à typage fort peuvent avoir des vulnérabilités. Les chercheurs en sécurité continueront d'analyser en profondeur le langage Move à la recherche de problèmes potentiels.