La vulnérabilité du dépassement d'entier dans le module de sécurité de Move peut entraîner un déni de service du Nœud.

robot
Création du résumé en cours

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 grave vulnérabilité d'overflow d'entier lors de l'analyse approfondie du langage Move. Cette vulnérabilité se trouve dans le module de vérification de sécurité des références et pourrait entraîner des attaques par déni de service. Cet article expliquera en détail le principe et l'impact de cette vulnérabilité.

Contexte de la vulnérabilité

Le langage Move effectue une vérification du code avant l'exécution du bytecode, y compris un contrôle de la sécurité des références. Ce processus se divise en plusieurs étapes, et la vulnérabilité découverte se situe à la phase de vérification de la sécurité des références.

Le principal processus de vérification de la sécurité est :

  1. Diviser le code en blocs de base
  2. Analyser chaque bloc de base
  3. État avant et après l'analyse de fusion
  4. Propager le résultat aux blocs suivants

Une structure AbstractState est utilisée pour représenter l'état d'analyse, contenant des informations sur les locaux et le graphique d'emprunt.

Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move

Détails de la vulnérabilité

La vulnérabilité se trouve dans la fonction join_ de l'état d'analyse de fusion. Cette fonction itère sur les locaux avec le type u8, mais si la somme de la longueur des paramètres et de la longueur des variables locales dépasse 256, un dépassement d'entier se produit.

Plus précisément :

  • utiliser self.iter_locals() pour itérer sur les locaux dans la fonction join_
  • iter_locals() retourne un itérateur de type u8
  • Si la longueur des paramètres + la longueur des variables locales > 256, l'itérateur débordera.

Bien que Move ait un processus de vérification du nombre de locaux, il ne vérifie que le nombre de variables locales, sans inclure la longueur des paramètres.

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Exploitation des vulnérabilités

Un attaquant peut construire un bloc de code en boucle, en utilisant un dépassement pour modifier l'état du bloc:

  1. Nombre total de paramètres et de variables locales > 256
  2. Après la première exécution, la longueur de la nouvelle carte des locaux va débordement et devenir plus petite.
  3. Lors d'une nouvelle exécution, l'accès à un index locals inexistant entraînera un panic.

Cela pourrait provoquer un refus de service par le nœud.

Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move

Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

Impact des vulnérabilités

Cette vulnérabilité peut entraîner :

  1. Le vérificateur de bytecode Move s'est écrasé
  2. Les nœuds de blockchain dépendant de Move refusent le service
  3. Contourner certaines vérifications de sécurité

Suggestions de réparation

  1. Ajouter une vérification de la longueur des paramètres dans le contrôle des frontières des locaux.
  2. Utilisez des types d'entiers plus grands comme u16 pour itérer les locaux.
  3. Ajouter des vérifications de sécurité supplémentaires lors de l'exécution

Résumé

Cette vulnérabilité démontre une fois de plus que même les langages conçus de manière rigoureuse peuvent présenter des failles de sécurité. Pour le langage Move, il est recommandé d'ajouter des vérifications de sécurité nécessaires non seulement à l'étape de validation, mais aussi au moment de l'exécution. Les chercheurs en sécurité continueront d'analyser en profondeur le langage Move afin de découvrir d'autres problèmes potentiels.

Numen Cyber a découvert une autre vulnérabilité critique dans le langage move

MOVE3.27%
Voir l'original
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.
  • Récompense
  • 6
  • Reposter
  • Partager
Commentaire
0/400
BackrowObservervip
· 08-11 11:51
move a encore une fois échoué
Voir l'originalRépondre0
MidnightTradervip
· 08-10 07:32
C'est encore quel débutant qui a écrit ce code, je suis à genoux.
Voir l'originalRépondre0
MevShadowrangervip
· 08-10 07:30
Encore en train de jouer avec le débordement d'entiers
Voir l'originalRépondre0
WagmiOrRektvip
· 08-10 07:29
Encore heureux que j'ai fermé toutes les positions Move auparavant.
Voir l'originalRépondre0
CommunityWorkervip
· 08-10 07:27
move va-t-il encore exploser ? Pourquoi s'inquiéter ?
Voir l'originalRépondre0
CryingOldWalletvip
· 08-10 07:26
Encore une faille ? move n'est plus si attrayant, n'est-ce pas ?
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)