Orion Protocol Swap-Reentrancy
3 Mio. $ aus Orion auf Ethereum und BSC abgezogen, nachdem doSwapThroughOrionPool unvalidierte Pfade ohne Reentrancy-Schutz akzeptierte; Fake-Token nutzte das.
- Datum
- Opfer
- Orion Protocol
- Status
- Mittel entwendet
Am 2. Februar 2023 wurde das dezentralisierte Handelsprotokoll Orion Protocol um etwa 3 Millionen $ ausgenutzt — 2,84 Mio. $ auf Ethereum und 191.000 $ auf BSC. Die Funktion doSwapThroughOrionPool akzeptierte einen vom Nutzer bereitgestellten Swap-Pfad ohne Validierung der Tokens und ohne Reentrancy-Schutz, was dem Angreifer erlaubte, einen Fake-Token einzufügen, dessen Transfer-Callback in die Einzahlungslogik wiedereintrat.
Was geschah
Orions doSwapThroughOrionPool ließ Nutzer Swaps durch einen vom Aufrufer bereitgestellten Pfad von Token-Adressen ausführen. Zwei Versäumnisse kombinierten sich fatal:
- Keine Token-Validierung — die Funktion akzeptierte beliebige Token-Adressen im Pfad, einschließlich vom Angreifer bereitgestellter Verträge.
- Kein Reentrancy-Guard — der Swap konnte wiedereingegeben werden, während seine Buchhaltung unvollständig war.
Der Angriff:
- Deployte einen gefälschten Token
ATKüber einen sich selbst zerstörenden Vertrag, mit einem bösartigentransfer-Callback. - Nahm einen Flash-Swap von ~2,84 Mio. USDT aus einem Uniswap-V2-Paar.
- Rief
doSwapThroughOrionPoolmit einem Pfad auf, der den Fake-ATK-Token enthielt. - Als Orions Swap-Logik ATKs Transfer aufrief, trat der Callback in Orions Einzahlungsfunktion ein, bevor die Buchhaltung des ursprünglichen Swaps abgeschlossen war — und gutschrieb dem Angreifer einen internen Saldo ohne reale Deckung.
- Hob den aufgeblähten Saldo als reale Vermögenswerte ab, zahlte den Flash-Swap zurück und wusch ~1.100 ETH über Tornado Cash.
Folgen
- Orion Protocol pausierte die betroffenen Funktionen und entschädigte betroffene Nutzer aus Protokoll-Reserven; das Team erklärte, alle Nutzergelder würden vollständig erstattet.
- Das Team führte das Problem teilweise auf eine Drittanbieter-Bibliotheks-Abhängigkeit im Swap-Pfad zurück, obwohl der fehlende Reentrancy-Guard Orions eigener war.
- Das Protokoll benannte sich später in Lumia um.
Warum es wichtig ist
Orion Protocol ist ein weiterer Eintrag in der "unvalidierter Swap-Pfad + fehlender Reentrancy-Guard"-Linie, die durch BurgerSwap (2021), Transit Swap (2022) und Exactly Protocol (2023) verläuft. Die wiederkehrende Form:
- Eine Routing-/Swap-Funktion akzeptiert vom Aufrufer bereitgestellte Token-Adressen.
- Die Funktion macht externe Aufrufe an diese Tokens (Transfers).
- Diese externen Aufrufe können wieder eintreten in das Protokoll, weil der Funktion ein Reentrancy-Guard fehlt.
- Ein Angreifer liefert einen bösartigen Token, dessen Transfer-Callback die Reentrancy ausnutzt.
Die defensive Antwort sind zwei gut dokumentierte Primitive, gemeinsam angewendet: Validiere jede Token/Vertragsadresse gegen eine Allowlist UND wende einen Reentrancy-Guard auf jeden zustandsändernden Pfad an, der externe Aufrufe macht. Eins allein reicht nicht; Orion hatte beides nicht auf dem ausgenutzten Pfad.
Die Häufigkeit, mit der genau dieser zusammengesetzte Bug wiederkehrt — über Jahre, Chains und Teams — ist eine der klarsten Demonstrationen des Katalogs dafür, dass DeFi-Sicherheitswissen sich nicht automatisch verbreitet. Jeder neue Routing-/Aggregations-Vertrag ist eine frische Gelegenheit, einen oder beide Primitive wegzulassen, und das Weglassen wird weiterhin gemacht, weil Routing-Code komplex ist, schnell ausgeliefert wird und oft weniger rigoros auditiert wird als die Kern-Pool-Logik.
Quellen & On-Chain-Belege
- [01]coindesk.comhttps://www.coindesk.com/business/2023/02/02/orion-protocol-loses-3m-of-crypto-in-trading-pool-exploit
- [02]blog.solidityscan.comhttps://blog.solidityscan.com/orion-protocol-hack-analysis-missing-reentrancy-protection-f9af6995acb3
- [03]medium.comhttps://medium.com/neptune-mutual/taking-a-closer-look-at-orion-protocol-hack-9631e4858692