Betrügerische Fähigkeiten im Bitfinex LEO ERC20-Vertragscode

Es ist bekannt, dass intelligente Verträge schwierig sein können. Nicht-Techniker sind versucht, einen ERC20-Token basierend auf dem Hype-Level zu kaufen, ohne vorher über die Qualität des Tokens und die Sicherheit des von ihnen gekauften Tokens Bescheid zu wissen.

Bitfinex, einer der größten Krypto-Börsen der Branche, hat ein Token namens LEO ausgestellt. Mit diesem Token kann die Entität, die es kontrolliert, unbegrenzt neue Token drucken oder prägen. Außerdem können sie beliebige Münzen löschen, einschließlich, aber nicht beschränkt auf Münzen an zentralen oder dezentralen Börsen, im Warm- oder Kaltlager, in Hardware- oder Software-Portemonnaies und / oder Papier- oder Gehirnbrieftasche.

Lassen Sie sich nicht täuschen, der Kauf eines ERC20 bedeutet nicht, dass Ihr Vermögen wirklich Ihnen gehört! Dies ist nicht das erste Mal, dass ich einen so intelligenten Vertrag aufgedeckt habe. Erst letzte Woche haben wir auf Cointelligence einen Bericht über einen ähnlichen Smart-Vertrag veröffentlicht, der dieselbe Funktionalität bietet. Lesen Sie unseren Bericht über WHEN Smart Contract.

Ermöglicht der LEO ERC20-Vertrag Betrug und / oder Betrug in Höhe von mehreren Milliarden Dollar??

Wir überlassen es Ihnen zu entscheiden, jetzt tauchen wir tief in das LEO-Token ein.

Einführung

LEO ist ein ERC20-Token, der am 10. Mai 2019 von iFinex Inc. in eingeführt wurde ihre Ankündigung. Sie finden die LEO Whitepaper Hier. Obwohl wir kein GitHub-Repository finden konnten, wurde der Token-Vertragscode in Etherscan überprüft. Wir haben den verifizierten Etherscan-Code für LEO, LeoController und TokenFactory verwendet, um eine Kopie dieses Tokens in Ropsten testnet zu testen und bereitzustellen.

LEO-Token – Der ERC20-Token von Unus Sed Leo Limited, einer Tochtergesellschaft von iFinex Inc..

Regler – Der Controller-Vertrag ermöglicht es dem Eigentümer, den Controller selbst zu übertragen, zu genehmigen, auszustellen, zu brennen und zu ändern. Bitte beachten Sie auch, dass der Vertrag „0xf17ebb3a24dc6d6b56d38adf0df499c1cd9e5672“ derzeit den LEO ERC20-Vertrag „steuert“, der „Controller“ jedoch vom Eigentümer jederzeit problemlos aktualisiert oder in eine beliebige Adresse geändert werden kann, sodass er so ziemlich alles mit dem LEO-Token tun kann.

LEO Controller Vertrag

LEOController-Vertrag: Der Eigentümer kann den „Controller“ des LEO ERC20-Vertrags ändernLEOController-Vertrag Der Eigentümer kann den Controller des LEO ERC20-Vertrags ändern

Das LEOController Der Vertragsinhaber kann den „Controller“ jederzeit ändern und auf eine von ihm kontrollierte Brieftaschenadresse einstellen.

  • Rufen Sie die Funktion “upgradeController” in Zeile 698 auf und geben Sie eine beliebige Brieftaschenadresse Ihrer Wahl ein.
  • Sobald die oben genannte Transaktion bestätigt wurde, wird die eingegebene Adresse zum neuen „Controller“ des LEO ERC20-Vertrags.

LEO-Vertrag: Der Besitzer kann Ihre Token verbrennen und unbegrenzt viele neue Token prägenLEO-Vertrag Der Besitzer kann Ihre Token verbrennen und unbegrenzt viele neue Token prägen

Wie konnte der LEO-Besitzer Token für immer prägen??

Wie bereits erläutert, können sie, sobald die Controller-Adresse in eine Wallet-Adresse (oder sogar einen neuen Smart-Vertrag) geändert wurde, einfach die Funktion “generateTokens” in Zeile 460 aufrufen.

Parameter

  • _owner → Die Brieftasche, die die neu geprägten LEO-Token erhält.
  • _amount → Die Anzahl der zu druckenden Token, die an die oben angegebene Adresse gesendet werden.

Hinweis – Im LEO-Whitepaper wird nicht erwähnt, wie hoch der maximale Token-Vorrat ist, und dieser Vertrag ermöglicht es ihnen, weiterhin LEO-Token zu prägen, da wir mit ihrem Code Billiarden LEO-Token auf einem Testnetz „drucken“ konnten.

Wie kann der LEO-Besitzer die Token eines anderen löschen??

Mit der Funktion „destroyTokens“ auf 477 kann die LEO-Controller-Brieftasche alle LEO-Token brennen, einschließlich, aber nicht beschränkt auf diejenigen, die in einem zentralen oder dezentralen Austausch, einer Hardware- oder Software-Brieftasche, einem heißen oder kalten Speicher und / oder einem Papier oder Gehirn vorhanden sind Brieftasche. Es spielt keine Rolle, wo sich Ihre Münzen befinden, sie können Ihre Münzen löschen, wenn sie möchten. So einfach ist das.

Parameter

  • _owner → Die Brieftasche, aus der die vorhandenen LEO-Token gebrannt werden.
  • _amount → Die Anzahl der Token, die aus der oben genannten Brieftaschenadresse “gelöscht” werden sollen.

Weitere Beweise

Wir haben genau den gleichen Code für das LEO ERC20-Token, den Controller und die Factory kopiert, um den folgenden Vertrag auf dem zu implementieren Ropsten Testnetz.

Brieftaschen / Adressen

  • Absenderadresse: 0x58FA58089956c5cba21d9f61434B1902F8121b32
  • Zufällig generierte Adresse: 0xada183F6Ff6E7805EE5bDA701d40958858FeE548

Zuerst haben wir den Controller von der Absenderadresse in eine Kopie von “LEOController” geändert, um zu sehen, ob wir den Controller mit der Funktion “upgradeController” wieder auf die Absenderadresse zurücksetzen können..

Schritte

  • Token Factory Bereitgestellt
  • LEO-Token Bereitgestellt
  • LEOController Bereitgestellt
  • Überprüft, wer tatsächlich der „Controller“ im LEO-Token-Vertrag ist: 0x58FA58089956c5cba21d9f61434B1902F8121b32.
  • Der Controller wurde mithilfe der Funktion “changeController” im LEO-Vertrag auf “zuvor bereitgestellt” geändert “LEOController” -Vertrag
  • Bestätigt, dass der Controller tatsächlich in die Smart-Vertragsadresse geändert wurde.

Zu diesem Zeitpunkt ähnelt unser Testnet-LEO-Vertrag dem LEO-ERC20-Vertrag auf folgende Weise

  • Der Controller des LEO-Vertrags ist ein intelligenter Vertrag.
  • Der Controller-Code im Testnetz passt genau zu dem einen im Hauptnetz.

Jetzt versuchen wir festzustellen:

  • Wenn wir die LEO-Token eines anderen brennen oder zerstören können, indem wir zuerst den Controller wechseln.
  • Wenn wir eine wahnsinnig große Menge an LEO-Token ausgeben können, um zu sehen, ob es eine Obergrenze gibt.

Schritte

  • Obwohl wir zu diesem Zeitpunkt wussten, dass es dem Eigentümer nicht möglich war, den Controller im “LEO” -Vertrag mit der Funktion “changeController” zu ändern, haben wir diese Transaktion absichtlich gesendet, damit sie zurückgesetzt wird oder fehlschlägt. Gescheitert
  • Wir gingen zum Vertrag “LEOController” und verwendeten die Funktion “upgradeController”, um den Controller des kontrollierten Smart-Vertrags, d. H. LEO, erneut in die Absenderadresse zu ändern. Erfolgreich

Hinweis – dass wir den Controller vom Absender in einen intelligenten Vertrag und dann wieder zurück zum Absender geändert haben, weil wir Ihnen zeigen wollten, dass es für uns recht einfach ist, den Controller in einem Testnetz (und für sie im Hauptnetz) zu ändern..

Token ausstellen

Da der Absender nun wieder der Controller des LEO-Vertrags ist, kann er auf die LEO-Vertragsfunktionen „generateTokens“ und „destroyTokens“ zugreifen. Wir haben eine zufällige Brieftaschenadresse “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” generiert, um einige wahnsinnig zu senden riesige Menge an LEO-Token 1.000.000.000.000.000.000.000.000.000.000.000.000.000 (eine Undecillion) übertragener LEO.

Brennende Token

Wir wollten feststellen, ob wir (der Absender) Token aus der zufälligen Adresse löschen oder zerstören können 0xada183F6Ff6E7805EE5bDA701d40958858FeE548, die wir zuvor generiert haben.

Bei der obigen Transaktion haben wir erfolgreich 10.000.000.000 (zehn Milliarden) Token aus der Brieftasche eines anderen oder einer Adresse, die wir nicht besaßen, gebrannt / gelöscht / zerstört.

Sie können sehen, dass die Adresse „0xada183F6Ff6E7805EE5bDA701d40958858FeE548“ jetzt ein ausgewogenes Verhältnis von 999,999,999,999,999,999,999,999,990,000,000,000 (990-9 decillion, 990-9 nonillion, 990-9 octillion, 990-9 septillion, 990-9 sextillion hat , neunhundertneunundneunzig Billionen, neunhundertneunundneunzig Billiarden, neunhundertneunundneunzig Billionen, neunhundertneunzig Milliarden) nur Testnet-LEO-Token.

Vertragsvergleich

LÖWE Original Testnet Diff
MiniMeTokenFactory Original Testnet Diff
LEOController Original Testnet Diff

TLDR: Wie wirkt sich das auf mich aus??

Paolo Ardoino, CTO von Bitfinex, antwortete auf unseren Tweet welches dieses Problem umreißt und besagt:

„Aus Sicherheits- und zukunftssicheren Gründen haben wir die Möglichkeit verlassen, auch den Token-Vertrag zu aktualisieren. Das ist wirklich ein Schlüsselmerkmal für einen Vertrag, der viele Jahre leben kann. Mehr Token zu prägen würde für Finex einfach keinen Sinn ergeben … wie unseren Fuß zu schießen. „

Wir haben seinen Tweet nicht nur geliebt, sondern möchten ihm auch öffentlich für seine Antwort danken, denn wir glauben, dass wir uns auf diese Weise zur Rechenschaft ziehen und diese Branche in eine bessere Zukunft führen können.

Kommen wir jetzt zum Geschäft zurück! Beachten Sie, dass intelligente Verträge vertrauenswürdig sind. Bitfinex bricht hier das Vertrauen, indem es hier eine Hintertür einfügt, die ihnen die Möglichkeit gibt, zu betrügen, wann immer sie müssen, mit einem unfairen Vorteil gegenüber Menschen wie Ihnen und mir. In diesem ganzen Artikel wurde wiederholt darauf hingewiesen, dass sie nur nach Belieben eine beliebige Anzahl (oder unbegrenzte) LEO-Münzen prägen und die Geldbörsenmünzen jetzt oder in Zukunft löschen können.

Um alles für unsere nicht-technischen Leser zusammenzufassen und zu vereinfachen, leugnen oder hinterfragen wir nicht die Fähigkeit des Smart Contract, aktualisierbar zu sein. Das Problem ist hier nicht technisch, sondern philosophisch. Wenn Sie damit einverstanden sind, dass Bitfinex das kann, was sie mit LEO tun können, verstehen wir das auch und respektieren Ihren Standpunkt. Aber für uns spielt LEO nicht gut mit dem Geist und der Philosophie der Blockchain, weil sie Begriffe diktieren können. Basierend auf unserem fehlerhaften und bescheidenen Verständnis eine Kryptowährung:

  • Sollte für alle offen sein. Sie können kommen und gehen, wie Sie möchten. ✓
  • Sollte fair sein. Niemand sollte einen unfairen Vorteil gegenüber anderen haben. ✘
  • Sollte inklusive sein. Es sollte nicht auf irgendjemanden beschränkt sein, unabhängig davon, was sie gesagt oder getan haben oder woher sie kamen, sondern völlig gleichgültig sein "WHO" sie sind oder "Was" sie könnten möglicherweise werden. ✘
  • Sollte zensurresistent sein, wenn nicht zensurfrei. Niemand sollte zu einem bestimmten Zeitpunkt daran gehindert werden, Funktionen zu verwenden oder darauf zuzugreifen. Wenn es um ein Blockchain-Netzwerk geht (in diesem Fall ein intelligenter Vertrag), sollten selbst schlechte Schauspieler wie Betrüger, Hacker und Betrüger unzensiert behandelt werden – einschließlich, gleichermaßen, offen und fair. Wenn Sie schlechte Schauspieler in Bitcoin nicht zensieren können, warum sollten Sie das in LEO tun können? “Aktualisierbarkeit” rechtfertigt nicht die “Fähigkeit”, Begriffe zu diktieren. ✘
  • Sollte unveränderlich sein. Was auch immer passiert ist, sollte für immer dort bleiben, damit jeder und jede bestätigen, zustimmen oder nicht zustimmen kann. ✓
  • Das Netzwerk sollte dezentralisiert sein. Es sollte keine zentrale Stelle geben, die Bedingungen für das Geschehen festlegen kann. Obwohl das Ethereum-Netzwerk dezentralisiert ist, liegt der LEO-Token-Vertrag nicht daran, dass sie Bedingungen diktieren können. ✘
  • Sollte verteilt werden. Jeder sollte in der Lage sein, den Verlauf des Netzwerks selbst abzurufen und die Authentizität der Daten zu überprüfen. ✓

Menschen vertrauen Blockchain, weil es vertrauenswürdig ist. Die vertrauenswürdige Vertrauenswürdigkeit der Blockchain hat Menschen wie Sie und mich für diese erstaunliche Technologie interessiert.

Wir haben keinen persönlichen Groll gegen Bitfinex auf persönlicher Ebene, haben aber keine Angst davor, mit den Fingern auf sie zu zeigen, wenn wir das Gefühl haben, dass sie falsch sind und dass sie das Richtige tun müssen. Wir bieten Bitfinex eine Lösung an, um ein neues Token ohne solche Funktionen zu erstellen und diese mit den Investoren auszutauschen. Diese Maßnahme allein könnte möglicherweise das Vertrauen der Anleger in den LEO-Token stärken.

Schließlich kann diese Debatte im Kreis laufen, da Bitfinex argumentieren würde, dass sie “Aufrüstbarkeit” benötigen (oder?) Und wir nicht einfach akzeptieren würden, dass die Münze eines anderen gelöscht werden kann, selbst wenn dies nicht unsere wäre. Hiermit ruhen wir unseren Fall bei Ihnen, unserem großartigen Leser, um sich selbst zu entscheiden und zu sehen, ob Sie dem LEO ERC20-Vertrag vertrauen möchten.