Récemment, un contrat de projet de fête de collection numérique très suivi a été trouvé avec deux vulnérabilités graves. L'équipe de sécurité a découvert lors de l'examen de ce contrat que ces vulnérabilités pourraient entraîner le blocage des actifs des utilisateurs et que le projet de fête ne pourrait pas retirer plus de 34 millions de dollars.
Le premier bug concerne la fonction de remboursement. Le programme de remboursement dans le contrat utilise une approche itérative pour rembourser tous les utilisateurs. Cependant, si l'adresse d'un utilisateur est un contrat malveillant, cela pourrait refuser de recevoir le remboursement et entraîner l'échec de la transaction, ce qui affecterait les opérations de remboursement de tous les utilisateurs. Heureusement, ce bug n'a pas été exploité en pratique.
Pour éviter des problèmes similaires, il est conseillé au projet de fête de prendre en compte les points suivants lors de la conception du mécanisme de remboursement :
La restriction ne permet que les comptes d'utilisateurs ordinaires de participer au projet.
Utiliser des actifs natifs remplacés par des jetons ERC20 tels que WETH
Concevoir une fonction permettant aux utilisateurs de demander eux-mêmes des remboursements, plutôt que de traiter en masse.
Le deuxième bogue est causé par une erreur logique dans le code. Dans la fonction d'extraction des fonds du projet, il existe une instruction conditionnelle qui devait comparer deux variables spécifiques, mais une autre variable a été utilisée par erreur pour la comparaison. Cela a conduit à un conditionnement qui ne peut jamais être satisfait, et le projet de fête ne peut donc pas extraire les fonds du contrat. Actuellement, environ 34 millions de dollars d'actifs sont définitivement verrouillés dans le contrat.
Cet événement souligne à nouveau que même des projets connus peuvent commettre des erreurs basiques. L'équipe de développement doit rédiger des cas de test suffisants et cultiver une conscience de sécurité de base tout au long du processus de développement du projet. Bien que l'audit de sécurité soit devenu une pratique courante dans le domaine de la finance décentralisée, cette étape est souvent négligée dans les projets de collections numériques, entraînant finalement d'énormes pertes.
Cet événement nous rappelle que, dans le développement de projets blockchain, quelle que soit l'échelle du projet, il est essentiel de prêter attention à l'audit de sécurité pour prévenir les failles qui pourraient entraîner des conséquences graves. En même temps, il met également en évidence l'importance des détails dans le développement de contrats intelligents, une petite erreur de code peut entraîner des pertes de millions de dollars.
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.
Le contrat du projet de collection numérique présente une vulnérabilité majeure, avec 34 millions de dollars de fonds définitivement verrouillés.
Récemment, un contrat de projet de fête de collection numérique très suivi a été trouvé avec deux vulnérabilités graves. L'équipe de sécurité a découvert lors de l'examen de ce contrat que ces vulnérabilités pourraient entraîner le blocage des actifs des utilisateurs et que le projet de fête ne pourrait pas retirer plus de 34 millions de dollars.
Le premier bug concerne la fonction de remboursement. Le programme de remboursement dans le contrat utilise une approche itérative pour rembourser tous les utilisateurs. Cependant, si l'adresse d'un utilisateur est un contrat malveillant, cela pourrait refuser de recevoir le remboursement et entraîner l'échec de la transaction, ce qui affecterait les opérations de remboursement de tous les utilisateurs. Heureusement, ce bug n'a pas été exploité en pratique.
Pour éviter des problèmes similaires, il est conseillé au projet de fête de prendre en compte les points suivants lors de la conception du mécanisme de remboursement :
Le deuxième bogue est causé par une erreur logique dans le code. Dans la fonction d'extraction des fonds du projet, il existe une instruction conditionnelle qui devait comparer deux variables spécifiques, mais une autre variable a été utilisée par erreur pour la comparaison. Cela a conduit à un conditionnement qui ne peut jamais être satisfait, et le projet de fête ne peut donc pas extraire les fonds du contrat. Actuellement, environ 34 millions de dollars d'actifs sont définitivement verrouillés dans le contrat.
Cet événement souligne à nouveau que même des projets connus peuvent commettre des erreurs basiques. L'équipe de développement doit rédiger des cas de test suffisants et cultiver une conscience de sécurité de base tout au long du processus de développement du projet. Bien que l'audit de sécurité soit devenu une pratique courante dans le domaine de la finance décentralisée, cette étape est souvent négligée dans les projets de collections numériques, entraînant finalement d'énormes pertes.
Cet événement nous rappelle que, dans le développement de projets blockchain, quelle que soit l'échelle du projet, il est essentiel de prêter attention à l'audit de sécurité pour prévenir les failles qui pourraient entraîner des conséquences graves. En même temps, il met également en évidence l'importance des détails dans le développement de contrats intelligents, une petite erreur de code peut entraîner des pertes de millions de dollars.