Die Sicherheitsrisiken von THORChain (RUNE)

Laut dem am 1. April veröffentlichten Treasury-Bericht von THORChain für das erste Quartal 2022 verzeichnete die Kette trotz der zweifachen Auswirkungen der anhaltenden Marktschwäche und äußerst instabiler geopolitischer Faktoren ein Umsatzwachstum. Öffentliche Daten zeigen, dass THORChain im ersten Quartal 2022 einen Umsatz von 2,17 Milliarden US-Dollar verzeichnete. THORChain, das als „Cross-Chain-Version von UniSwap“ gefeiert wird, hat auf dem Cross-Chain-Handelsmarkt Fuß gefasst, indem es sich auf seine einzigartigen Vorteile stützte, und erlangte unter den Anlegern umfassende Anerkennung.

Hinter all diesem Glamour ist THORChain auch zutiefst von Hacking beunruhigt. Die Kette erlitt seit ihrer Einführung auf Ethereum häufige Sicherheitsverletzungen, eine Tatsache, die Zweifel an ihrer Sicherheit aufkommen lässt. Am 11. April twitterte THORChain über Phishing-Angriffe und warnte die Benutzer davor, mit ihnen zu interagieren [DeTHOR] oder andere unbekannte Token in ihren Brieftaschen, was erneut Bedenken hinsichtlich seiner Sicherheitsprobleme aufkommen ließ.

Beim Aufbau eines soliden Sicherheitssystems für CoinEx-Produkte verfolgt das CoinEx-Sicherheitsteam auch Sicherheitsvorfälle im Blockchain-Bereich, um den Benutzern zu helfen, die Sicherheit verschiedener Projekte aus Sicht der technischen Sicherheit besser zu verstehen und das Investitionsrisiko zu mindern. Mit dem Ziel, die Sicherheitskriterien für den Blockchain-Sektor zu verbessern, hat das Sicherheitsteam von CoinEx die Sicherheitsrisiken von THORChain (RUNE) analysiert. Das Team hofft, dass THORChain die folgenden Risiken erkennen und mindern kann, indem es die relevanten Smart-Contract-Codes optimiert. Darüber hinaus ist dieser Artikel auch eine Warnung für Benutzer, die sie daran erinnert, sich der Vermögenssicherheit bewusster zu sein und Vermögensverluste zu vermeiden.

Wie sicher ist THORChain (RUNE)?

Durch die Analyse des Vertragscodes und der Logik von THORChain (RUNE) hat das CoinEx-Sicherheitsteam die folgenden Risiken gefunden:

Schauen wir uns zunächst den Vertragscode von THORChain (RUNE) an:

https://etherscan.io/address/0x3155ba85d5f96b2d030a4966af206230e46849cb#code

Wir können sagen, dass RUNE ein ziemlich standardmäßiger ERC-20-Token ist. Anzumerken ist, dass neben der ERC-20-Schnittstelle THORChain (RUNE) eine weitere Schnittstelle bietet:

Laut transferTo (wie im Bild oben gezeigt) verwendet THORChain (RUNE) tx.origin, was eine der Ursachen für seine Sicherheitsrisiken ist. Hier sollten wir den Unterschied zwischen tx.origin und msg.sender erklären:

Das folgende Bild beschreibt, was passiert, wenn eine reguläre Adresse den Smart Contract anruft:

In solchen Fällen ist msg.sender = account.address und tx.origin = account.address, was bedeutet, dass msg.sender genau dasselbe ist wie tx.origin.

Folgendes passiert, wenn ein Konto Vertrag A anruft und Vertrag A Vertrag B anruft:

Wenn Vertrag A Vertrag B aufruft (wie oben gezeigt), können wir feststellen, dass msg.sender gleich tx.origin in Vertrag A ist.

In Vertrag B ist jedoch msg.sender = VertragA.Adresse, während tx.origin = Konto.Adresse. Daher ist tx.origin wie eine globale Variable, die den gesamten Call-Stack durchläuft und die Adresse des Kontos zurückgibt, das die Transaktion ursprünglich gesendet hat. Das ist der Kernpunkt: Bis heute beziehen sich fast alle bekannten Angriffe auf THORChain (RUNE) auf tx.origin.

Lassen Sie uns nun herausfinden, wie Angreifer die RUNE-Token der Benutzer über tx.origin stehlen:

Angriff Nr. 1: Eine Ziege aus einer Herde stehlen

Adressen auf Ethereum werden in externe Adressen und Vertragsadressen unterteilt. Die Übertragung der ETH auf diese beiden Arten von Adressen durch externe Adressen unterscheidet sich grundlegend. Das Offizielle Dokumentation of solidity besagt, dass eine Vertragsadresse eine Ether-Empfangsfunktion implementieren muss, bevor Überweisungen durchgeführt werden können.

Angesichts der Funktionen von tx.origin können Hacker einen Angriffsvertrag erstellen:

Wenn der Attack-Vertrag einen ETH-Transfer von einem Benutzer erhält, wird er „eine Ziege aus einer Herde stehlen“ – der Vertrag wird dabei die RUNE-Token des Benutzers stehlen.

Angriff Nr. 2: Interner Angriff

Ein interner Angriff ist eine spezielle Art von Angriff. Beim Versuch, die RUNE eines Benutzers durch einen internen Angriff zu stehlen, benötigt der Hacker einen mittleren Token. Darüber hinaus muss der Token auch Verträge von Drittanbietern aufrufen. Laut den Übertragungsaufzeichnungen von RUNE auf Ethereum haben einige Angreifer RUNE durch AMP-Token-Übertragungen gehackt.

AMP Token verwendet den ERC-1820-Standard, um die Hook-Registrierung zu verwalten und bei jeder Übertragung zu prüfen, ob Hook registriert ist. Wenn Hook registriert wurde, wird Hook aufgerufen.

Der Vertragscode von AMP Token zeigt, dass die endgültige Implementierung der Übertragung lautet: _transferByPartition. Inzwischen gibt es zwei Aufrufe mit TransferHook: _callPreTransferHooks (vor der Übergabe) und _callPostTransferHooks (nach der Übergabe). Insbesondere steht _callPreTransferHooks für die Von-Adresse, während _callPostTransferHooks für die Zu-Adresse (dh die Empfangsadresse) steht.

Für normale Benutzer ist es sinnlos, sich selbst Token zu stehlen. Daher können Angreifer _callPostTransferHooks ausnutzen. Schauen wir uns nun die Codes von _callPostTransferHooks an.

IAmpTokensRecipient(recipientImplementation).tokensReceived()

Wir können sagen, dass der einzige Callback, den Angreifer ausnutzen könnten, IAmpTokensRecipient(recipientImplementation).tokensReceived() ist.

Als Nächstes veranschaulichen wir, wie dieser Aufruf verwendet werden kann, um die RUNE eines Benutzers zu übertragen, während eine AMP-Token-Übertragung durchgeführt wird.

Schritt 1: Ein Anrufvertrag wird benötigt (wie unten gezeigt):

Schritt 2: Stellen Sie den Vertrag bereit, um die Angriffsadresse zu erhalten.

Schritt 3: Rufen Sie die ERC-1820-Vertragsschnittstelle (setInterfaceImplementer) auf, um die Schnittstelle zu registrieren.

ERC-1820-Adresse: 0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24

Vertragsschnittstelle: setInterfaceImplementer(Adresse toAddr, Bytes32 InterfaceHash, Adresse Implementierer)

Insbesondere ist toAddr die Empfangsadresse der AMP-Übertragung,

InterfaceHash – AmpTokensRecipient – ​​Hash:

0xfa352d6368bbc643bcf9d528ffaba5dd3e826137bc42f935045c6c227bd4c72a

interfaceHash ist der Hash von AmpTokensRecipient:

0xfa352d6368bbc643bcf9d528ffaba5dd3e826137bc42f935045c6c227bd4c72a

Implementer ist die in Schritt 2 erhaltene Angriffsadresse.

Schritt 4: Verleiten Sie einen Benutzer dazu, AMP an toAddr zu übertragen, um einen Rückruf auszulösen, und stehlen Sie gleichzeitig seine RUNE.

Angriff Nr. 3: Phishing-Angriff

Wie der Name schon sagt, verspricht der Angreifer bei einem Phishing-Angriff, unglaubliche Vorteile zu verschenken, um Benutzer dazu zu verleiten, bestimmte Vertragsoperationen durchzuführen. Hier stellen wir einen gängigen Phishing-Angriff vor.

Schritt 1: Der Angreifer gibt ein ERC-20-Token aus und kann es in jede Vertragsschnittstelle schreiben, die Signaturen beinhaltet.

Schritt 2: Erstellen Sie ein Handelspaar auf Uniswap oder einem anderen Swap;

Schritt 3: Airdrops allen Benutzern/Adressen anbieten, die RUNE-Token besitzen;

Die anfängliche Arbeit des Phishing-Angriffs wird im Wesentlichen durch die oben genannten Schritte abgeschlossen. Als nächstes muss der Angreifer nur darauf warten, dass Benutzer mit einem Swap handeln, und Benutzer riskieren, ihre RUNE zu verlieren, sobald sie Vorgänge wie Genehmigung, Übertragung usw. ausführen.

Um das Sicherheitsrisiko des THORChain-Vertragscodes weiter zu verifizieren, hat CoinEx außerdem mit dem Sicherheitsteam von SlowMist und PeckShield, zwei in der Branche bekannten Sicherheitsagenturen, diskutiert. Bestätigt von SlowMist und PeckShield besteht das oben genannte Sicherheitsrisiko.

Bisher haben wir verschiedene Arten von Angriffen sowie die Sicherheitsrisiken behandelt, denen Benutzer ausgesetzt sind.

Wie sollte das Projektteam den Vertragscode optimieren, um sich sicherer zu machen und die Vermögenswerte der Benutzer zu schützen?

Die einzige Antwort ist, bei der Verwendung von tx.origin vorsichtig zu sein.

Wie können normale Benutzer Risiken mindern und ihre Vermögenswerte vor Angriffen schützen, die unvermeidlich erscheinen? Das CoinEx-Sicherheitsteam macht folgende Vorschläge:

  1. Für Angriff Nr. 1: Verfolgen Sie bei einer Überweisung den geschätzten Gasverbrauch. Für einen regulären ETH-Transfer ist eine Gasgebühr von 21.000 mehr als genug. Seien Sie vorsichtig, wenn der Gasverbrauch diese Zahl weit übersteigt.
  2. Für Angriff Nr. 2: Isolieren Sie Ihre Token, indem Sie verschiedene Brieftaschen verwenden. Sie können verschiedene Token in verschiedenen Adressen speichern. Besondere Vorsicht ist geboten, wenn es um die Hot-Wallet-Adresse geht, die von Börsen angeboten wird.
  3. Für Attack No.3: Gier ist die Quelle allen Übels. Nehmen Sie nicht blind an einem Airdrop-Event teil.

Sicherheit war schon immer ein Hauptanliegen im Blockchain-Sektor. Alle Akteure, einschließlich Projektteams und Börsen, sollten der Sicherheit während des Projektbetriebs Priorität einräumen, die Vermögenswerte der Benutzer sicher und geschützt aufbewahren und gemeinsam das solide Wachstum der Blockchain-Industrie fördern.

Quellenlink