Back to Blog

Die Analyse des Sicherheitsvorfalls bei Nerve Bridge

Code Auditing
November 18, 2021

0x.1 Vorwort

Am 15. November 2021 hat unser internes Überwachungssystem verdächtige Flashloan-Transaktionen auf BSC erfasst. Nach der Untersuchung stellten wir fest, dass es sich um einen Angriff auf Nerve Bridge handelte, der auch die MetaPools von fUSDT und UST betraf.

Abbildung 1: Ein Beispiel für eine Angriffstransaktion
Abbildung 1: Ein Beispiel für eine Angriffstransaktion

Zum Zeitpunkt der Veröffentlichung hat der Angreifer die Liquidität von fUSDT und UST der Staking-Pools von Nerve erschöpft und einen Gewinn von 900 BNB erzielt.

Überraschenderweise stellten wir fest, dass der anfällige Code von Saddle.Finance abgezweigt wurde, was bereits am 6. November 2021 zu einem Verlust von 800 Millionen US-Dollar bei Synapse Bridge geführt hatte. Konkret liegt die Ursache der Schwachstelle in der inkonsistenten Implementierung der Berechnung des Umtauschbetrags von Tokens in verschiedenen Bibliotheken.

Es gibt jedoch KEINE öffentlich zugänglichen Berichte, die diesen Sicherheitsvorfall analysieren. Daher zielen wir in diesem Blog darauf ab, eine umfassende Analyse bereitzustellen, die den Mechanismus des Projekts, die Schwachstelle und den Angriff umfasst.

0x2. Hintergrund

0x2.1 Was ist MetaPool?

Grundsätzlich bietet Curve zwei Arten von Stablecoin-Swap-Pools an, nämlich Standard StableSwap Pool und MetaPool. Ersteres ist ein vollständig AMM, um Cross-Markets zwischen verschiedenen Stablecoins zu schaffen [1]. Es ist der am weitesten verbreitete Pool-Typ, z. B. Curve.3pool, der aus DAI, USDC und USDT besteht. Dieser Pool kann jedoch das Risiko zwischen Stablecoins nicht isolieren, was zu großen Verlusten für LP-Anbieter führen kann.

Daher wird MetaPool vorgeschlagen, um dieses Problem zu lösen. Wie von Curve angegeben [2], "ermöglicht er die Bündelung einer einzelnen Münze mit allen Münzen in einem anderen (Basis-)Pool, ohne deren Liquidität zu verwässern". Es handelt sich im Wesentlichen um einen Swap-Pool zwischen einem Stablecoin und einem LP-Token eines Stand StableSwap-Pools (der aus mehreren anderen Stablecoins besteht). In unserem Kontext nennen wir diese beiden Arten von Stablecoins pool stablecoin und underlying stablecoin.

Ein Opfer dieses Vorfalls ist zum Beispiel nur der MetaPool von fUSDT und dem LP-Token von Nerve.3pool (einschließlich BUSD, USD und USDC), und die Struktur dieses Pools ist im Wesentlichen [fUSDT, LP-Token von (BUSD, USD, USDC)]. Somit ist fUSDT der Pool-Stablecoin, während BUSD, USD und USDC die zugrundeliegenden Stablecoins sind.

Abbildung 2: Nerve.3pool
Abbildung 2: Nerve.3pool

0x2.2 Quelle des anfälligen Codes

Curve's MetaPool ist in Vyper implementiert. Um die Entwicklung von Solidity zu unterstützen, hat das Entwicklungsteam von Saddle.Finance den Code in Solidity neu geschrieben. Da es sich um den Anfang dieser Schwachstelle handelt, wurde er von Synapse und Nerve abgezweigt und übernommen. Am 6. November wurde Synapse angegriffen.

Abbildung 3: Angriffstransaktionen, die auf Synapse abzielen
Abbildung 3: Angriffstransaktionen, die auf Synapse abzielen

Rund 8,2 Millionen US-Dollar wurden aus dem MetaPool abgezogen, wobei aufgrund eines "dummen" Fehlers des Angreifers keine Gelder tatsächlich verloren gingen [3].

Danach ergriff Saddle.Finance eine Notfallmaßnahme, um die Sicherheit ihrer Gelder zu gewährleisten, indem alle MetaPool-Verträge pausiert wurden. Nerve Bridge unternahm jedoch keine Maßnahmen, was unweigerlich zu diesem Sicherheitsvorfall führte.

Die relevanten Vertragsadressen sind im Folgenden aufgeführt:

  • MetaSwap: 0xd0fBF0A224563D5fFc8A57e4fdA6Ae080EbCf3D3
  • SwapUtils: 0x02338Ee742ddCDe44488640F4edf1Aa947E670E7

0x3. Schwachstellenanalyse

In MetaPool gibt es zwei wichtige Funktionen, nämlich swap und swapUnderlying. Insbesondere wird ersteres zum Tauschen des LP-Tokens und des Pool-Stablecoins verwendet, während letzteres zum Tauschen des Pool-Stablecoins und der zugrundeliegenden Stablecoins verwendet wird.

swap: _calculateSwap Funktion
swap: _calculateSwap Funktion
swapUnderlying: _calculateSwapUnderlying Funktion
swapUnderlying: _calculateSwapUnderlying Funktion

Die beiden Funktionen werden jedoch inkonsistent implementiert. Wie in den obigen beiden Abbildungen gezeigt. Der Codeausschnitt im roten Rechteck dient zur Anpassung des Wertes des LP-Tokens durch Messung des "virtuellen Preises" eines LP-Tokens (der von einem Basiswert von 1 steigt, wenn mehr Gebühren anfallen). Während die swap-Funktion die Auswirkungen des virtuellen Preises ignoriert, was bedeutet, dass der Wert des LP-Tokens unterschätzt wird. Mit anderen Worten, mehr LP-Tokens könnten ausgetauscht werden.

Infolgedessen ist es möglich, mehr Pool-Stablecoins zu generieren, indem zunächst die Liquidität der zugrundeliegenden Stablecoins mit dem entsprechenden LP-Token zurückgeholt und dann Pool-Stablecoins durch Aufruf der swapUnderlying-Funktion getauscht werden.

0x4. Angriffsanalyse

Wir nehmen die Beispieltransaktion als Beispiel, um den Angriff zu veranschaulichen.

Abbildung 6: Die fünf Angriffsschritte
Abbildung 6: Die fünf Angriffsschritte

Abbildung 6 zeigt, dass der Angreifer die folgenden fünf Schritte unternommen hat, um den Angriff zu starten:

  • Schritt 1: Ausleihen von 50.000 BUSD über Flashloan von Fortube
  • Schritt 2: Tauschen von 50.000 BUSD gegen 50.351 fUSDT von Ellipsis.
  • Schritt 3: Aufruf der swap-Funktion von MetaSwap, um 50.351 fUSDT gegen 36.959 Nerve 3-LP mit einem relativ großen Slippage zu tauschen.
  • Schritt 4: Aufruf der removeLiquidityOneCoin-Funktion von Nerve.3pool mit den LP-Tokens (im vorherigen Schritt erhalten), um die Liquidität von BUSD, d. h. 37.071 BUSD, zu entfernen.
  • Schritt 5: Aufruf der swapUnderlying-Funktion von MetaSwap, um BUSD gegen fUSDT zu tauschen und 51.494 fUSDT zu erhalten.

Der Angreifer führte die obigen fünf Schritte wiederholt aus (rund 200+ Transaktionen), um die Liquidität des MetaPools zu erschöpfen, und erzielte schließlich 900 BNB.

Interessanterweise hat der Angreifer denselben Ansatz wie beim Synapse-Vorfall übernommen, der keine optimierte Methode zur Erreichung des Ziels darstellt. Alternativ ist es möglich, Angriffe effizienter durchzuführen, z. B. durch Anwendung optimierter Parameter, um die Liquidität in einer Transaktion abzuziehen. Das Ergebnis deutet darauf hin, dass der Angreifer die Ursache dieser Schwachstelle möglicherweise NICHT vollständig verstanden hat.

Referenz

[1] https://curve.fi/files/stableswap-paper.pdf

[2] https://resources.curve.fi/lp/depositing/depositing-into-a-metapool/

[3] https://synapseprotocol.medium.com/11-06-2021-post-mortem-of-synapse-metapool-exploit-3003b4df4ef4

Mit freundlicher Genehmigung: Hailin Wang, Lei Wu, Yajin Zhou @BlockSec

Twitter: https://twitter.com/BlockSecTeam

Sign up for the latest updates
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.

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026

This BlockSec weekly security report covers eight DeFi attack incidents detected between March 23 and March 29, 2026, across Ethereum and BNB Chain, with total estimated losses of approximately $1.53M. Incidents include a $679K flawed burn mechanism exploit on the BCE token, a $512K spot-price manipulation attack on Cyrus Finance's PancakeSwap V3 liquidity withdrawal, a $133.5K flash-loan-driven referral reward manipulation on a TUR staking contract, and multiple integer overflow, reentrancy, and accounting error vulnerabilities in DeFi protocols. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Newsletter -  March 2026
Security Insights

Newsletter - March 2026

In March 2026, the DeFi ecosystem experienced three major security incidents. Resolv Protocol lost ~$80M due to compromised privileged infrastructure keys, BitcoinReserveOffering suffered ~$2.7M from a double-minting logic flaw, and Venus Protocol incurred ~$2.15M following a donation attack combined with market manipulation.

Best Security Auditor for Web3

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

BlockSec Audit