Le bogue de Bancor expose une pratique dangereusement commune dans Ethereum DeFi

Le bogue de Bancor expose une pratique dangereusement commune dans Ethereum DeFi

Crypto library python 3

Une vulnérabilité découverte sur Bancor le 18 juin aurait permis aux pirates de simplement drainer les fonds de toute personne ayant interagi avec ses contrats intelligents. L’exploit reposait sur le concept d’autorisation de retrait, introduit dans la norme ERC-20. Cela permet à diverses DApp Ethereum (ETH) de retirer automatiquement de l’argent des portefeuilles des utilisateurs.

Comme Oded Leiba, ingénieur de recherche chez ZenGo, l’a écrit, la fonction de retrait de fonds sur le contrat intelligent de Bancor a été définie par erreur pour que tout le monde puisse l’appeler.

Bancor a agi préventivement pour «voler» les fonds des utilisateurs avant que des parties malveillantes puissent intervenir.

Le problème était aggravé par le fait que les contrats de Bancor demandaient une autorisation illimitée de retirer de l’argent lors de la première interaction avec le protocole. Même si les utilisateurs ne prévoyaient de tester le protocole qu’avec un montant limité de fonds, le système pouvait retirer l’intégralité de son solde de ce jeton particulier.

Il s’avère que de nombreux autres DApp sur Ethereum font de même.

Approbation illimitée pour une durée illimitée

Comme Leiba l’a dit à Crypto, de nombreuses applications de finance décentralisée bien connues, ou DeFi, demandent des approbations infinies. Parmi ceux testés par l’équipe ZenGo, Compound, Uniswap, bZX, Aave, Kyber et dYdX disposent tous d’approbations infinies ou extrêmement importantes.

Kain Warwick, fondateur de Synthetix, a déclaré à Crypto que les approbations infinies permettent une meilleure convivialité et une consommation de gaz moindre, avec le compromis d’un risque plus élevé. Jusqu’à présent, la plupart des plateformes DeFi semblent préférer la convivialité. Néanmoins, à la suite de l’accident, Bancor a décidé de modifier ses contrats pour n’approuver que le montant nécessaire à chaque transaction.

Crypto a également contacté Aave pour en savoir plus sur leur décision d’utiliser des indemnités infinies, mais n’a pas reçu de réponse.

Warwick estime qu ‘«il s’agit d’un problème grave car chaque nouveau contrat auquel vous donnez une« approbation infinie »vous expose à un risque supplémentaire si le contrat est compromis.»

Même lorsque la plateforme n’est plus utilisée, les agréments restent en vigueur. Leiba a noté que plus de 160 adresses restent vulnérables au contrat intelligent de Bancor sur écoute – probablement sans fonds. S’ils retournent à l’activité, les pirates pourraient cependant voler l’argent à tout moment.

Les normes sont à blâmer?

Il existe des limites fondamentales à la norme de jeton ERC-20 couramment utilisée aujourd’hui. D’une part, les approbations ne peuvent pas avoir de délai, ce qui aurait pu aider à atténuer certains des effets à plus long terme des quotas infinis.

Diverses normes concurrentes comme l’ERC-223 ont cherché à atténuer le problème en supprimant la nécessité d’accorder des approbations. Dans la plupart des applications existantes, les interactions avec un contrat intelligent peuvent être manuellement signées à chaque fois sans impact significatif sur l’expérience utilisateur.

Cependant, les contrats intelligents ne peuvent pas répondre aux appels unilatéraux de «transfert» effectués par un utilisateur. Ils doivent plutôt collecter les jetons par eux-mêmes en utilisant la fonction « transferFrom », qui nécessite de configurer l’allocation via la méthode « approuver ».

Warwick a expliqué que l’équipe avait initialement utilisé la norme ERC-223 plus avancée. Cependant, des problèmes d’utilisation excessive de gaz et des erreurs dans les contrats qui ne prenaient pas en charge la nouvelle norme ont forcé la communauté à l’abandonner. Il ajouta:

«Les normes sont dures, et lorsque tout est conçu pour ERC20, le passage unilatéral à ERC223 crée beaucoup de friction.»

Comment régler ceci

Certains portefeuilles permettent aux utilisateurs de modifier le montant spécifique de l’indemnité lors de la demande d’approbation – bien que peu divulguent clairement la valeur par défaut. ZenGo a mis en place un système où les approbations sont envoyées simultanément à chaque transfert, ce qui peut aider à protéger les utilisateurs au prix d’une consommation de gaz plus élevée.

Warwick a partagé ses pratiques de sécurité:

«Je donne des contrats à des approbations infinies, mais je fais très attention à mes comptes avec lesquels je le fais et à quels contrats je le donne car c’est moins de friction, mais un risque beaucoup plus élevé.»

Il a également suggéré qu’il «valait la peine de faire l’entretien» en supprimant les allocations sur les contrats inutilisés grâce à des outils comme la révocation, la zone approuvée et le TAC.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *