Zusammenfassung
Platypus Finance ist ein AMM-Protokoll auf der Avalanche-Blockchain. Es wurde dreimal angegriffen, wie folgt:
- Am 17. Februar 2023 kam es aufgrund einer fehlerhaften Solvenzprüfung zu einem Hack, der zu einem Gesamtverlust von etwa 9,05 Mio. USD führte. Davon konnten mit Hilfe von BlockSec 2,4 Mio. USD gerettet werden. Etwa 380.000 Token blieben im Aave-Vertrag hängen und wurden anschließend zurückgegeben.
- Am 12. Juli 2023 wurde das Protokoll gehackt, wobei rund 50.000 USD verloren gingen, weil die Preisdifferenz zwischen Stablecoins ignoriert wurde.
- Am 12. Oktober 2023 kam es zu Preismanipulationsangriffen, bei denen rund 2,2 Mio. USD verloren gingen. Nach Verhandlungen mit dem Angreifer wurden 90 % der gestohlenen Gelder zurückgegeben.
Das Projekt kann von Glück sagen, dass es all diese Angriffe überlebt hat. Unsere Analyse dieser drei Exploits zeigt, dass die logischen Mängel durch ein sorgfältiges Audit oder aktivere Sicherheitsmaßnahmen hätten vermieden werden können.
Erster Angriff
Um diesen Sicherheitsvorfall zu verstehen, muss man den Arbeitsablauf mehrerer Smart Contracts verstehen. Der grobe Prozess sieht wie folgt aus:
- Ein Benutzer kann einen Token in einen Pool einzahlen, um ein LP zu werden und einen LP-Token zu erhalten.
- Der LP-Token kann in MasterPlatypus eingesetzt (gestaked) werden, um Belohnungen zu erhalten. Der LP-Token wird während dieses Prozesses in den MasterPlatypus-Vertrag übertragen.
- Der LP-Token kann als Sicherheit (Collateral) verwendet werden, um andere Vermögenswerte zu leihen und so die Vermögenseffizienz zu verbessern.
Die folgende Abbildung zeigt die Interaktionen.

Sicherheitsanalyse
Die Schwachstelle existiert 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 erlauben. Die Logik prüft, ob Benutzer faule Kredite haben (d. h. ob die Sicherheit zur Tilgung der Schulden verwendet werden kann). Wenn nicht, können die Benutzer die gestakten LP-Token abheben.
Diese Logik ist jedoch fehlerhaft. Dass der Benutzer Solvent ist, bedeutet nur, dass die Sicherheit des Benutzers seine Schulden decken kann. Es wird jedoch NICHT geprüft, ob der Benutzer auch nach der notfallmäßigen Abhebung der gestakten Token zahlungsfähig bleibt. Ein Angreifer kann diesen Fehler ausnutzen, um Vermögenswerte zu leihen und dann die gestakten LP-Token ebenfalls 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: Die Funktion emergencyWithdraw ausführen, 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 abheben, um USDC zu erhalten

Schritt 7: USP verkaufen, um Gewinne zu erzielen

Die Gewinne verblieben jedoch im Angreifer-Vertrag. Tatsächlich hätte der Angreifer eine neue Empfängeradresse für den Tausch festlegen können, um die Gewinne zu erhalten.
BlockSec-Rettungsaktion
Wir stellten fest, dass der Angreifer die Gewinne im Angreifer-Vertrag belassen hatte. Außerdem gab es im Angreifer-Vertrag keine Logik zum Abheben der Vermögenswerte. Wir fanden jedoch eine Schwachstelle im Angreifer-Vertrag, die dazu genutzt werden konnte, den Angriff rückgängig zu machen, um einen Teil der Vermögenswerte im Vertrag abzuheben.
Insbesondere gibt es eine Zugriffskontrolle für die Flashloan-Callback-Funktion, was bedeutet, dass jeder diese Callback-Funktion aufrufen kann. Dies ist auch die Grundursache für viele angegriffene MEV-Bots.
Außerdem genehmigt der Angreifer-Vertrag innerhalb der Callback-Funktion den USDC-Token für den Platypus Finance-Pool-Vertrag. Und dieser Pool-Vertrag ist aktualisierbar (upgradable)!

Durch die Kombination beider Punkte können wir die USDC im Angreifer-Vertrag retten, indem wir:
- Den Platypus Finance-Pool-Vertrag aktualisieren, um eine Logik zum Abheben der USDC im Vertrag einzubinden.
- Den Callback des Angreifer-Vertrags aufrufen, um die USDC für den Pool-Vertrag freizugeben.
- Der Pool-Vertrag kann jede Funktion überschreiben (die vom Angreifer-Vertrag ausgeführt wird), um die USDC vom Angreifer-Vertrag zu übertragen (da der Angreifer-Vertrag die USDC für den Pool-Vertrag genehmigt hat).
Hier ist die Transaktion zur Rettung von 2,4 Millionen USDC.

Andere zwei Angriffe
Bitte lesen Sie die folgenden Links für weitere Details zu den anderen zwei Angriffen.
-
Angriff-II: 11. Juli 2023, Das Protokoll geht davon aus, dass das Verhältnis zwischen USDC und USDT 1:1 ist, was von den Marktschwankungen abweicht, was zu einer fehlerhaften Auszahlungslogik führte. Der Link zu einer Angriffstransaktion. Es gibt ein paar davon.
-
Angriff-III: 12. Oktober 2023, aufgrund der manipulierten Werte für
cashundliability, 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 konnten einige Vermögenswerte gerettet werden, aber wir können nicht erwarten, dass wir immer Glück haben. Weitere Sicherheitsmaßnahmen , einschließlich Angriffsüberwachung und automatische Reaktion, sollten ergriffen werden, um das Protokoll und die Vermögenswerte der Benutzer 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 des Jahres 2023
- #3: KyberSwap-Vorfall: Meisterhafte Ausnutzung von Rundungsfehlern bei äußerst subtilen Berechnungen
- #4: Curve-Vorfall: Compilerfehler erzeugt fehlerhaften Bytecode aus unschuldigem Quellcode
- #6: Hundred Finance-Vorfall: Katalysator für die Welle von präzisionsbezogenen Exploits in anfälligen Fork-Protokollen
- #7: ParaSpace-Vorfall: Ein Wettlauf gegen die Zeit, um den kritischsten Angriff der Branche bisher abzuwehren
- #8: SushiSwap-Vorfall: Ein ungeschickter Rettungsversuch führt zu einer Reihe von Nachahmungsangriffen
- #9: MEV-Bot 0xd61492: Vom Raubtier zur Beute in einem genialen Exploit
- #10: ThirdWeb-Vorfall: Inkompatibilität zwischen vertrauenswürdigen Modulen offenbart Schwachstelle



