Selon la surveillance des risques de sécurité Beosin EagleEye, la surveillance de la plate-forme d'alerte précoce et de blocage de la société d'audit de sécurité blockchain Beosin, **, le contrat LibertiVault sur la chaîne Polygon a été attaqué, et la perte d'environ 123 ETH et 56 234 USDT d'une valeur d'environ 290 000 dollars américains , et la chaîne Ethereum 35ETH et 96223USDT valent environ 160 000 USD, totalisant plus de 450 000 USD. **Le personnel technique a analysé et découvert que cette attaque était causée par une vulnérabilité de réentrance dans le contrat LibertiVault.
L'attaquant a emprunté 5 millions USDT à l'aide du prêt flash et a appelé la fonction de dépôt du contrat LibertiVault pour s'engager. La logique de nantissement utilisera une partie des jetons mis en gage pour l'échange, puis calculera le montant des pièces frappées. Le montant de les pièces frappées sont basées sur le contrat et le dépôt Le calcul est basé sur le rapport entre le montant des jetons déposés et le solde avant le dépôt du contrat.
L'échange d'opérations d'échange appellera le contrat du pirate.À ce moment, le pirate réintègre le dépôt d'appel pour la première fois, et réintègre cette fonction pour la deuxième fois, déposant 2,5 millions USDT dans le contrat.
Après la deuxième rentrée, le contrat frappera des pièces pour le pirate selon le ratio de 2,5 millions USDT sur le solde USDT du contrat précédent. Une fois la fonction de dépôt de la première rentrée terminée, le pirate dépose 2,5 millions USDT supplémentaires. dans ça.
À ce stade, l'opération d'échange dans la fonction de dépôt externe est terminée et le contrat frappera des pièces selon le rapport de 2,5 millions USDT au solde USDT du contrat.
Le problème réside dans le quatrième point. Logiquement, le deuxième calcul du solde du contrat devrait être le solde précédent plus le solde de 2,5 millions entré pour la première fois comme paramètre de ce calcul, mais voici le Sous forme de rentrée, le solde du contrat a été obtenu au tout début, donc les paramètres n'ont pas changé, et le solde d'origine est toujours utilisé pour le calcul, ce qui entraîne la frappe d'un grand nombre de jetons de bon pour les pirates.
Enfin, le pirate a retiré les jetons et a rendu le prêt flash à profit.
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.
Analyse de l'attaque du contrat LibertiVault sur la chaîne de polygones
Selon la surveillance des risques de sécurité Beosin EagleEye, la surveillance de la plate-forme d'alerte précoce et de blocage de la société d'audit de sécurité blockchain Beosin, **, le contrat LibertiVault sur la chaîne Polygon a été attaqué, et la perte d'environ 123 ETH et 56 234 USDT d'une valeur d'environ 290 000 dollars américains , et la chaîne Ethereum 35ETH et 96223USDT valent environ 160 000 USD, totalisant plus de 450 000 USD. **Le personnel technique a analysé et découvert que cette attaque était causée par une vulnérabilité de réentrance dans le contrat LibertiVault.
L'attaquant a emprunté 5 millions USDT à l'aide du prêt flash et a appelé la fonction de dépôt du contrat LibertiVault pour s'engager. La logique de nantissement utilisera une partie des jetons mis en gage pour l'échange, puis calculera le montant des pièces frappées. Le montant de les pièces frappées sont basées sur le contrat et le dépôt Le calcul est basé sur le rapport entre le montant des jetons déposés et le solde avant le dépôt du contrat.
L'échange d'opérations d'échange appellera le contrat du pirate.À ce moment, le pirate réintègre le dépôt d'appel pour la première fois, et réintègre cette fonction pour la deuxième fois, déposant 2,5 millions USDT dans le contrat.
Après la deuxième rentrée, le contrat frappera des pièces pour le pirate selon le ratio de 2,5 millions USDT sur le solde USDT du contrat précédent. Une fois la fonction de dépôt de la première rentrée terminée, le pirate dépose 2,5 millions USDT supplémentaires. dans ça.
À ce stade, l'opération d'échange dans la fonction de dépôt externe est terminée et le contrat frappera des pièces selon le rapport de 2,5 millions USDT au solde USDT du contrat.
Le problème réside dans le quatrième point. Logiquement, le deuxième calcul du solde du contrat devrait être le solde précédent plus le solde de 2,5 millions entré pour la première fois comme paramètre de ce calcul, mais voici le Sous forme de rentrée, le solde du contrat a été obtenu au tout début, donc les paramètres n'ont pas changé, et le solde d'origine est toujours utilisé pour le calcul, ce qui entraîne la frappe d'un grand nombre de jetons de bon pour les pirates.
Enfin, le pirate a retiré les jetons et a rendu le prêt flash à profit.