Zurück zum Blog

Die wahre Ursache des Vee Finance Sicherheitsvorfalls

Code Auditing
22. September 2021
4 Min. Lesezeit

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

Für die neuesten Informationen anmelden
Verluste von rund 3,87 Millionen USD: Hacks bei Autheo Network und UNCX | BlockSec Weekly
Security Insights

Verluste von rund 3,87 Millionen USD: Hacks bei Autheo Network und UNCX | BlockSec Weekly

Dieser Wochenbericht behandelt 3 Sicherheitsvorfälle im Zeitraum 12.10.2026–18.10.2026 mit einem geschätzten Gesamtschaden von etwa 3,87 Millionen USD. Bei Autheo Network wurde ein privater Schlüssel kompromittiert; der Schaden betrug rund 1,76 Millionen USD. Qubic Wallet verlor aufgrund einer schwachen Seed-Generierung rund 1,30 Millionen USD. Bei den Smart Token Vesting V2-Verträgen von UNCX Network führte ein Buchführungsfehler auf Ethereum, BNB Chain, Base und Robinhood Chain zu einem Schaden von rund 807 Tausend USD. Die hervorgehobene Analyse zu UNCX erklärt, wie eine fehlerhafte Berechnung der Gesamtanteile Vesting-Tranchen zusammenführte, die mit unterschiedlichen Token-zu-Anteil-Verhältnissen erstellt worden waren, und dadurch überhöhte Entnahmen aus gemeinsamen Pools ermöglichte.

Rund 542.000 $ verloren: MakerDaoBot-Exploit | BlockSec Wochenrückblick
Security Insights

Rund 542.000 $ verloren: MakerDaoBot-Exploit | BlockSec Wochenrückblick

Ethereum, 5.–11.10.2026: 1 Vorfall, ca. 542.000 $ Verlust. Über eine ungeschützte MakerDaoBot-Funktion erhielt ein bösartiger Adapter Zugriff auf Bot-Guthaben, wickelte 4 ETH-A-Auktionen ab und tauschte 200 ETH-A in WETH; 200 ETH gingen an den Angreifer.

~418 Mio. $ verloren: Bitget- und NEAR-Intents-Exploits | BlockSec Weekly
Security Insights

~418 Mio. $ verloren: Bitget- und NEAR-Intents-Exploits | BlockSec Weekly

Dieser 14-tägige Sicherheitsbericht (21.9.–4.10.26) erfasst 8 Vorfälle mit ca. 418,4 Mio. USD Verlust auf Ethereum, BNB Chain, Solana u.a. Bitget: 387,5 Mio. USD Lücke in Drittprodukt. NEAR Intents: 3,87 Mio. USD Rückerstattungsfehler, fehlender Rollback

Der beste Sicherheitsauditor für Web3

Lassen Sie Design, Code und Geschäftslogik vor dem Launch prüfen. Nach den höchsten Sicherheitsstandards der Branche.

BlockSec-Audit