Le piratage de 200 000 $ de UniLend : ce qui s'est mal passé et comment DeFi peut faire mieux

Intermédiaire1/22/2025, 4:23:33 PM
UniLend a été exploité en raison d'une vulnérabilité, ce qui a entraîné le vol d'environ 200 000 $ (4% de la TVL). L'attaquant a utilisé un prêt flash pour déposer 60 millions de USDC, a manipulé les calculs des garanties et a exploité un bug du contrat dans le processus de vérification de l'état de santé pour gonfler la valeur des garanties, retirant ainsi 60 stETH. La faille provenait de la mauvaise implémentation de la fonction userBalanceOfToken. UniLend a depuis corrigé le problème, suspendu les dépôts V2 et offert une prime pour récupérer les fonds. Cet incident souligne l'importance cruciale de la sécurité pour les plateformes DeFi et la nécessité d'audits complets des contrats intelligents.

Introduction à UniLend

@UniLend_Finance est un protocole de marché monétaire décentralisé sans autorisation avec un service de prêt et d'emprunt via des contrats intelligents.

UniLend permet aux utilisateurs d'utiliser leurs cryptomonnaies en fournissant des garanties au réseau qui peuvent être empruntées en engageant des cryptomonnaies sur-collatéralisées. Cela crée un environnement de prêt sécurisé où le prêteur reçoit un taux d'intérêt composé annuel (APY) payé par bloc tandis que l'emprunteur paie des intérêts sur la cryptomonnaie empruntée.

Comment UniLend fonctionne

Le protocole UniLend V2 fonctionne grâce à trois composants techniques principaux :

1. Modèle de Paire d'Actifs Doubles

UniLend utilise des pools d'actifs isolés à double pour chaque paire ERC20/ERC20-compatible. Cette conception garantit que la performance ou la volatilité d'un actif n'affecte pas les autres, améliorant la sécurité et la stabilité. L'architecture permet à tout utilisateur de créer et de gérer des pools de prêt et d'emprunt pour une grande variété d'actifs sur plusieurs blockchains.

2. Fourniture et Emprunt

  • Approvisionnement : les utilisateurs déposent des jetons ERC20 dans des pools désignés et reçoivent des tokens non fongibles (NFT) qui représentent leur position de liquidité unique. Ces NFT stockent les détails sur les actifs fournis et peuvent être transférés ou échangés selon les besoins. Les actifs fournis génèrent des intérêts variables en fonction de l'utilisation du pool et de la demande du marché.
  • Emprunt : Pour emprunter, les utilisateurs doivent fournir des cryptomonnaies sur-collatéralisées. Le protocole impose des ratios de sur-collatéralisation, ajustables via la gouvernance. Les montants empruntés accumulent des intérêts par bloc, déterminés par le taux d'utilisation du pool, garantissant que les prêts restent suffisamment sécurisés.

3. Modèle de taux d'intérêt

UniLend utilise un modèle de taux d'intérêt dynamique basé sur le Ratio d'utilisation (U) de la piscine, calculé comme suit :

Ux=BorrowxBorrowx+Cashx

Taux d'intérêt de l'emprunt :

Taux d'intérêt d'empruntx=10%+(Ux×30%)

Les taux augmentent avec une utilisation plus élevée pour équilibrer l'offre et la demande.

  • Taux d'intérêt d'approvisionnement:

Taux d'intérêt d'approvisionnementx=Taux d'intérêt d'empruntx×Ux×(1−S)

Cela garantit que les fournisseurs gagnent des rendements durables tout en assurant la rentabilité du protocole.

Ces composants travaillent ensemble pour créer un marché monétaire décentralisé sécurisé, efficace et évolutif.

Analyse de l'attaque

Le 12 janvier 2025, une vulnérabilité de sécurité dans le protocole UniLend a été exploitée, entraînant une perte d'environ 200 000 $ du pool UniLend. L'attaquant a manipulé les calculs de la garantie, qui ont évalué incorrectement le facteur de santé de l'utilisateur. Cette faille a permis à l'attaquant de retirer 60 jetons stETH sans suffisamment de garanties.

Les actifs volés comprenaient 60 jetons stETH, exploitant la mauvaise estimation des soldes de jetons utilisateur du protocole.

Répartition détaillée de l’attaque

1. Initialisation de l'exploit

L'attaquant a initié l'exploitation en utilisant un prêt flash pour déposer une énorme quantité de USDC dans le pool UniLend. Plus précisément, ils ont déposé 60 millions de USDC, ce qui a considérablement augmenté leur garantie dans le pool.

Les prêts éclair permettent aux utilisateurs d'emprunter de grandes quantités d'actifs sans garantie, à condition que le montant emprunté soit remboursé dans la même transaction.

L'attaquant a utilisé ce mécanisme pour obtenir les USDC nécessaires sans capital initial, créant ainsi une position artificiellement gonflée au sein du pool.

2. Manipulation of Collateral Calculations

Lors du dépôt de l'USDC, l'attaquant a procédé à l'emprunt de jetons stETH. Le protocole calcule la valeur de la garantie de l'utilisateur en fonction de son solde de jetons dans le pool. Cependant, en raison de la mise en œuvre défectueuse, le solde a été calculé en utilisant le solde actuel des jetons dans le contrat de pool plutôt que le montant réellement transféré lors de la vérification du facteur de santé. Cette divergence signifiait que le solde de jetons de l'utilisateur semblait significativement plus élevé qu'il ne l'était réellement, surtout dans les pools avec une grande liquidité.

La racine de cette manipulation réside dans la fonction userBalanceOfToken. Dans les scénarios où le pool dispose d'une liquidité importante, cette fonction peut renvoyer un lendBalance élevé même s'il ne reste qu'une petite part de prêt. Cette surestimation du solde de l'utilisateur a donné à l'attaquant l'illusion d'avoir plus de garanties qu'il n'en avait réellement. Par conséquent, l'attaquant a pu emprunter des tokens stETH au-delà de leurs droits légitimes en fonction de leurs garanties réelles.

3. Récupération des actifs sous-jacents

Avec la valeur du collatéral surévaluée, l'attaquant a procédé au rachat de ses USDC et stETH. La fonction redeemUnderlying a été appelée, ce qui a brûlé les jetons LP associés au dépôt de l'utilisateur. Cependant, en raison de la vérification erronée du facteur de santé se produisant avant le transfert des jetons, le système croyait que l'utilisateur disposait d'un collatéral suffisant pour retirer plus que ce à quoi il avait droit. Cette faille a permis à l'attaquant de retirer 60 jetons stETH sans maintenir le collatéral nécessaire, lui permettant ainsi d'obtenir ces jetons gratuitement.

Comment l'attaque aurait pu être évitée

Pour éviter l'attaque, UniLend aurait dû réorganiser les opérations à l'intérieur de la fonction redeemUnderlying. En effectuant la vérification du facteur de santé après le transfert des jetons à l'utilisateur, le protocole garantirait que le solde réel des jetons de l'utilisateur reflète précisément son statut de garantie.

La sécurité de la blockchain n'est pas facultative. Protégez vos contrats intelligents et protocoles DeFi avec Three Sigma, un partenaire de confiance en matière d'audits de blockchain, d'évaluations de vulnérabilités de contrats intelligents et de sécurité Web3.

Cliquer pourFaites auditer votre smart contract dès aujourd'hui.

Conséquences

L'exploitation de UniLend a entraîné une perte financière importante d'environ 200 000 $ du pool UniLend. Cette perte substantielle a directement affecté les réserves de la plateforme et réduit la liquidité disponible pour les autres utilisateurs, perturbant potentiellement les activités de prêt et d'emprunt en cours.

La réponse du protocole UniLend

Suite à l'exploitation, UniLend a pris des mesures immédiates pour remédier à la vulnérabilité et rassurer sa base d'utilisateurs.

Ils ont annoncé une prime de 20% à la partie responsable pour le retour sécurisé des fonds.

Adresses

Transaction d'attaque :

Adresse de l'exploitant :

Adresse UnilendV2Core :

Avertissement :

  1. Cet article est reproduit à partir de [X]. Tous les droits d'auteur appartiennent à l'auteur original [@threesigmaxyz]. S'il y a des objections à cette réimpression, veuillez contacter le Porte Apprendreéquipe, et ils s'en occuperont rapidement.
  2. Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent pas des conseils en investissement.
  3. L'équipe Gate Learn effectue des traductions de l'article dans d'autres langues. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits est interdit.

Le piratage de 200 000 $ de UniLend : ce qui s'est mal passé et comment DeFi peut faire mieux

Intermédiaire1/22/2025, 4:23:33 PM
UniLend a été exploité en raison d'une vulnérabilité, ce qui a entraîné le vol d'environ 200 000 $ (4% de la TVL). L'attaquant a utilisé un prêt flash pour déposer 60 millions de USDC, a manipulé les calculs des garanties et a exploité un bug du contrat dans le processus de vérification de l'état de santé pour gonfler la valeur des garanties, retirant ainsi 60 stETH. La faille provenait de la mauvaise implémentation de la fonction userBalanceOfToken. UniLend a depuis corrigé le problème, suspendu les dépôts V2 et offert une prime pour récupérer les fonds. Cet incident souligne l'importance cruciale de la sécurité pour les plateformes DeFi et la nécessité d'audits complets des contrats intelligents.

Introduction à UniLend

@UniLend_Finance est un protocole de marché monétaire décentralisé sans autorisation avec un service de prêt et d'emprunt via des contrats intelligents.

UniLend permet aux utilisateurs d'utiliser leurs cryptomonnaies en fournissant des garanties au réseau qui peuvent être empruntées en engageant des cryptomonnaies sur-collatéralisées. Cela crée un environnement de prêt sécurisé où le prêteur reçoit un taux d'intérêt composé annuel (APY) payé par bloc tandis que l'emprunteur paie des intérêts sur la cryptomonnaie empruntée.

Comment UniLend fonctionne

Le protocole UniLend V2 fonctionne grâce à trois composants techniques principaux :

1. Modèle de Paire d'Actifs Doubles

UniLend utilise des pools d'actifs isolés à double pour chaque paire ERC20/ERC20-compatible. Cette conception garantit que la performance ou la volatilité d'un actif n'affecte pas les autres, améliorant la sécurité et la stabilité. L'architecture permet à tout utilisateur de créer et de gérer des pools de prêt et d'emprunt pour une grande variété d'actifs sur plusieurs blockchains.

2. Fourniture et Emprunt

  • Approvisionnement : les utilisateurs déposent des jetons ERC20 dans des pools désignés et reçoivent des tokens non fongibles (NFT) qui représentent leur position de liquidité unique. Ces NFT stockent les détails sur les actifs fournis et peuvent être transférés ou échangés selon les besoins. Les actifs fournis génèrent des intérêts variables en fonction de l'utilisation du pool et de la demande du marché.
  • Emprunt : Pour emprunter, les utilisateurs doivent fournir des cryptomonnaies sur-collatéralisées. Le protocole impose des ratios de sur-collatéralisation, ajustables via la gouvernance. Les montants empruntés accumulent des intérêts par bloc, déterminés par le taux d'utilisation du pool, garantissant que les prêts restent suffisamment sécurisés.

3. Modèle de taux d'intérêt

UniLend utilise un modèle de taux d'intérêt dynamique basé sur le Ratio d'utilisation (U) de la piscine, calculé comme suit :

Ux=BorrowxBorrowx+Cashx

Taux d'intérêt de l'emprunt :

Taux d'intérêt d'empruntx=10%+(Ux×30%)

Les taux augmentent avec une utilisation plus élevée pour équilibrer l'offre et la demande.

  • Taux d'intérêt d'approvisionnement:

Taux d'intérêt d'approvisionnementx=Taux d'intérêt d'empruntx×Ux×(1−S)

Cela garantit que les fournisseurs gagnent des rendements durables tout en assurant la rentabilité du protocole.

Ces composants travaillent ensemble pour créer un marché monétaire décentralisé sécurisé, efficace et évolutif.

Analyse de l'attaque

Le 12 janvier 2025, une vulnérabilité de sécurité dans le protocole UniLend a été exploitée, entraînant une perte d'environ 200 000 $ du pool UniLend. L'attaquant a manipulé les calculs de la garantie, qui ont évalué incorrectement le facteur de santé de l'utilisateur. Cette faille a permis à l'attaquant de retirer 60 jetons stETH sans suffisamment de garanties.

Les actifs volés comprenaient 60 jetons stETH, exploitant la mauvaise estimation des soldes de jetons utilisateur du protocole.

Répartition détaillée de l’attaque

1. Initialisation de l'exploit

L'attaquant a initié l'exploitation en utilisant un prêt flash pour déposer une énorme quantité de USDC dans le pool UniLend. Plus précisément, ils ont déposé 60 millions de USDC, ce qui a considérablement augmenté leur garantie dans le pool.

Les prêts éclair permettent aux utilisateurs d'emprunter de grandes quantités d'actifs sans garantie, à condition que le montant emprunté soit remboursé dans la même transaction.

L'attaquant a utilisé ce mécanisme pour obtenir les USDC nécessaires sans capital initial, créant ainsi une position artificiellement gonflée au sein du pool.

2. Manipulation of Collateral Calculations

Lors du dépôt de l'USDC, l'attaquant a procédé à l'emprunt de jetons stETH. Le protocole calcule la valeur de la garantie de l'utilisateur en fonction de son solde de jetons dans le pool. Cependant, en raison de la mise en œuvre défectueuse, le solde a été calculé en utilisant le solde actuel des jetons dans le contrat de pool plutôt que le montant réellement transféré lors de la vérification du facteur de santé. Cette divergence signifiait que le solde de jetons de l'utilisateur semblait significativement plus élevé qu'il ne l'était réellement, surtout dans les pools avec une grande liquidité.

La racine de cette manipulation réside dans la fonction userBalanceOfToken. Dans les scénarios où le pool dispose d'une liquidité importante, cette fonction peut renvoyer un lendBalance élevé même s'il ne reste qu'une petite part de prêt. Cette surestimation du solde de l'utilisateur a donné à l'attaquant l'illusion d'avoir plus de garanties qu'il n'en avait réellement. Par conséquent, l'attaquant a pu emprunter des tokens stETH au-delà de leurs droits légitimes en fonction de leurs garanties réelles.

3. Récupération des actifs sous-jacents

Avec la valeur du collatéral surévaluée, l'attaquant a procédé au rachat de ses USDC et stETH. La fonction redeemUnderlying a été appelée, ce qui a brûlé les jetons LP associés au dépôt de l'utilisateur. Cependant, en raison de la vérification erronée du facteur de santé se produisant avant le transfert des jetons, le système croyait que l'utilisateur disposait d'un collatéral suffisant pour retirer plus que ce à quoi il avait droit. Cette faille a permis à l'attaquant de retirer 60 jetons stETH sans maintenir le collatéral nécessaire, lui permettant ainsi d'obtenir ces jetons gratuitement.

Comment l'attaque aurait pu être évitée

Pour éviter l'attaque, UniLend aurait dû réorganiser les opérations à l'intérieur de la fonction redeemUnderlying. En effectuant la vérification du facteur de santé après le transfert des jetons à l'utilisateur, le protocole garantirait que le solde réel des jetons de l'utilisateur reflète précisément son statut de garantie.

La sécurité de la blockchain n'est pas facultative. Protégez vos contrats intelligents et protocoles DeFi avec Three Sigma, un partenaire de confiance en matière d'audits de blockchain, d'évaluations de vulnérabilités de contrats intelligents et de sécurité Web3.

Cliquer pourFaites auditer votre smart contract dès aujourd'hui.

Conséquences

L'exploitation de UniLend a entraîné une perte financière importante d'environ 200 000 $ du pool UniLend. Cette perte substantielle a directement affecté les réserves de la plateforme et réduit la liquidité disponible pour les autres utilisateurs, perturbant potentiellement les activités de prêt et d'emprunt en cours.

La réponse du protocole UniLend

Suite à l'exploitation, UniLend a pris des mesures immédiates pour remédier à la vulnérabilité et rassurer sa base d'utilisateurs.

Ils ont annoncé une prime de 20% à la partie responsable pour le retour sécurisé des fonds.

Adresses

Transaction d'attaque :

Adresse de l'exploitant :

Adresse UnilendV2Core :

Avertissement :

  1. Cet article est reproduit à partir de [X]. Tous les droits d'auteur appartiennent à l'auteur original [@threesigmaxyz]. S'il y a des objections à cette réimpression, veuillez contacter le Porte Apprendreéquipe, et ils s'en occuperont rapidement.
  2. Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent pas des conseils en investissement.
  3. L'équipe Gate Learn effectue des traductions de l'article dans d'autres langues. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits est interdit.
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!