Poolz subit une attaque par débordement arithmétique, avec des pertes d'environ 66,5 milliers de dollars.
Récemment, la plateforme Poolz a subi une attaque sur les réseaux Ethereum, Binance Smart Chain et Polygon, entraînant le vol d'un grand nombre de jetons d'une valeur totale d'environ 665 000 dollars. L'attaque a eu lieu le 15 mars 2023 à 3h16 (UTC).
Selon la surveillance des données en chaîne, cette attaque implique plusieurs jetons, y compris MEE, ESNC, DON, ASW, KMON, POOLZ, etc. Les attaquants ont échangé une partie des jetons volés contre des BNB, mais les fonds n'ont pas encore été transférés.
L'attaquant a exploité une vulnérabilité de dépassement arithmétique dans le contrat Poolz. Plus précisément, le problème se situe dans la fonction getArraySum de la fonction CreateMassPools. Cette fonction, lors du calcul du nombre de tokens, provoque un dépassement car le résultat cumulé dépasse la valeur maximale du type uint256, entraînant un retour de valeur égal à 1.
Le processus d'attaque est le suivant :
L'attaquant a d'abord échangé quelques jetons MNZ via un DEX.
Ensuite, appelez la fonction CreateMassPools en exploitant la vulnérabilité de la fonction getArraySum. Le tableau _StartAmount fourni par l'attaquant contient des valeurs extrêmement élevées, entraînant un débordement lors de l'addition.
Étant donné que la fonction CreatePool utilise _StartAmount pour enregistrer les attributs de la piscine, l'attaquant ne transfère en réalité qu'un seul jeton, mais le système enregistre une énorme valeur.
Enfin, l'attaquant appelle la fonction withdraw pour retirer des jetons et terminer l'attaque.
Pour éviter que ce type de problème ne se reproduise, il est conseillé aux développeurs d'utiliser une version plus récente de Solidity pour la compilation, car les nouvelles versions effectuent automatiquement des vérifications de débordement. Pour les projets utilisant une version inférieure de Solidity, il est possible d'envisager d'utiliser la bibliothèque SafeMath d'OpenZeppelin pour résoudre les problèmes de débordement d'entiers.
Cet événement nous rappelle une fois de plus qu'il faut être particulièrement prudent lors du développement de contrats intelligents, surtout lorsqu'il s'agit de calculs numériques importants. De plus, effectuer régulièrement des audits de code et des vérifications de sécurité est également une mesure importante pour garantir la sécurité du projet.
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.
8 J'aime
Récompense
8
5
Reposter
Partager
Commentaire
0/400
ValidatorVibes
· Il y a 4h
smh... une autre attaque par débordement. les audits de protocole sont littéralement la gouvernance 101 frfr
Voir l'originalRépondre0
MetaverseVagrant
· Il y a 4h
Encore noir et triste, 660 000 a aussi l'audace d'appeler Hacker.
Poolz victime d'une attaque par dépassement arithmétique, perte de 665 000 dollars.
Poolz subit une attaque par débordement arithmétique, avec des pertes d'environ 66,5 milliers de dollars.
Récemment, la plateforme Poolz a subi une attaque sur les réseaux Ethereum, Binance Smart Chain et Polygon, entraînant le vol d'un grand nombre de jetons d'une valeur totale d'environ 665 000 dollars. L'attaque a eu lieu le 15 mars 2023 à 3h16 (UTC).
Selon la surveillance des données en chaîne, cette attaque implique plusieurs jetons, y compris MEE, ESNC, DON, ASW, KMON, POOLZ, etc. Les attaquants ont échangé une partie des jetons volés contre des BNB, mais les fonds n'ont pas encore été transférés.
L'attaquant a exploité une vulnérabilité de dépassement arithmétique dans le contrat Poolz. Plus précisément, le problème se situe dans la fonction getArraySum de la fonction CreateMassPools. Cette fonction, lors du calcul du nombre de tokens, provoque un dépassement car le résultat cumulé dépasse la valeur maximale du type uint256, entraînant un retour de valeur égal à 1.
Le processus d'attaque est le suivant :
L'attaquant a d'abord échangé quelques jetons MNZ via un DEX.
Ensuite, appelez la fonction CreateMassPools en exploitant la vulnérabilité de la fonction getArraySum. Le tableau _StartAmount fourni par l'attaquant contient des valeurs extrêmement élevées, entraînant un débordement lors de l'addition.
Étant donné que la fonction CreatePool utilise _StartAmount pour enregistrer les attributs de la piscine, l'attaquant ne transfère en réalité qu'un seul jeton, mais le système enregistre une énorme valeur.
Enfin, l'attaquant appelle la fonction withdraw pour retirer des jetons et terminer l'attaque.
Pour éviter que ce type de problème ne se reproduise, il est conseillé aux développeurs d'utiliser une version plus récente de Solidity pour la compilation, car les nouvelles versions effectuent automatiquement des vérifications de débordement. Pour les projets utilisant une version inférieure de Solidity, il est possible d'envisager d'utiliser la bibliothèque SafeMath d'OpenZeppelin pour résoudre les problèmes de débordement d'entiers.
Cet événement nous rappelle une fois de plus qu'il faut être particulièrement prudent lors du développement de contrats intelligents, surtout lorsqu'il s'agit de calculs numériques importants. De plus, effectuer régulièrement des audits de code et des vérifications de sécurité est également une mesure importante pour garantir la sécurité du projet.