Wiederherstellung der Kreditpositionen
Term Labs hat alle festen Kreditpositionen, die in Vaults gehalten wurden und von einem Governance-Exploits im August betroffen waren, erfolgreich wiederhergestellt. Die letzte Position wurde am 25. August um 14:52 UTC verschoben, während die Meta Vaults und die betroffenen Strategien weiterhin deaktiviert bleiben. In seinem neuesten Vorfallbericht erklärte Term Labs, dass der Angriff auf liquide Bestände beschränkt war, die in den Term Vaults gehalten wurden. Das Protokoll stellte klar, dass die V1- und V2-Verträge nicht kompromittiert wurden und dass die direkten Kredit- und Leihmärkte während des gesamten Vorfalls weiterhin betrieben wurden.
Details zum Angriff
Ein neuer technischer Bericht bietet ein detaillierteres Bild des Angriffs vom 23. August, bei dem Sicherheitsfirmen zuvor geschätzt hatten, dass etwa 8,5 Millionen Dollar aus den Term Finance Vaults abgezogen wurden. Term Labs hatte zunächst einen Governance-Exploits offengelegt, der Vaults betraf, ohne die vollständige Angriffssequenz bereitzustellen. Sicherheitsfirmen wie CertiK und PeckShield schätzten die Verluste auf etwa 8,5 Millionen Dollar, einschließlich ungefähr 2.843 ETH und 1,68 Millionen USDC. PeckShield berichtete, dass die USDC anschließend gegen etwa 1,68 Millionen DAI getauscht wurden.
Das Protokoll schloss später seine Meta Vaults und widerrief deren DAO-Governance-Rollen. Neue Einzahlungen wurden dauerhaft deaktiviert, während Abhebungen weiterhin möglich waren. Yearn erklärte zu diesem Zeitpunkt, dass die betroffenen Verträge die Yearn V3-Infrastruktur verwendeten, der Angriff jedoch einen Governance-Wrap betraf, der speziell für Term entwickelt wurde, und nicht die Standard-Yearn V3-Vaults. Term Labs betont nun, dass sein zugrunde liegendes System für feste Kredite außerhalb der Reichweite des Angreifers blieb. Die Funktionen für Angebot, Rückzahlung und Liquidation wurden ohne Unterbrechung in seinen direkten Kreditmärkten fortgesetzt.
Angriffsmechanismus
Der Angriff entwickelte sich über zwei Betreiber-Wallets, die über Tornado Cash finanziert wurden, und eine Reihe von Governance-Vorschlägen, die die Kontrollen rund um die Vault-Strategien von Term änderten. Die erste Betreiber-Wallet erhielt am 17. August Gelder über Tornado Cash. Etwa 24 Minuten später reichte die Wallet einen ETH-Vorschlag mit dem Titel „Vote YES to VETO the curator’s proposed vault parameter changes“ ein. Zu den Änderungen im Vorschlag gehörte eine Reduzierung der Governance-Verzögerung des betroffenen Stapels auf null. Term Labs erklärte, dass diese Änderung einen zusätzlichen Zeitraum von sieben Tagen und einer Stunde beseitigte, in dem Liquiditätsanbieter den Vorschlag vor der Ausführung hätten stoppen können.
Eine zweite Betreiber-Wallet erhielt am 18. August Tornado Cash-Finanzierung, bevor sie später am Nachmittag einen Singleton-Vertrag einsetzte. Laut Term Labs kombinierte der Vertrag drei Funktionen in einer Bereitstellung: einen Controller, einen Preisadapter und einen gefälschten Repo-Token. Ein Hilfsvertrag wurde dann unter Verwendung des Singletons initialisiert. Drei Tage später, am 21. August, reichte der Helfer sieben Governance-Vorschläge ein und gab die einzigen Stimmen dafür ab. Zwei Vorschläge zielten auf ETH-Strategie-DAOs ab, wurden jedoch nie ausgeführt. Die anderen fünf wurden Teil des USDC-Angriffs. Jeder dieser fünf Vorschläge reduzierte die relevante Governance-Verzögerung auf null und beseitigte einen zusätzlichen Zeitraum von drei Tagen und einer Stunde, in dem LPs sonst hätten eingreifen können, bevor die Ausführung stattfand.
Governance-Sicherheitsprobleme
Frühere Analysen des Vorfalls ergaben, dass der Angreifer Governance-Einfluss zu sehr geringen Kosten erlangt hatte. Eine Überprüfung der Governance-Übernahme ergab, dass etwa 951 Dollar ausgegeben wurden, um genügend Governance-Token zu erwerben, um die Stimmen zu kontrollieren, die mit Vaults verbunden waren, die Millionen von Dollar an Einlagen hielten. Die Transaktionen erforderten nicht, dass der Angreifer die Kernverträge für feste Kredite von Term kompromittierte. Governance-Verträge führten stattdessen Anweisungen aus, die den Vorschlags- und Abstimmungsprozess durchlaufen hatten.
Ein ähnlicher Angriffsweg wurde Anfang August gegen StrongBlock verwendet, als ein Angreifer dessen Governance-System übernahm und etwa 72.000 Dollar in STRONG- und STRNGR-Token abgezogen hat. Der Angreifer erlangte genügend Stimmkraft, um einen Vorschlag zu verabschieden, der letztendlich die administrative Kontrolle über den Governor-Vertrag des Projekts gewährte.
Folgen des Angriffs
Der erste erfolgreiche Term-Vorschlag wurde am 23. August um 06:25 UTC ausgeführt. Vier aktive ETH-Strategien – Shorewoods, August Digital, Parity Prime und Parity Core – wurden in die Meta Vault zurückgerufen, indem update_debt verwendet wurde, und in eine neu hinzugefügte Strategie namens frWETH-EXIT geleitet. Term Labs erklärte, dass die Strategie „Fixed Recipient WETH Exit Strategy“ genannt wurde. Sobald das WETH in die neue Strategie einging, leitete frWETH-EXIT den gesamten Betrag während des gleichen Aufrufs an den ersten Betreiber weiter. Die Transaktion ließ die Meta Vault 2.841,74 Anteile in einer Strategie halten, die keines der WETH enthielt, das in sie übertragen worden war. Diese Zahl entspricht genau den etwa 2.843 ETH, die PeckShield während seiner ersten Analyse des Vorfalls von Term Finance zurückverfolgt hat.
Zweiundzwanzig Minuten nach der ETH-Transaktion wurde die zweite Kampagne gegen fünf USDC-Strategie-DAOs ausgeführt. Parity Prime, Parity Core, Parity HY, Parity HY v2 und RockawayX Tori wurden um 06:47 UTC ins Visier genommen. Term Labs erklärte, dass jeder Vorschlag dazu führte, dass sein DAO eine Einheit eines gefälschten Repo-Tokens in die zugehörige Strategie zu einem Wert verkaufte, der dem gesamten liquiden USDC-Guthaben der Strategie entsprach. Der Angreifer konnte den Verkauf ausführen, nachdem die Vorschläge einen Vertrag namens fmTERT installiert hatten. Term Labs erklärte, dass fmTERT sowohl den Controller nachahmte, der verwendet wurde, um zu bestimmen, ob ein Token ein legitimes Term-Instrument war, als auch den Preisadapter, der dafür verantwortlich war, wie viel das Instrument wert war.
Die Vorschläge setzten das Reservenverhältnis jeder Strategie auf null und erhöhten das Konzentrationslimit auf den maximal zulässigen Wert, wodurch diese Kontrollen daran gehindert wurden, die Transaktion des gefälschten Tokens zu begrenzen. Der gefälschte Token wurde dann mit einer dynamischen redemptionValue-Funktion bepreist. Bei der Ausführung gab die Funktion den genauen Betrag an liquidem USDC an, der in der Strategie verfügbar war, sodass eine einzige Einheit des gefälschten Repo-Tokens für praktisch das gesamte verfügbare Guthaben der Strategie verkauft werden konnte. Nach dem Verkauf genehmigten die Vorschläge die USDC-Erlöse und überwiesen sie von jedem DAO in die Wallet des zweiten Betreibers.
Reaktion und Maßnahmen von Term Labs
Term Labs erklärte, dass die festen Kredite, die von den betroffenen Vaults gehalten wurden, durch den Angriff selbst nicht erreicht werden konnten. Ein separates Problem wäre aufgetreten, als diese Positionen fällig wurden, da ihre Erlöse in die gleichen Vaults zurückgezahlt werden sollten, die während des Governance-Angriffs erfasst wurden. Das Protokoll reagierte, indem es die betroffenen Verträge aktualisierte und die festen Positionen vor der Fälligkeit verschob. Alle betroffenen festen Kreditpositionen wurden seitdem wiederhergestellt, wobei die letzte Position um 14:52 UTC am 25. August verschoben wurde.
Der Vorfall verdeutlicht die Rolle, die Ausführungsverzögerungen in der Governance-Sicherheit spielen können. Tage vor dem Angriff auf Term Finance erklärte Binance, dass es einen böswilligen DAO-Vorschlag gestoppt habe, der etwa 1,2 Millionen Dollar eines nicht genannten Projekts bedrohte. Weniger als 48 Stunden blieben, bevor dieser Vorschlag ausgeführt werden konnte, als die Börse das Projekt kontaktierte, das ihn letztendlich ohne gemeldeten Verlust ablehnte. Im Fall von Term entfernten die böswilligen Vorschläge selbst zusätzliche Verzögerungszeiträume, bevor die Vermögenswerte entnommen wurden. Der ETH-Vorschlag beseitigte ein Fenster von sieben Tagen und einer Stunde, während die fünf USDC-Vorschläge drei Tage und eine Stunde von ihren jeweiligen Governance-Stapeln entfernten.
Term Labs erklärte, dass seine Meta Vaults und die betroffenen Strategien weiterhin abgeschaltet bleiben, während die Arbeiten zur Abschaltung der verbleibenden Vaults mit geringer Aktivität noch im Gange sind. Das Protokoll arbeitet mit Strafverfolgungsbehörden und Cybersicherheitsfirmen zusammen, um die Verantwortlichen für den Angriff zu identifizieren, und erklärte, dass es relevante Informationen bereitgestellt hat, um die Ermittlungen zu unterstützen.