Exploit de FlashLoopAdapter : 305 000 $ drainés de portefeuilles Safe liés à Aave

ETH
WETH
exploit de contrôle d'accèsFlashLoopAdapterportefeuille Safeprêt éclairSlowMistAave v3
il y a 3 heuresSource: crypto.news
Exploit de FlashLoopAdapter : 305 000 $ drainés de portefeuilles Safe liés à Aave

Un FlashLoopAdapter personnalisé utilisé pour gérer des positions à effet de levier sur Aave v3 a été exploité sur Ethereum, laissant deux portefeuilles Safe avec des pertes estimées à 305 000 $ après qu'un attaquant a contourné les contrôles d'accès du module.

Résumé

  • Une faille de contrôle d'accès dans FlashLoopAdapter a permis à un attaquant de drainer environ 305 000 $ de deux portefeuilles Safe sur Ethereum.
  • L'attaquant a utilisé un flash loan Morpho pour rembourser environ 1 335 WETH de dette Aave avant de retirer environ 1 306 weETH en collatéral.
  • Le fondateur d'Aave, Stani Kulechov, a déclaré que le contrat affecté était un adaptateur tiers construit sur Aave et n'avait eu aucun effet sur Aave v3.

La société de sécurité blockchain SlowMist a déclaré que l'attaquant a exploité une faille d'authentification dans le contrat FlashLoopAdapter, ce qui a permis à un faux Safe de passer les vérifications destinées à restreindre l'accès aux portefeuilles ayant activé le module. L'attaquant a finalement conservé environ 114,09 ETH après avoir utilisé le module pour manipuler les positions détenues par les portefeuilles affectés.

L'incident impliquait un contrat personnalisé construit au-dessus d'Aave plutôt que le protocole principal Aave v3. Defimon Alerts, qui a détecté l'attaque à 15:08:57 UTC le 1er octobre, a déclaré qu'Aave v3 lui-même n'était pas affecté.

Les contrôles d'accès de FlashLoopAdapter ont permis à un faux Safe de passer

FlashLoopAdapter a été conçu comme un module Safe pour ouvrir et fermer des positions à effet de levier via Aave v3. Les Safes qui activaient le module pouvaient l'utiliser pour gérer des stratégies de looping impliquant des actifs empruntés et du collatéral.

Selon SlowMist, la faiblesse a été trouvée dans les contrôles d'accès utilisés par les fonctions open() et close() de l'adaptateur.

Au lieu d'établir indépendamment que l'appelant était un Safe légitime, les fonctions vérifiaient si ISafe(msg.sender).isModuleEnabled(address(this)) renvoyait true. Un attaquant pouvait déployer un faux contrat Safe programmé pour renvoyer true lorsque le FlashLoopAdapter effectuait la vérification.

Une fois que le faux Safe a passé ce test, l'attaquant a obtenu accès à des fonctionnalités qui auraient dû être limitées aux portefeuilles autorisés.

Defimon Alerts a déclaré que les vérifications effectuées lors du callback n'ont pas arrêté la transaction car le contrat de l'attaquant agissait également comme fournisseur de liquidité flash. Une autre fonction, _swap(), a ensuite permis un appel brut à un swapRouter en utilisant swapCalldata fourni 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 défini le routeur sur l'un des portefeuilles Safe victimes. Les calldata ont été définies pour appeler execTransactionFromModule, une fonction Safe qui permet à un module activé d'exécuter une transaction.

FlashLoopAdapter était déjà activé par le Safe victime, donc l'appel résultant a été accepté.

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

L'attaquant a remboursé 1 335 WETH pour débloquer le collatéral weETH

L'attaque FlashLoopAdapter impliquait plus qu'un simple transfert d'actifs déjà présents dans les portefeuilles affectés.

Defimon Alerts a déclaré que l'attaquant avait contracté un flash loan Morpho en 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é le collatéral lié à la position Aave à effet de levier. 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 6,4 weETH supplémentaires via le même module vulnérable.

Defimon a déclaré que les deux Safes affectés partageaient le même propriétaire unique.

Une partie des weETH retirés a été échangée en WETH tandis que l'attaquant réglait le flash loan et d'autres parties de la transaction. L'attaquant s'est retrouvé avec environ 114,1 ETH, d'une valeur d'environ 305 000 $ au moment où l'incident a été signalé.

SlowMist a séparément estimé la perte à environ 114,09 ETH et a déclaré qu'environ 1 300 WETH de dette avaient été remboursés au cours du processus de déblocage du collatéral.

Le retrait important de collatéral ne représente donc pas les produits nets de l'attaquant. Une grande partie du capital déplacé au cours de la transaction était liée au remboursement de la dette et à la liquidation de la position à effet de levier avant que les actifs restants ne puissent être prélevés.

Les contrats Aave v3 n'ont pas été identifiés comme le composant vulnérable

Aucune des deux alertes de sécurité n'a identifié de faille dans Aave v3 lui-même.

Le fondateur et PDG d'Aave, Stani Kulechov, a déclaré que le contrat affecté était un adaptateur externe tiers construit au-dessus d'Aave et avait « zéro effet sur Aave v3 ».

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 au module activé.

La distinction ressemble à d'autres incidents dans lesquels un protocole ou un service est resté opérationnel tandis qu'un module connecté aux portefeuilles Safe fournissait la voie utilisée par un attaquant.

En mai, un exploit impliquant le SquidRouterModule a vidé des Safes sur Ethereum et Base. Environ 3 millions à 3,2 millions de dollars ont été volés à 86 portefeuilles après que les attaquants ont ciblé un module Safe tiers, tandis que Squid a déclaré que ses contrats de routeur principaux et les fonds des utilisateurs n'étaient pas affectés.

Un autre incident lié à Safe est apparu quelques jours plus tard lorsque les utilisateurs de Gnosis Pay ont été invités à retirer leurs fonds à la suite d'un exploit impliquant son module de délai Zodiac. Le cofondateur de Gnosis, Martin Köppelmann, a déclaré à l'époque que la faille pouvait permettre à un attaquant d'initier des transactions depuis des Safes utilisant le module affecté.

Les modules Safe peuvent se voir accorder la permission d'exécuter des transactions depuis un portefeuille sans passer à chaque fois par le flux de transaction standard du propriétaire. FlashLoopAdapter s'appuyait sur cette capacité pour automatiser les positions Aave à effet de levier, mais la même permission signifiait qu'un contournement réussi de la logique d'authentification de l'adaptateur pouvait atteindre les actifs contrôlés par le Safe.

L'attaquant de FlashLoopAdapter a conservé environ 114 ETH

SlowMist a identifié l'adresse de l'attaquant comme 0x42c2633438609881c8fBAb82414eb9A0c45F9353, tandis que le contrat FlashLoopAdapter vulnérable était listé comme 0x16bb8b912da187870c23ec6756bb3fad061283d8.

La séquence d'attaque combinait l'authentification Safe falsifiée avec le contrôle du routeur et des paramètres calldata de l'adaptateur. Une fois que le contrat malveillant a passé la vérification initiale, l'attaquant a redirigé l'adaptateur vers le Safe victime et a invoqué sa fonction d'exécution de module.

Un flash loan Morpho a fourni les WETH nécessaires pour rembourser la dette Aave du portefeuille le plus important avant que son collatéral weETH ne puisse être retiré. Environ 1 306 weETH ont été retirés de ce Safe, tandis que 6,4 weETH supplémentaires ont été pris du second 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 $.