Finance décentralisée : vulnérabilités de sécurité courantes et mesures préventives
Récemment, un expert du secteur a partagé ses réflexions sur la sécurité de la Finance décentralisée. 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 écoulée, discutant des raisons de ces événements et de la manière de les éviter. Il 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 équipes de projet et aux utilisateurs ordinaires.
Les types courants de vulnérabilités DeFi 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 de fallback, les vulnérabilités de logique métier, la fuite de clés privées et les attaques de réentrance, etc. Ci-dessous, nous nous concentrerons sur les prêts flash, la manipulation des prix et les attaques de réentrance.
Prêt éclair
Bien que le prêt éclair soit une innovation dans la Finance décentralisée, il est souvent utilisé par des hackers. Les attaquants empruntent de grandes quantités de fonds par le biais de prêts éclair pour manipuler les prix ou attaquer la logique métier. Les développeurs doivent prendre en compte si les fonctionnalités du contrat peuvent devenir anormales en raison de l'énorme montant des fonds, ou s'il est possible d'obtenir des récompenses indues en interagissant avec plusieurs fonctions dans une seule transaction grâce à de gros montants.
De nombreux projets de Finance décentralisée semblent offrir des rendements élevés, mais en réalité, le niveau des équipes de projet varie considérablement. Certains projets peuvent utiliser du code acheté, et même si le code lui-même n'a pas de vulnérabilités, il peut y avoir des problèmes logiques. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction des quantités détenues, mais sont exploités par des attaquants utilisant des prêts flash pour acheter un grand nombre de jetons, obtenant ainsi la majeure partie des bénéfices lors de la distribution 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 certains paramètres peuvent être contrôlés par les utilisateurs lors du calcul des prix. Il existe deux types de problèmes courants :
Utilisation de données tierces pour calculer les prix, mais mauvaise utilisation ou manque de vérification, entraînant une manipulation malveillante des prix.
Utiliser la quantité de jetons de certaines adresses comme variable de calcul, tandis que le solde des jetons de ces adresses peut être temporairement augmenté ou diminué.
Attaque de 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 :
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool success, ) = msg.sender.call.value(amountToWithdraw)("");
require(success);
userBalances[msg.sender] = 0;
}
Puisque le solde de l'utilisateur n'est mis à 0 qu'à la fin de la fonction, les appels ultérieurs continueront de réussir, permettant ainsi de retirer le solde à plusieurs reprises.
Pour résoudre le problème de réentrance, il faut prêter attention aux points suivants :
Ne pas seulement empêcher le problème de réentrance d'une fonction unique.
Suivre le modèle Checks-Effects-Interactions lors du codage
Utiliser un modificateur anti-reentrance vérifié
Il est préférable d'utiliser des pratiques de sécurité éprouvées plutôt que de réinventer la roue. Les nouvelles solutions que l'on développe soi-même manquent souvent de validation adéquate et ont un risque plus élevé de rencontrer des problèmes.
Conseils de sécurité
recommandations de sécurité pour les projets
Le développement de contrats respecte les meilleures pratiques de sécurité.
Les contrats peuvent être mis à niveau et suspendus.
Utiliser un verrou 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 actes malveillants internes tout en renforçant le contrôle des risques tout en améliorant l'efficacité.
Introduire des tiers avec prudence, effectuer des vérifications de sécurité en amont et en aval.
Comment les utilisateurs peuvent-ils déterminer si un contrat intelligent est sécurisé
Le contrat est-il open source
Le propriétaire utilise-t-il une multi-signature décentralisée ?
Vérifiez l'état des transactions existantes du contrat
Le contrat est-il un contrat d'agence, est-il upgradable, y a-t-il une période de verrouillage ?
Le contrat a-t-il été audité par plusieurs institutions, les droits du propriétaire sont-ils trop étendus ?
Faites attention à la sécurité des oracles.
En somme, dans le domaine de la Finance décentralisée, les problèmes de sécurité ne doivent pas être négligés. Les équipes de projet et les utilisateurs doivent rester vigilants, prendre les mesures de sécurité nécessaires et maintenir ensemble le développement sain de l'écosystème de la Finance décentralisée.
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.
13 J'aime
Récompense
13
6
Partager
Commentaire
0/400
BearMarketBuilder
· Il y a 2h
Ce bug a été corrigé, mais un autre arrive. Quand est-ce que ça va s'arrêter ?
Voir l'originalRépondre0
BackrowObserver
· Il y a 2h
À quoi ça sert de ne pas savoir développer si on se fait pirater ?
Voir l'originalRépondre0
NFT_Therapy
· Il y a 2h
Le contrat n'est pas bien rédigé, le Hacker ne pourra pas s'enfuir.
Voir l'originalRépondre0
PhantomMiner
· Il y a 2h
Ce bug est vraiment trop nombreux, comment les pigeons peuvent-ils faire face aux Hackers ?
Voir l'originalRépondre0
consensus_whisperer
· Il y a 2h
Encore une fois, nous allons parler de la sécurité de la Finance décentralisée.
Voir l'originalRépondre0
WalletManager
· Il y a 2h
Après avoir examiné l'audit de code, même la sauvegarde du Cold Wallet ne semble pas assez sûre, la vulnérabilité de réentrance est trop profonde !
Sécurité DeFi : analyse complète des vulnérabilités courantes et des stratégies de protection
Finance décentralisée : vulnérabilités de sécurité courantes et mesures préventives
Récemment, un expert du secteur a partagé ses réflexions sur la sécurité de la Finance décentralisée. 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 écoulée, discutant des raisons de ces événements et de la manière de les éviter. Il 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 équipes de projet et aux utilisateurs ordinaires.
Les types courants de vulnérabilités DeFi 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 de fallback, les vulnérabilités de logique métier, la fuite de clés privées et les attaques de réentrance, etc. Ci-dessous, nous nous concentrerons sur les prêts flash, la manipulation des prix et les attaques de réentrance.
Prêt éclair
Bien que le prêt éclair soit une innovation dans la Finance décentralisée, il est souvent utilisé par des hackers. Les attaquants empruntent de grandes quantités de fonds par le biais de prêts éclair pour manipuler les prix ou attaquer la logique métier. Les développeurs doivent prendre en compte si les fonctionnalités du contrat peuvent devenir anormales en raison de l'énorme montant des fonds, ou s'il est possible d'obtenir des récompenses indues en interagissant avec plusieurs fonctions dans une seule transaction grâce à de gros montants.
De nombreux projets de Finance décentralisée semblent offrir des rendements élevés, mais en réalité, le niveau des équipes de projet varie considérablement. Certains projets peuvent utiliser du code acheté, et même si le code lui-même n'a pas de vulnérabilités, il peut y avoir des problèmes logiques. Par exemple, certains projets distribuent des récompenses à des moments fixes en fonction des quantités détenues, mais sont exploités par des attaquants utilisant des prêts flash pour acheter un grand nombre de jetons, obtenant ainsi la majeure partie des bénéfices lors de la distribution 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 certains paramètres peuvent être contrôlés par les utilisateurs lors du calcul des prix. Il existe deux types de problèmes courants :
Utilisation de données tierces pour calculer les prix, mais mauvaise utilisation ou manque de vérification, entraînant une manipulation malveillante des prix.
Utiliser la quantité de jetons de certaines adresses comme variable de calcul, tandis que le solde des jetons de ces adresses peut être temporairement augmenté ou diminué.
Attaque de 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;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Puisque le solde de l'utilisateur n'est mis à 0 qu'à la fin de la fonction, les appels ultérieurs continueront de réussir, permettant ainsi de retirer le solde à plusieurs reprises.
Pour résoudre le problème de réentrance, il faut prêter attention aux points suivants :
Il est préférable d'utiliser des pratiques de sécurité éprouvées plutôt que de réinventer la roue. Les nouvelles solutions que l'on développe soi-même manquent souvent de validation adéquate et ont un risque plus élevé de rencontrer des problèmes.
Conseils de sécurité
recommandations de sécurité pour les projets
Comment les utilisateurs peuvent-ils déterminer si un contrat intelligent est sécurisé
En somme, dans le domaine de la Finance décentralisée, les problèmes de sécurité ne doivent pas être négligés. Les équipes de projet et les utilisateurs doivent rester vigilants, prendre les mesures de sécurité nécessaires et maintenir ensemble le développement sain de l'écosystème de la Finance décentralisée.