Poolz subit une attaque par débordement arithmétique, avec des pertes atteignant 665 000 dollars.
Dans la nuit du 15 mars, Poolz a été attaqué sur les réseaux Ethereum, Binance Smart Chain et Polygon, entraînant le vol de plusieurs tokens d'une valeur totale d'environ 665 000 dollars. Les attaquants ont exploité une vulnérabilité de dépassement arithmétique dans le contrat intelligent pour obtenir avec succès une grande quantité de tokens.
Les attaquants créent des pools de liquidité en masse en appelant la fonction CreateMassPools. Cette fonction présente une vulnérabilité critique qui permet aux attaquants de contourner les vérifications de liquidité normales grâce à des paramètres soigneusement conçus. En particulier, les attaquants exploitent un problème de débordement d'entier dans la fonction getArraySum.
Au cours de l'attaque, les hackers ont d'abord échangé une petite quantité de jetons MNZ sur un certain échange décentralisé. Ensuite, ils ont appelé la fonction CreateMassPools, qui présente une vulnérabilité. Cette fonction était censée être utilisée pour créer en masse des pools de liquidités et fournir une liquidité initiale, mais en raison d'un défaut de la fonction getArraySum, les attaquants ont pu injecter une liquidité fictive bien supérieure au montant réellement transféré.
La fonction getArraySum, lors de l'addition du tableau _StartAmount transmis, retourne finalement la valeur 1 en raison d'un problème de débordement. Cependant, la fonction CreatePool continue d'utiliser la valeur originale de _StartAmount pour l'enregistrement. Cela permet à un attaquant de n'entrer qu'un seul jeton et de faire enregistrer une grande quantité de liquidité fictive dans le système.
Après avoir complété cette étape, l'attaquant appelle simplement la fonction withdraw pour retirer des jetons, complétant ainsi l'ensemble du processus d'attaque.
Cet événement souligne à nouveau l'importance de la sécurité des opérations arithmétiques dans les contrats intelligents. Pour éviter des problèmes similaires, les développeurs devraient envisager d'utiliser des versions plus récentes du compilateur Solidity, qui peuvent effectuer des vérifications de dépassement automatiquement lors de la phase de compilation. Pour les projets utilisant une ancienne version de Solidity, il est recommandé d'intégrer la bibliothèque SafeMath d'OpenZeppelin pour gérer les problèmes de dépassement d'entiers.
Cet incident d'attaque nous rappelle que, dans l'écosystème de la blockchain, même les failles de code apparemment mineures peuvent entraîner des pertes économiques graves. Par conséquent, un audit de code complet et des mises à jour de sécurité continues sont essentiels pour protéger les actifs des utilisateurs.
Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Poolz subit une attaque de débordement arithmétique, avec une perte de 665 000 $.
Poolz subit une attaque par débordement arithmétique, avec des pertes atteignant 665 000 dollars.
Dans la nuit du 15 mars, Poolz a été attaqué sur les réseaux Ethereum, Binance Smart Chain et Polygon, entraînant le vol de plusieurs tokens d'une valeur totale d'environ 665 000 dollars. Les attaquants ont exploité une vulnérabilité de dépassement arithmétique dans le contrat intelligent pour obtenir avec succès une grande quantité de tokens.
Les attaquants créent des pools de liquidité en masse en appelant la fonction CreateMassPools. Cette fonction présente une vulnérabilité critique qui permet aux attaquants de contourner les vérifications de liquidité normales grâce à des paramètres soigneusement conçus. En particulier, les attaquants exploitent un problème de débordement d'entier dans la fonction getArraySum.
Au cours de l'attaque, les hackers ont d'abord échangé une petite quantité de jetons MNZ sur un certain échange décentralisé. Ensuite, ils ont appelé la fonction CreateMassPools, qui présente une vulnérabilité. Cette fonction était censée être utilisée pour créer en masse des pools de liquidités et fournir une liquidité initiale, mais en raison d'un défaut de la fonction getArraySum, les attaquants ont pu injecter une liquidité fictive bien supérieure au montant réellement transféré.
La fonction getArraySum, lors de l'addition du tableau _StartAmount transmis, retourne finalement la valeur 1 en raison d'un problème de débordement. Cependant, la fonction CreatePool continue d'utiliser la valeur originale de _StartAmount pour l'enregistrement. Cela permet à un attaquant de n'entrer qu'un seul jeton et de faire enregistrer une grande quantité de liquidité fictive dans le système.
Après avoir complété cette étape, l'attaquant appelle simplement la fonction withdraw pour retirer des jetons, complétant ainsi l'ensemble du processus d'attaque.
Cet événement souligne à nouveau l'importance de la sécurité des opérations arithmétiques dans les contrats intelligents. Pour éviter des problèmes similaires, les développeurs devraient envisager d'utiliser des versions plus récentes du compilateur Solidity, qui peuvent effectuer des vérifications de dépassement automatiquement lors de la phase de compilation. Pour les projets utilisant une ancienne version de Solidity, il est recommandé d'intégrer la bibliothèque SafeMath d'OpenZeppelin pour gérer les problèmes de dépassement d'entiers.
Cet incident d'attaque nous rappelle que, dans l'écosystème de la blockchain, même les failles de code apparemment mineures peuvent entraîner des pertes économiques graves. Par conséquent, un audit de code complet et des mises à jour de sécurité continues sont essentiels pour protéger les actifs des utilisateurs.