SSO Modul 2 – Smart-Contract-Schwachstellen: Ein tiefer Einblick in Reentrancy-Angriffe
Smart Contracts bieten Transparenz, bergen aber Risiken. Dieser Artikel deckt Schwachstellen wie Reentrancy auf, mit dem Verlust von 150 Mio. USD bei DAO als Fallbeispiel. Integer Overflow führte zu einem Rückschlag von 900 Mio. USD bei BeautyChain. DAOMaker verlor 4 Mio. USD aufgrund von Access-Control-Schwachstellen. Bei FlashLoan-Angriffen verlor Harves Finance 38 Mio. USD.
Von Markos Mebellis

Auf dieser Seite
Smart Contracts revolutionieren globale Branchen mit ihrer Effizienz, Transparenz und Unveränderlichkeit. Doch ihr offenes und automatisiertes Design setzt sie auch Risiken aus. Um ihr Potenzial zu maximieren und Bedrohungen zu minimieren, ist es entscheidend, ihre Schwachstellen und möglichen Angriffswege zu verstehen. Die Erstellung und Wartung dieser Contracts erfordert sorgfältige Aufmerksamkeit und die Einhaltung bewährter Verfahren. Dieser Artikel beleuchtet häufige Schwachstellen und veranschaulicht sie mit realen Fällen, um das Verständnis zu verbessern. Sehen wir uns den folgenden Artikel an, bereitgestellt von Salus Security.
Wichtige Schwachstellen:
**Reentrancy:** Hier nutzen Angreifer eine Lücke aus und dringen erneut in Funktionen ein, bevor wichtige Vorgänge abgeschlossen oder Werte aktualisiert sind.
Single-Function-Reentrancy: Dies tritt auf, wenn ein Contract mit einem bösartigen Contract interagiert und es letzterem ermöglicht, erneut in eine Funktion einzudringen. Beispielsweise können bösartige Contracts wiederholt in die Funktion 'withdrawBalance' eindringen und mehr Ether abziehen, bevor die Guthaben aktualisiert werden.
Bemerkenswerte Angriffe:
- The DAO (2016): Nachdem 150 Millionen USD eingesammelt wurden, wurde es aufgrund von Codierungsschwachstellen gehackt. Dies führte zu einer Spaltung des Ethereum-Netzwerks.
- PolyDex (2021): Verlor 500.000 USD durch einen Reentrancy-Angriff auf den PLX Locker Smart Contract.
- Bacon Protocol (2022): Erlitt einen Verlust von 1 Mio. USD durch einen Reentrancy-Bug in der Funktion lend().
- Lendf.Me (2020): Verlor rund 24,7 Millionen USD über mehrere Kryptowährungen hinweg.
**Cross-Function-Reentrancy:** Entsteht durch gemeinsam genutzte Zustände zwischen verschiedenen Funktionen und unzureichenden Schutz vor erneutem Eindringen. Das obige Beispiel 'balances' zeigt, dass Angreifer trotz Schutz von 'withdrawAll' weiterhin die Funktion 'transfer' ausnutzen können.
Berüchtigte Vorfälle:
- DFX Finance (2022): Verlor über 7 Millionen USD durch einen Angriff, der eine Funktion ohne Reentrancy-Schutz ausnutzte.
- Hundred Finance (2022): Verlor rund 6,5 Millionen USD, nachdem ein Reentrancy-Angriff die Funktion borrowFresh ausnutzte.
- Fei Protocol (2022): Verlor etwa 80 Millionen USD durch einen Angriff, der eine Reentrancy-Lücke ausnutzte.
**Cross-Contract-Reentrancy:** Resultiert aus gemeinsam genutzten Zuständen über verschiedene Contracts hinweg und falschen Reihenfolgen bei Variablenänderungen. Selbst wenn Funktionen geschützt sind, können andere Funktionen wie 'burnAccount' weiterhin ausgenutzt werden.
Bedeutende Angriffe:
- Rari Capital (2021): Verlor in weniger als einer Stunde etwa 10 Millionen USD (~2600 ETH).
- ValueDefi (2021): Verlor 5345,314 WBNB aufgrund ungültiger Anteilsberechnungen, die auf externen Daten beruhten.
Read-Only-Reentrancy:
Read-Only-Reentrancy nutzt eine Funktion aus, die zwar den Zustand des Contracts nicht verändert, aber dennoch fehlerhafte Ausgaben liefern kann, wenn der Zustand nicht konsistent ist.
Erwähnenswerte Angriffe:
- QuickSwap (2022): Angreifer missbrauchten einen Flash Loan, um den Spotpreis des Assets zu manipulieren, und ergaunerten 138 ETH und 700 MATIC-Token. Dies war aufgrund einer Schwachstelle im Curve-LP-Oracle möglich.
- dForce (2023): Ein Read-Only-Reentrancy-Bug befand sich im Code, der auf den Chains Arbitrum und Optimism mit Curve Finance auf Preis-Oracles zugriff.
- Sentimente (2023): Ein Angriff, der eine Read-Only-Reentrancy-Schwachstelle ausnutzte, führte zu einem Diebstahl von 1 Million USD. Glücklicherweise wurden 90 % vom Täter zurückgegeben.
- Sturdy (2023): Verlor etwa 442 ETH aufgrund eines Read-Only-Reentrancy-Problems bei Balancer, bei dem der Preis von B-stETH-STABLE manipuliert wurde.
Prävention von Reentrancy-Schwachstellen:
- Befolgen Sie stets das Check-Effect-Interaction-Muster.
- Setzen Sie Reentry-Schutz für alle sensiblen Vorgänge ein.
- Behandeln Sie jeden externen Aufruf sorgfältig.
Integer Overflow:
Wenn Berechnungen Grenzen überschreiten, laufen sie über, was häufig zu winzigen oder gigantischen Werten führt.
Veranschaulichende Angriffe:
- BeautyChain (2018): Angreifer erbeuteten 10^58 BECs durch einen Integer Overflow und veräußerten damit unglaubliche 900 Millionen USD.
- Poolz (2023): Führte zu einem Verlust von rund 665.000 USD auf den On-Chain-Netzwerken Ethereum, Binance und Polygon.
Gegenmaßnahmen gegen Integer Overflow:
- Verwenden Sie sichere Berechnungsmethoden wie die safeMath-Bibliothek.
- Priorisieren Sie Grenzprüfungen, um sicherzustellen, dass Ergebnisse im zulässigen Bereich bleiben.
- Verwenden Sie den Solidity-Compiler in Version 0.8.0 oder höher für integrierte Overflow-Erkennung.
Access Control:
Access-Control-Schwachstellen entstehen durch das Fehlen strenger Zugriffsbeschränkungen für Funktionen, die kritische Vorgänge ausführen.
- Bedeutende Angriffe:
- DAOMaker (2021): Satte ~4 Mio. USD wurden abgezogen, nachdem die
initFunktion ungeschützt blieb. - GymNetwork (2022): Angreifer nutzten ein Authentifizierungsversehen in depositFromOtherContract() aus und ermöglichten so eine unrechtmäßige Erhöhung des Guthabens ohne tatsächliche Zahlung. Der Verlust? Etwa 2.475,91 WBNB.
- Tempdao (2023): Ein nachlässiger Umgang mit der Zugriffskontrolle für die Funktion migrateStake führte zu einem Verlust von über 2,34 Millionen USD.
Access-Control-Schwachstelle
- Beschreibung: Schwachstellen, die aufgrund unzureichender Beschränkungsmechanismen entstehen, welche den Zugriff und die Berechtigungen für bestimmte Vorgänge innerhalb eines Systems regeln.
Präventionsmaßnahmen:
- Strikte Berechtigungsprüfung: Erzwingen Sie stets strikte Berechtigungsprotokolle für Funktionen, insbesondere für solche, die sensible Vorgänge ausführen.
- Multi-Signature-Mechanismus: Verwenden Sie für Aufgaben, die gemeinsame Entscheidungen erfordern, Multi-Signature-Protokolle, die mehrere Genehmigungen erfordern, bevor sensible Vorgänge ausgeführt werden.
Häufige Angriffsvektoren
- Beschreibung: Verschiedene Methoden oder Kanäle, über die Angreifer Schwachstellen in einem System ausnutzen, vor allem in Smart Contracts.
Bemerkenswerte Beispiele:
- FlashLoan-Angriffe: Nutzt die sofortige Kreditfunktion dezentraler Finanzsysteme aus, um bösartige Aktivitäten auszuführen.
- Front-Running: Angreifer erlangen Kenntnis von der ausstehenden Transaktion eines anderen Nutzers und handeln darauf, indem sie eine höhere Gas-Gebühr anbieten.
FlashLoan-Angriff
- Beschreibung: FlashLoan ist an sich kein Angriff, sondern eine DeFi-Funktion, mit der Nutzer sofort hohe Beträge ohne Sicherheiten leihen können. Sie wurde aufgrund logischer Fehler in Vertragsinteraktionen und -beziehungen ausgenutzt.
Bemerkenswerte Angriffe:
- Harves Finance (2020.10.26): Führte zu einem Verlust von 38 Millionen US-Dollar.
- InverseFinance (2022.6.16): Führte zu einem Verlust von 53,2445 WBTC und 99.976,29 USDT.
- NewFreeDAO (2022.9.8): 4.481 WBNB abgezogen, was etwa 1,25 Mio. $ entspricht.
- Lodestar (11.12.2022): Ausgenutzt durch Oracle-Preis-Manipulation.
- 0vix (28.4.2023): Führte zu einem Verlust von 2 Mio. $ auf der Polygon-Chain.
Präventionsempfehlungen:
- Erkenne die Eigenschaften von Flashloans während der Projektentwicklung.
- Für eine genaue Preisbestimmung verwende zeitgewichtete Durchschnittswerte oder mehrere Oracles.
Front-Running
- Beschreibung: Ein Angreifer erlangt Kenntnis von der Transaktion eines anderen Nutzers aus dem memPool und nutzt dies aus, indem er eine höhere Gas-Gebühr anbietet.
Bemerkenswerte Angriffe:
- Sushi Badger Digg (25.1.2021): Führte zu einem Verlust von 81,68 ETH.
- Sushiswap Ape-ETH-Pool (17.5.2022): Der Angreifer erzielte einen Gewinn von etwa 0,3 ETH.
- Uniswap (2023.4.2): Verursachte einen Verlust von rund 25 Millionen US-Dollar durch einen Sandwich-Angriff.
Empfehlungen zur Prävention:
- Verwende Slippage-Schutz beim Handeln.
- Führe Trades außerhalb der Stoßzeiten aus, besonders in volatilen Märkten.
- Nutze FlashBot rpc von 1inch, um Trades direkt an Miner zu senden und so den memPool zu umgehen.
Zusammenfassung
Glückwunsch! Du hast Modul 2 abgeschlossen – Smart-Contract-Schwachstellen: Ein tiefer Einblick in Reentrancy-Angriffe und gängige Exploits
Lass uns deine Lerninhalte wiederholen:
Reentrancy-Schwachstellen - Angreifer nutzen Lücken aus und rufen Funktionen erneut auf, bevor sie vollständig abgeschlossen sind.
- Single-Function-Reentrancy: Ein bösartiger Vertrag ruft eine Funktion in einem anderen Vertrag erneut auf.
- Cross-Function-Reentrancy: Gemeinsame Zustände zwischen verschiedenen Funktionen werden aufgrund unzureichenden Reentry-Schutzes ausgenutzt.
- Cross-Contract-Reentrancy: Nutzt gemeinsam genutzte Zustände über verschiedene Verträge hinweg aus.
- Read-Only Reentrancy: Nutzt eine Funktion aus, die fehlerhafte Ausgaben erzeugt, wenn der Zustand nicht konsistent ist.
Integer Overflow - Berechnungen, die festgelegte Grenzen überschreiten und zu Extremwerten führen.
Zugriffskontroll-Schwachstellen - Entstehen durch das Fehlen strenger Zugriffsbeschränkungen für wesentliche Funktionen.
Häufige Angriffsvektoren - Methoden, mit denen Angreifer Systemschwachstellen ausnutzen.
**FlashLoan Attack **- Eine DeFi-Funktion, die sofortige große Kreditaufnahmen ohne Sicherheiten ermöglicht, aber aufgrund logischer Fehler ausgenutzt wird.
Front-Running-Angriff- Angreifer erlangen Kenntnis von ausstehenden Transaktionen und profitieren, indem sie höhere Gas-Gebühren bieten.
Dieser Artikel wurde bereitgestellt von:
