Gemini Dollar: Smart Contracts ermöglichen den Diebstahl von Antispam-Zahlungen

Eine Frontrunning-Analyse unter der Betrachtung der Antispam-Zahlungen des Gemini-Dollars.

Die Winklevoss-Zwillinge sind vor allem als angebliche Gründungsväter von Facebook bekannt und erhielten 2008 sogar eine Entschädigung in Höhe von 65 Millionen US-Dollar von Mark Zuckerberg. Im Jahr 2013 investierten sie dann stark in Bitcoin und kauften etwa 1% aller vorhandenen Münzen für 120 USD pro Stück.

Bald darauf eröffneten die Brüder die Kryptowährungsbörse Gemini und brachten 2018 die stabile Kryptowährung Gemini Dollar (GUSD) auf den Markt. Eine stabile Kryptowährung (auch bekannt als Stablecoin) ist eine Kryptowährung, die sich durch einen Fixsatz auszeichnet (so kostet 1 GUSD-Token immer 1 US-Dollar). Stablecoins sind praktisch, um echtes Geld zu „digitalisieren.“ Sie vereinfachen und beschleunigen den Geldfluss von Blockchains zwischen Börsen. Die Bürgschaft für die Umrechnung in Dollar trägt das Unternehmen, das die Währung in Umlauf gebracht und an Sie weiterverkauft hat.

Im Rahmen des Smart Contract-Quellcodeüberprüfungsdienstes von Kaspersky haben wir einen Smart Contract analysiert, der GUSD-Funktionen anbietet und dabei eine Sicherheitslücke festgestellt.

Haftungsausschluss

Beachten Sie, dass der vorliegende Smart-Vertrag bereits überprüft wurde, obwohl wir nicht wissen, ob im Bericht irgendwelche Codefehler beschrieben wurden.

Im Einklang mit unserer verantwortungsvollen Offenlegungspolitik haben wir das Sicherheitsteam von Gemini kontaktiert, um das Problem zu melden. Sie teilten uns mit, dass das Problem während der Entwurfsphase in Betracht gezogen wurde, jedoch kein Risiko für den GUSD darstellte.

Eine einfache Erklärung zur Funktionsweise von Smart Contracts finden Sie in unserem Beitrag zu Smart Contracts, Ethereum und ICOs.

Smart Contracts und Gemini Dollar

Wenn jemand neue Token basierend auf der Ethereum-Blockchain erstellen möchte, schreibt er im Normalfall einen Smart Contract (ein Miniprogramm), der Folgendes festlegt:

  1. Daten („so viele Token befinden sich an dieser und jener Adresse“),
  2. Methoden („Bitte transferieren Sie meine Token an diese oder jene Adresse, etc.).“

Die Schöpfer des Gemini-Dollarsystems haben außerdem die folgenden Verbesserungen implementiert :

  1. Sie haben den Vertrag in drei Komponenten unterteilt: „Proxy“ (die permanente Schnittstelle, mit der Token-Inhaber interagieren und Vorgänge ausführen können), „Store“ (die Zuordnung von Token-Inhabern zu ihren Guthaben) und „Impl“ (die zugrunde liegende Logik);
  2. Die Logik-beschreibende Komponente kann aktualisiert und durch neue Funktionen wie das Einfrieren von Geldern ergänzt werden. In der Zwischenzeit blieben Daten und Schnittstelle unverändert. Das Update ist für alle transparent.
  3. Für die Aktualisierung und Kontrolle wird ein separater, intelligenter „Depot“ -Vertrag verwendet, der von mehreren Personen (den Vermögensverwaltern) als zusätzlicher Schutz verwaltet wird. Wenn ein Verwalter eine Aktion vorschlägt, müssen die anderen Verwalter diese bestätigen, bevor die Aktion stattfinden kann.

Die Verbesserungen sind solide und erhöhen die allgemeine Sicherheit und Flexibilität.

Antispam-Zahlungen

Wenn eine andere Person als der Primärverwalter ein Angebot in einem Verwaltungsvertrag einreicht, muss ein Anteil von 1 ETH bezahlt werden (ca. 200 USD zum aktuellen Wechselkurs). Wie in den Kommentaren zum Vertrag selbst vermerkt, soll diese Spam-Schutzmaßnahme die Teilnehmer davon abhalten, zu viele Anfragen zu erstellen.

Die Antispam-Zahlungen gehen letztendlich an eine Person: und zwar an diejenige Person, die die Genehmigung eines bestimmten Angebots / einer bestimmten Anfrage ankündigt. Diese Implementierung mag nicht besonders fair aussehen, aber die Kommentare zeigen deutlich, dass ihre Schöpfer sie so verstanden haben.

        } else {

            if (address(this).balance > 0) {

                // reward sender with anti-spam payments

                // ignore send success (assign to ʹsuccessʹ but this will be overwritten)

                success = msg.sender.send(address(this).balance);

 

Wir empfehlen die Verwendung des Solidity Withdrawal Pattern-Ansatzes.

Angreifer können alle Antispam-Zahlungen stehlen

Die Person, die über die Genehmigung der Anfrage entscheidet, erhält somit auch alle Antispam-Zahlungen der ETH. Dazu ruft sie die Smart Contract-Funktion completeUnlock auf und übergibt die Signaturen von zwei Verwaltern in die Parameter.

Das Problem ist, dass Ethereum wie bei jeder anderen Blockchain Befehle zeitversetzt ausführt. Eine clientbasierte Transaktion (Geld überweisen oder eine Funktion aufrufen) steht für eine Weile (normalerweise 15 Sekunden oder länger) in der Warteschlange. Während dieser Zeit kann jeder die geplanten Überweisungen anderer Ethereum-Benutzer einsehen, einschließlich Beträgen, Empfängern und Parametern. Und der Schnüffler kann diese Informationen verwenden, um eine eigene Transaktion zu erstellen und diese nach vorne zu schieben, indem er dem Miner eine höhere Provision zahlt.

Jeder Vorteil, der durch diese Art des Schnüffelns erzielt wird, wird als Frontrunning bezeichnet.

Aus investopedia.com:

Es handelt sich um Frontrunning, wenn ein Broker oder eine andere Entität ein Geschäft eingeht, weil man vertrauliches Wissen über eine große, noch nicht öffentlich gemachte Finanztransaktion besitzt, die den Wert von Anlagen stark beeinflussen kann. Dies tritt auch auf Fälle zu, wenn ein Broker oder Analyst Aktien für sein Privatkonto kauft oder verkauft, bevor ihr Unternehmen Kunden Kauf- oder Verkaufsempfehlungen gibt.

In unserem Fall kann ein Außenstehender einen Roboter zur Überwachung des Contracts einsetzen. Wenn festgestellt wird, dass jemand die Funktion completeUnlock aufgerufen hat (d. h. ein Depotverwalter interagiert mit Gemini-Dollar), kopiert er sofort alle Parameter und ruft die Funktion auf, um die dort angesammelten Ether zu extrahieren.

Um einem solchen Angriff entgegenzuwirken, empfehlen wir erneut die Verwendung des beliebten Solidity Withdrawal Pattern-Ansatzes.

Darüber hinaus empfehlen wir, Unbekannte daran zu hindern, eine für Verwalter bestimmte Funktion aufzurufen.

Praktische Umsetzung eines Angriffs

Obwohl es theoretisch gefährlich klingt, ist die erkannte  Sicherheitsanfälligkeit in der Praxis relativ harmlos. Und das aus folgenden Gründen:

  1. Antispam-Zahlungen sind für Depots eines so großen Unternehmens wie dem Gemini-Dollar von geringer Bedeutung. Die GUSD-Kapitalisierung (das Gesamtvolumen der ausgegebenen Token) überschritt zu einem Zeitpunkt 100 Millionen USD. Selbst jetzt sind es mehr als 5 Millionen US-Dollar.
  2. Antispam-Zahlungen sind in diesem Vertrag noch nicht enthalten und es kann sein, dass sie auch niemals implementiert werden, da der Hauptverwalter in keiner Weise zur Hinterlegung verpflichtet ist (alle anderen sind dazu verpflichtet).
  3. Benutzer, die die Sicherheitsanfälligkeit kennen, können die anfällige Funktion einfach umgehen oder den Vertrag aktualisieren.
  4. Während der Überprüfung wurden keine Schwachstellen gefunden, die GUSD-Token bedrohen.

Gemini bestätigt: „Wir haben uns für dieses Design entschieden, weil Gemini unter normalen Bedingungen keinen Ether einsetzen möchte. Daher sind wir das Risiko eingegangen, die Komplexität unserer Codebasis nicht wesentlich zu erweitern, nur um den immateriellen Nutzen eines robusten Wiederherstellungsmechanismus für einen theoretischen und nominalen Spam-Schutz. Die Priorisierung von einem sicheren, einfachen Code bleibt die beste Lösung für den Gemini-Dollar und seine Benutzer. In Zukunft werden wir diese Entscheidung möglicherweise erneut treffen, wenn sich das Risiko ändert und ein teurerer und komplexerer Vertrag nötig wird.“

Wir haben beschlossen, diesen Beitrag in Absprache mit Gemini zu veröffentlichen, da Spam-Schutz nur durch eine Kombination aus bestimmten und unwahrscheinlichen Umständen gefährdet ist und GUSD nicht gefährdet ist.

Wir erinnern erneut an die Notwendigkeit eines ganzheitlichen Sicherheitsansatzes für ICOs und andere Aktivitäten im Zusammenhang mit Kryptowährungen und Blockchains.

Tipps