Im November 2020 ermöglichte eine kritische Schwachstelle im LRC Protocol Fee Vault von Loopring Angreifern, Zugriffskontrollschwächen auszunutzen und Tokenpreise durch Flash-Loan-Angriffe zu manipulieren. Dieser Vorfall unterstreicht die Bedeutung robuster Zugriffskontrollen und kontinuierlicher DeFi-Sicherheitsüberwachung, um kostspielige Exploits zu verhindern.
Einführung in den Vorfall des Loopring (LRC) Protokolls
Ende 2020 erlebten mehrere Ethereum-basierte DeFi-Plattformen, darunter Pickle Finance und 88mph, Sicherheitsvorfälle. Um solche Schwachstellen zu erkennen, entwickelte BlockSec das ThunderForecast-System, das verdächtige Transaktionen mit ungewöhnlich großen Handelsratenunterschieden und konsistenten Ether-Gewinnen desselben extern besessenen Kontos (EOA) identifizierte.
Mithilfe unseres EthScope-Systems analysierten wir diese Transaktionen und entdeckten einen Exploit, der auf eine Schwachstelle im Vault-Protokoll von Loopring abzielte, insbesondere auf den LRC Protocol Fee Vault (LRCPFV). Dieser Blogbeitrag beschreibt den Angriff, seine Auswirkungen und die Lehren für die DeFi-Sicherheits-Community.
Überblick über den LRC Protocol Fee Vault
Loopring ist ein Open-Source-dezentrales Exchange (DEX)-Protokoll auf Ethereum. Sein nativer Token, LRC (ERC-20), wird innerhalb des Ökosystems verwendet. Der Vault-Protokoll von Loopring, bekannt als LRC Protocol Fee Vault (LRCPFV), speichert Protokollgebühren und ermöglicht den Umtausch von Gebühren in LRC-Token.
Die anfällige Funktion in LRCPFV ist sellTokenForLRC, die den Umtausch von Tokens gegen LRC ohne ordnungsgemäße Zugriffskontrolle ermöglicht und es jedem erlaubt, sie aufzurufen.
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);
}
Da dieser Funktion die Zugriffskontrolle fehlt, konnten Angreifer sie wiederholt aufrufen, um Tokenpreise zu manipulieren und von Arbitragemöglichkeiten zu profitieren.
Details des Angriffs
Wir analysierten eine repräsentative Angriffstransaktion: 0x00b2c.... Der Angriff umfasste sechs wichtige Schritte:

- Flash Loan: 3.773,88 ETH von einem Flash-Loan-Anbieter (
0xEB7e...) ausgeliehen. - Erster Swap: 3.773,88 ETH in 5.014,68 LRC auf Uniswap V1-LRC zu einem Kurs von 1 ETH = 1,32878 LRC umgetauscht.
- Fee Vault Swap: 0,231 ETH Gebühr, die im LRCPFV gespeichert sind, in 0,000219 LRC umgetauscht, indem die anfällige Funktion
sellTokenForLRCaufgerufen wurde. Dieser nicht autorisierte Aufruf manipulierte den LRC-Preis auf Uniswap und erhöhte dessen Wert gegenüber ETH drastisch (1 ETH = 0,00094 LRC). - Profitabler Swap: 5.014,68 LRC auf Uniswap V1-LRC zurück in 3.774,09 ETH getauscht und aufgrund des manipulierten Preises zusätzliche 0,215 ETH gewonnen.
- Darlehensrückzahlung: Die 3.773,88 ETH Flash Loan zurückgezahlt.
- Gewinnübertragung: Die 0,215 ETH Gewinn an die EOA des Angreifers gesendet.
Dieser Exploit nutzte einen Flash-Loan-Angriff in Kombination mit Preismanipulation und mangelnder Zugriffskontrolle im Vault-Vertrag aus.
Auswirkungen und Ausmaß des Angriffs
Die analysierte Transaktion fand am 13. Oktober 2020 statt. Laut CoinGecko-Daten lag der LRC-Preis zu dieser Zeit bei etwa 0,0005175 ETH.
Unsere Untersuchung ergab:
- Bösartige Verträge: 3 vom Angreifer bereitgestellt (
0xa896...,0x414a...,0xd91d...). - Angriffsvolumen: 90 Transaktionen, die seit Block 9.644.449, als LRCPFV bereitgestellt wurde, von der EOA des Angreifers (
0x81e8...) gestartet wurden. - Maximaler Gewinn: Eine Transaktion (
0x33eab...) brachte einen Gewinn von 9,89 ETH. - Gesamtgewinn: Ungefähr 80,97 ETH (~48.849 USD per 1. Oktober 2020).
Die Grundursache war die fehlende Zugriffskontrolle in der Funktion sellTokenForLRC, die eine wiederholte Ausnutzung ermöglichte.
Gelernte Lektionen und das Ende
Mit dem Wachstum des Ethereum DeFi-Ökosystems werden Sicherheitsprobleme wie Schwachstellen bei der Zugriffskontrolle immer kritischer. Während aufsehenerregende Angriffe oft Aufmerksamkeit erregen, können weniger auffällige Schwachstellen erhebliche finanzielle Verluste verursachen, wie dieser Vorfall gezeigt hat.
Loopring verlor durch diesen Exploit etwa 80,97 ETH, was die Notwendigkeit rigoroser Smart-Contract-Audits und kontinuierlicher Sicherheitsüberwachung unterstreicht.
Für DeFi-Protokolle sind die Implementierung strenger Zugriffskontrollen, die Nutzung von Tools wie dem Smart Contract Audit und Phalcon Security von BlockSec sowie proaktives Risikomanagement unerlässlich, um digitale Assets zu schützen.
Zeitplan des Vorfalls
- 2020/11/30: Verdächtige Transaktionen von ThunderForecast erkannt.
- 2020/12/01: Detaillierte Analyse mit EthScope abgeschlossen.
- 2020/12/02: Schwachstelle dem Loopring-Team gemeldet.
- 2020/12/03: Schwachstelle bestätigt; Korrektur implementiert.
- 2020/12/03: Öffentliche Offenlegung der Vorfallsdetails.
- 2021/01/03: CVE-2020-35962 der Schwachstelle zugewiesen.



