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
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

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.

Best Security Auditor for Web3

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

BlockSec Audit