Zurück zum Blog

Weniger einzahlen, mehr erhalten: yCREDIT Angriff Details

Code Auditing
3. Januar 2021
3 Min. Lesezeit

Am 2. Januar 2021 (07:25 Uhr Pekinger Zeit) meldete unser Überwachungssystem ThunderForecast eine Reihe verdächtiger Transaktionen in Richtung des yCREDIT Smart Contracts. Anschließend nutzten wir das von unserem Forschungsteam entwickelte EthScope-System, um diese Transaktionen zu analysieren und zu bestätigen, dass alle gemeldeten Transaktionen bösartig waren. In diesem Blog erläutern wir die Details des Angriffs.

Details

Der Angriff ist auf die Inkonsistenz der Anzahl der geprägten Token mit der beabsichtigten Anzahl zurückzuführen. Daher kann der Angreifer zu einem niedrigeren Preis deutlich mehr yCREDIT-Token erhalten. Diese Token können dann mit Gewinn verkauft werden.

Die anfällige Funktion befindet sich in der _deposit-Funktion des StableYieldCredit Contracts.

Im Folgenden werden wir eine Angriffstransaktion verwenden, um den gesamten Prozess zu veranschaulichen.

Der Angreifer übertrug zunächst 1e-8 WBTC und 331,335 yCredit-Token in den WBTC-yCREDIT Pair Pool. Dann zahlte der Angreifer 0,5 WBTC in den StableYieldCredit-Contract ein, um den Angriff zu starten.

Speziell wird der _value mit dem amount (0,5) des token (0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - WBTC) basierend auf dem Preis-Oracle-Anbieter ChainLink berechnet (Zeile 480, _value ist 1466786010075). Die Absicht ist, den Wert des eingezahlten WBTC in USD zu berechnen. Dann wird der Contract die Anzahl der yCREDIT-Token (_value - fee) an denjenigen übertragen, der den WBTC eingezahlt hat (den Angreifer). Das liegt daran, dass der Wert von yCREDIT gleich einem USD ist (wie vom System vorgesehen). Alles ist in Ordnung, abgesehen davon, dass der Angreifer einen kleinen Betrag an fee verliert.

Darüber hinaus wird der Contract den eingezahlten WBTC dem WBTC-yCREDIT Pair Pool hinzufügen. Das liegt daran, dass der eingezahlte WBTC an Liquidität verlieren würde, wenn er im Contract gesperrt wäre. Daher wurde zunächst der Wert des Token-Paares (WBTC zu yCREDIT), das in den Pool eingebracht werden soll, berechnet. Dieser Wert wird mit der Funktion _addLiquidity berechnet. Grundsätzlich wird er basierend auf den bestehenden Reserven im Pool berechnet. Da der Pool nur 1e-8 WBTC und 331,335 yCREDIT-Token enthält, beträgt der berechnete amountA 44 (amountB ist 1466786010075). Das bedeutet, der Angreifer gibt nur 44e-8 WBTC aus (Zeile 485) und erhält 14667,86010075 - fee = 14594,52080025 yCREDIT-Token (Zeile 493). Gleichzeitig verlassen eine kleine Menge WBTC (1e-8 + 44e-8) und (331,335 + 14667,86010075) yCREDIT-Token den Pool.

Um Gewinne zu erzielen, kann der Angreifer die erhaltenen 14594,52080025 yCREDIT-Token einfach an Börsen handeln. Interessanterweise ist der Prozess zur Gewinnmitnahme in dieser Transaktion weitaus komplizierter als nötig. Wir haben auch eine clevere Angriffsstrategie in anderen Transaktionen beobachtet.

An dem Angriff sind eine Reihe von Transaktionen beteiligt, darunter (aber nicht beschränkt auf) die folgenden.

Update

03.01.2020: Es gibt einen neuen Smart Contract, der die Schwachstelle behebt.

Zeitplan

  • 01.01.2021 23:25 UTC, Angriffe wurden von unserem System erfasst
  • 02.01.2021 16:20 UTC, dieser Blog wird veröffentlicht
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
Weniger einzahlen, mehr erhalten: yCREDIT Angriff Details