Öffentliche Übertragungsschwachstelle des Tether Gold Smart Contracts

Beschreiben Sie eine Schwachstelle bei der öffentlichen Übertragung im Tether Gold Smart Contract

Öffentliche Übertragungsschwachstelle des Tether Gold Smart Contracts

Unsere interne Analysetool hat am 5. April einen Fehler im Tether Gold Contract gefunden, der es einem Angreifer ermöglicht, XAUt (Tether Gold) Token von beliebigen Benutzern an eine vordefinierte Adresse zu übertragen. Das Team hat unseren Bericht erhalten und angegeben, dass sie dieses Problem intern bereits identifiziert hatten. Heute haben wir festgestellt, dass das Problem behoben wurde, und wir möchten die Details hier teilen. Außerdem werden wir veranschaulichen, wie man Phalcon Fork verwendet, um den Proof of Concept (PoC) dieser Schwachstelle zu entwickeln und zu debuggen.

0x0. Die Schwachstelle

In der transferFrom-Funktion des Contracts kann jeder diese Funktion aufrufen, um die Token anderer Benutzer in eine vertrauenswürdige Quittung zu übertragen, die vom Token-Besitzer definiert wird. Obwohl diese Schwachstelle nicht direkt ausgenutzt werden kann, um Token auf das Konto des Angreifers zu übertragen, kann der Angreifer dennoch Token aus dem Pool übertragen, um den Tokenpreis im Pool (z. B. WETH-XAUt-Pool) zu manipulieren und davon zu profitieren.

Die Behebung dieser Schwachstelle ist unkompliziert, wie unten gezeigt.

0x1. Wie die Schwachstelle ausgenutzt wird

Um den PoC zu schreiben und zu debuggen, können wir Phalcon Fork zu diesem Zweck verwenden. Zuerst können wir einen Fork erstellen, bevor die Schwachstelle behoben wird. Ich habe die Blockhöhe 17038763 verwendet, als ich den Fork über die Fork API erstellt habe.

Schritt I: Genug Ether vorbereiten

Der erste Schritt ist, genug Ether für die Gasgebühr des Exploiters zu beschaffen. Wenn kein Ether im Konto vorhanden ist, wird die Transaktion gesendet, die Ether von vitalik.eth sendet.

Schritt II: Das Eigentum am Tether Gold Contract übertragen

Der Besitzer des Tether Gold Contracts ist eine Multisig-Wallet (0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828). Um das Eigentum an den Exploiter zu übertragen, müssen wir eine Multisig-Transaktion einreichen und dann die Transaktion bestätigen.

Schritt III: Ein privilegiiertes Konto zum Tether Gold Contract hinzufügen

Wir haben ein neues Konto 0x189e7947a9d9210eec3a41dcf5f536bb1d7726f5 als privilegiertes Konto hinzugefügt. Anschließend rufen wir die transferFrom-Funktion auf, um die XAUt-Token von einem Opfer an das privilegierte Konto zu übertragen.

0x2. PoC

Bitte finden Sie den PoC auf diesem GitHub:

Sign up for the latest updates