Analyse de la sécurité des contrats NFT : Revue des événements du premier semestre 2022 et discussion des problèmes courants
Au cours du premier semestre 2022, le domaine des NFT a été marqué par de fréquents incidents de sécurité, entraînant d'énormes pertes économiques. Selon les statistiques, dix incidents majeurs de sécurité des NFT se sont produits au cours de ce semestre, avec des pertes totales atteignant 64,9 millions de dollars. Les méthodes d'attaque comprenaient principalement l'exploitation de vulnérabilités de contrat, la fuite de clés privées et le phishing. Il convient de noter que les attaques de phishing sur la plateforme Discord sont particulièrement répandues, avec presque chaque jour des serveurs attaqués, entraînant de nombreuses pertes pour les utilisateurs ayant cliqué sur des liens malveillants.
Analyse des événements de sécurité typiques
événement TreasureDAO
Le 3 mars, la plateforme d'échange TreasureDAO a subi une attaque, entraînant le vol de plus de 100 NFT. Le problème se trouvait dans la fonction buyItem du contrat TreasureMarketplaceBuyer. Cette fonction ne vérifiait pas le type de jeton lors du calcul du prix total, multipliant directement la quantité par le prix unitaire. Cela a permis aux attaquants d'appeler la fonction buyItem du contrat TreasureMarketplace pour acheter des jetons, même lorsque le paiement en jetons ERC-20 était de 0.
La cause fondamentale est la confusion logique engendrée par l'utilisation mixte des jetons ERC-1155 et ERC-721. Les jetons ERC-721 n'ont pas de concept de quantité en eux-mêmes, mais le contrat calcule le prix d'achat en fonction de la quantité, et il n'y a pas de séparation logique lors de la réalisation du transfert final.
Événement d'airdrop APE Coin
Le 17 mars, des hackers ont obtenu plus de 60 000 APE Coin airdrop via un prêt flash. Le problème se situe dans le contrat airdrop de AirdropGrapesToken. Le contrat utilise alpha.balanceOf() et beta.balanceOf() pour déterminer la propriété des NFT BAYC/MAYC par l'appelant, mais cette méthode ne peut obtenir que l'état instantané de la propriété des NFT par l'utilisateur, et cet état peut être manipulé par un prêt flash. Les attaquants ont justement exploité cette vulnérabilité en empruntant le NFT BAYC via un prêt flash et en obtenant l'airdrop correspondant.
Événement Revest Finance
Le 27 mars, le projet Revest Finance a été attaqué, entraînant une perte d'environ 120 000 $. Il s'agit d'une attaque de réentrance typique ERC-1155. Le problème réside dans le contrat Revest. Lorsque les utilisateurs utilisent depositAdditionalToFNFT() pour ajouter des actifs de garantie FNFT, le contrat doit d'abord détruire l'ancien FNFT, puis frapper un nouveau FNFT. Cependant, pendant le processus de frappe, la fonction min() n'a pas vérifié si le FNFT à frapper existait déjà, et la variable d'état fnftId s'incrémente après la fonction _mint(). De plus, il existe un appel externe caché ERC-1155 dans _min(), _doSafeTransferAcceptanceCheck(), ce qui a conduit à une vulnérabilité de réentrance.
événement NBA de l'optimisation des profits
Le 21 avril, le projet NBA a subi une attaque. Le problème provient du mécanisme de vérification des signatures du contrat The_Association_Sales. Deux vulnérabilités de sécurité principales existent : le vol de signature et la réutilisation de signature. La réutilisation de signature se produit parce que le contrat n'a pas stocké les signatures déjà utilisées, ce qui permet à l'attaquant de réutiliser plusieurs fois la même signature. Le vol de signature se produit car le paramètre info de vData memory n'a pas été vérifié par rapport à msg.sender lors de la transmission, permettant ainsi que la signature soit usurpée.
événement Akutar
Le 23 avril, le contrat AkuAuction du projet NFT Akutar a été bloqué en raison d'une vulnérabilité, entraînant le verrouillage de 11539 ETH (environ 34 millions de dollars). Le contrat présente deux vulnérabilités logiques :
La fonction de remboursement processRefunds utilise la fonction call pour effectuer les remboursements et considère le résultat du remboursement comme condition de validation require. Un attaquant peut maliciously revert dans le fallback, empêchant ainsi l'ensemble de l'opération de remboursement du contrat.
Les deux conditions de vérification dans la fonction de remboursement ne prennent pas en compte le fait que l'utilisateur peut enchérir sur plusieurs NFT, ce qui empêche l'équipe du projet d'exécuter les opérations de remboursement ultérieures.
événement XCarnival
Le 24 juin, le protocole de prêt NFT XCarnival a été attaqué, et le hacker a réalisé un bénéfice de 3087 ethers (environ 3,8 millions de dollars). Le problème se trouvait dans la fonction pledgeAndBorrow du contrat XNFT. Cette fonction ne vérifiait pas si l'adresse xToken fournie par l'attaquant était dans la liste blanche du projet lors du dépôt de l'NFT, et lors de l'emprunt, elle ne vérifiait pas l'état des enregistrements de garantie, permettant à l'attaquant d'utiliser à plusieurs reprises des enregistrements de garantie invalides pour emprunter.
Questions Fréquemment Posées sur l'Audit de Contrat NFT
Usurpation et réutilisation de signature :
Les données de signature manquent de validation d'exécution répétée, comme l'absence de nonce utilisateur, ce qui entraîne la possibilité d'utiliser des données de signature répétables pour frapper des NFT.
Vérification de la signature inappropriée, comme le non-vérification du cas où le signataire est une adresse nulle, permettant ainsi à n'importe quel utilisateur de procéder à la frappe par vérification.
Faille logique :
L'administrateur du contrat peut frapper des pièces par des moyens spéciaux sans être soumis à une limite de quantité totale, ce qui entraîne une quantité réelle de NFT supérieure aux attentes.
Lors d'une enchère NFT, le gagnant peut modifier le prix de l'enchère en utilisant une attaque par dépendance à l'ordre des transactions, obtenant ainsi le NFT à bas prix.
Attaque par réentrance ERC721/ERC1155 :
L'utilisation de la fonction de notification de transfert (fonction onERC721Received) peut entraîner une attaque par réentrée lorsque le contrat NFT appelle le contrat cible de transfert.
Portée de l'autorisation trop large :
Lors du staking ou de l'enchère, une autorisation _operatorApprovals est requise, plutôt qu'une autorisation pour un seul token, ce qui augmente le risque de vol de NFT.
Manipulation des prix :
Le prix des NFT dépend de la quantité de tokens détenus par un contrat, un attaquant peut profiter d'un prêt flash pour faire monter le prix des tokens, entraînant une liquidation anormale des NFT stakés.
Étant donné la fréquence des incidents de sécurité liés aux contrats NFT et que les vulnérabilités découvertes lors des audits correspondent souvent aux attaques réelles, il est particulièrement important de faire appel à une société de sécurité professionnelle pour effectuer un audit complet des contrats NFT.
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.
16 J'aime
Récompense
16
6
Reposter
Partager
Commentaire
0/400
BrokeBeans
· 08-13 15:21
Le contrat a encore des problèmes, qui oserait encore acheter ?
Voir l'originalRépondre0
CryptoNomics
· 08-13 15:20
*sigh* en appliquant l'analyse de chaîne de Markov, ces hacks montrent 73,4 % de corrélation avec un audit de contrat médiocre. statistiquement inévitable.
Voir l'originalRépondre0
blockBoy
· 08-13 15:19
Zut, il y a des vulnérabilités tous les jours.
Voir l'originalRépondre0
ILCollector
· 08-13 15:17
Eh, des dizaines de millions de dollars se sont évaporés comme ça, je me sens vraiment désolé pour le frère qui a pris les gens pour des idiots.
Analyse des risques de sécurité des contrats NFT : Revue des événements du premier semestre 2022 et points clés de l'audit
Analyse de la sécurité des contrats NFT : Revue des événements du premier semestre 2022 et discussion des problèmes courants
Au cours du premier semestre 2022, le domaine des NFT a été marqué par de fréquents incidents de sécurité, entraînant d'énormes pertes économiques. Selon les statistiques, dix incidents majeurs de sécurité des NFT se sont produits au cours de ce semestre, avec des pertes totales atteignant 64,9 millions de dollars. Les méthodes d'attaque comprenaient principalement l'exploitation de vulnérabilités de contrat, la fuite de clés privées et le phishing. Il convient de noter que les attaques de phishing sur la plateforme Discord sont particulièrement répandues, avec presque chaque jour des serveurs attaqués, entraînant de nombreuses pertes pour les utilisateurs ayant cliqué sur des liens malveillants.
Analyse des événements de sécurité typiques
événement TreasureDAO
Le 3 mars, la plateforme d'échange TreasureDAO a subi une attaque, entraînant le vol de plus de 100 NFT. Le problème se trouvait dans la fonction buyItem du contrat TreasureMarketplaceBuyer. Cette fonction ne vérifiait pas le type de jeton lors du calcul du prix total, multipliant directement la quantité par le prix unitaire. Cela a permis aux attaquants d'appeler la fonction buyItem du contrat TreasureMarketplace pour acheter des jetons, même lorsque le paiement en jetons ERC-20 était de 0.
La cause fondamentale est la confusion logique engendrée par l'utilisation mixte des jetons ERC-1155 et ERC-721. Les jetons ERC-721 n'ont pas de concept de quantité en eux-mêmes, mais le contrat calcule le prix d'achat en fonction de la quantité, et il n'y a pas de séparation logique lors de la réalisation du transfert final.
Événement d'airdrop APE Coin
Le 17 mars, des hackers ont obtenu plus de 60 000 APE Coin airdrop via un prêt flash. Le problème se situe dans le contrat airdrop de AirdropGrapesToken. Le contrat utilise alpha.balanceOf() et beta.balanceOf() pour déterminer la propriété des NFT BAYC/MAYC par l'appelant, mais cette méthode ne peut obtenir que l'état instantané de la propriété des NFT par l'utilisateur, et cet état peut être manipulé par un prêt flash. Les attaquants ont justement exploité cette vulnérabilité en empruntant le NFT BAYC via un prêt flash et en obtenant l'airdrop correspondant.
Événement Revest Finance
Le 27 mars, le projet Revest Finance a été attaqué, entraînant une perte d'environ 120 000 $. Il s'agit d'une attaque de réentrance typique ERC-1155. Le problème réside dans le contrat Revest. Lorsque les utilisateurs utilisent depositAdditionalToFNFT() pour ajouter des actifs de garantie FNFT, le contrat doit d'abord détruire l'ancien FNFT, puis frapper un nouveau FNFT. Cependant, pendant le processus de frappe, la fonction min() n'a pas vérifié si le FNFT à frapper existait déjà, et la variable d'état fnftId s'incrémente après la fonction _mint(). De plus, il existe un appel externe caché ERC-1155 dans _min(), _doSafeTransferAcceptanceCheck(), ce qui a conduit à une vulnérabilité de réentrance.
événement NBA de l'optimisation des profits
Le 21 avril, le projet NBA a subi une attaque. Le problème provient du mécanisme de vérification des signatures du contrat The_Association_Sales. Deux vulnérabilités de sécurité principales existent : le vol de signature et la réutilisation de signature. La réutilisation de signature se produit parce que le contrat n'a pas stocké les signatures déjà utilisées, ce qui permet à l'attaquant de réutiliser plusieurs fois la même signature. Le vol de signature se produit car le paramètre info de vData memory n'a pas été vérifié par rapport à msg.sender lors de la transmission, permettant ainsi que la signature soit usurpée.
événement Akutar
Le 23 avril, le contrat AkuAuction du projet NFT Akutar a été bloqué en raison d'une vulnérabilité, entraînant le verrouillage de 11539 ETH (environ 34 millions de dollars). Le contrat présente deux vulnérabilités logiques :
événement XCarnival
Le 24 juin, le protocole de prêt NFT XCarnival a été attaqué, et le hacker a réalisé un bénéfice de 3087 ethers (environ 3,8 millions de dollars). Le problème se trouvait dans la fonction pledgeAndBorrow du contrat XNFT. Cette fonction ne vérifiait pas si l'adresse xToken fournie par l'attaquant était dans la liste blanche du projet lors du dépôt de l'NFT, et lors de l'emprunt, elle ne vérifiait pas l'état des enregistrements de garantie, permettant à l'attaquant d'utiliser à plusieurs reprises des enregistrements de garantie invalides pour emprunter.
Questions Fréquemment Posées sur l'Audit de Contrat NFT
Usurpation et réutilisation de signature :
Faille logique :
Attaque par réentrance ERC721/ERC1155 :
Portée de l'autorisation trop large :
Manipulation des prix :
Étant donné la fréquence des incidents de sécurité liés aux contrats NFT et que les vulnérabilités découvertes lors des audits correspondent souvent aux attaques réelles, il est particulièrement important de faire appel à une société de sécurité professionnelle pour effectuer un audit complet des contrats NFT.