Curve Finance Vyper-Reentrancy
Ein fehlerhaftes Reentrancy-Lock in drei Versionen des Vyper-Compilers machte mehrere Curve-Stablepools anfällig für eine klassische Reentrancy-Attacke.
- Datum
- Opfer
- Curve Finance
- Chain(s)
- Status
- Teilweise zurückerlangt
Am 30. Juli 2023 wurden mehrere Stablecoin-Pools von Curve Finance durch Reentrancy-Attacken um insgesamt rund 73 Mio. $ geleert. Der Fehler lag nicht in Curves Solidity-äquivalenter Logik — er steckte im Vyper-Compiler selbst.
Was geschah
Drei Vyper-Releases (0.2.15, 0.2.16, 0.3.0) implementierten den @nonreentrant-Decorator mit einem fehlerhaften Lock, der auf bestimmten Codepfaden den Wiedereintritt nicht tatsächlich verhinderte. Mehrere Curve-Pools — darunter alETH/ETH, msETH/ETH, pETH/ETH und der CRV/ETH-Pool — waren mit diesen Compiler-Versionen deployt worden und somit anfällig für die kanonische Reentrancy-Attacke von 2016.
Der Angreifer rief remove_liquidity mitten in einem Swap auf, was einen ETH-Transfer an einen kontrollierten Contract auslöste, der den Pool erneut betrat, bevor der Speicher aktualisiert wurde, und so wiederholte Abhebungen über den tatsächlichen Anteil des Angreifers hinaus ermöglichte.
Folgen
- Vyper veröffentlichte gepatchte Versionen und eine klare Mitteilung mit den betroffenen Releases.
- Eine Koalition aus White-Hat-MEV-Searchern („c0ffeebabe.eth") front-runte rund 5,4 Mio. $ des Exploits und gab sie an Curve zurück.
- Mehrere Teile des Verlusts wurden durch Verhandlung zurückgeholt; der Rest bleibt ausstehend.
- Audit-Firmen nehmen Compiler-Versionsprüfungen mittlerweile routinemäßig in ihre Checklisten für Vyper-Deployments auf.
Warum es wichtig ist
Curve gehört zu den am intensivsten geprüften Protokollen in DeFi. Der Angriff unterstrich, dass Audits des Contracts selbst keine Sicherheit garantieren können, wenn der Compiler, der den Bytecode erzeugt, Fehler enthält. Reproduzierbare Builds und Transparenz bei der Compiler-Version sind seither Standardpraxis.
Quellen & On-Chain-Belege
- [01]twitter.comhttps://twitter.com/CurveFinance/status/1685693202722848768
- [02]hackmd.iohttps://hackmd.io/@vyperlang/HJUgNMhs2