Zum Inhalt springen
Gegr. MMXXVIBd. VI · № 273RSS
Blockchain Breaches

Ein Archiv von Sicherheitsvorfällen im Kryptobereich — Hacks, Exploits, Bridge-Ausfälle und Rug Pulls, dokumentiert mit On-Chain-Belegen.

Dossier № 246Smart-Contract-Bug

Bunni DEX Rundungs-Drain

Rundungsfehler in Bunni DEXs Withdraw-Funktion entzog 8,4 Mio. USD auf Ethereum und Unichain, nachdem Devs Idle-Balance-Bewegungen falsch einschätzten.

Datum
Opfer
Bunni
Status
Mittel entwendet

Am 2. September 2025 wurde die Uniswap-v4-basierte DEX Bunni um etwa 8,4 Millionen US-Dollar auf Ethereum und Unichain ausgenutzt. Der Bug war ein Rundungsrichtungs-Fehler in der withdraw-Funktion: Die Entwickler hatten abgerundet, in dem Glauben, dies würde Idle-Balances erhöhen, aber die Mathe funktionierte umgekehrt und ließ einen Angreifer unverhältnismäßig viele Tokens abheben, während er weniger Liquidität verbrannte, als er sollte. Bunni schloss zwei Monate später dauerhaft und nannte 6-7-stellige Remediation-Kosten für einen Relaunch.

Was geschah

Bunni war eine Uniswap-v4-native DEX mit einer Custom-Liquidity-Management-Schicht, die für Kapital-Effizienz durch automatisiertes Rebalancing optimiert war. Die withdraw-Funktion des Protokolls berechnete, wie viel zugrundeliegende Liquidität pro Einheit ausgegebenen Outputs zu verbrennen ist — eine Berechnung, die Integer-Division mit einer von den Entwicklern beim Design durchdachten Rundungsrichtung beinhaltete.

Der fatale Fehler: Die Rundungsrichtungs-Argumentation war invertiert. Die Entwickler hatten geschlussfolgert, dass das Abrunden eines Schlüssel-Zwischenwerts die „Idle Balance" des Protokolls erhöhen würde (eine wünschenswerte konservative Eigenschaft). In der Praxis funktionierte die Mathe umgekehrt — Abrunden ließ die Idle-Balance-Berechnung tatsächlich sinken und ließ mehr Wert für den Abhebenden zur Extraktion verfügbar.

Der Angriff:

  1. Flash-borrowte Tokens zur Finanzierung des operativen Kapitals.
  2. Führte sorgfältig konstruierte Swaps durch Bunnis weETH/ETH-Pool auf Unichain und USDC/USDT-Pool auf Ethereum aus — vor-positionierte den Pool-Zustand.
  3. Triggerte die Withdraw-Funktion mit Parametern, die den Impact des Rundungsfehlers maximierten.
  4. Hob signifikant mehr Tokens ab, als die verbrannte Liquidität erlauben sollte.
  5. Wiederholte über beide Chains, extrahierte insgesamt etwa 8,4 Mio. USD.

Folgen

  • Bunni pausierte Smart Contracts innerhalb von Stunden nach Erkennung.
  • Das Team kündigte zunächst Recovery-Pläne und Protokoll-Behebung an.
  • Nach zwei Monaten Evaluation kündigte Bunni öffentlich die dauerhafte Schließung an, mit Verweis auf:
    • Remediation-Kosten im „6-7-stelligen Bereich" für Audits und Monitoring, die für einen sicheren Relaunch erforderlich wären.
    • Unzureichende Ressourcen, um den Verlust zu absorbieren und gleichzeitig den Wiederaufbau zu finanzieren.
  • Das Team veröffentlichte die v2-Verträge unter MIT-Lizenz als Open Source als Abschiedsbeitrag.
  • Gestohlene Mittel wurden gewaschen; keine öffentliche Rückgewinnung.

Warum es wichtig ist

Der Bunni-Vorfall ist eine der klarsten Demonstrationen dafür, wie eine einzelne Rundungsrichtungs-Inversion ein vollständig geladenes Exploit-Primitiv sein kann. Die Entwickler hatten explizit über das Rundungsverhalten nachgedacht — sie dachten nur falsch. Das Audit (Bunni war auditiert worden) fing die Inversion nicht, vermutlich weil die Testfälle nicht die spezifischen Eingabebedingungen ausübten, in denen die Rundungsrichtung wichtig war.

Die strukturellen Lektionen:

  1. Rundungsrichtungs-Argumentation ist außergewöhnlich leicht falsch zu machen in Protokoll-Mathe. Die Kombination aus „Intuition, was passieren sollte" + „Solidity-Integer-Division" + „komplexe mehrstufige Berechnungen" produziert Bugs, die das Review von Leuten passieren, die glauben, sie verstünden den Code.

  2. Property-basiertes Testen (Echidna, Foundry-Invarianten, Halmos) fängt Rundungsrichtungs-Bugs weit zuverlässiger ab als beispielbasierte Unit-Tests, weil die Property-Tests den Eingaberaum nach Invariantsverletzungen durchsuchen, statt spezifische erwartete Outputs zu testen.

  3. Post-Exploit-Relaunch ist für viele kleine Protokolle wirtschaftlich nicht machbar. Bunnis Kalkül — 6-7-stellige Remediation-Kosten vs. unsichere Nutzer-Vertrauen-Wiederherstellung — ist dasselbe Kalkül, das Polter Finance, mehrere Compound-v2-Forks und viele andere mittelgroße Projekte zerstörte. Die Asymmetrie zwischen den Kosten der Exploit-Vermeidung (Audits + Test-Infrastruktur: vielleicht 200K USD) und den Kosten der Erholung (Remediation + Audits + Monitoring + Nutzer-Vertrauen-Wiederaufbau: 1M+ USD, wenn das Projekt überhaupt überlebt) verschiebt die rationale Grenze weiter zu konservativerer Pre-Launch-Investition.

Bunnis Open-Sourcing der v2-Verträge als Abschiedsgeste ist ungewöhnlich und erwähnenswert — die meisten Protokolle, die sich abwickeln, hören einfach auf, ihren Code zu warten. Die MIT-lizenzierte Veröffentlichung gibt anderen Uniswap-v4-Buildern die Chance, von Bunnis Design zu lernen (und seine spezifischen Bugs zu vermeiden), ohne dieselben Primitive von Grund auf zu bauen.

Quellen & On-Chain-Belege

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-bunni-hack-september-2025
  2. [02]coindesk.comhttps://www.coindesk.com/web3/2025/09/02/bunni-dex-halts-smart-contracts-after-exploit-drains-usd8-4m-across-chains
  3. [03]coindesk.comhttps://www.coindesk.com/business/2025/10/23/bunni-dex-shuts-down-cites-recovery-costs-after-usd8-4m-exploit

Verwandte Einträge