
Auteur: Salus Insights
Il existe de nombreux risques de sécurité dans le domaine de la finance décentralisée (DEFI), ce qui peut nuire gravement aux utilisateurs, aux plateformes et à l’ensemble de l’écosystème financier.Nous avons résumé trois risques de sécurité Defi et analysé le processus de pirates et de solutions correspondantes en analysant les récents incidents de sécurité réels.
-
Risque de manipulation des prix
-
Risque de vulnérabilité du contrat intelligent
-
Risque de fonctionnement de l’utilisateur
1. Risque de manipulation des prix
Dans Defi, le risque de manipulation des prix fait référence au comportement des acteurs malveillants essayant de profiter ou d’affecter le marché en manipulant le prix des actifs.Cette manipulation peut entraîner des prix anormaux du marché, entraînant des pertes à d’autres participants.Dans ce qui suit, nous résumons trois situations qui peuvent survenir dans le risque de manipulation des prix dans Defi:
-
Attaque de prêt de foudre
-
Attaque à sandwich
-
Attaque de la machine juge
1.1 Attaque de prêt Lightning
Lightning Loan Attack est une méthode d’attaque dans les applications Defi.Il utilise des opérations financières telles que Lightning Loan sans fournir d’hypothèques.L’attaquant emprunte de nombreux fonds grâce à Lightning Prêt et effectue une série d’opérations dans la même transaction pour effectuer une fraude.
Événement d’attaque de prêt Shidoglobal Lightning
Le 23 juin 2023, des attaques de prêts Shidoglobal Lightning ont eu lieu dans le BSC (Binance Smart Chain).L’attaquant réalise l’arbitrage d’Albon en verrouillant et en obtenant le mécanisme, et la différence de prix entre les deux pools.976 WBNB a été volé avec succès.
Attaquez TX:
https://explorer.phlcon.xyz/bsc/0x72f8dd2bcfe2c9fbf0d93367804178a0d89956babe3aa712d6
Comment un attaquant effectue-t-il des attaques de prêts Lightning?
-
L’attaquant a emprunté 40 prêts WBNB Lightning.
>
-
L’attaquant a échangé 39 WBNB en 10, 436, 972, 685, 676, 390, 697 Shido Inu: Shido Tokens (9 chiffres après décimal), et stocké dans Pancakeswap V2: Shido-Wbnb Pool.Cette étape a augmenté l’offre de jetons Shido Inu: Shido dans la piscine, entraînant une baisse du prix du jeton.
>
-
L’attaquant a ensuite appelé Shidolock.locktokens et Shidolock.ClaimTokens à son tour, qui a transformé 10, 436, 972, 685.676390697: Shido Tokens (9 chiffres après décimal) à 10, 436, 986, 70 4, 133, 494, 387, 000 , 000 et 000 jetons Shido (18 chiffres après point décimal).
Lorsque l’attaquant appelle la fonction Locktokens dans le contrat Shidolock, il sera verrouillé dans le contrat 10, 436, 972, 685.676390697: verrouillage des jetons Shido dans le contrat.Cela signifie que ces jetons ne peuvent pas être transférés ou échangés tant que des conditions spécifiques ne sont pas remplies.En verrouillant les jetons, les attaquants peuvent maintenir le prix des jetons dans une certaine mesure.
L’attaquant appelle la fonction de revendication et convertit le jeton de verrouillage -up en 10, 436, 986, 704, 133, 494, 387, 000, 000, 000 jeton Shido.En fait, les chiffres décimaux des jetons Shido sont passés de 9 à 18, augmentant l’offre totale de jetons.
>
-
En verrouillant et en obtenant des mécanismes, il existe une différence de prix entre Pancakeswap V2: Shido-WBNB Pool et Pancakeswap V2: Shido 28 Pool.Plus précisément, en raison de l’augmentation de l’offre dans le Pancakeswap V2: Shido-WBNB Pool, l’augmentation des augmentations de prix, entraînant une baisse du prix.Dans Pancakeswap v2: Shido 28 Pool, le prix est relativement élevé car l’offre n’a pas augmenté.L’attaquant utilise cette différence de prix pour échanger des jetons entre les deux pools. -bit) échangé à 1, 016 WBNB.
>
-
Enfin, l’attaquant a remboursé 40 prêts WBNB Lightning et a reçu environ 976 bénéfices WBNB.
>
Fonction de prêt Lightning Limite
Limiter la fonction de prêt Lightning et introduire les frais de prêt LightningC’est un moyen courant de réduire le risque de prêt de foudre et de manipulation.
-
Limite Fonction de prêt Lightning: les fonctions de prêt Lightning peuvent être limitées, comme la fixation du montant minimum du prêt, le délai d’emprunt, etc.Cela peut réduire l’occasion d’attaquer par les attaquants en utilisant des prêts Lightning.
-
Présentez la peur du prêt Lightning: vous pouvez facturer des frais aux emprunteurs.Cela peut augmenter le coût de l’attaque et faire en sorte que l’attaquant fait face à des risques et des coûts plus élevés lors de l’attaque des prêts de foudre.
>
Dans l’exemple de code ci-dessus, nous avons établi certaines restrictions pour restreindre l’utilisation d’un prêt Lightning, tel que le montant minimum du prêt, le montant maximum du prêt et le temps de prêt.Avant d’effectuer une opération de prêt Lightning, nous calculons et facturons un certain pourcentage de frais de manutention.
1.2 Attaque de sandwich
L’attaque de sandwich est une méthode d’attaque qui utilise des informations asymétriques dans l’échange décentralisé (DEX).L’attaquant utilise une transaction malveillante entre les deux transactions pour utiliser les différences de prix pour obtenir des bénéfices.
Curvefinance Sandwichs Attack Incident
Le 2 août 2023, Hypernatic Systems a lancé une attaque sandwich sur la finance de la courbe.L’attaquant insère une transaction malveillante entre les deux transactions entre la liquidité et l’élimination de la liquidité.Gagnez 36,8 K USDT.
Attaquez TX:
https://explorer.phlcon.xyz/tx/eth/0xd4933393952049644c531309dd4134bf3db1e6f0b68b016ee0bfffde
Comment un attaquant met-il en œuvre une attaque sandwich?
-
Les attaquants obtiennent d’énormes prêts de foudre de plusieurs sources de fonds, notamment WSTTH, WETH et USDT.
>
-
L’attaquant fournit 3 liquidités Pool 155, 000 000 USDT et obtient 3 jetons LP CRV.3 CRV est un jeton LP de la courbe Tripool (Curve DAI / USDC / USDT Mining Pond), qui est une piscine minière qui est endommagée dans l’attaque.
>
-
L’attaquant a retiré de la liquidité de la piscine (presque tous) DAI et USDC, et a détruit 3 jetons LP CRV.À cette époque, la piscine était presque complètement USDT, ce qui le rendait temporairement beaucoup moins cher que DAI et USDC.
>
-
Appelez la fonction sous-jacente du contrat Execute () et continuez d’ajouter de la liquidité au pool d’exploitation DAI / USDC / USDC / USDT.Sous-jacent ce que l’on tient principalement USDT, Ajout DAI: USDC: La quantité USDT est de 100 000: 100 000: 227, 079, 039, 776.Cela a rendu la piscine minière plus déséquilibrée, la quantité relative d’USDT est plus élevée et la valeur est plus faible.
>
-
L’attaquant a ajouté le DAI et l’USDC qu’il a tenus à la piscine minière Curve DAI / USDC / USDT et a joué une prime, ce qui signifie obtenir un nombre plus élevé de 3 jetons CRV LP.
>
-
L’attaquant détruit son jeton LP 3 CRV et extrait la liquidité USDT.
>
-
L’attaquant a remboursé le prêt flash et conserve le bénéfice de 36,8 K USDT.
>
Dans ce processus, les transactions malveillantes se réfèrent à l’attaquant supprimé une grande quantité de liquidité DAI et USDC de la courbe DAI / USDC / USDT Mining Pool et a détruit la transaction de jeton LP 3 CRV.Cette transaction rend le pool minière très déséquilibré et le nombre relatif d’USDT est plus élevé, ce qui conduit à une valeur inférieure.
Les deux autres transactions se réfèrent aux transactions des attaquants pour ajouter de la liquidité et extraire des liquidités.L’attaquant utilise la différence de prix pour ajouter la liquidité DAI et USDC à la courbe DAI / USDC / USDT Mining Pool, et l’extraire à une prime pour obtenir un nombre plus élevé de 3 jetons LP CRV.
De cette façon, l’attaquant enveloppe les transactions malveillantes avec deux autres transactions par le biais de sandwichs, achète des liquidités USDT à un prix bas, puis vend des bénéfices à des prix élevés.
Séquence de transaction restreinte
Lorsqu’il s’agit d’éviter les sandwichs, l’implémentation du code peut impliquer des contrats intelligents complexes et une logique de trading.Ce qui suit est un exemple simplifié, comment passer l’affichageRestreindre la séquence de la transaction et l’introduction des retards de transactionVenez empêcher les attaques de sandwich.
>
Dans cet exemple, nous supposons qu’il existe un contrat intelligent SandwichattackPrevent pour gérer le solde et le fonctionnement des transactions des utilisateurs.Afin de prévenir les attaques de sandwich, nous avons introduit deux principaux mécanismes de défense.
Tout d’abord, dans la fonction AllowTransaction, seul l’entrepreneur du contrat peut définir l’istanactional à TRUE pour permettre aux utilisateurs d’exécuter des transactions.Cela peut garantir que la transaction est exécutée dans le bon ordre sans permettre aux attaquants d’insérer des transactions malveillantes entre deux transactions.
Deuxièmement, dans la fonction ExecutRansaction, nous avons introduit le concept de retard de transaction.Les utilisateurs ne peuvent exécuter la transaction qu’après que le temps de bloc actuel dépasse le temps de retard.Cela peut donner un temps suffisant à d’autres utilisateurs pour exécuter la transaction et mettre à jour le prix, réduisant ainsi la possibilité d’utiliser les différences de prix par les attaquants.
1.3 Attaque de la machine de prophétie
Le Prix Prophète est une source de données qui fournit des informations sur les prix réels des crypto-monnaies.Ces informations sont cruciales pour le fonctionnement normal de nombreux protocoles Defi.L’attaque du prophète fait référence aux données fournies par l’attaquant modifiant artificiellement les données fournies par la machine Prophétie, le but est de réaliser un profit d’une transaction basée sur le prix de manipulation.
Événement d’attaque du prophète de la finance du rodéo
Rodeo est une plate-forme Defi qui fournit des services de machines de prédiction de prix.Le 11 juillet 2023, la manipulation du Prix Prophète a fait voler le pirate du protocole de rodéoEnviron 472 ETH (environ 888 000 dollars américains).
Attaquez TX:
https://explorer.phlcon.xyz/tx/arbitrum/0xb1be5dee3852c818af7428def285b497ffc2eda0d893a09fb25a
Comment manipuler le prix Prophète?
La clé de l’attaque de financement du rodéo est Rodeo Twap Oracle.La machine de prédiction est utilisée pour suivre le ratio de prix entre ETH et UNSHETH.
-
Analyse des transactions d’attaque: le processus d’attaque commence par l’attaquant pour effectuer une transaction bien planifiée.L’attaquant a utilisé la compréhension en profondeur des vulnérabilités potentielles de l’architecture de la plate-forme et a pondéré le temps le prix moyen (TWAP) et a lancé cette attaque.
-
Manipulation de la prophétie TWAP: l’attaquant peut utiliser la fonction GAGE associée à l’adresse stratégique non configurée et échanger de force USDC à UNSHETH.Cette manipulation contourne efficacement le contrôle du point de glissement provoqué par le prophète de prix unsheth défectueux.Essentiellement, la fonction EAGE est remplacée par force de l’USDC à Weth, puis remplacée par unsheth.
-
Calcul du prix TWAP: le prix TWAP est calculé en moyenne jusqu’aux quatre derniers prix mis à jour, chaque intervalle de mise à jour est de 45 minutes.Cependant, le Prophète de prix défectueux renvoie un prix manipulé, ce qui fait croire que la position devrait être saine.
-
Effet de levier en position ouverte: l’attaquant contrôle la machine de prophétie TWAP à travers des sandwichs, puis utilise la fonction GAGE d’un contrat d’investisseurs pour ouvrir la position de levier.Ils ont emprunté USDC d’une valeur de 400 000 $.
>
-
Échange d’actifs: l’attaquant échange les actifs empruntés avec la piscine Camelotdex en bas et le vend à la législature préparée à la piscine.
-
Mouiller la vérification: les contrats vérifient généralement si l’opération est valide.Cependant, parce que l’attaquant contrôlait cette stratégie, il a facilement contourné cette inspection.Cela permet à l’attaquant d’utiliser le UNSHETH préparé à la piscine pour utiliser la position manipulée pour extraire efficacement la liquidité de la plate-forme.
-
Fonds de transfert: l’attaquant a transféré les fonds volés d’Arbitrum à Ethereum, 285 ETH à UNSHETH, puis les a transférés à Arbitrum pour poursuivre l’attaque.Les fonds volés d’une valeur de 150 ETH ont ensuite été transférés à Tornado Cash, un service de pièces mixtes Ethereum qui se concentrait sur la vie privée.Les 371,2 ETH restants (environ 701, 679 $) sont toujours détenus par l’attaquant.
L’une des principales vulnérabilités de cette attaque est les défauts de Rodeo Twap Oracle.La machine à prophétie dépend de la réserve de la paire de transactions Weth / UNSHETH.
Calculez le prix en fonction de plusieurs machines de prophétie
Assurer la fiabilité de la requête de prix, un prophète fiable doit être utiliséMachines de prédiction multiples ou prix d’alimentation agrégésCalculez le prix, pas seulement dépendre du taux de comparaison des jetons.En particulier dans le cas de bassins miniers médiocres, cette source d’informations sur les prix divers peut améliorer la précision des données de prix et rendre difficile pour les attaquants de manipuler les données.
Pour atteindre cet objectif, une solution possible consiste à utiliser des machines de prophétie décentralisées, telles que ChainLink.La machine prévisible ChainLink peut collecter des données à partir de diverses sources de données et utiliser la technologie Blockchain pour vérifier et confirmer la précision des données.En utilisant plusieurs sources de données, ChainLink réduit la possibilité d’une défaillance à point unique et est plus difficile de manipuler les données par les attaquants.
Ce qui suit est un exemple de code qui utilise le contrat de polymère ChainLink pour obtenir des données de prix:
>
Dans le code ci-dessus, nous utilisons un tableau de types d’agrégatorv3Interface pour stocker plusieurs exemples de machines de prophétie.Le constructeur accepte un tableau d’adresse prophète en tant que paramètre et instance chaque adresse dans un objet AggregatorV3Interface.
La fonction GetlateStprice est utilisée pour obtenir les dernières données de prix de plusieurs sources de données.Il traverse le tableau PriceFeeds et obtient des données de prix en appelant la fonction LandestroundData de chaque machine de prophétie.Toutes les données de prix sont stockées dans un tableau de type int et retournées à l’appelant.
De cette façon, nous pouvons obtenir des données de prix à partir de plusieurs sources de données et nous assurer que la requête de prix reflète plus précisément les prix des actifs.
2. Risque de vulnérabilité du contrat intelligent
Vulnérabilités des contrats intelligents Vulnérabilités des contrats intelligents se réfèrent aux vulnérabilités de sécurité ou aux erreurs dans le code écrit sur Ethereum ou dans d’autres plateformes de contrat intelligentes.Le cœur de DeFI est un accord financier basé sur des contrats intelligents, donc les lacunes dans les contrats intelligents peuvent entraîner la perte de fonds d’utilisateurs, la manipulation des comportements du marché ou d’autres comportements malveillants.
Il est très important d’identifier ces vulnérabilités,nousLes couvertures d’auditDivers problèmes potentielsEssenceCela comprend, mais sans s’y limiter, les vulnérabilités réinitialisées, les vulnérabilités de contrôle d’accès, les vulnérabilités de débordement entier et les vulnérabilités de la logique commerciale.Notre service d’audit complet vise à renforcer la sécurité de votre contrat intelligent et à protéger l’impact de ces risques.
Dans ce qui suit, utilisez des vulnérabilités de contrôle d’accès à titre d’exemple, indiquant l’impact des vulnérabilités des contrats intelligents sur Defi.
Vulnérabilité de contrôle d’accès de LeetSwap
Leetswap a subi une attaque,La perte dépasse 340 ETHEssenceLa raison fondamentale est qu’il existe des vulnérabilités de contrôle d’accès dans le contrat de la paire LeetSwap V2.
Attaquez TX:
https://dashboard.tenderly.co/tx/base/0xbb837d417b76dd237b441695a50941c4dee561ea57d982b9f10ec
Contrat vulnérable:
https://basescan.org/address/0x94dac4a3ce998143aa119c05460731da80ad90cff
>
L’attaquant appelle _TransferfeessupporttingTextOxens Fonction pour manipuler le pool.
-
Échangez un autre jeton avec avec Weth.
-
Appelez la fonction _TransferFerfeessupportingTextOxtS pour transférer les jetons A, puis appelez la fonction de synchronisation pour faire augmenter le prix des jetons A.
-
Utilisez les jetons A pour échanger plus de weth et effacer la piscine.
Solution
Pour fixer les vulnérabilités de contrôle d’accès de la fonction _TransferferNtingTextOkens, la visibilité de la fonction doit être changée en privé ou Internet.La fonction est déclarée privée et seules les autres fonctions à l’intérieur du contrat peuvent être appelées.DÉCLARISSEZ LA FONCTION D’UN INTERNET, accessible par le contrat du contrat.Lorsque d’autres contrats héritent du contrat de la paire LeetSwap V2, vous pouvez appeler la fonction Super Keywords _TransferFesuPportingTextOkens via le mot-clé Super.Les utilisateurs externes ne peuvent pas accéder directement à cette fonction pour améliorer la sécurité du contrat.
Il est nécessaire de déterminer comment modifier la visibilité de la fonction en fonction de la logique du contrat spécifique et doit s’assurer qu’elle n’affecte pas le fonctionnement normal du contrat tout en améliorant la sécurité.
L’audit des contrats intelligents est une étape importante dans l’identification et la prévention des vulnérabilités.À Salus,Nous avons une équipe composée de développeurs de contrats intelligents expérimentés et d’experts d’audit, ce qui peut vous aider à améliorer la sécurité du contrat.Nos connaissances professionnelles nous permettent de localiser avec précision les faiblesses potentielles et d’assurer la sécurité et la fiabilité de votre projet.
3. Risque de fonctionnement de l’utilisateur
Dans le domaine de DeFI, le risque de fonctionnement des utilisateurs fait référence au risque de perte de capital en raison de leurs propres erreurs de fonctionnement, d’une conscience insuffisante de la sécurité ou d’un comportement insatisfaisant lors de l’utilisation de la plate-forme Defi.Voici quelques risques communs de fonctionnement des utilisateurs:
-
Cliquez sur les liens malveillants: les utilisateurs peuvent faire des erreurs pour cliquer sur le lien malveillant, conduisant à des logiciels malveillants ou à une infection virale par leur équipement.
-
En utilisant des portefeuilles non sécurisés: si l’utilisateur choisit d’utiliser des applications de portefeuille ou des portefeuilles matériels dangereux, l’attaquant peut utiliser ces vulnérabilités pour voler la clé privée ou l’autorité de fonctionnement de l’utilisateur.
-
Découvrez la clé privée: si l’utilisateur fuit la clé privée dans un environnement différent ou stocke la clé privée dans un endroit dangereux, l’attaquant peut facilement obtenir la clé privée de l’utilisateur, puis contrôler ses fonds.
-
Opérations de négociation peu contenuelles: lorsque l’utilisateur effectue une transaction, si vous ne vérifiez pas soigneusement les détails de la transaction (tels que l’adresse cible, le nombre de transactions, etc.), il peut faire envoyer le capital à la mauvaise adresse ou à la mauvaise adresse nombre d’erreurs.
Afin de réduire le risque de fonctionnement des utilisateurs, voici quelques suggestions:
-
Améliorez la sensibilisation à la sécurité: comprenez les méthodes courantes de pêche, de logiciels malveillantes en ligne, et apprenez à les identifier et à les éviter.Gardez alerte et vérifiez les liens et les applications liées à Defi.
-
Utilisez un portefeuille de sécurité: choisissez d’utiliser l’audit de sécurité et les bonnes applications de portefeuille de réputation ou les portefeuilles matériels.Assurez-vous que les applications de portefeuille et le micrologiciel sont la dernière version et suivez la meilleure pratique de sécurité.
-
Sauvegarde et protection de la clé privée: restez la clé privée dans un endroit sûr et cryptant avec un mot de passe solide.Sauvegardez régulièrement la clé privée et stockez-la dans des endroits hors ligne et sûrs pour éviter que les données accidentelles ne soient perdues.
-
Vérifiez soigneusement les détails de la transaction: avant d’effectuer une transaction, vérifiez soigneusement les détails de la transaction pour vous assurer que l’adresse cible et le nombre de transactions sont corrects.La double inspection peut éviter la perte de fonds causés par la négligence.
4. Résumé
Veuillez noter que la solution à chaque attaque et vulnérabilité ci-dessus n’est qu’un exemple simple, et il ne peut pas empêcher complètement l’attaque correspondante ou réparer la vulnérabilité correspondante.Si vous êtes intéressé à auditer les contrats intelligents, veuillezContactez-nousNous coopérerons avec vous pour vous fournir des services d’audit professionnels pour vous assurer que votre contrat est sûr et fiable.Nous nous engageons à vous fournir des services de haute qualité et un support technique complet pour vous assurer que vos contrats intelligents fonctionnent dans un environnement sûr et fiable.