Zum Hauptinhalt springen
Empfehlungen

Reentrancy Attack: die berüchtigte Smart-Contract-Lücke

Wie der Wiedereintritts-Angriff mehrfach Geld aus einem Smart Contract abzieht, was der berühmte DAO-Hack damit zu tun hat und wie Entwickler sich davor schützen

SicherheitFortgeschritten3 Min. Lesezeit

Definition

<p>Ein <strong>Reentrancy Attack</strong> (Wiedereintritts-Angriff) ist eine berüchtigte Sicherheitslücke in <a href="/lexikon/smart-contract">Smart Contracts</a>. Dabei nutzt ein Angreifer aus, dass ein Vertrag Geld auszahlt, bevor er seinen internen Kontostand aktualisiert. Durch wiederholtes „Wiedereintreten“ in dieselbe Funktion kann der Angreifer mehrfach Geld abheben, obwohl ihm nur eine Auszahlung zusteht.</p>

Ein Reentrancy Attack (Wiedereintritts-Angriff) ist eine berüchtigte Sicherheitslücke in Smart Contracts. Dabei nutzt ein Angreifer aus, dass ein Vertrag Geld auszahlt, bevor er seinen internen Kontostand aktualisiert. Durch wiederholtes „Wiedereintreten“ in dieselbe Funktion kann der Angreifer mehrfach Geld abheben, obwohl ihm nur eine Auszahlung zusteht.

Wie der Angriff funktioniert

Vereinfacht: Ein verwundbarer Vertrag sendet erst das Geld und schreibt erst danach den neuen (niedrigeren) Kontostand. Der Angreifer baut seinen eigenen Vertrag so, dass er beim Geldempfang sofort erneut die Auszahlungsfunktion aufruft, bevor der Kontostand aktualisiert wurde. So wiederholt sich die Auszahlung, bis der Vertrag leer ist. Der berühmteste Fall war der „DAO-Hack“ 2016, der zu einer Spaltung von Ethereum führte.

Wie man sich schützt

Die wichtigste Gegenmaßnahme ist das „Checks-Effects-Interactions“-Muster: Ein Vertrag soll erst alle Prüfungen und Zustandsänderungen vornehmen (also den Kontostand aktualisieren) und erst ganz zuletzt Geld auszahlen. Moderne Entwicklungsstandards und sorgfältige Audits haben diese Klasse von Fehlern deutlich seltener gemacht, ausgeschlossen sind sie aber nie.

Steffis Tipp

Als Nutzer kannst du eine Reentrancy-Lücke nicht selbst erkennen, das ist Sache der Entwickler und Auditoren. Aber das Wissen darum hilft, die Bedeutung von Audits einzuordnen: DeFi-Protokolle, deren Code von renommierten Firmen geprüft wurde, sind in der Regel sicherer. Verlasse dich trotzdem nie blind auf ein „auditiert“-Siegel und setze in DeFi nur Kapital ein, dessen Verlust du verkraftest. Keine Anlageberatung.

Häufige Fragen zu Reentrancy Attack

Was ist ein Reentrancy Attack?

Ein Reentrancy Attack ist eine Sicherheitslücke in Smart Contracts. Ein Angreifer nutzt aus, dass ein Vertrag Geld auszahlt, bevor er seinen internen Kontostand aktualisiert. Durch wiederholtes „Wiedereintreten“ in dieselbe Funktion kann er mehrfach Geld abheben, obwohl ihm nur eine Auszahlung zusteht.

Was war der DAO-Hack?

Der DAO-Hack 2016 war der berühmteste Reentrancy-Angriff. Über diese Lücke wurden große Mengen Ether aus dem damaligen DAO-Projekt abgezogen. Die Folge war so gravierend, dass sie zu einer Spaltung von Ethereum führte, in Ethereum und Ethereum Classic. Der Fall machte Reentrancy-Lücken schlagartig bekannt.

Wie schützt man sich vor Reentrancy?

Mit dem „Checks-Effects-Interactions“-Muster: Ein Vertrag soll erst alle Prüfungen und Zustandsänderungen vornehmen (den Kontostand aktualisieren) und erst zuletzt Geld auszahlen. Moderne Standards und sorgfältige Audits haben diese Fehlerklasse seltener gemacht, ganz ausschließen lässt sie sich aber nie.

Über die Autorin