Back to Blog

Weniger einzahlen, mehr erhalten: yCREDIT-Angriffsdetails

Code Auditing
January 3, 2021

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

Details

Der Angriff beruht darauf, dass die Anzahl der geprägten Tokens nicht mit der beabsichtigten übereinstimmt. Dadurch kann der Angreifer deutlich mehr yCREDIT-Tokens zu einem niedrigeren Preis erhalten. Diese Tokens können dann gewinnbringend verkauft werden.

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

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

Der Angreifer transferierte zunächst 1e-8 WBTC und 331,335 yCredit-Tokens in den WBTC-yCREDIT-Paar-Pool. Anschließend zahlte der Angreifer 0,5 WBTC in den StableYieldCredit-Vertrag ein, um den Angriff zu starten.

Insbesondere wird der _value anhand des amount (0,5) des token (0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - WBTC) basierend auf dem Preis-Orakel-Anbieter ChainLink berechnet (Zeile 480, _value ist 1466786010075). Die Absicht ist es, den Wert des eingezahlten WBTC in USD zu berechnen. Anschließend überträgt der Vertrag die Anzahl der yCREDIT-Tokens (_value - fee) an denjenigen, der WBTC eingezahlt hat (den Angreifer). Das liegt daran, dass der Wert von yCREDIT einem USD entspricht (wie vom System vorgesehen). Alles ist in Ordnung, außer dass der Angreifer einen kleinen Betrag an fee verliert.

Darüber hinaus fügt der Vertrag den eingezahlten WBTC zum WBTC-yCREDIT-Paar-Pool hinzu. Das geschieht, weil der eingezahlte WBTC seine Liquidität verlieren würde, wenn er im Vertrag gesperrt wäre. Daher wurde zunächst der Wert des Token-Paares (WBTC zu yCREDIT), das in den Pool eingebracht wird, berechnet. Dieser Wert wird anhand der Funktion _addLiquidity berechnet. Im Grunde wird er basierend auf den vorhandenen Reserven im Pool berechnet. Da der Pool nur 1e-8 WBTC und 331,335 yCREDIT-Tokens enthält, beträgt der berechnete amountA 44 (amountB ist 1466786010075). Das bedeutet, der Angreifer gibt nur 44e-8 WBTC (Zeile 485) aus und erhält 14667,86010075 - fee = 14594,52080025 yCREDIT-Tokens (Zeile 493). Gleichzeitig verbleiben kleine Mengen an WBTC (1e-8 + 44e-8) und (331,335 + 14667,86010075) yCREDIT-Tokens im Pool.

Um Gewinne zu erzielen, kann der Angreifer die erhaltenen 14594,52080025 yCREDIT-Tokens einfach an Börsen handeln. Interessanterweise ist der Prozess zur Gewinnrealisierung 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 nur) die folgenden:

Aktualisierung

2020/01/03: Es gibt einen neuen Smart Contract, der die Schwachstelle behebt.

Zeitplan

  • 2021/01/01 23:25 UTC, Angriffe wurden von unserem System erfasst
  • 2021/01/02 16:20 UTC, dieser Blog wird veröffentlicht
Sign up for the latest updates
Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield
Security Insights

Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield

Looking ahead, targeted freezing events like this $6.76M USDT action will only become more common. On-chain data analysis is improving. Stablecoin issuers are also working closely with regulators. As a result, hidden illicit financial networks will be exposed.

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026

During the week of March 2 to March 8, 2026, seven blockchain security incidents were reported with total losses of ~$3.25M. The incidents occurred across Base, BNB Chain, and Ethereum, exposing critical vulnerabilities in smart contract business logic, token deflationary mechanics, and asset price manipulation. The primary causes included a double-minting logic flaw during full token deposits that allowed an attacker to exponentially inflate their balances through repeated burn-and-mint cycles, a price manipulation vulnerability in an AMM-based lending market where artificially inflated vault shares created divergent price anchors to incorrectly force healthy positions into liquidation, and a flawed access control implementation relying on trivially spoofed contract interfaces that enabled attackers to bypass authorization to batch-mint and dump arbitrary tokens.

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026

During the week of February 23 to March 1, 2026, seven blockchain security incidents were reported with total losses of ~$13M. The incidents affected multiple protocols, exposing critical weaknesses in oracle design/configuration, cryptographic verification, and core business logic. The primary drivers included oracle manipulation/misconfiguration that led to the largest loss at YieldBloxDAO (~$10M), a crypto-proof verification flaw that enabled the FOOMCASH (~$2.26M) exploit, and additional token design and logic errors impacting Ploutos, LAXO, STO, HedgePay, and an unknown contract, underscoring the need for rigorous audits and continuous monitoring across all protocol layers.