Zusammenfassung
Platypus Finance ist ein AMM-Protokoll auf der Avalanche-Blockchain. Es wurde wie folgt dreimal angegriffen:
- Am 17. Februar 2023 erlitt es einen Hack aufgrund einer fehlerhaften Solvenzprüfung, was zu einem Gesamtschaden von rund 9,05 Mio. USD führte. Davon konnten $2,4 Mio. mit Hilfe von BlockSec gerettet werden. Ungefähr 380.000 Token waren im Aave-Vertrag gefangen und wurden anschließend zurückgegeben.
- Am 12. Juli 2023 wurde es gehackt, wobei rund 50.000 USD verloren gingen, da die Preisdifferenz zwischen Stablecoins ignoriert wurde.
- Am 12. Oktober 2023 litt es unter Angriffen zur Preismanipulation, wobei rund 2,2 Mio. USD verloren gingen. Nach Verhandlungen mit dem Exploiter wurden 90 % der gestohlenen Gelder zurückgegeben.
Das Projekt hat Glück, all diese Angriffe überstanden zu haben. Unsere Analyse dieser drei Exploits zeigt, dass die logischen Schwachstellen vermieden werden könnten, wenn sorgfältige Audits oder aktivere Sicherheitsmaßnahmen angewendet worden wären.
Angriff Eins
Um diesen Sicherheitsvorfall zu verstehen, muss man den Workflow mehrerer Smart Contracts verstehen. Der grobe Ablauf ist wie folgt:
- Ein Benutzer kann einen Token in einen Pool einzahlen, um LP zu werden und einen LP-Token zu erhalten.
- Der LP-Token kann in MasterPlatypus gestaket werden, um Belohnungen zu erhalten. Der LP-Token wird dabei an den MasterPlatypus-Vertrag übertragen.
- Der LP-Token kann als Sicherheit verwendet werden, um andere Vermögenswerte zu leihen und die Effizienz der Vermögenswerte zu verbessern.
Die folgende Abbildung zeigt die Interaktionen.

Schwachstellenanalyse
Die Schwachstelle liegt in einer Funktion namens emergencyWithdraw innerhalb des MasterPlatypus-Vertrags. In Notfällen sollte diese Funktion verwendet werden, um die gestakten LP-Token aus dem MasterPlatypus-Vertrag abzuheben. In dieser Funktion prüft der Vertrag, ob der Benutzer solvent (zahlungsfähig) ist, um die Auszahlung zu ermöglichen. Die Logik prüft, ob Benutzer Schulden haben (d. h. ob die Sicherheiten zur Begleichung der Schulden verwendet werden können). Wenn nicht, können die Benutzer die gestakten LP-Token abheben.
Diese Logik ist jedoch fehlerhaft. Dass ein Benutzer solvent ist, bedeutet nur, dass die Sicherheiten des Benutzers seine Schulden decken können. Es wird jedoch NICHT geprüft, ob der Benutzer nach der Notfallauszahlung der gestakten Token weiterhin solvent bleibt. Ein Angreifer kann diesen Fehler ausnutzen, um Vermögenswerte zu leihen und dann auch die gestakten LP-Token notfallmäßig abzuheben (ohne die Schulden zurückzuzahlen). Siehe die detaillierte Analyse im Immunefi-Blog.


Angriffsanalyse
Wir verwenden eine Angriffstransaktion als Beispiel, um den gesamten Angriffsprozess zu zeigen.
Schritt 1: 44 Millionen USDC Flashloan von AAVE leihen

Schritt 2: 44 Millionen USDC in den Pool einzahlen, um LP-USDC zu erhalten

Schritt 3: LP-USDC in MasterPlatypus einzahlen

Schritt 4: LP-USDC als Sicherheit verwenden, um USP zu leihen

Schritt 5: Ausführen der emergencyWithdraw-Funktion, um den Angriff zu starten
Der Angreifer erhält die LP-USDC, ohne die USP-Schulden zu begleichen.

Schritt 6: LP-USDC aus dem Pool abziehen, um USDC zu erhalten

Schritt 7: USP zur Gewinnerzielung verkaufen

Allerdings verbleiben die Gewinne im Angriffskontrakt. Tatsächlich kann der Angreifer eine neue Empfangsadresse für den Swap einrichten, um Gewinne zu erzielen.
BlockSecs Rettung
Wir stellten fest, dass der Angreifer die Gewinne im Angriffskontrakt hinterlassen hatte. Außerdem gab es keine Logik im Angriffskontrakt, um die Vermögenswerte abzuheben. Wir fanden jedoch eine Schwachstelle im Angriffskontrakt, die ausgenutzt werden konnte, um einen Teil der Vermögenswerte aus dem Kontrakt zurückzuholen.
Insbesondere gibt es eine Zugriffskontrolle für die Flashloan-Callback-Funktion, was bedeutet, dass jeder diese Callback-Funktion aufrufen kann. Dies ist auch die Hauptursache für Angriffe auf viele MEV-Bots.
Darüber hinaus genehmigt der Angreifer-Kontrakt innerhalb der Callback-Funktion den USDC-Token für den Platypus-Finance-Pool-Kontrakt. Und dieser Pool-Kontrakt ist upgradebar!

Durch die Kombination der beiden vorherigen Punkte können wir die USDC aus dem Angriffskontrakt retten, indem wir:
- Den Platypus-Finance-Pool-Kontrakt upgraden, um eine Logik zum Abheben der USDC aus dem Kontrakt einzubauen.
- Den Callback des Angriffskontrakts aufrufen, um die USDC für den Pool-Kontrakt zu genehmigen.
- Der Pool-Kontrakt kann jede Funktion (die vom Angriffskontrakt ausgeführt wird) ersetzen, um die USDC vom Angriffskontrakt zu übertragen (da der Angriffskontrakt die USDC für den Pool-Kontrakt genehmigt hat).
Hier ist die Transaktion zur Rettung von 2,4 Millionen USDC.

Zwei weitere Angriffe
Weitere Details zu den beiden anderen Angriffen finden Sie unter den folgenden Links.
-
Angriff-II: 11. Juli 2023, das Protokoll geht davon aus, dass das Verhältnis zwischen USDC und USDT 1:1 beträgt, was von Marktschwankungen abweicht und zu einer fehlerhaften Auszahlungslogik führt. Der Link zu einer Angriffstransaktion. Es gibt mehrere davon.
-
Angriff-III: 12. Oktober 2023, aufgrund der manipulierten
cash(Bargeld) undliability(Verbindlichkeiten), die den Swap-Preis beeinflussten. [Die erste Angriffstransaktion | Die zweite Angriffstransaktion]
Zusammenfassung
Die drei Angriffe nutzten unterschiedliche Schwachstellen im Protokoll aus. Obwohl einige andere Anbieter das Protokoll geprüft hatten, fand der Angreifer dennoch die Lücke und nutzte das Protokoll erfolgreich aus. Glücklicherweise wurden einige Vermögenswerte gerettet, aber wir können nicht davon ausgehen, dass wir immer Glück haben. Weitere Sicherheitsmaßnahmen einschließlich Angriffüberwachung und automatische Reaktion, sollten übernommen werden, um das Protokoll und die Benutzervermögen zu sichern.
Lesen Sie weitere Artikel in dieser Serie:
- Einleitung: Die zehn „beeindruckendsten“ Sicherheitsvorfälle im Jahr 2023
- #1: Ernte von MEV-Bots durch Ausnutzung von Schwachstellen im Flashbots Relay
- #2: Euler Finance Vorfall: Der größte Hack von 2023
- #3: KyberSwap Vorfall: Meisterhafte Ausnutzung von Rundungsfehlern mit äußerst subtilen Berechnungen
- #4: Curve Vorfall: Compiler-Fehler erzeugt fehlerhaften Bytecode aus unbedenklichem Quellcode
- #6: Hundred Finance Vorfall: Katalysator für die Welle präzisionsbedingter Exploits in anfälligen geforkten Protokollen
- #7: ParaSpace Vorfall: Ein Wettlauf gegen die Zeit, um den kritischsten Angriff der Branche zu vereiteln
- #8: SushiSwap Vorfall: Ein unbeholfener Rettungsversuch führt zu einer Reihe von Nachahmungsangriffen
- #9: MEV Bot 0xd61492: Vom Jäger zum Gejagten in einem genialen Exploit
- #10: ThirdWeb Vorfall: Inkompatibilität zwischen vertrauenswürdigen Modulen deckt Schwachstelle auf



