
TLDR :
- RedSonic Vault a perdu 9,25 ETH après qu'un attaquant ait entièrement exploité une faille de tarification à deux actifs.
- Une fonction registerErc20 sans autorisation permet à l'attaquant d'ajouter une deuxième classe de partage stETH en conflit.
- L’attaquant a prêté 1 139 WETH à Balancer et n’avait besoin d’aucun capital de départ.
- ExVulSec a retracé l'intégralité de l'exploit, y compris le swap Curve et l'étape finale de remboursement du prêt.
Un attaquant du prêt flash drainé 9,25 ETH du RedSonic Vault d'Ethereum en une seule transaction. La société de sécurité Blockchain ExVulSec a identifié l'exploit et publié une description technique complète.
L'attaquant a manipulé une fonction d'enregistrement d'actifs sans autorisation pour compter deux fois la même garantie sous-jacente. Les enregistrements en chaîne montrent l'intégralité de l'opération exécutée dans une seule transaction autonome.
Comment l’exploit RedSonic Vault s’est déroulé
L’attaquant a prêté 1 139 WETH à Balancier pour financer l’ensemble de l’opération. Aucun capital initial n’était requis.
Le coffre-fort de RedSonic évalue ses actions rsvETH via une fonction appelée getTotalAssetBalance. Pour la position Lido, cette fonction lit directement le solde brut stETH du coffre-fort.
Ce choix de conception est devenu le fondement de l’exploit. Les cours des actions directement liés à un solde brut peuvent varier si ce solde change de manière inattendue. Aucune action correspondante ne doit être frappée ou brûlée.
La fonction registerErc20 du coffre-fort ne comportait aucune restriction d'accès, selon ExVulSec. N'importe qui peut enregistrer une toute nouvelle classe d'actifs dans le sauter.
L'attaquant a enregistré stETH comme deuxième actif, créant ainsi une classe appelée rsvstETH. Les deux types d’actions ont ensuite été puisés exactement dans le même solde stETH sous-jacent.
Le contrat d'exploit s'est autodétruit une fois l'exécution terminée. Les chercheurs en sécurité notent que les contrats autodestructeurs compliquent souvent les efforts ultérieurs de traçage de la chaîne.
Les prêts flash permettent aux emprunteurs d’accéder à des sommes importantes sans fournir de garantie, à condition que le prêt soit remboursé au cours de la même transaction. Les attaquants utilisent généralement ce mécanisme pour financer des exploits qui autrement exigeraient un capital important.
L'exploit RedSonic Vault expose une faille à double actif
L'attaquant a déposé 1 130 ETH tout d’abord, en acquérant près de 99 % de toutes les actions rsvETH en circulation. Cette position a mis en place le reste de l’exploit.
Ensuite, l’attaquant a déposé 9,34 stETH directement dans le coffre-fort. Ce dépôt unique a gonflé le solde stETH sans créer de nouvelles actions rsvETH.
Étant donné que le prix de rsvETH lit le solde brut de stETH, le dépôt supplémentaire a fait grimper artificiellement le prix de l’action. En conséquence, les avoirs rsvETH existants de l’attaquant ont pris de la valeur instantanément, sans qu’aucun nouveau rsvETH ne soit émis.
L'attaquant a ensuite échangé rsvETH contre 1 139,5 ETH, selon l'analyse de transaction d'ExVulSec. Ce seul rachat a généré le bénéfice total de 9,25 ETH.
Le même attaquant a également racheté séparément les actions rsvstETH contre stETH. La garantie sous-jacente identique est effectivement payée deux fois à partir d’un solde de coffre-fort partagé et mis en commun.
ExVulSec a signalé que le stETH récupéré avait été échangé contre de l'ETH le Courbe. L'attaquant a remboursé le prêt flash Balancer dans le cadre de cette même transaction.
Les données Etherscan répertorient le portefeuille de l'attaquant comme 0x70f2333d21Ed7E7D105F6578227A9A747687982C. Le contrat RedSonic Vault lui-même se trouve à 0x4315990d9eeaffdfafd49958b4851f203fa1126f.
La transaction d'attaque porte le hachage 0xe3cba90e865c6cba950ebce36a52607f51f1fd33cd9fb920c78803f19b57791a. Il reste visible publiquement sur Etherscan pour toute personne vérifiant les détails de l'exploit.
Voir l’article original en anglais
