Back to Blog

Wie das Mirror Protocol ausgenutzt wurde

Code Auditing
May 31, 2022

Das Mirror Protocol wurde von @FatMan Berichten zufolge gehackt. Der Blog hat einen guten Bericht darüber. In diesem kurzen Artikel werden wir die Angriffstransaktion nutzen, 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 Ungenaues vorhanden 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 zunächst 100.000 USTC an den Sperrvertrag. 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 Sicherheitengewicht von 2,5 angab.

Die short_params sind so angegeben, dass der Prägevertrag die geprägten mAssets (d. h. mETH) verkauft und die erhaltenen USTC zum gesperrten Betrag der Position hinzufügt.

SCHRITT 2.1: Gehen wir 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, prägt der Vertrag zunächst 0.001208 mETH (basierend auf dem aktuellen ETH-Preis) und tauscht ihn dann im mETH-UST Pair ein.

SCHRITT 2.3: Die 0.001208 mETH werden gegen 4.06582 USTC getauscht. Die getauschten USTC werden nach Abzug der entsprechenden Gebühren (z. B. Steuern) an den Sperrvertrag gesendet. Das liegt daran, dass die eröffnete Position erst nach einem bestimmten Zeitraum freigegeben werden kann.

SCHRITT 2.4: Dann wird lock_position_funds_hook aufgerufen. In dieser Funktion wird position_locked_amount durch Abfragen des current_balance und Vergleichen des current_balance mit den locked_funds berechnet.

Wie wir jedoch in Schritt 1 gesehen haben, wurden 100.000 USTC direkt in den Sperrvertrag übertragen, sodass der gesperrte Betrag etwa 100.004 USTC statt 4 USTC beträgt.

SCHRITT 2.5: Schließlich wird increase_short_token aufgerufen, um die sLP-Token aufzuzeichnen.

Bis hierher hat der Angreifer eine Position eröffnet, indem er 100.000 USTC direkt an den Sperrvertrag und 10 USTC als Sicherheit gesendet hat. Der gesperrte Betrag der Position beträgt etwa 100.004 USTC und kann nach einem bestimmten Zeitraum freigegeben werden. Der Angreifer hat viele solcher Positionen eröffnet, indem er 1.000 bis 100.000 USTC gesendet hat.

1.2. Angriff

Das Mirror Protocol prüft nicht die Duplizität der Positions-ID. In diesem Fall kann der Angreifer viele doppelte Positions-IDs einspeisen, um den gesperrten Betrag einer Position immer wieder freizugeben.

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

Da der ursprüngliche Vertragscode keine Prüfung auf Duplikate vornimmt, wurden etwa 43,7 Mio. (437 * 0,1 Mio.) USTC freigegeben (in diesem einzigen Funktionsaufruf).

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

2. Bugfix

Die Schwachstelle wurde in diesem Commit behoben.

Insbesondere ist unlockable_positions ein Vektor, der die freizugebenden Positions-IDs enthält. Im ursprünglichen Code gibt 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. Schlussfolgerung

Wie von @FatMan und anderen Community-Mitgliedern hervorgehoben, bestand dieser Fehler mehrere Monate lang und wurde bereits ausgenutzt. Wir sind der Meinung, dass das stille Beheben 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 bei ungewöhnlichen Vorkommnissen benachrichtigt zu werden.

Sign up for the latest updates
Tracing $1.6B in TRON USDT: Inside the VerilyHK Ponzi Infrastructure
Case Studies

Tracing $1.6B in TRON USDT: Inside the VerilyHK Ponzi Infrastructure

An on-chain investigation into VerilyHK, a fraudulent platform that moved $1.6B in TRON USDT through a multi-layered fund-routing infrastructure of rotating wallets, paired payout channels, and exchange exit funnels, with traced connections to the FinCEN-sanctioned Huione Group.

Weekly Web3 Security Incident Roundup | Mar 30 – Apr 5, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 30 – Apr 5, 2026

This BlockSec weekly security report covers nine DeFi attack incidents detected between March 30 and April 5, 2026, across Solana, BNB Chain, Arbitrum, and Polygon, with total estimated losses of approximately $287M. The week was dominated by the $285.3M Drift Protocol exploit on Solana, where attackers combined multisig signer social engineering with Solana's durable nonce mechanism to bypass a zero-timelock 2-of-5 Security Council, alongside notable incidents including a $950K flash loan TWAP manipulation against the LML staking protocol, a $359K Silo Finance vault inflation via an external `wstUSR` market donation exploiting a depegged-asset oracle and `totalAssets()` accounting flaw, and an EIP-7702 delegated-code access control failure. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident, covering flawed business logic, access control, price manipulation, phishing, and misconfiguration attack types.

Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation
Security Insights

Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation

On April 1, 2026 (UTC), Drift Protocol on Solana suffered a $285.3M loss after an attacker exploited Solana's durable nonce mechanism to delay the execution of phished multisig approvals, ultimately transferring administrative control of the protocol's 2-of-5 Squads governance with zero timelock. With full admin privileges, the attacker created a malicious collateral market (CVT), inflated its oracle price, relaxed withdrawal protections, and drained USDC, JLP, SOL, cbBTC, and other assets through 31 rapid withdrawals in approximately 12 minutes. This incident highlights how durable nonce-based delayed execution can decouple signer intent from on-chain execution, bypassing the temporal assumptions that multisig security implicitly relies on.

Best Security Auditor for Web3

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

BlockSec Audit