@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.
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
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'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.
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.
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.
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.
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.
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.
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.
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 :
Partager
Contenu
@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.
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
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'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.
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.
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.
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.
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.
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.
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.
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 :