Back to Blog

Loopring(LRC)-Protokoll-Vorfall

Code Auditing
December 3, 2020

Im November 2020 ereigneten sich auf vielen DeFi-Plattformen in Ethereum Sicherheitsvorfälle, wie z. B. bei Pickle Finance und 88mph.

Zur Erkennung der aufgetretenen Sicherheitsvorfälle im DeFi-Bereich haben wir das System ThunderForecast entwickelt. Bei der Analyse aktueller Transaktionen entdeckt es eine Klasse von Transaktionen, die äußerst verdächtig sind. Erstens gibt es ein Paar von Trades, bei denen die Handelsrate mehr als tausendmal voneinander abweicht. Zweitens kann der Aufrufer (EOA) am Ende jeder Transaktion immer einige Ether gewinnen. Wir haben das vom Forschungsteam entwickelte EthScope-System zur Analyse dieser Transaktionen verwendet und festgestellt, dass es sich um einen Angriff handelt, der eine Schwachstelle des Loopring-Vault-Protokolls für Arbitragezwecke ausnutzt.

LRC Protocol Fee Vault

Loopring ist ein Open-Source-Protokoll für dezentrale Börsen (DEX) auf der Ethereum-Blockchain. Entsprechend ist LRC der Token (ERC-20) von Loopring. Darüber hinaus verfügt Loopring über ein spezielles Vault-Protokoll (LRC Protocol Fee Vault), um Protokollgebühren zu speichern. Im Folgenden werden wir die Kurzform LRCPFV für die Analyse verwenden.

    function sellTokenForLRC(
        address token,
        uint    amount
        )
        external
        nonReentrant
    {
        require(amount > 0, "ZERO_AMOUNT");
        require(token != lrcAddress, "PROHIBITED");

        address recipient = tokenSellerAddress == address(0) ? owner : tokenSellerAddress;

        if (token == address(0)) {
            recipient.sendETHAndVerify(amount, gasleft());
        } else {
            token.safeTransferAndVerify(recipient, amount);
        }

        require(
            tokenSellerAddress == address(0) ||
            ITokenSeller(tokenSellerAddress).sellToken(token, lrcAddress),
            "SELL_FAILURE"
        );

        emit TokenSold(token, amount);
    }

sellTokenForLRC ist eine Funktion in LRCPFV. Diese Funktion ermöglicht es Benutzern, Gebühren gegen den LRC-Token aus dem Pool zu tauschen. Es gibt jedoch keine Zugriffskontrolle in sellTokenForLRC seitens der Entwickler, sodass jeder diese Funktion aufrufen kann. Schließlich erhält der Angreifer durch die Ausnutzung dieser Schwachstelle die Möglichkeit, eine Reihe von Angriffen mit der gleichen Logik zu starten. Die Details des Angriffs werden im Folgenden analysiert.

Details

Nun enthüllen wir weitere Details dieses Angriffs anhand einer Angriffstransaktion 0x00b2c...

Es sind sechs Schritte beteiligt:

  • Schritt 1: Aufnahme eines Flash-Loans von 3773,88 ETH von 0xEB7e...

  • Schritt 2: Tausch von 3773,88 ETH gegen 5014,68 LRC auf Uniswap V1-LRC. Der Kurs bei diesem Handel beträgt: 1 ETH = 1,32878 LRC

  • Schritt 3: Tausch von 0,231 ETH Gebühr, die bei LRCFV gespeichert sind, gegen 0,000219 LRC auf dem Uniswap V1-LRC Pool durch Aufruf von sellTokenForLRC (Wie bereits erwähnt, sollte der Angreifer sellTokenForLRC nicht aufrufen). Basierend auf dem von Uniswap V1-LRC verwendeten Preisberechnungsalgorithmus steigt der Preis von LRC gegenüber ETH auf Uniswap V1-LRC dramatisch an. Der Kurs dieses Handels beträgt: 1 ETH = 0,00094 LRC

  • Schritt 4: Tausch von 5014,68 LRC gegen 3774,09 ETH auf Uniswap V1-LRC. Basierend auf Schritt 3 wird nur ein kleiner Teil von LRC auf Uniswap V1-LRC gehandelt. Diese Aktion macht LRC auf Uniswap V1-LRC wertvoller gegenüber ETH. Daher erhält der Angreifer im Vergleich zu Schritt 1 3773,88 ETH durch den Tausch von 5014,68 LRC auf Uniswap V1-LRC und erzielt einen zusätzlichen Gewinn von 0,215 ETH.

  • Schritt 5: Rückzahlung des Flash-Loans von 3773,88 ETH

  • Schritt 6: Überweisung von 0,215 ETH an die Adresse des Angreifers (EOA)

Gewinn & Verlust

Die oben analysierte Transaktion wurde am 13. Oktober 2020 gestartet. Zur Berechnung des groben, aber nachvollziehbaren Gewinns und Verlusts für Angreifer und Opfer nutzen wir coingecko, um den Preis von LRC zu erhalten, der 0,0005175 ETH beträgt. Auf der anderen Seite, LRCPFV.

Der Angreifer manipuliert den Preis in Schritt 4 und erzielt durch zwei Trades einen Gewinn von 0,215 ETH.

Ausmaß des Angriffs

Basierend auf der Art des Angriffs haben wir 3 bereitgestellte bösartige Verträge (0xa896..., 0x414a..., 0xd91d...) und 90 Transaktionen des Angreifers 0x81e8... seit Block 9644449 (als LRCPFV bereitgestellt wurde) identifiziert. Der höchste Gewinn in Transaktion 0x33eab... erreichte sogar 9,89 ETH. Insgesamt hat der Angreifer 80,97 ETH durch Arbitrage gewonnen, was bei dem Preis vom 1. Oktober 2020 48.849,2 USD entspricht.

Ende

Mit der Entwicklung des DeFi-Ökosystems in Ethereum treten allmählich verschiedene Sicherheitsprobleme auf. Die Community lässt sich jedoch möglicherweise leichter von einem Angriff, der einen enormen finanziellen Verlust verursacht, ablenken als von einigen unauffälligen Angriffen. Tatsächlich verursachte die Ursache, die Zugriffskontrolle, hinter dem Angriff auch einen erheblichen Verlust (80,97 ETH) für Loopring durch 90 Transaktionen.

Zeitachse

  • 2020/11/30: Verdächtige Transaktionen wurden gefunden.
  • 2020/12/01: Analyse abgeschlossen.
  • 2020/12/02: An Loopring gemeldet.
  • 2020/12/03: Schwachstelle bestätigt und Korrektur online.
  • 2020/12/03: Details veröffentlicht.
  • 2021/01/03: CVE-2020–35962 zugewiesen.
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.