Back to Blog

Wie das Mirror Protocol ausgenutzt wurde

Code Auditing
May 31, 2022
4 min read

Der Mirror Protocol wurde laut @FatMan ausgenutzt. Der Blog enthält einen guten Bericht dazu. In diesem kurzen Artikel werden wir die Angriffstransaktion verwenden, um zu erläutern, wie dies geschah.

Haftungsausschluss: Dieser Artikel basiert auf der öffentlichen Transaktion und unserem Verständnis des Mirror-Protokolls und des Terra-Ökosystems. Bitte lassen Sie uns wissen, wenn etwas ungenau ist. Kommentare zu diesem Blog sind willkommen.

1 Angriff

1.1 Vorbereitung

Die Transaktion wird zur Vorbereitung der Angriffe verwendet.

SCHRITT 1: In dieser Transaktion sendete der Angreifer zuerst 100.000 USTC an den Lock-Vertrag. Dies ist nicht notwendig, um eine Position zu eröffnen, aber entscheidend für den Angriff.

SCHRITT 2: Danach eröffnete der Angreifer eine Position, indem er 10 USTC als Sicherheit hinterlegte und ein collateral_ratio von 2,5 angab.

Die short_params sind angegeben, damit der Mint-Vertrag die geminteten mAssets (d.h. mETH) verkauft und die erhaltenen USTC zum gesperrten Betrag der Position hinzufügt.

SCHRITT 2.1: Wir gehen die Transaktion Schritt für Schritt durch. Zuerst wird die Funktion open_position aufgerufen, um eine Short-Position mit der ID 43186 zu eröffnen.

SCHRITT 2.2: Da die optionalen short_params hinzugefügt wurden, mintet der Vertrag zunächst 0,001208 mETH (basierend auf dem aktuellen ETH-Preis) und tauscht ihn dann im mETH-UST Pair gegen USTC.

Die 0,001208 mETH werden in 4,06582 USTC getauscht. Die getauschten USTC werden nach Abzug der entsprechenden Gebühren (z.B. Steuern) an den Lock-Vertrag gesendet. Das liegt daran, dass die eröffnete Position erst nach einer bestimmten Zeit entsperrt werden kann.

SCHRITT 2.3: Danach wird lock_position_funds_hook aufgerufen. In dieser Funktion wird position_locked_amount berechnet, indem current_balance abgefragt und die current_balance mit den locked_funds verglichen wird.

Wie in Schritt 1 gesehen, wurden jedoch 100.000 USTC direkt in den Lock-Vertrag übertragen, sodass der gesperrte Betrag etwa 100.004 USTC und nicht 4 USTC beträgt.

SCHRITT 2.4: Schließlich wird increase_short_token aufgerufen, um die sLP-Tokens zu registrieren.

Bis hierhin hat der Angreifer eine Position eröffnet, indem er 100.000 USTC direkt an den Lock-Vertrag und 10 USTC als Sicherheit gesendet hat. Der gesperrte Betrag der Position beträgt etwa 100.004 USTC und kann nach einer gewissen Zeit entsperrt werden. Der Angreifer eröffnete viele solcher Positionen, indem er 1.000 bis 100.000 USTC einzahlte.

1.2. Angriff

Der Mirror Protocol überprüft die Duplizierung der Positions-ID nicht. In diesem Fall kann der Angreifer viele doppelte Positions-IDs eingeben, um den gesperrten Betrag in einer Position immer wieder zu entsperren.

Die Transaktion ist die Angriffstransaktion. Für die Positions-ID 43186 hat der Angreifer beispielsweise 437 Mal dupliziert.

Da der ursprüngliche Vertragscode die Duplizierung nicht prüft, wurden etwa 43,7 Mio. (437 * 0,1 Mio.) USTC freigeschaltet (in diesem einzigen Funktionsaufruf).

Beachten Sie, dass auch andere Positionen mit demselben Mechanismus entsperrt wurden.

2. Bugfix

Die Schwachstelle wurde in diesem Commit behoben.

Genauer gesagt ist unlockable_positions ein Vektor, der die zu entsperrenden Positions-IDs enthält. Im ursprünglichen Code gab es keine Prüfung, ob doppelte IDs in unlockable_positions vorhanden sind. Der gepatchte Code fügt eine Prüfung auf Duplikate der Positions-IDs hinzu.

3. Fazit

Wie von @FatMan und anderen Community-Mitgliedern hervorgehoben, existierte dieser Fehler mehrere Monate lang und wurde bereits ausgenutzt. Wir sind der Meinung, dass das stille Patchen einer Schwachstelle, die bereits ausgenutzt wurde, keine gute Sicherheitspraxis ist. Darüber hinaus sind wir der Meinung, dass hochkarätige DeFi-Projekte einige Gatekeeper einsetzen sollten, um den Status ihrer Apps aktiv zu überwachen und benachrichtigt zu werden, wenn etwas Ungewöhnliches passiert.

Sign up for the latest updates
~$4.72M Lost: TAC, Transit Finance & More | BlockSec Weekly
Security Insights

~$4.72M Lost: TAC, Transit Finance & More | BlockSec Weekly

This BlockSec weekly security report covers 3 notable attack incidents identified between May 11 and May 17, 2026, across TRON, TON, and Ethereum, with total estimated losses of approximately $4.72M. Three incidents are analyzed in detail: the highlighted $1.88M Transit Finance exploit on TRON, where a deprecated swap bridge contract with lingering token approvals was exploited through arbitrary calldata forwarding; the $2.8M TAC TON-to-EVM bridge exploit caused by missing canonical wallet verification in the jetton deposit flow; and the $46.75K Boost Hook exploit on Ethereum, where spot price manipulation on a Uniswap V4 hook-based perpetual protocol forced the protocol to buy tokens at inflated prices using its own reserves.

~$15.9M Lost: Trusted Volumes, Wasabi & More | BlockSec Weekly
Security Insights

~$15.9M Lost: Trusted Volumes, Wasabi & More | BlockSec Weekly

This BlockSec bi-weekly security report covers 11 notable attack incidents identified between April 27 and May 10, 2026, across Sui, Ethereum, BNB Chain, Base, Blast, and Berachain, with total estimated losses of approximately $15.9M. Three incidents are analyzed in detail: the highlighted $1.14M Aftermath Finance exploit on Sui, where a signed/unsigned semantic mismatch in the builder-fee validation allowed an attacker to inject a negative fee that was converted into positive collateral during settlement; the $5.87M Trusted Volumes RFQ authorization mismatch on Ethereum; and the $5.7M Wasabi Protocol infrastructure-to-contract-control compromise across multiple EVM chains.

Newsletter - April 2026
Security Insights

Newsletter - April 2026

In April 2026, the DeFi ecosystem experienced three major security incidents. KelpDAO lost ~$290M due to an insecure 1-of-1 DVN bridge configuration exploited via RPC infrastructure compromise, Drift Protocol suffered ~$285M from a multisig governance takeover leveraging Solana's durable nonce mechanism, and Rhea Finance incurred ~$18.4M following a business logic flaw in its margin-trading module that allowed circular swap path manipulatio

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit