Zum Inhalt springen
Vorfallsdatensatz · · 1 Min. Lesezeit · 191 Wörter ·Entdeckt ·Offengelegt Behoben

Reentrancy durch den Vyper-Compiler bei Curve Finance, Juli 2023: Was geschah und was zu prüfen ist

Ein Fehler in bestimmten Vyper-Versionen setzte Reentrancy-Sperren unbemerkt außer Kraft und gefährdete mehrere Curve-Pools, deren eigener Code korrekt war.

Teilen
Schema des Vorfalls bei Curve Finance (Vyper compiler), das die Phase Reentrancy als Fehlerpunkt zeigt.
Schematic of the Curve Finance (Vyper compiler) incident showing the reentrancy stage as the failure point.

Auf einen Blick

BETROFFENE ORGANISATION
Curve Finance (Vyper compiler)
CHAIN(S)
Ethereum
ANGRIFFSKLASSE
Reentrancy, Toolchain
GEMELDETER VERLUST
rund 70 Mio. US-Dollar über die betroffenen Pools hinweg(Curve Finance, 31 Juli 2023)
OFFIZIELLE STELLUNGNAHME
x.com

Korrekter Quellcode, fehlerhafter Bytecode

Die betroffenen Curve-Pools deklarierten einen Reentrancy-Schutz. Ihr Quellcode war richtig. Der Compiler erzeugte Bytecode, in dem die Sperre nicht wie deklariert funktionierte, und Reentrancy — die älteste gut verstandene Schwachstellenklasse in Smart Contracts — wurde in Contracts ausnutzbar, die sich ausdrücklich dagegen abgesichert hatten.

Warum dieser Fall grundsätzlich anders ist

Nahezu jeder Vorfall in diesem Tracker beruht auf einem Defekt, den ein Prüfer im Prinzip durch Lesen des Codes hätte finden können. Dieser nicht. Wer den Vyper-Quellcode las, konnte bestätigen, dass die Sperre vorhanden und korrekt angewendet war, und lag damit ohne eigenes Verschulden falsch über das ausgelieferte Verhalten.

Das verschiebt die Vertrauensgrenze. Der Compiler und die konkrete Version davon gehören zu dem, dem vertraut werden muss. Jedes Projekt, das kompilierte Contracts ausliefert, erbt die Korrektheit seiner Toolchain, ob jemand darüber nachgedacht hat oder nicht.

Die Prüfung, die sich lohnt

Für jeden Vyper-Contract, gegenüber dem Sie exponiert sind, lautet die Frage, welche Compiler-Version den ausgelieferten Bytecode erzeugt hat und ob diese Version auf der vom Vyper-Projekt veröffentlichten Liste der betroffenen Versionen steht. Die Versionsmetadaten werden beim Deployment festgehalten und sind unabhängig von jeder Angabe des Projekts überprüfbar.

Chronologie

Nur Anfügen. Korrekturen werden als eigener, datierter Eintrag ergänzt; frühere Einträge werden nie umgeschrieben.

  1. Mehrere Curve-Pools werden über Reentrancy ausgenutzt. Curve bestätigt den Vorfall und benennt die beteiligten Vyper-Compiler-Versionen. Curve Finance
  2. Curve und Vyper veröffentlichen die Liste der betroffenen Compiler-Versionen, damit andere Projekte ihre eigenen Deployments prüfen können. Curve Finance

Was zu prüfen ist

Sowohl das Vyper-Projekt als auch Curve veröffentlichten, welche Compiler-Versionen betroffen waren. Die Prüfung, auf die es bei jedem Vyper-Contract ankommt, ist die, welche Compiler-Version den ausgelieferten Bytecode erzeugt hat.

Conisec hostet und verlinkt keine Tools zur Wiederbeschaffung, zum Widerruf oder zur „Überprüfung“. Nach einem öffentlichen Vorfall streuen Angreifer routinemäßig genau solche Links unter den Namen der Publikationen, die über den Fall berichten. Nutzen Sie ausschließlich den oben verlinkten offiziellen Kanal des betroffenen Projekts selbst.

Quellen

  1. Curve Finance, Incident statement and affected Vyper versions (30 Juli 2023)

Keine Beratung. Dies ist eine Zusammenfassung veröffentlichter Fakten, keine Rechts-, Steuer- oder Sicherheitsberatung. Prüfen Sie die oben verlinkten Primärquellen.

Zuletzt verifiziert von Conisec Staff.

Weiter erkunden