Crypto Prices

Exploitation de FlashLoopAdapter : 305 000 $ perdus par des portefeuilles Safe liés à Aave

il y a 1 heure
4 mins read
1 vues

Incident de sécurité sur FlashLoopAdapter

Un FlashLoopAdapter personnalisé, utilisé pour gérer les positions à effet de levier d’Aave v3, a été exploité sur Ethereum, entraînant des pertes estimées à 305 000 $ pour deux portefeuilles Safe. Un attaquant a contourné les contrôles d’accès du module, selon la société de sécurité blockchain SlowMist. L’attaquant a exploité une faille d’authentification dans le contrat FlashLoopAdapter, permettant à un faux Safe de passer les vérifications destinées à restreindre l’accès aux portefeuilles ayant activé le module. Au final, l’attaquant a conservé environ 114,09 ETH après avoir manipulé les positions détenues par les portefeuilles affectés.

Détails de l’incident

Alerte : SlowMist TI v3 Loop Safe Module

Perte : ~114,09 ETH

Cause racine : Le contrôle d’accès du FlashLoopAdapter ne vérifie que si ISafe(msg.sender).isModuleEnabled(address(this)), ce qui peut être falsifié via un faux Safe qui renvoie toujours vrai.

L’incident concernait un contrat personnalisé construit sur Aave, et non sur le protocole Aave v3 de base. Defimon Alerts, qui a détecté l’attaque à 15:08:57 UTC le 1er octobre, a précisé qu’Aave v3 lui-même n’avait pas été affecté.

Fonctionnement du FlashLoopAdapter

Le FlashLoopAdapter est un module Safe qui permet d’ouvrir et de fermer des positions à effet de levier Aave v3 pour les Safes qui l’activent. Les Safes ayant activé le module pouvaient l’utiliser pour gérer des stratégies de bouclage impliquant des actifs empruntés et des garanties. Selon SlowMist, la faiblesse résidait dans les contrôles d’accès utilisés par les fonctions d’ouverture et de fermeture de l’adaptateur. Au lieu de vérifier indépendamment que l’appelant était un Safe légitime, les fonctions vérifiaient simplement si ISafe(msg.sender).isModuleEnabled(address(this)) renvoyait vrai. Un attaquant pouvait déployer un faux contrat Safe programmé pour renvoyer vrai lors de cette vérification. Une fois que le faux Safe avait passé ce test, l’attaquant a eu accès à des fonctionnalités qui auraient dû être limitées aux portefeuilles autorisés.

Defimon Alerts a noté que les vérifications effectuées pendant l’appel n’avaient pas arrêté la transaction, car le contrat de l’attaquant agissait également en tant que fournisseur de liquidité flash. Une autre fonction, _swap, a ensuite permis un appel brut à un swapRouter en utilisant les swapCalldata fournis par l’appelant. Les deux entrées pouvaient être contrôlées par l’attaquant. Au lieu de fournir un routeur d’échange ordinaire, l’attaquant a réglé le routeur sur l’un des portefeuilles Safe victimes. Le calldata a été configuré pour appeler execTransactionFromModule, une fonction Safe qui permet à un module activé d’exécuter une transaction. Étant donné que le FlashLoopAdapter avait déjà été activé par le Safe victime, l’appel résultant a été accepté.

Conséquences de l’attaque

Un problème similaire impliquant des autorisations attachées aux modules Safe avait émergé en septembre. Une exploitation d’un portefeuille Safe Ethereum impliquant environ 2 900 rsETH avait été retracée par BlockSec à des vérifications d’autorisation faibles dans un contrat d’exécuteur connecté à un module Safe activé. Un bot MEV avait anticipé l’exploitation tentée et avait reçu les actifs avant que la transaction d’attaque originale ne soit annulée, comme l’avait précédemment rapporté crypto.news.

L’attaque de FlashLoopAdapter a impliqué plus que simplement transférer des actifs déjà présents dans les portefeuilles affectés. Defimon Alerts a déclaré que l’attaquant avait contracté un prêt flash Morpho WETH et utilisé la liquidité empruntée pour rembourser environ 1 335 WETH de dette Aave appartenant au premier Safe, identifié comme 0xcfedf95a3653a128dfc2e4288758a1a1850d169f. Le remboursement de la dette a libéré la garantie liée à la position à effet de levier d’Aave. L’attaquant a ensuite utilisé le chemin d’exécution du module compromis pour faire retirer au Safe environ 1 306 weETH vers une adresse contrôlée par l’attaquant. Un deuxième Safe, 0xe3b23e47df7cd85876ac6cb05bdb9d7cd5b28520, a perdu un autre 6,4 weETH par le même module vulnérable. Defimon a précisé que les deux Safes affectés partageaient le même propriétaire unique.

Une partie des weETH retirés a été échangée contre des WETH alors que l’attaquant réglait le prêt flash et d’autres parties de la transaction. L’attaquant a été laissé avec environ 114,1 ETH, évalués à environ 305 000 $ au moment de l’incident. SlowMist a estimé la perte à environ 114,09 ETH et a déclaré qu’environ 1 300 WETH de dette avait été remboursée au cours du processus de déblocage de la garantie.

Conclusion

FlashLoopAdapter est un contrat personnalisé distinct qui utilise Aave v3 pour gérer des positions à effet de levier détenues via des portefeuilles Safe. La vulnérabilité signalée concernait la manière dont l’adaptateur authentifiait les appelants et ce qu’ils pouvaient faire exécuter par le module activé. Cette distinction rappelle d’autres incidents où un protocole ou un service est resté opérationnel tandis qu’un module connecté à des portefeuilles Safe fournissait la voie utilisée par un attaquant.

SlowMist a identifié l’adresse de l’attaquant comme 0x42c2633438609881c8fBAb82414eb9A0c45F9353, tandis que le contrat FlashLoopAdapter vulnérable était répertorié comme 0x16bb8b912da187870c23ec6756bb3fad061283d8. La séquence d’attaque a combiné l’authentification falsifiée de Safe avec le contrôle sur le routeur de l’adaptateur et les paramètres calldata. Une fois que le contrat malveillant a passé la vérification initiale, l’attaquant a dirigé l’adaptateur vers le Safe victime et a invoqué sa fonction d’exécution de module. Un prêt flash Morpho a fourni le WETH nécessaire pour rembourser la dette Aave du plus grand portefeuille avant que sa garantie weETH puisse être retirée. Environ 1 306 weETH ont été retirés de ce Safe, tandis qu’un autre 6,4 weETH a été pris du deuxième portefeuille. Après que la liquidité empruntée a été réglée et qu’une partie des actifs retirés a été convertie, Defimon Alerts a calculé que l’attaquant avait conservé environ 114,1 ETH. SlowMist a classé l’incident comme une vulnérabilité de contrat intelligent et a estimé la perte résultante à 305 000 $.