Vulnérabilités de sécurité courantes en Finance décentralisée et mesures préventives
Récemment, un expert en sécurité a partagé ses réflexions sur la sécurité de la Finance décentralisée, 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 é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 DeFi courants incluent 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 logiques commerciales, les fuites de clés privées, et les réentrées, etc. Ci-dessous, nous mettrons l'accent sur les prêts flash, la manipulation des prix et les attaques par réentrées.
Prêt éclair
Le prêt flash est une innovation de la Finance décentralisée, mais il est également exploité par des hackers pour mener des attaques. Les attaquants empruntent d'importants montants via des prêts flash pour manipuler les prix ou attaquer la logique commerciale. Les développeurs doivent prendre en compte si les fonctions des contrats peuvent devenir anormales en raison de montants massifs ou être exploitées pour obtenir des récompenses indues.
De nombreux projets de Finance décentralisée semblent offrir des rendements élevés, mais en réalité, le niveau des équipes est inégal. Certains projets peuvent avoir acheté leur code, et même si le code lui-même n'a pas de vulnérabilités, il peut toujours y avoir des problèmes logiques. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction des positions, mais des attaquants peuvent exploiter les prêts flash pour acheter une grande quantité de jetons et obtenir la majorité des récompenses.
Manipulation des prix
Le problème de manipulation des prix est étroitement lié aux prêts flash, principalement en raison du fait que les paramètres utilisés pour le calcul des prix peuvent être contrôlés par les utilisateurs. Il existe deux types de problèmes courants :
Lors du calcul des prix, des données tierces sont utilisées, mais la méthode d'utilisation n'est pas correcte ou le contrôle est manquant, ce qui entraîne une manipulation malveillante des prix.
Utiliser la quantité de tokens de certaines adresses comme variable de calcul, tandis que le solde des tokens de ces adresses peut être temporairement augmenté ou diminué.
Attaque par réentrance
L'un des principaux risques liés à l'appel de contrats externes est qu'ils peuvent prendre le contrôle du flux d'exécution et apporter des modifications inattendues aux données. Par exemple:
fonction retirerSolde() public {
uint montantÀRetirer = userBalances[msg.sender];
(bool succès, ) = msg.sender.call.value(montantÀRetirer)("");
require(succes);
userBalances[msg.sender] = 0;
}
Étant donné que le solde de l'utilisateur n'est mis à zéro qu'à la fin de la fonction, les appels répétés réussiront toujours, permettant de retirer le solde à plusieurs reprises.
Résoudre le problème de réentrance nécessite de prêter attention à :
Ne pas seulement empêcher la réentrance d'une seule fonction
Suivre le modèle Checks-Effects-Interactions
Utiliser un modificateur de protection contre les réentrées vérifié
Les attaques par réentrance sont variées et peuvent impliquer plusieurs fonctions ou contrats, ce qui rend leur résolution assez complexe. Il est préférable d'utiliser des pratiques éprouvées plutôt que de réinventer la roue.
Conseils de sécurité du projet
Suivre les meilleures pratiques de sécurité pour le développement de contrats
Mise en œuvre de la fonctionnalité de mise à niveau et de pause des contrats
Utiliser un mécanisme de verrouillage temporel
Augmenter 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 renforçant la gestion des risques lors de l'amélioration de l'efficacité.
Introduire des composants tiers avec précaution, 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 un multi-signatures et si le multi-signatures est décentralisé.
Vérifiez les transactions existantes du contrat
Déterminer si le contrat est un contrat d'agent, s'il est évolutif, s'il y a un verrouillage temporel.
Vérifiez si le contrat a été audité par plusieurs organismes et si les droits du propriétaire ne sont pas trop étendus.
Attention à l'utilisation des oracles
En somme, dans le domaine de la Finance décentralisée, les problèmes de sécurité sont particulièrement importants. Les projets doivent accorder une attention particulière aux investissements en sécurité, et les utilisateurs doivent également rester vigilants et participer avec prudence. Ce n'est qu'en travaillant ensemble que nous pourrons construire un écosystème de Finance décentralisée plus sûr et plus fiable.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
9 J'aime
Récompense
9
4
Partager
Commentaire
0/400
SchrodingerProfit
· Il y a 16h
Coupe, il y a encore des pigeons qui ne sont pas pris pour des idiots?
Voir l'originalRépondre0
ContractSurrender
· Il y a 16h
Encore un grand guide pour se faire prendre pour des cons !
Voir l'originalRépondre0
SnapshotDayLaborer
· Il y a 16h
Il faut vraiment faire attention, heureusement que je cours vite.
Voir l'originalRépondre0
CoconutWaterBoy
· Il y a 17h
C'est tout simplement une taxe sur le quotient intellectuel !
Finance décentralisée sécurité : types de vulnérabilités courants et guide de prévention
Vulnérabilités de sécurité courantes en Finance décentralisée et mesures préventives
Récemment, un expert en sécurité a partagé ses réflexions sur la sécurité de la Finance décentralisée, 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 é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 DeFi courants incluent 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 logiques commerciales, les fuites de clés privées, et les réentrées, etc. Ci-dessous, nous mettrons l'accent sur les prêts flash, la manipulation des prix et les attaques par réentrées.
Prêt éclair
Le prêt flash est une innovation de la Finance décentralisée, mais il est également exploité par des hackers pour mener des attaques. Les attaquants empruntent d'importants montants via des prêts flash pour manipuler les prix ou attaquer la logique commerciale. Les développeurs doivent prendre en compte si les fonctions des contrats peuvent devenir anormales en raison de montants massifs ou être exploitées pour obtenir des récompenses indues.
De nombreux projets de Finance décentralisée semblent offrir des rendements élevés, mais en réalité, le niveau des équipes est inégal. Certains projets peuvent avoir acheté leur code, et même si le code lui-même n'a pas de vulnérabilités, il peut toujours y avoir des problèmes logiques. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction des positions, mais des attaquants peuvent exploiter les prêts flash pour acheter une grande quantité de jetons et obtenir la majorité des récompenses.
Manipulation des prix
Le problème de manipulation des prix est étroitement lié aux prêts flash, principalement en raison du fait que les paramètres utilisés pour le calcul des prix peuvent être contrôlés par les utilisateurs. Il existe deux types de problèmes courants :
Lors du calcul des prix, des données tierces sont utilisées, mais la méthode d'utilisation n'est pas correcte ou le contrôle est manquant, ce qui entraîne une manipulation malveillante des prix.
Utiliser la quantité de tokens de certaines adresses comme variable de calcul, tandis que le solde des tokens de ces adresses peut être temporairement augmenté ou diminué.
Attaque par réentrance
L'un des principaux risques liés à l'appel de contrats externes est qu'ils peuvent prendre le contrôle du flux d'exécution et apporter des modifications inattendues aux 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(succes); userBalances[msg.sender] = 0; }
Étant donné que le solde de l'utilisateur n'est mis à zéro qu'à la fin de la fonction, les appels répétés réussiront toujours, permettant de retirer le solde à plusieurs reprises.
Résoudre le problème de réentrance nécessite de prêter attention à :
Les attaques par réentrance sont variées et peuvent impliquer plusieurs fonctions ou contrats, ce qui rend leur résolution assez complexe. Il est préférable d'utiliser des pratiques éprouvées plutôt que de réinventer la roue.
Conseils de sécurité du projet
Comment les utilisateurs peuvent-ils évaluer la sécurité des contrats intelligents
En somme, dans le domaine de la Finance décentralisée, les problèmes de sécurité sont particulièrement importants. Les projets doivent accorder une attention particulière aux investissements en sécurité, et les utilisateurs doivent également rester vigilants et participer avec prudence. Ce n'est qu'en travaillant ensemble que nous pourrons construire un écosystème de Finance décentralisée plus sûr et plus fiable.