KyberSwap-Angreifer nutzte „Infinite-Money-Glitch“, um Gelder abzuschöpfen: DeFi-Experte

KyberSwap-Angreifer nutzte „Infinite-Money-Glitch“, um Gelder abzuschöpfen: DeFi-Experte

Quellknoten: 2395671

Laut einem Social-Media-Thread des Ambient-Börsengründers Doug Colkitt verließ sich der Angreifer, der 46 Millionen US-Dollar von KyberSwap abgezogen hatte, bei der Durchführung des Angriffs auf einen „komplexen und sorgfältig entwickelten Smart-Contract-Exploit“. 

Colkitt etikettiert die Ausnutzung einer „unendlichen Geldpanne“. Ihm zufolge nutzte der Angreifer eine einzigartige Implementierung der konzentrierten Liquiditätsfunktion von KyberSwap, um den Vertrag zu „täuschen“, indem er glaubte, er verfüge über mehr Liquidität als in Wirklichkeit.

Die meisten dezentralen Börsen (DEXs) bieten eine Funktion „konzentrierter Liquidität“, die es Liquiditätsanbietern ermöglicht, einen Mindest- und Höchstpreis festzulegen, zu dem sie den Kauf oder Verkauf von Kryptowährungen anbieten würden. Laut Colkitt wurde diese Funktion vom KyberSwap-Angreifer genutzt, um Gelder abzuschöpfen. Allerdings sei der Exploit „spezifisch für Kybers Implementierung konzentrierter Liquidität und wird wahrscheinlich nicht auf anderen DEXs funktionieren“, sagte er.

Der KyberSwap-Angriff bestand aus mehreren Exploits gegen einzelne Pools, wobei jeder Angriff nahezu identisch mit jedem anderen war, sagte Colkitt. Um zu veranschaulichen, wie es funktioniert, betrachtete Colkitt die Ausnutzung des ETH/wstETH-Pools auf Ethereum. Dieser Pool enthielt Ether (ETH) und Lido Wrapped Staked Ether (wstETH).

Der Angreifer begann mit Ausleihen 10,000 wstETH (damals 23 Millionen US-Dollar wert) von der Flash-Kreditplattform Aave, wie aus den Blockchain-Daten hervorgeht. Laut Colkitt warf der Angreifer dann diese Token im Wert von 6.7 Millionen US-Dollar in den Pool, wodurch der Preis auf 0.0000152 ETH pro 1 wstETH einbrach. Zu diesem Preispunkt gab es keine Liquiditätsanbieter, die zum Kauf oder Verkauf bereit waren, sodass die Liquidität bei Null hätte liegen müssen.

Anschließend zahlte der Angreifer 3.4 WstETH ein und bot den Kauf oder Verkauf zwischen den Preisen von 0.0000146 und 0.0000153 an, wobei er unmittelbar nach der Einzahlung 0.56 WstETH abhob. Colkitt spekulierte, dass der Angreifer möglicherweise die 0.56 wstETH abgezogen hatte, um „die nachfolgenden numerischen Berechnungen perfekt in Einklang zu bringen“.

Nach dieser Ein- und Auszahlung führte der Angreifer einen zweiten und dritten Tausch durch. Der zweite Swap drückte den Preis auf 0.0157 ETH, was die Liquidität des Angreifers hätte deaktivieren sollen. Der dritte Swap ließ den Preis wieder auf 0.00001637 steigen. Auch dies lag außerhalb der durch die eigene Liquiditätsschwelle des Angreifers festgelegten Preisspanne, da es nun über seinem Höchstpreis lag.

Theoretisch hätten die letzten beiden Swaps nichts gebracht, da der Angreifer in seine eigene Liquidität kaufte und verkaufte, da jeder andere Benutzer einen Mindestpreis hatte, der weit unter diesen Werten lag. „Ohne einen numerischen Fehler würde jemand, der dies tut, einfach mit seiner eigenen Liquidität hin und her handeln“, erklärte Colkitt und fügte hinzu, „und alle Ströme würden sich auf Null belaufen (abzüglich Gebühren).“

Aufgrund einer Besonderheit der Arithmetik zur Berechnung der Ober- und Untergrenze der Preisspanne konnte das Protokoll jedoch bei einem der ersten beiden Swaps keine Liquidität entfernen, sondern fügte sie beim letzten Swap wieder hinzu. Infolgedessen zählte der Pool am Ende „die Liquidität der ursprünglichen LP-Position doppelt“, was es dem Angreifer ermöglichte, 3,911 WstETH für eine minimale Menge ETH zu erhalten. Obwohl der Angreifer im ersten Swap 1,052 WstETH abwerfen musste, um den Angriff durchzuführen, konnte er dadurch dennoch einen Gewinn von 2,859 WstETH (6.7 Millionen US-Dollar zum heutigen Preis) erzielen, nachdem er seinen Schnellkredit zurückgezahlt hatte.

Offenbar wiederholte der Angreifer diesen Exploit gegen andere KyberSwap-Pools in mehreren Netzwerken und kam schließlich mit insgesamt 46 Millionen US-Dollar an Krypto-Beute davon.

Related: HTX-Börse verliert 13.6 Millionen US-Dollar durch Hot-Wallet-Hack: Bericht

Laut Colkitt enthielt KyberSwap einen Failsafe-Mechanismus in der Funktion „computeSwapStep“, der verhindern sollte, dass dieser Exploit möglich ist. Dem Angreifer gelang es jedoch, die beim Austausch verwendeten numerischen Werte knapp außerhalb des Bereichs zu halten, der zum Auslösen der Failsafe-Funktion führen würde, wie Colkitt erklärte:

„[D]ie ‚Reach-Menge‘ war die Obergrenze für das Erreichen der Tick-Grenze und wurde mit …22080000 berechnet, während der Exploiter eine Swap-Menge von …220799999[.] festlegte. Das zeigt, wie sorgfältig dieser Exploit entwickelt wurde. Die Prüfung ist um <0.00000000001 % fehlgeschlagen.“

Colkitt nannte den Angriff „mit Sicherheit den komplexesten und sorgfältigsten Smart-Contract-Exploit, den ich je gesehen habe.“

Wie Cointelegraph berichtete, KyberSwap wurde für 46 Millionen US-Dollar ausgebeutet am 22. November. Das Team eine Schwachstelle entdeckt am 17. April, aber bei diesem Vorfall gingen keine Gelder verloren. Die Benutzeroberfläche der Börse wurde auch gehackt im September letzten Jahres, obwohl alle Benutzer bei diesem Vorfall entschädigt wurden. Der Angreifer vom 22. November hat dem Team mitgeteilt, dass es bereit sei, über die Rückgabe eines Teils der Gelder zu verhandeln. 

Zeitstempel:

Mehr von Cointelegraph