Analyse approfondie de la vulnérabilité de débordement d'entier du module de sécurité du langage Move

robot
Création du résumé en cours

Analyse des vulnérabilités d'overflow d'entiers du module de sécurité des références Move

Cet article analysera en profondeur une nouvelle vulnérabilité de débordement d'entier dans le langage Move. Cette vulnérabilité se trouve dans le module de vérification de la sécurité des références et pourrait entraîner un effondrement des nœuds. Grâce à l'explication de cet article, les lecteurs auront une compréhension plus approfondie du langage Move.

Contexte de la vulnérabilité

Le langage Move effectue une vérification de code avant d'exécuter le bytecode, qui se divise en 4 étapes. Cette vulnérabilité apparaît dans l'étape de vérification de la référence de sécurité (reference_safety).

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

  1. Identifier les blocs de code de base
  2. Analyser chaque bloc de base
  3. État avant et après la fusion
  4. Propager l'état aux blocs suivants

Le point clé est de maintenir la structure AbstractState, qui contient des locaux et un graphe d'emprunt pour garantir la sécurité des références.

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

Détails de la vulnérabilité

Une vulnérabilité existe dans la fonction join_. Lorsque la longueur des paramètres de la fonction ajoutée à la longueur des variables locales dépasse 256, un dépassement d'entier se produit en raison de l'utilisation d'une itération de type u8.

Plus précisément :

  • iter_locals() renvoie un itérateur de type u8
  • Débordement se produit lorsque la longueur des paramètres + la longueur des variables locales > 256
  • Le développeur n'a vérifié que le nombre de variables locales, ignorant la longueur des paramètres.

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

Exploitation des vulnérabilités

On peut construire un bloc de base cyclique, en utilisant un débordement pour changer l'état :

  1. La longueur totale des paramètres et des variables locales doit être supérieure à 256
  2. Après la première exécution, la longueur des nouveaux locals déborde et devient plus petite.
  3. Lors de l'exécution à nouveau, l'accès à un index locals inexistant entraîne un panic.

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

Démonstration PoC

Il fournit un code PoC reproductible, comprenant un bloc de base en boucle infinie. En réglant les paramètres appropriés et la longueur des variables locales, un DoS peut être déclenché.

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

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 nouvelle vulnérabilité critique dans le langage move

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

Conclusion

Cette faille souligne à nouveau :

  1. Il n'y a pas de code absolument sûr.
  2. L'importance de l'audit de code
  3. Le runtime de Move nécessite plus de vérifications de sécurité.
  4. La validation statique peut être contournée, la sécurité à l'exécution est tout aussi importante.

En tant que leader de la recherche sur la sécurité du langage Move, nous continuerons à explorer en profondeur les problèmes de sécurité connexes et à partager nos résultats de recherche avec la communauté.

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

MOVE3.36%
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
  • 8
  • Partager
Commentaire
0/400
WhaleMinionvip
· 07-26 05:03
Les attaques par dépassement de capacité sont arrivées.
Voir l'originalRépondre0
MevTearsvip
· 07-24 04:19
Qui a écrit ce code, il faut le vérifier dix fois.
Voir l'originalRépondre0
GasFeeCryervip
· 07-23 13:34
Les vulnérabilités peuvent être exploitées, et il y a des attaques par déni de service, c'est agréable.
Voir l'originalRépondre0
TopEscapeArtistvip
· 07-23 05:47
Faire des erreurs est le quotidien d'un marché baissier, il faut être prudent même en déplaçant des briques.
Voir l'originalRépondre0
TokenomicsTherapistvip
· 07-23 05:45
Ce bug est vraiment effrayant.
Voir l'originalRépondre0
TxFailedvip
· 07-23 05:43
mdr classique débordement d'entier... j'ai appris cela de la manière coûteuse à vrai dire
Voir l'originalRépondre0
SchrödingersNodevip
· 07-23 05:40
Ça me rend nerveux, pourquoi ai-je tant de problèmes?
Voir l'originalRépondre0
AltcoinMarathonervip
· 07-23 05:40
hodling à travers la tempête de dépassement d'entier... juste un autre jalon dans le web3 ultra
Voir l'originalRépondre0
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)