Die wahre Ursache des Vee Finance Sicherheitsvorfalls

Vee Finance Report: Ursache des Sicherheitsvorfalls falsch identifiziert

Die wahre Ursache des Vee Finance Sicherheitsvorfalls

VEE finance hat einen Bericht über den jüngsten Sicherheitsvorfall veröffentlicht. In dem Bericht geben sie an, dass die Hauptursache darin liegt, dass „die Manipulation des Preises der Vee Finance Orakelmaschine und die Ermittlung des Preises der Orakelmaschine nicht mit Dezimalstellen verarbeitet wurden, was dazu führte, dass die erwartete Slippage-Prüfung vor dem Tausch nicht funktionierte.“

„Die Hauptursache des Unfalls war, dass im Prozess der Erstellung einer Order für gehebelten Handel nur der Preis des Pangolin-Pools vom Orakel als Quelle des Preis-Feeds verwendet wurde und der Pool-Preis um mehr als 3 % schwankte. Das Orakel aktualisierte den Preis, was den Angreifer dazu veranlasste, den Preis des Pangolin-Pools zu manipulieren. Die Manipulation des Preises der Vee Finance Orakelmaschine und die Ermittlung des Preises der Orakelmaschine wurden nicht mit Dezimalstellen verarbeitet, was dazu führte, dass die erwartete Slippage-Prüfung vor dem Tausch nicht funktionierte.“ – zitiert aus dem von VEE finance veröffentlichten Bericht.

Nach unserer sorgfältigen Untersuchung stellen wir jedoch fest, dass dies möglicherweise NICHT der Fall ist. Der eigentliche Grund ist, dass der Angreifer ein FAKE ctokenB erstellt und an den Vertrag übergibt. Da das ctokenB vom Angreifer kontrolliert wird, kann es einen beliebigen zugrunde liegenden Token zurückgeben, der zur Berechnung des Tokenpreises verwendet wird. Dies ist die eigentliche Ursache des Angriffs.

Der gesamte Prozess

Es gibt eine externe Funktion namens createOrderERC20ToERC20, die von beliebigen Benutzern aufgerufen werden kann, um einen Token-Tausch zu erstellen, indem das ctoken verwendet wird, das durch Hinterlegung von Sicherheiten im Vertrag erhalten wird. Das ctoken hat einen zugrunde liegenden Token, der den tatsächlichen Token repräsentiert.

In einem normalen Fall muss die Dapp beim Aufruf von createOrderERC20ToERC20 zum Handel eines Token-Paares mit Hebelwirkung sicherstellen, dass der Handel keinen Verlust verursachen kann (andernfalls verliert die Dapp Geld). Dies wird durch den Aufruf der Funktion getAmountOutMin erzwungen.

Angenommen, wir hinterlegen 0,95 ETH in der Dapp und erhalten ein ctoken, das 0,5 ETH wert ist (Überbesicherung). Dann können wir den 3-fachen Hebel nutzen, um die Dapp zu bitten, im Namen des Benutzers 1,5 ETH gegen einen anderen Token (sagen wir TokenX) zu tauschen. In diesem Fall muss die Dapp, um den Verlust zu verhindern, sicherstellen, dass der Wert des gehandelten TokenX nicht unter 0,95 * 1,5 ETH liegen kann (andernfalls besteht für die Dapp das Risiko, Geld zu verlieren). Die Dapp nutzt ein externes Preisorakel, um den Wert von ETH und TokenX zu berechnen.

Die Funktion createOrderERC20ToERC20 validiert jedoch das übergebene ctokenB nicht. Daher konnte der Angreifer seinen eigenen Vertrag als ctokenB implementieren und ihn der Funktion createOrderERC20ToERC20 übergeben. Als Ergebnis kann dieses gefälschte ctokenB den zugrunde liegenden Token als LINK (0x5947bb275c521040051d82396192181b413227a3) zurückgeben, wenn es in createOrderERC20ToERC20 und getAmountOutMin aufgerufen wird, aber den zugrunde liegenden Token als BTC zurückgeben, wenn es in IPriceOracle(oracle).getUnderlyingPrice(createParams.ctokenB) aufgerufen wird. Dadurch kann die Prüfung isRightPrice umgangen werden – da der zur Preisberechnung verwendete Token BTC (anstelle von LINK) ist. Dies kann durch den Rückgabewert von priceB bestätigt werden – 0x15e1549d1216fe9fc032e7c00000 (443783124870000000000000000000000). Dies ist der Preis von BTC.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass der Angreifer die fehlende Prüfung des ctokenB ausgenutzt hat. Da das ctokenB keine vertrauenswürdige Quelle ist, kann der zugrunde liegende Token, der von ctokenB zurückgegeben wird, nicht vertraut werden. Das Preisorakel wurde bei diesem Angriff jedoch NICHT kompromittiert.

Lektionen für die Zukunft

Ein DeFi-Projekt sicher zu machen, ist keine leichte Aufgabe. Neben der Code-Prüfung sind wir der Meinung, dass die Community einen proaktiven Ansatz verfolgen sollte, um den Projektstatus zu überwachen und den Angriff zu blockieren, bevor er überhaupt stattfindet.

Über BlockSec

BlockSec ist ein wegweisendes Unternehmen für Blockchain-Sicherheit, das 2021 von einer Gruppe weltweit anerkannter Sicherheitsexperten gegründet wurde. Das Unternehmen engagiert sich für die Verbesserung der Sicherheit und Benutzerfreundlichkeit der aufstrebenden Web3-Welt, um deren Massenadoption zu erleichtern. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Prüfung von Smart Contracts und EVM-Chains an, die Phalcon-Plattform für die sichere Entwicklung und proaktive Abwehr von Bedrohungen, die MetaSleuth-Plattform für die Nachverfolgung und Untersuchung von Geldern sowie die MetaSuites-Erweiterung für Web3-Entwickler, die effizient in der Krypto-Welt surfen.

Bis heute hat das Unternehmen über 300 angesehene Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und in zwei Finanzierungsrunden von namhaften Investoren wie Matrix Partners, Vitalbridge Capital und Fenbushi Capital zweistellige Millionenbeträge erhalten.

Offizielle Website: https://blocksec.com/

Offizieller Twitter-Account: https://twitter.com/BlockSecTeam

Sign up for the latest updates