Analyse des vulnérabilités de sécurité courantes en Finance décentralisée : Prêts Flash, manipulation des prix et prévention des attaques par réentrées
Récemment, un expert en sécurité a partagé une leçon sur la sécurité de la Finance décentralisée avec les membres de la communauté. Il a passé en revue les événements de sécurité majeurs auxquels l'industrie Web3 a été confrontée au cours de l'année passée, a discuté des raisons pour lesquelles ces événements se sont produits et comment les éviter, a résumé les vulnérabilités de sécurité courantes des contrats intelligents et les mesures préventives, et a donné quelques conseils de sécurité aux projets et aux utilisateurs ordinaires.
Les types de vulnérabilités DeFi courants incluent généralement les prêts flash, la manipulation des prix, les problèmes de droits d'accès aux fonctions, les appels externes arbitraires, les problèmes de fonction fallback, les vulnérabilités de logique métier, les fuites de clés privées et les attaques par réentrance, etc. Voici un accent particulier sur les prêts flash, la manipulation des prix et les attaques par réentrance.
Prêt Flash
Le prêt éclair est une innovation de la Finance décentralisée, mais lorsqu'il est exploité par des hackers, il peut entraîner d'énormes pertes :
Les attaquants empruntent d'importants fonds via des prêts flash pour manipuler les prix, attaquer la logique commerciale, etc.
Les développeurs doivent prendre en compte si les fonctionnalités du contrat peuvent être affectées par des fonds énormes, ou être exploitées pour obtenir des gains indus.
Certains projets n'ont pas pris en compte l'impact des prêts flash lors de la conception de leurs fonctionnalités, ce qui a entraîné le vol de fonds.
Au cours des deux dernières années, de nombreux problèmes liés aux prêts éclair ont émergé. Certains projets semblent offrir des rendements très élevés, mais présentent en réalité des failles logiques, par exemple :
Les récompenses sont distribuées à des moments fixes en fonction de la quantité de positions, manipulées par des prêts éclair pour obtenir de grandes récompenses.
Les projets dont le prix est calculé par Token peuvent voir leur prix affecté par un prêt éclair.
Les équipes de projet devraient être vigilantes face à ces problèmes.
Manipulation des prix
Les problèmes de manipulation des prix sont étroitement liés aux prêts flash, principalement de deux types :
Utilisation de données tierces pour calculer le prix, mais mauvaise utilisation ou absence de vérification.
Utiliser le nombre de tokens à certaines adresses comme variable de calcul, et ces quantités peuvent être manipulées temporairement.
Attaque par réentrance
L'appel à des contrats externes peut entraîner une prise de contrôle du flux de contrôle, entraînant des modifications inattendues des données. Un exemple typique d'attaque par réentrance :
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool succès, ) = msg.sender.call.value(montantÀRetirer)("");
require(succès);
userBalances[msg.sender] = 0;
}
Puisque le solde de l'utilisateur est défini à 0 seulement à la fin de la fonction, des appels répétés peuvent extraire le solde plusieurs fois.
Pour résoudre le problème de réentrance, il faut faire attention à :
Pas seulement pour prévenir la réentrance d'une seule fonction
Suivre le modèle Checks-Effects-Interactions
Utiliser un modificateur anti-reentrance vérifié
Il est conseillé d'utiliser des pratiques de sécurité optimales bien établies et d'éviter de réinventer la roue.
Conseils de sécurité
suggestions pour l'équipe de projet:
Suivre les meilleures pratiques de sécurité pour le développement de contrats.
Mise en œuvre de la possibilité de mettre à jour et de suspendre les contrats
Utiliser un verrouillage temporel
Augmenter les investissements en matière de sécurité et établir un système de sécurité complet.
Améliorer la sensibilisation à la sécurité de tous les employés
Prévenir les actes malveillants internes, tout en améliorant l'efficacité et en renforçant la gestion des risques.
Soyez prudent lors de l'introduction de tiers, par défaut, les flux en amont et en aval ne sont pas sûrs.
Comment les utilisateurs peuvent-ils déterminer si un contrat intelligent est sécurisé :
Vérifiez si le contrat est open source
Vérifiez si le propriétaire utilise une multi-signature décentralisée
Vérifiez la situation des transactions existantes dans le contrat
Vérifiez si le contrat est évolutif et s'il y a un verrouillage temporel.
Vérifiez si plusieurs institutions ont été auditées, si les droits du propriétaire sont trop étendus.
Faites attention à la fiabilité des oracles.
En résumé, dans le domaine de la Finance décentralisée, que ce soit pour les développeurs de projets ou les utilisateurs ordinaires, il est nécessaire d'améliorer la sensibilisation à la sécurité, de prendre des mesures de sécurité nécessaires pour réduire les risques et protéger la sécurité des actifs.
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.
11 J'aime
Récompense
11
7
Reposter
Partager
Commentaire
0/400
TooScaredToSell
· 08-11 10:27
Ne parlons pas de toutes ces règles, entrer directement sur le marché des jetons est la seule chose sérieuse.
Voir l'originalRépondre0
MysteryBoxBuster
· 08-11 08:22
Encore en train de faire semblant de comprendre les Prêts Flash...
Voir l'originalRépondre0
GhostWalletSleuth
· 08-09 18:44
Rug Pull est la véritable technologie de pointe.
Voir l'originalRépondre0
CodeAuditQueen
· 08-09 18:43
Ce n'est qu'une injection de vulnérabilité de l'époque web1 qui a changé de peau.
Voir l'originalRépondre0
MoonlightGamer
· 08-09 18:39
Qui a dit que le DeFi n'avait pas de nouvelles façons de jouer ? Voilà qui arrive !
Voir l'originalRépondre0
HashBandit
· 08-09 18:36
bruh a perdu 50 eth à cause d'une exploitation de flashloan en 2021... ça me donne toujours des cauchemars pour être honnête
Analyse des vulnérabilités de sécurité courantes en Finance décentralisée : Prêts Flash, manipulation des prix et prévention des attaques par réentrées
Finance décentralisée 常见安全漏洞及预防措施
Récemment, un expert en sécurité a partagé une leçon sur la sécurité de la Finance décentralisée avec les membres de la communauté. Il a passé en revue les événements de sécurité majeurs auxquels l'industrie Web3 a été confrontée au cours de l'année passée, a discuté des raisons pour lesquelles ces événements se sont produits et comment les éviter, a résumé les vulnérabilités de sécurité courantes des contrats intelligents et les mesures préventives, et a donné quelques conseils de sécurité aux projets et aux utilisateurs ordinaires.
Les types de vulnérabilités DeFi courants incluent généralement les prêts flash, la manipulation des prix, les problèmes de droits d'accès aux fonctions, les appels externes arbitraires, les problèmes de fonction fallback, les vulnérabilités de logique métier, les fuites de clés privées et les attaques par réentrance, etc. Voici un accent particulier sur les prêts flash, la manipulation des prix et les attaques par réentrance.
Prêt Flash
Le prêt éclair est une innovation de la Finance décentralisée, mais lorsqu'il est exploité par des hackers, il peut entraîner d'énormes pertes :
Au cours des deux dernières années, de nombreux problèmes liés aux prêts éclair ont émergé. Certains projets semblent offrir des rendements très élevés, mais présentent en réalité des failles logiques, par exemple :
Les équipes de projet devraient être vigilantes face à ces problèmes.
Manipulation des prix
Les problèmes de manipulation des prix sont étroitement liés aux prêts flash, principalement de deux types :
Attaque par réentrance
L'appel à des contrats externes peut entraîner une prise de contrôle du flux de contrôle, entraînant des modifications inattendues des données. Un exemple typique d'attaque par réentrance :
solidity mapping (address => uint) private userBalances;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool succès, ) = msg.sender.call.value(montantÀRetirer)(""); require(succès); userBalances[msg.sender] = 0; }
Puisque le solde de l'utilisateur est défini à 0 seulement à la fin de la fonction, des appels répétés peuvent extraire le solde plusieurs fois.
Pour résoudre le problème de réentrance, il faut faire attention à :
Il est conseillé d'utiliser des pratiques de sécurité optimales bien établies et d'éviter de réinventer la roue.
Conseils de sécurité
suggestions pour l'équipe de projet:
Comment les utilisateurs peuvent-ils déterminer si un contrat intelligent est sécurisé :
En résumé, dans le domaine de la Finance décentralisée, que ce soit pour les développeurs de projets ou les utilisateurs ordinaires, il est nécessaire d'améliorer la sensibilisation à la sécurité, de prendre des mesures de sécurité nécessaires pour réduire les risques et protéger la sécurité des actifs.