.@OnyxDAO a été attaqué, entraînant une perte de près de 4 millions de dollars. La cause principale était une saisie utilisateur non vérifiée pendant le processus de liquidation. Plus précisément, les paramètres clés de la fonction liquidateWithSingleRepay dans le contrat NFTLiquidation étaient contrôlables par l'attaquant, permettant la manipulation de la variable extraRepayAmount via le paramètre repayAmount. En exploitant cela, l'attaquant a pu liquider toutes les garanties avec un seul jeton.
Les étapes clés de l'attaque sont résumées comme suit :
1. L'attaquant a d'abord déposé de l'oETH et emprunté divers actifs pour atteindre le seuil de liquidation. Simultanément, il a créé un nouveau contrat qui, grâce à une attaque par don et à une perte de précision (inhérente au fork Compound V2), a réduit le taux de change de l'oETH, rendant la position de l'attaquant éligible à la liquidation.
2. L'attaquant a ensuite effectué la liquidation. En raison d'une validation insuffisante des paramètres, l'attaquant a manipulé la variable extraRepayAmount, qui a été ajoutée au calcul du nombre de jetons à liquider. Cela a permis à l'attaquant d'obtenir plus d'oETH grâce à la liquidation, ce qui a généré un profit.
Attaque Tx :