Bienvenue dans le Spotlight sur les Vulnérabilités de Sherlock ! Chaque semaine, nous mettrons en avant une vulnérabilité impactante que nos chercheurs ont découverte lors d'un audit Sherlock. Cette semaine, nous avons une retrait excessif dû à une mauvaise configuration. Il a été trouvé par @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 et @0xleastwood lors du concours @NotionalFinance V3.
Si le currentBalance est de 999 900 USDC et que le withdrawAmountExternal est de 1 000 000 USDC, alors il y a un solde insuffisant dans le contrat, et des fonds supplémentaires doivent être retirés du marché monétaire (par exemple, Compound).
Puisque le contrat a déjà 999 900 USDC, il ne reste qu'à retirer 100 USDC supplémentaires du marché monétaire pour satisfaire la demande de retrait de 1 000 000 USDC.
Cependant, au lieu de retirer 100 USDC du marché monétaire, Notional retire 1 000 000 USDC du marché conformément à la fonction oracle.getRedemptionCalldata(withdrawAmountExternal). En conséquence, un excès de 999 900 USDC est retiré du marché monétaire.
Quel est l'impact ? Cela a conduit à un excès d'actifs inactifs dans Notional, ne générant aucun rendement ni intérêt sur le marché monétaire, ce qui a entraîné une perte de rendement significative pour les utilisateurs, car ils recevaient un taux d'intérêt inférieur à celui attendu et subissaient une perte d'opportunité.
Les attaquants pourraient potentiellement abuser de cela pour retirer les fonds que Notional a investis dans le marché monétaire, entraînant des griefs et une perte stupéfiante de rendements/intérêts pour le protocole.
La solution : Essentiellement, avant la correction, le code disait à l'oracle : "Préparez les étapes pour retirer tout ce que l'utilisateur veut du marché monétaire." Alors qu'il aurait dû dire : "Ne tirez que ce qui nous manque du marché monétaire."
Après la correction, pour l'exemple précédent, les 999 900 USDC déjà détenus par le contrat restent intacts et continuent à générer des rendements, améliorant l'efficacité et préservant les retours pour tous les utilisateurs.
Cette vulnérabilité provenait d'un subtil défaut de logique dans la manière dont les montants de retrait étaient calculés et transmis. En négligeant le solde existant du contrat, le système a inutilement tiré des fonds excessifs du marché monétaire, entraînant une inefficacité du capital et une perte de rendement. Nous sommes fiers d'avoir contribué à sécuriser Notional grâce à cette découverte. Quand il faut absolument être sécurisé, Sherlock est le bon choix.
Afficher l’original
2,83 k
35
Le contenu de cette page est fourni par des tiers. Sauf indication contraire, OKX n’est pas l’auteur du ou des articles cités et ne revendique aucun droit d’auteur sur le contenu. Le contenu est fourni à titre d’information uniquement et ne représente pas les opinions d’OKX. Il ne s’agit pas d’une approbation de quelque nature que ce soit et ne doit pas être considéré comme un conseil en investissement ou une sollicitation d’achat ou de vente d’actifs numériques. Dans la mesure où l’IA générative est utilisée pour fournir des résumés ou d’autres informations, ce contenu généré par IA peut être inexact ou incohérent. Veuillez lire l’article associé pour obtenir davantage de détails et d’informations. OKX n’est pas responsable du contenu hébergé sur des sites tiers. La détention d’actifs numériques, y compris les stablecoins et les NFT, implique un niveau de risque élevé et leur valeur peut considérablement fluctuer. Examinez soigneusement votre situation financière pour déterminer si le trading ou la détention d’actifs numériques vous convient.