Une nouvelle vulnérabilité de débordement d'entier a été découverte dans le module de sécurité des références du langage Move.
Récemment, lors de nos recherches approfondies sur le langage Move, nous avons découvert une nouvelle vulnérabilité de débordement entier. Cette vulnérabilité se trouve dans le processus de vérification de la sécurité des références, et son déclenchement est assez intéressant. Cet article analysera en profondeur cette vulnérabilité et explorera certaines connaissances de base sur le langage Move.
Le langage Move effectue une vérification des unités de code avant l'exécution du bytecode, qui se déroule en quatre étapes. Cette vulnérabilité se manifeste lors de l'étape reference_safety. Cette étape est responsable de la vérification de la sécurité des références, y compris la vérification de l'existence de références flottantes, la sécurité d'accès aux références mutables et la sécurité d'accès aux références de stockage global, etc.
La fonction d'entrée de la vérification de sécurité appelle analyze_function pour valider chaque bloc fondamental. Un bloc fondamental désigne une séquence de code sans instructions de branchement, à l'exception de l'entrée et de la sortie. Le langage Move identifie les blocs fondamentaux en parcourant le bytecode à la recherche de toutes les instructions de branchement et de séquences d'instructions de boucle.
Le langage Move prend en charge deux types de références : la référence immuable ( et la référence mutable )&mut(. Le module de sécurité des références vérifie la légitimité de toutes les opérations de référence en scannant les instructions de bytecode des blocs de base dans les fonctions. Le processus de validation utilise la structure AbstractState, qui comprend un graphe d'emprunt et des locaux, afin d'assurer la sécurité des références dans la fonction.
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-6952376046c901dfae2b19d5144746b5.webp(
Une vulnérabilité se produit dans la fonction join_. Lorsque la longueur des paramètres ajoutée à la longueur des variables locales dépasse 256, le fait que la fonction iter_locals)( retourne un itérateur de type u8 peut entraîner un dépassement d'entier. Bien que Move ait un processus de vérification du nombre de locals, le module de vérification des limites ne vérifie que les locals, sans inclure la longueur des paramètres.
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-92892f2a9dffea9f805f3a1952e82703.webp(
Cette overflow d'entier peut entraîner une attaque par déni de service (DoS). Lorsqu'il existe un bloc de code en boucle et que l'overflow est utilisé pour modifier l'état du bloc, la nouvelle carte des locaux diffère de la précédente. Si la fonction execute_block est exécutée à nouveau et que l'index requis par l'instruction n'existe pas dans la nouvelle carte des locaux d'AbstractState, cela entraînera un DoS.
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-1347ef8b31983109babdf8ef29270c67.webp(
Nous avons fourni un PoC reproductible dans git. Le bloc de code dans ce PoC contient une instruction de branchement inconditionnelle, qui, à chaque exécution de la dernière instruction, revient à la première instruction, appelant ainsi plusieurs fois les fonctions execute_block et join.
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-ac937ab4f426d30a476feb32520a95b4.webp(
Cette vulnérabilité montre que même des langages axés sur la sécurité comme Move peuvent présenter des risques de sécurité. L'importance de l'audit de code n'est plus à prouver, les programmeurs peuvent inévitablement faire des erreurs. En tant que leader de la recherche sur la sécurité du langage Move, nous continuerons à approfondir les problèmes de sécurité liés à Move.
Nous suggérons aux concepteurs du langage Move d'ajouter plus de code de vérification à l'exécution pour prévenir les situations imprévues. Actuellement, Move effectue principalement des vérifications de sécurité lors de la phase de vérification, mais cela peut ne pas suffire. Une fois la validation contournée, le manque de renforcement de la sécurité à la phase d'exécution pourrait entraîner des problèmes plus graves.
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-a18dcf64108d1a75b728ffe8391100f1.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-7c8fe4e4cf376ad49d729a6f80df6f08.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-c598d61833550ec5494f9a5a4ee2a760.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-12c60c225a5629f6d927982a7585fc5b.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-94b0c97bb9e287ed715cddb5165f129d.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-095e2b585c45a86b0a689214ca673619.webp(
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-5ebaa03263f7a87edd78d146c5beadd2.webp(
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-fe905356cbee596e8aba08ec14f5d508.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-ae25cc7d31726e2e1477e6d112b7aa75.webp(
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.
Le module de sécurité référencé par le langage Move a découvert une vulnérabilité de débordement d'entier pouvant entraîner une attaque DoS.
Une nouvelle vulnérabilité de débordement d'entier a été découverte dans le module de sécurité des références du langage Move.
Récemment, lors de nos recherches approfondies sur le langage Move, nous avons découvert une nouvelle vulnérabilité de débordement entier. Cette vulnérabilité se trouve dans le processus de vérification de la sécurité des références, et son déclenchement est assez intéressant. Cet article analysera en profondeur cette vulnérabilité et explorera certaines connaissances de base sur le langage Move.
Le langage Move effectue une vérification des unités de code avant l'exécution du bytecode, qui se déroule en quatre étapes. Cette vulnérabilité se manifeste lors de l'étape reference_safety. Cette étape est responsable de la vérification de la sécurité des références, y compris la vérification de l'existence de références flottantes, la sécurité d'accès aux références mutables et la sécurité d'accès aux références de stockage global, etc.
La fonction d'entrée de la vérification de sécurité appelle analyze_function pour valider chaque bloc fondamental. Un bloc fondamental désigne une séquence de code sans instructions de branchement, à l'exception de l'entrée et de la sortie. Le langage Move identifie les blocs fondamentaux en parcourant le bytecode à la recherche de toutes les instructions de branchement et de séquences d'instructions de boucle.
Le langage Move prend en charge deux types de références : la référence immuable ( et la référence mutable )&mut(. Le module de sécurité des références vérifie la légitimité de toutes les opérations de référence en scannant les instructions de bytecode des blocs de base dans les fonctions. Le processus de validation utilise la structure AbstractState, qui comprend un graphe d'emprunt et des locaux, afin d'assurer la sécurité des références dans la fonction.
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-6952376046c901dfae2b19d5144746b5.webp(
Une vulnérabilité se produit dans la fonction join_. Lorsque la longueur des paramètres ajoutée à la longueur des variables locales dépasse 256, le fait que la fonction iter_locals)( retourne un itérateur de type u8 peut entraîner un dépassement d'entier. Bien que Move ait un processus de vérification du nombre de locals, le module de vérification des limites ne vérifie que les locals, sans inclure la longueur des paramètres.
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-92892f2a9dffea9f805f3a1952e82703.webp(
Cette overflow d'entier peut entraîner une attaque par déni de service (DoS). Lorsqu'il existe un bloc de code en boucle et que l'overflow est utilisé pour modifier l'état du bloc, la nouvelle carte des locaux diffère de la précédente. Si la fonction execute_block est exécutée à nouveau et que l'index requis par l'instruction n'existe pas dans la nouvelle carte des locaux d'AbstractState, cela entraînera un DoS.
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-1347ef8b31983109babdf8ef29270c67.webp(
Nous avons fourni un PoC reproductible dans git. Le bloc de code dans ce PoC contient une instruction de branchement inconditionnelle, qui, à chaque exécution de la dernière instruction, revient à la première instruction, appelant ainsi plusieurs fois les fonctions execute_block et join.
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-ac937ab4f426d30a476feb32520a95b4.webp(
Cette vulnérabilité montre que même des langages axés sur la sécurité comme Move peuvent présenter des risques de sécurité. L'importance de l'audit de code n'est plus à prouver, les programmeurs peuvent inévitablement faire des erreurs. En tant que leader de la recherche sur la sécurité du langage Move, nous continuerons à approfondir les problèmes de sécurité liés à Move.
Nous suggérons aux concepteurs du langage Move d'ajouter plus de code de vérification à l'exécution pour prévenir les situations imprévues. Actuellement, Move effectue principalement des vérifications de sécurité lors de la phase de vérification, mais cela peut ne pas suffire. Une fois la validation contournée, le manque de renforcement de la sécurité à la phase d'exécution pourrait entraîner des problèmes plus graves.
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-a18dcf64108d1a75b728ffe8391100f1.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-7c8fe4e4cf376ad49d729a6f80df6f08.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-c598d61833550ec5494f9a5a4ee2a760.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-12c60c225a5629f6d927982a7585fc5b.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-94b0c97bb9e287ed715cddb5165f129d.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-095e2b585c45a86b0a689214ca673619.webp(
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-5ebaa03263f7a87edd78d146c5beadd2.webp(
![Numen Cyber a découvert une nouvelle vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-fe905356cbee596e8aba08ec14f5d508.webp(
![Numen Cyber a découvert une autre vulnérabilité critique dans le langage move])https://img-cdn.gateio.im/webp-social/moments-ae25cc7d31726e2e1477e6d112b7aa75.webp(