Zurück zum Blog

Jenseits des Marktrisikos: Logikfehler im SushiSwap KashiPairMediumRiskV1 Contract entdeckt

Code Auditing
15. Dezember 2022
4 Min. Lesezeit

Am 08.11.2022 stellten wir fest, dass einige Angriffe erfolgreich Vermögenswerte aus Pools entzogen haben, die auf dem offiziellen KashiPairMediumRiskV1-Vertrag von Sushi (oder einigen davon abgeleiteten Verträgen) aufbauen. Nach der Untersuchung stellten wir fest, dass die Grundursache in einem Logikfehler liegt, der zu einer Fehlkalkulation der Token-Preise führt.

Wir kontaktierten sofort das Sicherheitsteam von Sushi, und sie bestätigten unsere Ergebnisse. Das Gute daran war, dass sie Maßnahmen ergriffen, um einige wertvolle, aber anfällige Pools vor Angriffen zu schützen. Außerdem stellten sie Verfahren zur Entschädigung derjenigen bereit, die durch den Exploit Gelder verloren hatten. Daher glauben wir nun, dass es sicher ist, die Details der Schwachstelle und der Angriffe offenzulegen. In diesem Bericht möchten wir eine detaillierte Analyse liefern.

Schwachstellenanalyse

Nach der Analyse des Quellcodes des KashiPairMediumRiskV1-Vertrags kommen wir zu dem Schluss, dass sich dieser Fehler in der borrow-Funktion befindet, die den veralteten exchangeRate zur Überprüfung des Borrow-Anteils im solvent-Modifier verwendet. Insbesondere wird die Überprüfung basierend auf dem aktuellen Wert von exchangeRate in der _isSolvent-Funktion durchgeführt.

Während in der liquidate-Funktion die updateExchangeRate-Funktion ganz am Anfang aufgerufen wird. Daher erfolgen die Überprüfung und Berechnung auf Basis des aktualisierten Wertes.

Offensichtlich könnte dieser Fehler ausgenutzt werden, um zu einer (riesigen) Preisdifferenz zu führen.

Angriffsanalyse

Wir beobachteten zwei Angriffe:

  1. 0xcf8f242ea83100b6d43e659f7f53a698d304fc6ac2ca6fe79e3e07ee05fefe58: Das Opfer verwendet den KashiPairMediumRiskV1-Vertrag, und der Verlust beträgt etwa 9.466 USDC.
  2. 0x3d163bfbec5686d428a6d43e45e2626a220cc4fcfac7620c620b82c1f2537c78: Das Opfer ist ein Strategievertrag, der CauldronMediumRiskV1 (die Abspaltung von KashiPairMediumRiskV1) verwendet, und der Verlust beträgt etwa 110.911 MIM.

Beachten Sie, dass die erste Angriffstransaktion von einem Bot gestartet wurde, der die ursprüngliche Angriffstransaktion vorwegnimmt: 0x7a845d8d2af7919f5b9e22dd5571305cb5347d17986a8402715c1463d515fc18, und die ursprüngliche Angreiferadresse lautet 0xb7ea0f0f8c6df7a61bf024db21bbe85ac5688005.

Hier nehmen wir die erste Angriffstransaktion als Beispiel, die aus folgenden Schritten besteht:

  1. Entleihen eines Flashloans von 40.900 BADGER und 121.904 USDC von Balancer.
  2. Einzahlung von 40.900 BADGER und 113.599 USDC in BentoBox.
  3. Aufruf der Funktion addCollateral von kmBADGER/USDC-LINK zur Einzahlung von 40.900.000.000.000.000.000.000.000.000.000 Anteilen von BADGER.
  4. Aufruf der Funktion addAsset von kmBADGER/USDC-LINK zur Einzahlung von 112.529.000.000 Anteilen von USDC.
  5. Aufruf der Funktion borrow, um 120.755.095.093 Anteile von USDC zu leihen.
  6. Aufruf der Funktion UpdateExchangeRate.
  7. Aufruf der Funktion liquidate, um sich selbst zu liquidieren.
  8. Abhebung von 40.899 BADGER und 123.006 USDC aus BentoBox.
  9. Rückzahlung des Flashloans und Erzielung eines Gewinns von ca. 9466 USDC.

Beachten Sie, dass Schritt 6 nicht notwendig ist, da die borrow-Funktion die UpdateExchangeRate-Funktion aufruft.

Die wichtigsten Schritte sind folgende:

Es ist nicht schwer zu erkennen, dass der Wert von exchangeRate, der in der borrow-Funktion verwendet wird, von dem Wert abweicht, der in der liquidate-Funktion verwendet wird:

  • In der borrow-Funktion: 250.997.938.545.109.237.740.214.705.193
  • In der liquidate-Funktion: 328.266.883.541.864.569.505.752.156.794

Die Auswirkungen

Es gibt Dutzende von Pools (sowohl auf Ethereum als auch auf BSC), die von diesem Fehler betroffen sein könnten. Eine vorläufige Methode zur Abmilderung dieses Problems besteht darin, die Abweichung durch gelegentliches (oder periodisches) Aufrufen der UpdateExchangeRate-Funktion zu reduzieren oder zu eliminieren. Diese Methode wurde bereits von vielen betroffenen Projekten übernommen, und die entsprechenden Transaktionen können in freier Wildbahn beobachtet werden.

Fazit

Die Sicherung eines DeFi-Projekts ist keine einfache Aufgabe. Neben der Code-Prüfung sollten wir unserer Meinung nach auf proaktive Weise den Projektstatus überwachen und Angriffe blockieren, bevor sie überhaupt stattfinden.

Über BlockSec

BlockSec ist ein wegweisendes Blockchain-Sicherheitsunternehmen, das 2021 von einer Gruppe weltweit anerkannter Sicherheitsexperten gegründet wurde. Das Unternehmen hat sich zum Ziel gesetzt, die Sicherheit und Benutzerfreundlichkeit für die aufkommende Web3-Welt zu verbessern, um deren Massenadoption zu fördern. Zu diesem Zweck bietet BlockSec Auditing-Dienste für Smart Contracts und EVM-Ketten, die Phalcon-Plattform zur proaktiven Entwicklung und Abwehr von Bedrohungen, die MetaSleuth-Plattform zur Nachverfolgung und Untersuchung von Geldern sowie die MetaDock-Erweiterung für Web3-Entwickler zum effizienten Surfen in der Kryptowelt an.

Bislang hat das Unternehmen über 300 namhafte Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und in zwei Finanzierungsrunden von namhaften Investoren wie Matrix Partners, Vitalbridge Capital und Fenbushi Capital zweistellige Millionenbeträge erhalten.

Offizielle Website: https://blocksec.com/

Offizieller Twitter-Account: https://twitter.com/BlockSecTeam

Für die neuesten Informationen anmelden
Über die sichere Speicherung hinaus, Teil 2: Wallet-Kryptografie sicher implementieren
Security Insights

Über die sichere Speicherung hinaus, Teil 2: Wallet-Kryptografie sicher implementieren

Kann ein Angreifer einen privaten Schlüssel rekonstruieren, ohne dessen geschützte Kopie auszulesen? Teil 2 von Beyond Secure Storage untersucht sechs Vorfälle, bei denen schwache Zufallszahlen, Entropieverlust oder Fehler bei Signatur-Nonces Schlüssel vorhersagbar oder rekonstruierbar machten. Daraus leitet er Anforderungen an die Implementierung der Schlüsselerzeugung und des Signierens ab und erläutert anschließend, wie Zahlungsinstitute deren Einhaltung durch Code-Reviews und Tests des produktiv eingesetzten Systems überprüfen können.

Über sichere Speicherung hinaus, Teil 1: Sichere Zahlungs- und Signaturabläufe gestalten
Security Insights

Über sichere Speicherung hinaus, Teil 1: Sichere Zahlungs- und Signaturabläufe gestalten

Wie kann ein nicht autorisierter Vorgang eine gültige Signatur erhalten, ohne dass der Angreifer den privaten Schlüssel stiehlt? Teil 1 von Beyond Secure Storage untersucht anhand von Vorfällen bei Bitget, Bybit und Binance Autorisierungsfehler bei Zahlungsanforderungen, der Erstellung, Signierung und Ausführung von Transaktionen sowie bei deren Abwicklung. Daraus leitet er Gestaltungsprinzipien ab, um nicht autorisierte Vorgänge zu verhindern und Verluste zu begrenzen. Anschließend erläutert er, wie Überprüfungen, Audits, Penetrationstests und Übungen diese Schutzmaßnahmen verifizieren können.

NEAR-Intents-Exploit: Fehler bei der Rückerstattung und Lehren für die Sicherheit
Security Insights

NEAR-Intents-Exploit: Fehler bei der Rückerstattung und Lehren für die Sicherheit

Beim Exploit von NEAR Intents wurden überdimensionierte Rückerstattungsereignisse genutzt, um interne Guthaben zu erhalten, nachdem die eingezahlten Vermögenswerte zurückgegeben worden waren. Diese Analyse rekonstruiert den Ablauf der Receipts und sieben Auszahlungen auf der BNB Chain in Höhe von insgesamt 3.865.021 USDT. Sie unterscheidet diese Mittelabflüsse von der vom Projekt gemeldeten vollständigen Rückgewinnung der Mittel und erläutert Sicherheitsaspekte bei der Entwicklung und Prüfung von NEAR-Smart-Contracts.

Der beste Sicherheitsauditor für Web3

Lassen Sie Design, Code und Geschäftslogik vor dem Launch prüfen. Nach den höchsten Sicherheitsstandards der Branche.

BlockSec-Audit
Jenseits des Marktrisikos: Logikfehler im SushiSwap KashiPairMediumRiskV1 Contract entdeckt