
Source: Beosin
Le 30 janvier 2024, l’heure de Pékin, selon la surveillance des risques de sécurité Eagleeye de Beosin, l’alerte précoce et le blocage de surveillance de la plate-forme,Le protocole Defi MIM_Spell a été attaqué par Hackers Lightning Loan, entraînant une perte de plus de 6 millions de dollars américains.À l’heure actuelle, l’attaquant échangera les fonds volés pour l’ETH et le transfèrent aux adresses des deux attaquants.
Analyse de vulnérabilité
La raison principale de cet incident estL’attaquant utilise le contrat de la partie du projet pour utiliser l’algorithme ascendant et contrôler le paramètre à 1. Le contrôle d’erreur maximal qui sera pris vers le haut est utilisé, ce qui entraînera des déséquilibres dans le grand livre.
Il y a deux fonctions dans le contrat, qui sont emprunter et rembourser, l’une consiste à emprunter de l’argent au contrat, et l’autre doit payer le contrat au contrat.
La fonction d’emprunt spécifiera le montant de l’emprunt et la valeur de la dette est calculée par la conversion proportionnelle, et la valeur totale de la dette de l’appelant est mise à jour.Comme le montre la figure ci-dessous, l’algorithme ADD du contrat ici utilise vers le haut.
La fonction d’emprunt spécifiera la valeur de la dette de remboursement et le montant du remboursement est calculé par la conversion proportionnelle, et le montant de remboursement est transféré au contrat.Comme le montre la figure ci-dessous, le sous-algorithme du contrat ici utilise toujours vers le haut.
Comprendre le processus d’emprunt et de remboursement, voyons comment les pirates utilisent la vulnérabilité.
Le pirate a d’abord contrôlé le montant et la valeur de la dette du contrat à 0 et 97 (comment contrôler sera introduit dans la section suivante).
Ensuite, les fonctions d’emprunt et de remboursement ne sont pas arrêtées et les valeurs d’emprunt et de remboursement sont 1. Enfin, le montant d’emprunt et de valeur de la dette est contrôlé à 0 et 120080183818866665215049728, résultant en un déséquilibre sérieux.
Selon les règles de code ci-dessus (élastique = 0, base = 97), lorsque l’attaquant appelle l’emprunter une fois et est passé en 1, le grand livre deviendra élastique = 1, base = 98 (élastique est 0 et augmentera en fonction À la synchronisation de la valeur.
Ensuite, l’attaquant appelle la fonction de remboursement pour passer 1 et appelez la sous-fonction.On peut voir qu’à cette époque, élastique est inchangé, mais la base double.
L’attaquant utilise plusieurs méthodes ci-dessus pour apporter élastique = 0, base = 1200801838106866665215049728.A finalement emprunté un contrat avec plus de 5 millions de MIM par un emprunt.
Processus d’attaque
Comprenez la fonction de la fonction, examinons comment l’attaquant effectue l’attaque (l’une des transactions comme exemple).
1. L’attaquant a emprunté pour la première fois 300 000 MIMS.
2. Par la suite, l’attaquant interroge le montant et la valeur de la dette dans la fonction de rappel.
3. Ensuite, l’attaquant appelle la fonction RECAYFRALL, a renvoyé 240 000 jetons MIM pour contrôler Elastic.
4. Ensuite, l’attaquant a renvoyé les passifs des autres utilisateurs via la fonction de remboursement et a finalement contrôlé le montant de la valeur de prêt et de la dette à 0 et 97.
5. L’attaquant crée un nouveau contrat et contrôle le montant des valeurs d’emprunt et de dette à 0 et 12008018381886665215049728 en attrayant Emprunch and Rempay.
6. Enfin, 5 millions de MIM ont emprunté 5 millions de MIM par le biais d’un prêt d’emprunt et remboursé.
Suivi des fonds
Au moment de la presse, les fonds volés de plus de 6 millions de dollars américains sont échangés contre l’ETH, et l’adresse des pirates n’a pas déplacé.