Vulnérabilités de sécurité courantes dans la Finance décentralisée et mesures préventives
Récemment, un expert en sécurité a partagé un cours sur la sécurité DeFi avec les membres de la communauté. Il a passé en revue les événements de sécurité majeurs rencontrés par l'industrie Web3 au cours de l'année écoulée, a exploré les raisons de ces événements 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 également donné quelques conseils de sécurité aux porteurs de projets et aux utilisateurs ordinaires.
Les types de vulnérabilités DeFi courants comprennent principalement les prêts flash, la manipulation des prix, les problèmes de permissions de fonction, 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. Cet article se concentrera sur ces trois types : 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 il est souvent exploité par des hackers :
L'attaquant emprunte une grande quantité de fonds via un prêt éclair pour manipuler les prix ou attaquer la logique commerciale.
Les développeurs doivent prendre en compte si les fonctionnalités du contrat peuvent être anormales en raison de fonds énormes ou être exploitées pour obtenir des récompenses indues.
Certains projets n'ont pas pris en compte l'impact des prêts flash lors de leur conception, ce qui a entraîné le vol de fonds.
Au cours des deux dernières années, les prêts flash ont suscité de nombreux problèmes. Certains projets DeFi à rendement élevé, en raison de niveaux de développement inégaux, présentent de nombreuses failles. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction des avoirs, et des attaquants exploitent des prêts flash pour acheter de grandes quantités de jetons afin d'obtenir la plupart des récompenses. D'autres projets, qui calculent les prix à l'aide de tokens, peuvent être affectés par des prêts flash. Les équipes de projet doivent rester vigilantes face à ces problèmes.
Manipulation des prix
Les problèmes de manipulation des prix sont étroitement liés aux prêts flash, et il en existe principalement deux types:
Utiliser des données tierces pour calculer le prix, mais une mauvaise utilisation ou un manque de contrôle peuvent entraîner une manipulation malveillante des prix.
Utiliser le solde de Token de certaines adresses comme variable de calcul, et ces soldes peuvent être temporairement augmentés ou diminués.
Attaque par réentrance
Le principal risque lié à l'appel de contrats externes est qu'ils peuvent prendre le contrôle du flux, entraînant des modifications inattendues des données. Par exemple :
fonction retirerSolde() public {
uint montantÀRetirer = userBalances[msg.sender];
(bool succès, ) = msg.sender.call.value(montantÀRetirer)("");
require(succès);
userBalances[msg.sender] = 0;
}
Étant donné que le solde de l'utilisateur est remis à zéro uniquement à la fin de la fonction, les appels répétés permettront toujours de retirer le solde.
Les attaques par réinjection se présentent sous différentes formes et peuvent impliquer plusieurs fonctions ou contrats. Pour résoudre les problèmes de réinjection, il faut prêter attention à :
Ne pas seulement empêcher la réentrée d'une seule fonction
Suivre le modèle Checks-Effects-Interactions
Utiliser un modificateur de réentrance vérifié
Il est préférable d'utiliser les meilleures pratiques de sécurité existantes plutôt que de réinventer la roue. Les solutions matures sont plus sûres et fiables que les nouvelles solutions développées en interne.
Conseils de sécurité pour les projets
Suivre les meilleures pratiques de sécurité pour le développement de contrats
Implémenter des fonctionnalités de mise à niveau et de suspension des contrats
采用 un mécanisme de verrouillage temporel
Augmenter les investissements en sécurité, établir un système de sécurité complet.
Sensibiliser tous les employés à la sécurité
Prévenir les actes malveillants internes, tout en renforçant la gestion des risques tout en améliorant l'efficacité.
Introduire des tiers avec prudence et effectuer des vérifications de sécurité.
Comment les utilisateurs peuvent-ils évaluer la sécurité des contrats intelligents
Vérifiez si le contrat est open source
Vérifiez si le propriétaire utilise une multi-signature décentralisée
Vérifiez l'état des transactions existantes du contrat
Déterminer si le contrat est upgradable et s'il y a un verrouillage temporel.
Vérifiez si le contrat a été audité par plusieurs institutions, si les droits de l'Owner sont trop étendus.
Suivre l'utilisation des oracles
En somme, dans l'écosystème de la Finance décentralisée, les porteurs de projet et les utilisateurs doivent maintenir une grande conscience de la sécurité, prendre les mesures de prévention nécessaires et collaborer pour préserver le développement sain de l'écosystème.
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
3
Partager
Commentaire
0/400
ImpermanentPhobia
· Il y a 11h
Hacker et Prêts Flash, c'est vraiment excitant.
Voir l'originalRépondre0
SnapshotBot
· Il y a 12h
Le projet de fête continue de se faire prendre pour des cons tous les jours.
Sécurité et défense en Finance décentralisée : Guide de prévention des Prêts Flash, manipulation des prix et attaques par réentrées
Vulnérabilités de sécurité courantes dans la Finance décentralisée et mesures préventives
Récemment, un expert en sécurité a partagé un cours sur la sécurité DeFi avec les membres de la communauté. Il a passé en revue les événements de sécurité majeurs rencontrés par l'industrie Web3 au cours de l'année écoulée, a exploré les raisons de ces événements 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 également donné quelques conseils de sécurité aux porteurs de projets et aux utilisateurs ordinaires.
Les types de vulnérabilités DeFi courants comprennent principalement les prêts flash, la manipulation des prix, les problèmes de permissions de fonction, 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. Cet article se concentrera sur ces trois types : 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 il est souvent exploité par des hackers :
Au cours des deux dernières années, les prêts flash ont suscité de nombreux problèmes. Certains projets DeFi à rendement élevé, en raison de niveaux de développement inégaux, présentent de nombreuses failles. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction des avoirs, et des attaquants exploitent des prêts flash pour acheter de grandes quantités de jetons afin d'obtenir la plupart des récompenses. D'autres projets, qui calculent les prix à l'aide de tokens, peuvent être affectés par des prêts flash. Les équipes de projet doivent rester vigilantes face à ces problèmes.
Manipulation des prix
Les problèmes de manipulation des prix sont étroitement liés aux prêts flash, et il en existe principalement deux types:
Utiliser des données tierces pour calculer le prix, mais une mauvaise utilisation ou un manque de contrôle peuvent entraîner une manipulation malveillante des prix.
Utiliser le solde de Token de certaines adresses comme variable de calcul, et ces soldes peuvent être temporairement augmentés ou diminués.
Attaque par réentrance
Le principal risque lié à l'appel de contrats externes est qu'ils peuvent prendre le contrôle du flux, entraînant des modifications inattendues des données. Par exemple :
solidité mapping (address => uint) private userBalances;
fonction retirerSolde() public { uint montantÀRetirer = userBalances[msg.sender]; (bool succès, ) = msg.sender.call.value(montantÀRetirer)(""); require(succès); userBalances[msg.sender] = 0; }
Étant donné que le solde de l'utilisateur est remis à zéro uniquement à la fin de la fonction, les appels répétés permettront toujours de retirer le solde.
Les attaques par réinjection se présentent sous différentes formes et peuvent impliquer plusieurs fonctions ou contrats. Pour résoudre les problèmes de réinjection, il faut prêter attention à :
Il est préférable d'utiliser les meilleures pratiques de sécurité existantes plutôt que de réinventer la roue. Les solutions matures sont plus sûres et fiables que les nouvelles solutions développées en interne.
Conseils de sécurité pour les projets
Comment les utilisateurs peuvent-ils évaluer la sécurité des contrats intelligents
En somme, dans l'écosystème de la Finance décentralisée, les porteurs de projet et les utilisateurs doivent maintenir une grande conscience de la sécurité, prendre les mesures de prévention nécessaires et collaborer pour préserver le développement sain de l'écosystème.