Analyse des vulnérabilités de sécurité courantes dans la Finance décentralisée et des mesures préventives
Récemment, un expert en sécurité a partagé avec les membres de la communauté des idées sur la sécurité de la Finance décentralisée. Il a passé en revue les événements de sécurité majeurs survenus dans 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 donné quelques conseils de sécurité aux projets et aux utilisateurs.
Les types de vulnérabilités courants dans le domaine de la Finance décentralisée incluent 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 la logique métier, la fuite de clés privées et les attaques par réentrance, etc. Cet article se concentrera sur 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 dans le domaine de la Finance décentralisée, mais il est souvent exploité par des hackers. Les attaquants empruntent d'énormes sommes d'argent par le biais de prêts éclair pour manipuler les prix ou attaquer la logique commerciale. Les développeurs doivent prendre en compte si les fonctionnalités du contrat peuvent entraîner des anomalies en raison de fonds massifs, ou être exploitées pour interagir avec plusieurs fonctions dans une seule transaction afin d'obtenir des gains indus.
Au cours des deux dernières années, les prêts instantanés ont suscité de nombreux problèmes. Certains projets DeFi apparemment à haut rendement présentent en réalité de nombreux risques de sécurité. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction de la quantité détenue, et ont été exploités par des attaquants utilisant des prêts instantanés pour acheter de grandes quantités de jetons afin d'obtenir la majorité des récompenses. D'autres projets, qui calculent les prix en fonction des jetons, peuvent être facilement affectés par des prêts instantanés.
Manipulation des prix
Les problèmes de manipulation des prix sont étroitement liés aux prêts flash, avec principalement deux situations :
Utilisation de données tierces pour le calcul des prix, mais utilisation incorrecte ou manque de vérification, entraînant une manipulation malveillante des prix.
Utiliser le solde des tokens de certaines adresses comme variable de calcul, ces soldes pouvant être temporairement augmentés ou diminués.
Attaque par réinjection
Le principal risque d'appeler des contrats externes est qu'ils peuvent prendre le contrôle du flux et apporter des modifications inattendues aux données. Un exemple typique d'attaque par réinsertion est le suivant :
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool succès, ) = msg.sender.call.value(montantÀRetirer)("");
require(succès);
userBalances[msg.sender] = 0;
}
Dans cet exemple, comme le solde de l'utilisateur n'est mis à 0 qu'à la fin de la fonction, un attaquant peut appeler plusieurs fois la fonction de retrait entre-temps, entraînant des retraits en double.
Pour résoudre le problème de réentrance, il faut prêter attention aux points suivants :
Non seulement empêcher la réentrance d'une seule fonction, mais aussi prendre en compte la réentrance entre fonctions et entre contrats.
Suivez le modèle Checks-Effects-Interactions lors du codage.
Utiliser un modificateur anti-reentrance vérifié.
Il est important d'éviter de réinventer la roue et d'adopter les meilleures pratiques de sécurité déjà vérifiées dans l'industrie.
Conseils de sécurité pour les projets
Suivre les meilleures pratiques de sécurité pour le développement de contrats intelligents.
Mettre en œuvre des fonctionnalités de mise à niveau et de suspension des contrats.
Utiliser un mécanisme de verrouillage temporel.
Accroître les investissements en 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 comportements malveillants internes tout en améliorant l'efficacité et en renforçant la gestion des risques.
Soyez prudent lors de l'introduction de tiers, en suivant le principe "ni en amont ni en aval par défaut n'est sûr".
Comment les utilisateurs peuvent évaluer la sécurité des contrats intelligents
Vérifiez si le contrat est open source.
Vérifiez si le propriétaire utilise un mécanisme de multi-signature décentralisé.
Vérifiez les transactions existantes du contrat.
Vérifiez si le contrat est un contrat d'agent, s'il est évolutif et s'il y a un verrouillage temporel.
Confirmer si le contrat a été audité par plusieurs institutions et évaluer si les droits du propriétaire sont trop importants.
Faites attention au type d'oracle utilisé par le projet et à sa sécurité.
En résumé, dans le domaine de la Finance décentralisée, la sécurité est toujours la principale préoccupation. Les équipes de projet doivent améliorer pleinement leur conscience et leurs mesures de sécurité, tandis que les utilisateurs doivent rester vigilants et évaluer attentivement la sécurité des projets avant de prendre une décision.
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.
14 J'aime
Récompense
14
4
Reposter
Partager
Commentaire
0/400
UnluckyLemur
· 08-12 15:44
C'est encore le même piège. Quand pourrons-nous avoir de nouvelles façons de jouer ?
Voir l'originalRépondre0
DefiPlaybook
· 08-10 18:09
Les données statistiques montrent que les Prêts Flash restent la principale source de risque, représentant jusqu'à 47,8 %.
Voir l'originalRépondre0
wrekt_but_learning
· 08-10 17:58
Les failles sont toujours le même piège, il n'y a rien de nouveau.
Voir l'originalRépondre0
BoredApeResistance
· 08-10 17:46
Les pigeons qui ont subi de grandes pertes ont enfin compris ?
Finance décentralisée : analyse des vulnérabilités courantes et stratégies de prévention
Analyse des vulnérabilités de sécurité courantes dans la Finance décentralisée et des mesures préventives
Récemment, un expert en sécurité a partagé avec les membres de la communauté des idées sur la sécurité de la Finance décentralisée. Il a passé en revue les événements de sécurité majeurs survenus dans 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 donné quelques conseils de sécurité aux projets et aux utilisateurs.
Les types de vulnérabilités courants dans le domaine de la Finance décentralisée incluent 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 la logique métier, la fuite de clés privées et les attaques par réentrance, etc. Cet article se concentrera sur 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 dans le domaine de la Finance décentralisée, mais il est souvent exploité par des hackers. Les attaquants empruntent d'énormes sommes d'argent par le biais de prêts éclair pour manipuler les prix ou attaquer la logique commerciale. Les développeurs doivent prendre en compte si les fonctionnalités du contrat peuvent entraîner des anomalies en raison de fonds massifs, ou être exploitées pour interagir avec plusieurs fonctions dans une seule transaction afin d'obtenir des gains indus.
Au cours des deux dernières années, les prêts instantanés ont suscité de nombreux problèmes. Certains projets DeFi apparemment à haut rendement présentent en réalité de nombreux risques de sécurité. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction de la quantité détenue, et ont été exploités par des attaquants utilisant des prêts instantanés pour acheter de grandes quantités de jetons afin d'obtenir la majorité des récompenses. D'autres projets, qui calculent les prix en fonction des jetons, peuvent être facilement affectés par des prêts instantanés.
Manipulation des prix
Les problèmes de manipulation des prix sont étroitement liés aux prêts flash, avec principalement deux situations :
Attaque par réinjection
Le principal risque d'appeler des contrats externes est qu'ils peuvent prendre le contrôle du flux et apporter des modifications inattendues aux données. Un exemple typique d'attaque par réinsertion est le suivant :
solidité 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; }
Dans cet exemple, comme le solde de l'utilisateur n'est mis à 0 qu'à la fin de la fonction, un attaquant peut appeler plusieurs fois la fonction de retrait entre-temps, entraînant des retraits en double.
Pour résoudre le problème de réentrance, il faut prêter attention aux points suivants :
Il est important d'éviter de réinventer la roue et d'adopter les meilleures pratiques de sécurité déjà vérifiées dans l'industrie.
Conseils de sécurité pour les projets
Comment les utilisateurs peuvent évaluer la sécurité des contrats intelligents
En résumé, dans le domaine de la Finance décentralisée, la sécurité est toujours la principale préoccupation. Les équipes de projet doivent améliorer pleinement leur conscience et leurs mesures de sécurité, tandis que les utilisateurs doivent rester vigilants et évaluer attentivement la sécurité des projets avant de prendre une décision.