Poolz victime d'une attaque par dépassement arithmétique, perte d'environ 665 000 dollars
Récemment, un grave incident de sécurité s'est produit sur plusieurs réseaux blockchain. Selon les données de surveillance de la blockchain, dans la nuit du 15 mars, le projet Poolz sur Ethereum, la chaîne intelligente BNB et le réseau Polygon a été attaqué par des hackers, entraînant le vol d'une grande quantité de jetons.
Cette attaque implique plusieurs tokens, y compris MEE, ESNC, DON, ASW, KMON, POOLZ, etc. La valeur totale des tokens volés est d'environ 665 000 dollars. Actuellement, les attaquants ont échangé une partie des tokens volés contre des BNB, mais n'ont pas encore transféré les fonds en dehors de l'adresse de l'attaque.
L'analyse montre que cette attaque a principalement exploité une vulnérabilité de débordement arithmétique dans le contrat intelligent Poolz. L'attaquant a habilement manipulé le calcul du nombre de tokens en appelant la fonction CreateMassPools, réussissant ainsi à obtenir une grande quantité de tokens avec une très petite quantité.
Plus précisément, l'attaquant a d'abord échangé une petite quantité de jetons MNZ sur un certain échange décentralisé. Ensuite, l'attaquant a appelé la fonction CreateMassPools pour créer en masse des pools de liquidités. Cette fonction était censée être utilisée pour permettre aux utilisateurs de créer des pools en masse et de fournir une liquidité initiale.
Le problème vient de la fonction getArraySum. Cette fonction est responsable du calcul de la quantité de liquidité initiale fournie par l'utilisateur. L'attaquant a passé un tableau spécialement construit contenant deux grands nombres. Lorsque ces deux nombres sont additionnés, en raison des limites du type uint256, un débordement d'entier se produit, ce qui fait que le résultat final devient 1.
Cependant, le contrat utilise la valeur numérique brute des entrées lors de l'enregistrement des attributs du pool. Cela a entraîné une grave incohérence : l'attaquant n'a effectivement transféré qu'un seul jeton, mais le contrat a enregistré une valeur énorme. Finalement, l'attaquant a facilement retiré une grande quantité de jetons en appelant la fonction withdraw, complétant ainsi l'ensemble du processus d'attaque.
Cet incident met à nouveau en évidence l'importance de la sécurité des contrats intelligents. Pour éviter des problèmes similaires, il est recommandé aux développeurs d'utiliser une version plus récente du langage de programmation Solidity, car les nouvelles versions effectuent automatiquement des vérifications de débordement lors de la compilation. Pour les projets utilisant une ancienne version de Solidity, il peut être envisagé d'introduire la bibliothèque SafeMath d'OpenZeppelin pour résoudre les problèmes de débordement d'entiers.
Cet événement nous rappelle que même une petite négligence dans la programmation peut entraîner d'énormes pertes économiques. Les équipes de projet blockchain doivent accorder plus d'importance à l'audit de code et aux tests de sécurité afin d'assurer la sécurité des actifs des utilisateurs.
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.
11 J'aime
Récompense
11
5
Partager
Commentaire
0/400
ShibaOnTheRun
· 07-12 01:15
Encore un malfaiteur de vulnérabilité d'overflow
Voir l'originalRépondre0
GateUser-ccc36bc5
· 07-11 10:27
Encore un projet condamné
Voir l'originalRépondre0
GasFeeNightmare
· 07-09 09:48
L'univers de la cryptomonnaie d'une journée équivaut à une année sur Terre.
Voir l'originalRépondre0
BearMarketMonk
· 07-09 09:42
Se faire prendre pour des cons a de nouveau commencé.
Poolz victime d'une attaque par débordement arithmétique, pertes de 66,5 000 dollars sur plusieurs chaînes.
Poolz victime d'une attaque par dépassement arithmétique, perte d'environ 665 000 dollars
Récemment, un grave incident de sécurité s'est produit sur plusieurs réseaux blockchain. Selon les données de surveillance de la blockchain, dans la nuit du 15 mars, le projet Poolz sur Ethereum, la chaîne intelligente BNB et le réseau Polygon a été attaqué par des hackers, entraînant le vol d'une grande quantité de jetons.
Cette attaque implique plusieurs tokens, y compris MEE, ESNC, DON, ASW, KMON, POOLZ, etc. La valeur totale des tokens volés est d'environ 665 000 dollars. Actuellement, les attaquants ont échangé une partie des tokens volés contre des BNB, mais n'ont pas encore transféré les fonds en dehors de l'adresse de l'attaque.
L'analyse montre que cette attaque a principalement exploité une vulnérabilité de débordement arithmétique dans le contrat intelligent Poolz. L'attaquant a habilement manipulé le calcul du nombre de tokens en appelant la fonction CreateMassPools, réussissant ainsi à obtenir une grande quantité de tokens avec une très petite quantité.
Plus précisément, l'attaquant a d'abord échangé une petite quantité de jetons MNZ sur un certain échange décentralisé. Ensuite, l'attaquant a appelé la fonction CreateMassPools pour créer en masse des pools de liquidités. Cette fonction était censée être utilisée pour permettre aux utilisateurs de créer des pools en masse et de fournir une liquidité initiale.
Le problème vient de la fonction getArraySum. Cette fonction est responsable du calcul de la quantité de liquidité initiale fournie par l'utilisateur. L'attaquant a passé un tableau spécialement construit contenant deux grands nombres. Lorsque ces deux nombres sont additionnés, en raison des limites du type uint256, un débordement d'entier se produit, ce qui fait que le résultat final devient 1.
Cependant, le contrat utilise la valeur numérique brute des entrées lors de l'enregistrement des attributs du pool. Cela a entraîné une grave incohérence : l'attaquant n'a effectivement transféré qu'un seul jeton, mais le contrat a enregistré une valeur énorme. Finalement, l'attaquant a facilement retiré une grande quantité de jetons en appelant la fonction withdraw, complétant ainsi l'ensemble du processus d'attaque.
Cet incident met à nouveau en évidence l'importance de la sécurité des contrats intelligents. Pour éviter des problèmes similaires, il est recommandé aux développeurs d'utiliser une version plus récente du langage de programmation Solidity, car les nouvelles versions effectuent automatiquement des vérifications de débordement lors de la compilation. Pour les projets utilisant une ancienne version de Solidity, il peut être envisagé d'introduire la bibliothèque SafeMath d'OpenZeppelin pour résoudre les problèmes de débordement d'entiers.
Cet événement nous rappelle que même une petite négligence dans la programmation peut entraîner d'énormes pertes économiques. Les équipes de projet blockchain doivent accorder plus d'importance à l'audit de code et aux tests de sécurité afin d'assurer la sécurité des actifs des utilisateurs.