
Term Labs a récupéré toutes les positions de prêts à taux fixe détenues dans les coffres affectés par son exploit de gouvernance d'août, la position finale ayant été déplacée le 25 août alors que Meta Vaults et les stratégies concernées restent fermées.
Résumé
- Term Labs a récupéré toutes les positions de prêts à taux fixe concernées avant le 25 août, tandis que ses Meta Vaults et les stratégies concernées restent fermées.
- Les attaquants ont utilisé des propositions de gouvernance malveillantes pour supprimer les retards d'exécution avant de drainer l'ETH et l'USDC liquides des stratégies de coffre-fort.
- Un jeton de repo contrefait a été évalué en fonction du solde liquide USDC exact de chaque stratégie, permettant à l'attaquant de balayer les fonds disponibles.
- Term Labs a déclaré que ses contrats V1 et V2 n'étaient pas compromis et que ses marchés d'emprunt et de prêt directs restaient opérationnels.
Term Labs a déclaré dans son dernier rapport d'incident que la dernière position à taux fixe avait été récupérée à 14 h 52 UTC le 25 août, tandis que son enquête a révélé que l'attaque était limitée aux soldes liquides détenus dans les coffres Term.
Le protocole a déclaré que ses contrats V1 et V2 n'étaient pas compromis et que ses marchés d'emprunt et de prêt directs avaient continué à fonctionner tout au long de l'incident.
Term Labs affirme que les contrats de prêt ont échappé à l'exploit du coffre-fort
Le nouveau compte technique donne une image plus détaillée de l'attaque du 23 août, qui, selon les sociétés de sécurité, avait drainé environ 8,5 millions de dollars des coffres-forts de Term Finance.
Term Labs avait initialement divulgué un exploit de gouvernance affectant les coffres sans fournir la séquence complète de l'attaque. Les sociétés de sécurité CertiK et PeckShield ont estimé les pertes à près de 8,5 millions de dollars, dont environ 2 843 ETH et 1,68 million d'USDC. PeckShield a déclaré que l'USDC avait ensuite été échangé contre environ 1,68 million de DAI.
Le protocole a ensuite fermé ses Meta Vaults et révoqué leurs rôles de gouvernance DAO. Les nouveaux dépôts ont été définitivement désactivés tandis que les retraits restaient disponibles. Yearn a déclaré à l'époque que les contrats concernés utilisaient l'infrastructure Yearn V3, mais que l'attaque impliquait un wrapper de gouvernance développé pour Term plutôt que des coffres-forts Yearn V3 standard.
Term Labs affirme désormais que son système de prêt à taux fixe sous-jacent est resté hors de portée des attaquants. Les fonctions d'approvisionnement, de remboursement et de liquidation ont continué à fonctionner sans interruption sur ses marchés de prêts directs.
L'attaque s'est plutôt développée via deux portefeuilles d'opérateurs financés via Tornado Cash et une série de propositions de gouvernance qui ont modifié les contrôles autour des stratégies de coffre-fort de Term.
Le premier opérateur a reçu des fonds via Tornado Cash le 17 août. Environ 24 minutes plus tard, le portefeuille a soumis une proposition ETH intitulée « Votez OUI pour VETO aux modifications proposées par le conservateur des paramètres du coffre-fort ».
Parmi les changements inclus dans la proposition figurait une réduction à zéro du délai de gouvernance de la pile concernée. Term Labs a déclaré que le changement supprimait une période supplémentaire de sept jours et une heure pendant laquelle les fournisseurs de liquidité auraient pu arrêter la proposition avant son exécution.
Les attaquants ont préparé des campagnes distinctes pour l'ETH et l'USDC
Un deuxième portefeuille d'opérateur a reçu un financement Tornado Cash le 18 août avant de déployer un contrat singleton plus tard dans l'après-midi.
Selon Term Labs, le contrat combinait trois fonctions en un seul déploiement : un contrôleur, un adaptateur de prix et un jeton de repo contrefait. Un contrat d'assistance a ensuite été initialisé à l'aide du singleton.
Trois jours plus tard, le 21 août, l'assistant a soumis sept propositions de gouvernance et a voté seul sur celles-ci.
Deux propositions ciblaient les DAO de stratégie ETH mais n’ont jamais été exécutées. Les cinq autres ont participé à l’attaque de l’USDC.
Chacune des cinq propositions a réduit le délai de gouvernance concerné à zéro, supprimant une période supplémentaire de trois jours et une heure pendant laquelle les LP auraient autrement pu intervenir avant l'exécution.
Une analyse antérieure de l'incident avait révélé que l'attaquant avait obtenu une influence sur la gouvernance à très peu de frais. Un examen de la prise de contrôle de la gouvernance a révélé qu'environ 951 $ avaient été dépensés pour acquérir suffisamment de jetons de gouvernance pour contrôler les votes liés aux coffres détenant des millions de dollars de dépôts.
Les transactions n'exigeaient pas que l'attaquant compromette les principaux contrats de prêt à taux fixe de Term. Les contrats de gouvernance exécutaient plutôt les instructions qui étaient passées par le processus de proposition et de vote.
Une voie d'attaque similaire a été utilisée contre StrongBlock plus tôt en août, lorsqu'un attaquant a pris le contrôle de son système de gouvernance et a drainé environ 72 000 $ en jetons STRONG et STRNGR. L'attaquant a obtenu suffisamment de pouvoir de vote pour adopter une proposition qui a finalement fourni un contrôle administratif sur le contrat du gouverneur du projet.
L'ETH a été acheminé via une stratégie de destinataire fixe
La première proposition de terme réussie exécutée à 06h25 UTC le 23 août.
Quatre stratégies ETH actives, Shorewoods, August Digital, Parity Prime et Parity Core, ont été rappelées dans Meta Vault à l'aide de update_debt() et dirigées vers une stratégie nouvellement ajoutée nommée frWETH-EXIT.
Term Labs a déclaré que la stratégie avait été nommée « Stratégie de sortie WETH à destinataire fixe ».
Une fois que le WETH est entré dans la nouvelle stratégie, frWETH-EXIT a transmis la totalité du montant au premier opérateur lors du même appel.
La transaction a laissé Meta Vault détenir 2 841,74 actions dans une stratégie ne contenant aucun des WETH qui y avaient été transférés.
Ce chiffre correspond étroitement aux environ 2 843 ETH que PeckShield a retracés à partir de Term Finance lors de son analyse initiale de l'incident.
Vingt-deux minutes après la transaction ETH, la deuxième campagne a été exécutée contre cinq DAO de stratégie USDC.
Parity Prime, Parity Core, Parity HY, Parity HY v2 et RockawayX Tori ont été ciblés à 06h47 UTC.
Term Labs a déclaré que chaque proposition a amené son DAO à vendre une unité d'un jeton de pension contrefait dans la stratégie associée à une valeur égale à la totalité du solde liquide USDC de la stratégie.
L'attaquant a pu réaliser la vente après que les propositions ont installé un contrat appelé fmTERT.
Term Labs a déclaré que fmTERT avait usurpé l'identité du contrôleur utilisé pour déterminer si un jeton était un instrument Term légitime et de l'adaptateur de prix chargé de déterminer la valeur de l'instrument.
Les propositions fixent le taux de réserve de chaque stratégie à zéro et augmentent sa limite de concentration à la valeur maximale autorisée, empêchant ces contrôles de limiter les fausses transactions de jetons.
Le prix du jeton contrefait a ensuite été évalué à l’aide d’une fonction dynamique redemptionValue().
Lors de l'exécution, la fonction renvoyait le montant précis d'USDC liquide disponible dans la stratégie, permettant de vendre une seule unité du faux jeton de pension pour pratiquement la totalité du solde disponible de la stratégie.
Après la vente, les propositions ont approuvé le produit de l'USDC et l'ont transféré de chaque DAO vers le portefeuille du deuxième opérateur.
Les positions à taux fixe ont été déplacées avant de pouvoir être remboursées
Term Labs a déclaré que les prêts à taux fixe détenus par les coffres concernés n'avaient pas pu être atteints par l'attaque elle-même.
Un problème distinct serait apparu lorsque ces positions seraient arrivées à échéance, car leurs produits devaient être remboursés dans les mêmes coffres-forts que ceux qui avaient été capturés lors de l'attaque sur la gouvernance.
Le protocole a réagi en améliorant les contrats concernés et en déplaçant les positions à taux fixe avant leur échéance.
Toutes les positions de prêts à taux fixe concernées ont depuis été récupérées, la position finale ayant été déplacée à 14h52 UTC le 25 août.
L’incident illustre le rôle que les retards d’exécution peuvent jouer dans la sécurité de la gouvernance. Quelques jours avant l'attaque de Term Finance, Binance a déclaré avoir arrêté une proposition malveillante de DAO qui menaçait environ 1,2 million de dollars appartenant à un projet sans nom. Il restait moins de 48 heures avant que cette proposition puisse être exécutée lorsque la bourse a contacté le projet, qui l'a finalement rejetée sans perte signalée.
Dans le cas de Term, les propositions malveillantes elles-mêmes ont supprimé des délais supplémentaires avant la saisie des actifs. La proposition de l'ETH a supprimé une fenêtre de sept jours et une heure, tandis que les cinq propositions de l'USDC ont supprimé les périodes de trois jours et d'une heure de leurs piles de gouvernance respectives.
Term Labs a déclaré que ses Meta Vaults et les stratégies concernées restent fermés, tandis que les travaux d'arrêt impliquant les autres coffres-forts à faible activité sont toujours en cours.
Le protocole travaille avec les forces de l'ordre et les sociétés de cybersécurité pour identifier les responsables de l'attaque et a déclaré avoir fourni des informations pertinentes pour faciliter les enquêtes.