Le module de sécurité des références Move présente une vulnérabilité de débordement d'entier
Récemment, des chercheurs en sécurité ont découvert une nouvelle vulnérabilité de dépassement de capacité entière dans le module de sécurité des références du langage Move. Cette vulnérabilité se produit dans l'étape reference_safety du processus de validation du code, et peut entraîner une attaque par déni de service.
Le langage Move effectue une vérification du code avant d'exécuter le bytecode, qui se divise en quatre étapes. La sécurité des références (reference_safety) est l'une des étapes importantes, utilisée pour vérifier la sécurité des références, y compris la vérification de l'existence de références pendantes et la sécurité d'accès des références mutables, etc.
La vulnérabilité provient du traitement du nombre de variables locales lors de la validation de sécurité des références. Dans la fonction join_, si la somme du nombre de paramètres de la fonction et du nombre de variables locales dépasse 256, cela entraînera un débordement du type u8. Bien que le langage Move ait un processus de vérification du nombre de locals, il ne vérifie que le nombre de variables locales, sans inclure le nombre de paramètres.
Les attaquants peuvent construire un code Move spécial, exploitant cette vulnérabilité de débordement pour modifier l'état des blocs de code. Lors de la réexécution du bloc de base, si l'index requis par les instructions n'existe pas dans la nouvelle cartographie des variables locales, cela provoquera un panic, entraînant ainsi l'effondrement du nœud.
Des chercheurs en sécurité ont fourni un code de preuve de concept (PoC), en configurant un grand nombre de paramètres et de variables locales, provoquant un dépassement d'entier, ce qui a finalement entraîné un panic.
Cette vulnérabilité démontre une fois de plus que même les langages bien conçus peuvent présenter des risques de sécurité. Pour le langage Move, il est recommandé d'ajouter davantage de vérifications de sécurité à l'exécution, et de ne pas se fier uniquement aux vérifications effectuées lors de la phase de validation. Cela souligne également l'importance de l'audit de code, qui permet de détecter rapidement les négligences des développeurs.
En tant que pionniers de la recherche sur la sécurité du langage Move, l'équipe de sécurité a déclaré qu'elle continuera d'explorer en profondeur les problèmes de sécurité liés à Move. Ils ont également découvert une autre vulnérabilité du langage Move, dont plus de détails seront divulgués ultérieurement.
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.
13 J'aime
Récompense
13
4
Partager
Commentaire
0/400
SoliditySlayer
· 07-11 20:03
Il y a des failles tous les jours, ce n'est pas si grave.
Voir l'originalRépondre0
BlockchainGriller
· 07-11 20:02
Revoilà les bugs, la chanson de Move devient de plus en plus énigmatique~
La langue Move cite un module de sécurité exposant une vulnérabilité d'overflow d'entier pouvant entraîner un crash du Nœud.
Le module de sécurité des références Move présente une vulnérabilité de débordement d'entier
Récemment, des chercheurs en sécurité ont découvert une nouvelle vulnérabilité de dépassement de capacité entière dans le module de sécurité des références du langage Move. Cette vulnérabilité se produit dans l'étape reference_safety du processus de validation du code, et peut entraîner une attaque par déni de service.
Le langage Move effectue une vérification du code avant d'exécuter le bytecode, qui se divise en quatre étapes. La sécurité des références (reference_safety) est l'une des étapes importantes, utilisée pour vérifier la sécurité des références, y compris la vérification de l'existence de références pendantes et la sécurité d'accès des références mutables, etc.
La vulnérabilité provient du traitement du nombre de variables locales lors de la validation de sécurité des références. Dans la fonction join_, si la somme du nombre de paramètres de la fonction et du nombre de variables locales dépasse 256, cela entraînera un débordement du type u8. Bien que le langage Move ait un processus de vérification du nombre de locals, il ne vérifie que le nombre de variables locales, sans inclure le nombre de paramètres.
Les attaquants peuvent construire un code Move spécial, exploitant cette vulnérabilité de débordement pour modifier l'état des blocs de code. Lors de la réexécution du bloc de base, si l'index requis par les instructions n'existe pas dans la nouvelle cartographie des variables locales, cela provoquera un panic, entraînant ainsi l'effondrement du nœud.
Des chercheurs en sécurité ont fourni un code de preuve de concept (PoC), en configurant un grand nombre de paramètres et de variables locales, provoquant un dépassement d'entier, ce qui a finalement entraîné un panic.
Cette vulnérabilité démontre une fois de plus que même les langages bien conçus peuvent présenter des risques de sécurité. Pour le langage Move, il est recommandé d'ajouter davantage de vérifications de sécurité à l'exécution, et de ne pas se fier uniquement aux vérifications effectuées lors de la phase de validation. Cela souligne également l'importance de l'audit de code, qui permet de détecter rapidement les négligences des développeurs.
En tant que pionniers de la recherche sur la sécurité du langage Move, l'équipe de sécurité a déclaré qu'elle continuera d'explorer en profondeur les problèmes de sécurité liés à Move. Ils ont également découvert une autre vulnérabilité du langage Move, dont plus de détails seront divulgués ultérieurement.