Transit Swap Approval-Drain
Transit-Swap-Nutzer mit unbegrenzten Approvals verloren 21 Mio. $: claimTokens validierte das Ziel-Token nicht. 70 % nach Verhandlungen zurück.
- Datum
- Opfer
- Transit Swap
- Status
- Teilweise zurückerlangt
Am 2. Oktober 2022 wurde der Cross-Chain-DEX-Aggregator Transit Swap für rund 21 Millionen Dollar durch eine fehlende Parametervalidierung in seiner claimTokens-Funktion exploitet. Der Angreifer entzog Nutzer, die unbegrenzte Token-Approvals an Transits Berechtigungsverwaltungsvertrag erteilt hatten. Nach On-Chain-Verhandlung wurden 70 % der Mittel zurückgegeben, was das Ereignis als (sehr teure) Whitehat-Operation klassifizierte.
Was geschah
Um Transit Swap zu nutzen, erteilten Nutzer Token-Approvals an den Berechtigungsverwaltungsvertrag des Protokolls, sodass dieser Tokens im Namen des Nutzers während Swaps ausgeben konnte. Die claimTokens-Funktion des Vertrags war für den tatsächlichen transferFrom-Aufruf gegen das genehmigte Guthaben des Nutzers verantwortlich.
Die Schwachstelle: claimTokens akzeptierte die Token-Vertragsadresse als vom Nutzer gelieferten Parameter und validierte ihn nicht gegen eine Allowlist oder erwartete Quelle. Die Funktion rief gerne transferFrom auf jeder vom Aufrufer angegebenen Token-Adresse auf, gegen jeden Nutzer, der Transit zur Ausgabe dieses Tokens genehmigt hatte.
Der Angriff:
- Der Angreifer zählte Wallets auf, die unbegrenzte Approvals an den Transit-Swap-Vertrag hielten.
- Für jedes Opfer rief er
claimTokensmit der Adresse des Opfers als Quelle und der Adresse des Angreifers als Ziel auf. - Der Vertrag führte den Transfer aus, da die Validierung fehlte.
- Entzog ~21 Mio. $ über mehrere Tokens (USDT, USDC, BUSD, ETH, BNB usw.).
Nachwirkungen
- Transit Swap pausierte den betroffenen Vertrag und kontaktierte den Angreifer über On-Chain-Nachrichten.
- Nach mehreren Tagen Verhandlung gab der Angreifer rund 70 % der gestohlenen Mittel an eine Wiederherstellungsadresse zurück.
- Das Team verteilte die zurückgewonnenen Mittel pro-rata an betroffene Nutzer.
- Transit erlitt Monate später unter anderen Bedingungen einen zweiten kleineren Exploit.
Warum es zählt
Transit Swap ist Teil einer langen Linie von DEX-Aggregator-Approval-Drain-Bugs — Protokolle, die Nutzer-Approvals halten, müssen rigoros jeden Parameter validieren, der bestimmt, wie diese Approvals ausgegeben werden. Das Muster wiederholt sich bei:
- Furucombo (2021) —
delegatecallzu vom Angreifer kontrolliertem Ziel. - Sushi RouteProcessor2 (2023) — fehlende Access-Prüfung innerhalb des Swaps.
- LI.FI (2024) — Facet-Validierung fehlend in einer frischen Bereitstellung.
- Transit Swap (2022) —
claimTokensakzeptiert vom Angreifer gewählte Quelle.
In jedem Fall arbeiten die Verträge des Protokolls technisch wie konzipiert; der Bug ist, dass Nutzer Approvals erteilten in der Erwartung, dass das Protokoll einschränken würde, wie diese Approvals ausgeübt werden, und die Einschränkungslogik des Protokolls eine Lücke hatte. Die defensive Antwort — begrenzte Approvals, EIP-2612 Permits und per-Transaktions-Signatur-Gating — wird Standard, aber hinkt der Rate hinterher, mit der approval-basierte Aggregatoren neuen Code ausliefern.
Quellen & On-Chain-Belege
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-transit-swap-hack-october-2022
- [02]theblock.cohttps://www.theblock.co/post/174307/hacker-returns-70-of-21-million-taken-from-transit-swap-dex
- [03]blog.solidityscan.comhttps://blog.solidityscan.com/transit-swap-hack-analysis-13c1e04e7de0/