Dieser Artikel ist eine Community-Einreichung. Der Autor ist Minzhi He, Auditor bei CertiK.
Die Ansichten in diesem Artikel sind die des Mitwirkenden/Autors und spiegeln nicht unbedingt die Ansichten der Binance Academy wider.
TL;DR
Blockchain-Brücken sind von grundlegender Bedeutung für die Erreichung der Interoperabilität im Blockchain-Bereich. Die Sicherheit von Blockchain-Brücken ist von größter Bedeutung. Zu den häufigsten Sicherheitslücken bei Bridges gehören Probleme mit der On-Chain- und Off-Chain-Validierung, unsachgemäße Verwaltung nativer Token und Fehlkonfigurationen. Es wird empfohlen, die Bridge gegen alle möglichen Angriffsvektoren zu testen, um eine solide Verifizierungslogik sicherzustellen.
Einführung
Eine Blockchain-Brücke (oder „Blockchain-Brücke“) ist ein Protokoll, das zwei Blockchains verbindet, um Interaktionen zwischen ihnen zu ermöglichen. Wenn Sie Bitcoins besitzen, aber an DeFi-Aktivitäten im Ethereum-Netzwerk teilnehmen möchten, können Sie dies mit einer Blockchain-Brücke tun, ohne Ihre Bitcoins verkaufen zu müssen.
Blockchain-Brücken sind von grundlegender Bedeutung für die Erreichung der Interoperabilität im Blockchain-Bereich. Sie arbeiten mit verschiedenen On-Chain- und Off-Chain-Validierungen und weisen daher unterschiedliche Sicherheitslücken auf.
Warum ist Brückensicherheit so wichtig?
Im Allgemeinen enthält eine Bridge den Token, den ein Benutzer von einer Blockchain auf eine andere übertragen möchte. Bridges werden oft als Smart Contracts eingesetzt und enthalten eine beträchtliche Menge an Token, wenn sich Cross-Chain-Transfers ansammeln, was sie zu potenziell lukrativen Zielen für Hacker macht.
Darüber hinaus weisen Blockchain-Brücken viele Angriffspunkte auf, da sie viele Komponenten umfassen. Vor diesem Hintergrund werden böswillige Benutzer dazu motiviert, kettenübergreifende Anwendungen ins Visier zu nehmen, um große Beträge zu stehlen.
Nach Schätzungen von CertiK verursachten Angriffe auf Brücken im Jahr 2022 Schäden in Höhe von mehr als 1,3 Milliarden Dollar, was 36 % der Gesamtschäden des Jahres entspricht.
Häufige Schwachstellen in der Bridge-Sicherheit
Um die Sicherheit von Bridges zu erhöhen, ist es wichtig, ihre allgemeinen Schwachstellen zu verstehen und sie vor der Veröffentlichung zu testen. Diese Schwachstellen können in die folgenden vier Bereiche eingeteilt werden.
Schwache On-Chain-Validierung
Bei einfachen Brücken, insbesondere solchen, die für bestimmte DApps entwickelt wurden, wird die On-Chain-Validierung auf ein Minimum beschränkt. Diese Brücken basieren auf einem zentralen Backend, um grundlegende Vorgänge wie das Ausgeben, Brennen und Übertragen von Token durchzuführen, während alle Überprüfungen außerhalb der Kette durchgeführt werden.
Andererseits verwenden andere Arten von Brücken intelligente Verträge, um Nachrichten zu validieren und On-Chain-Verifizierungen durchzuführen. Wenn in diesem Szenario ein Benutzer Geld auf eine Blockchain einzahlt, generiert der Smart Contract eine signierte Nachricht und gibt die Signatur in der jeweiligen Transaktion zurück. Diese Signatur dient als Einzahlungsnachweis und wird verwendet, um die Auszahlungsanfrage des Benutzers auf der anderen Blockchain zu überprüfen. Dieser Prozess muss in der Lage sein, verschiedene Sicherheitsangriffe, einschließlich Replay-Angriffe und gefälschte Einzahlungsaufzeichnungen, zu verhindern.
Sollte es jedoch während des On-Chain-Validierungsprozesses zu einer Schwachstelle kommen, könnte ein Hacker ernsthaften Schaden anrichten. Wenn eine Bridge beispielsweise den Merkle-Baum zur Validierung des Transaktionsdatensatzes verwendet, kann ein Angreifer gefälschte Beweise fälschen. Das heißt, wenn der Validierungsprozess angreifbar ist, können sie die Beweisvalidierung umgehen und neue Token auf ihren Konten erstellen.
Einige Brücken implementieren das Konzept der „verpackten Token“. Wenn ein Benutzer beispielsweise DAI von Ethereum auf die BNB-Kette überträgt, wird sein DAI aus dem Ethereum-Vertrag zurückgezogen und ein entsprechender Betrag an verpacktem DAI wird auf der BNB-Kette ausgegeben.
Wenn diese Transaktion jedoch nicht ordnungsgemäß validiert wird, kann ein Hacker einen böswilligen Vertrag einsetzen und die Funktion manipulieren, um die verpackten Token der Bridge an eine falsche Adresse weiterzuleiten.
Hacker benötigen Opfer, die den Brückenvertrag genehmigen, um Token mithilfe der „transferFrom“-Funktion zu übertragen und Vertragswerte zu stehlen.
Leider wird dieses Problem noch dadurch verschlimmert, dass viele Bridges uneingeschränkten Zugriff (unbegrenzte Token-Genehmigung) auf die Token der DApp-Benutzer verlangen. Dies ist eine gängige Praxis, die die Gasgebühren senkt, aber zusätzliche Risiken birgt, da ein Smart Contract auf eine unbegrenzte Anzahl von Token aus der Wallet des Benutzers zugreifen kann. Einige Hacker können die fehlende Validierung und den uneingeschränkten Zugriff ausnutzen, um Token von anderen Benutzern zu stehlen.
Schwache Off-Chain-Validierung
In einigen Brückensystemen spielt der Off-Chain-Backend-Server eine entscheidende Rolle bei der Überprüfung der Legitimität von Nachrichten, die von der Blockchain gesendet werden. In diesem Fall konzentrieren wir uns auf die Überprüfung der Einzahlungstransaktionen.
Eine Blockchain-Brücke mit Off-Chain-Validierung funktioniert wie folgt:
Benutzer interagieren mit der DApp, um Token in den Smart Contract auf der Ursprungsblockchain einzuzahlen.
Anschließend sendet die DApp den Hash der Einzahlungstransaktion über eine API an den Backend-Server.
Der Transaktions-Hash unterliegt mehreren Validierungen durch den Server. Wenn dies als legitim erachtet wird, signiert ein Unterzeichner eine Nachricht und sendet die Signatur über die API an die Benutzeroberfläche zurück.
Nach Erhalt der Signatur überprüft die DApp diese und ermöglicht dem Benutzer, seine Token aus der ursprünglichen Blockchain abzuheben.
Der Backend-Server muss sicherstellen, dass die verarbeitete Einzahlungstransaktion tatsächlich stattgefunden hat und nicht gefälscht wurde. Dieser Server bestimmt, ob ein Benutzer Token auf der Zielblockchain abheben kann. Daher ist es ein wertvolles Ziel für Hacker.
Der Backend-Server muss die Struktur des von der Transaktion ausgegebenen Ereignisses sowie die Adresse des Vertrags, der dieses Ereignis ausgegeben hat, validieren. Wenn Letzteres vernachlässigt wird, kann ein Hacker einen böswilligen Vertrag einsetzen, um ein Einzahlungsereignis mit der gleichen Struktur wie ein legitimes Ereignis zu fälschen.
Wenn der Backend-Server nicht prüft, welche Adresse das Ereignis ausgegeben hat, betrachtet er diese Transaktion als gültig und signiert die Nachricht. Der Hacker kann den Transaktions-Hash an das Backend senden, die Überprüfung umgehen und ihm ermöglichen, die Token aus der Blockchain zu entfernen.
Schlechte Verwaltung nativer Token
Bridges verwenden unterschiedliche Ansätze für den Umgang mit nativen Token und Utility-Token. Im Ethereum-Netzwerk ist beispielsweise der native Token ETH und die meisten Utility-Token entsprechen dem ERC-20-Standard.
Wenn ein Benutzer ETH auf eine andere Blockchain übertragen möchte, muss er zunächst die Token im Brückenvertrag hinterlegen. Dazu hängt der Nutzer einfach ETH an die Transaktion an und der Betrag kann über die Funktion „msg.value“ im Transaktionsfeld abgerufen werden.
Die Einzahlung von ERC-20-Tokens unterscheidet sich erheblich von der Einzahlung von ETH. Um einen ERC-20-Token einzuzahlen, muss der Benutzer zunächst dem Brückenvertrag erlauben, seine Token auszugeben. Nach der Genehmigung und Hinterlegung der Token im Brückenvertrag brennt der Vertrag die Token des Benutzers mithilfe der Funktion „burnFrom()“ oder überträgt die Token mithilfe der Funktion „transferFrom()“ in den Vertrag.
Ein Ansatz zur Unterscheidung besteht darin, eine if-else-Anweisung innerhalb derselben Funktion zu verwenden. Ein anderer Ansatz besteht darin, zwei separate Funktionen zur Handhabung jedes Szenarios zu erstellen. Der Versuch, ETH über die ERC-20-Einzahlungsfunktion einzuzahlen, kann zum Verlust von Geldern führen.
Bei ERC-20-Einzahlungsanfragen geben Benutzer normalerweise die Token-Adresse als Eingabe für die Einzahlungsfunktion an. Dieser Vorgang birgt Risiken, da es während der Transaktion zu unzuverlässigen externen Aufrufen kommen kann. Die Implementierung einer Whitelist, die nur von der Bridge unterstützte Token enthält, ist eine gängige Praxis, um Risiken zu minimieren. Als Argumente werden nur Adressen auf der Whitelist akzeptiert. Dadurch werden externe Aufrufe vermieden, da das Projektteam die Token-Adresse bereits gefiltert hat.
Allerdings kann es auch zu Problemen kommen, wenn Bridges die kettenübergreifende Übertragung von nativen Tokens abwickeln, da ein natives Token keine Adresse hat. Eine Nulladresse (0x000...0) steht stellvertretend für den nativen Token. Dies kann problematisch sein, da die Übermittlung der Adresse Null an die Funktion dazu führen kann, dass sie die Whitelist-Prüfung umgeht, selbst wenn sie falsch implementiert ist.
Wenn der Brückenvertrag die Funktion „transferFrom“ aufruft, um Benutzerressourcen auf den Vertrag zu übertragen, gibt der externe Aufruf an Adresse Null „false“ zurück, da an Adresse Null keine Funktion „transferFrom“ implementiert ist. Die Transaktion kann jedoch trotzdem stattfinden, wenn der Vertrag den Rückgabewert nicht ordnungsgemäß verarbeitet. Dies bietet Hackern die Möglichkeit, die Transaktion auszuführen, ohne Token in den Vertrag zu übertragen.
Falsche Konfiguration
In den meisten Blockchain-Brücken ist eine privilegierte Rolle für das Whitelisting von Token und Adressen, das Zuweisen oder Ändern von Unterzeichnern und andere wichtige Einstellungen verantwortlich. Es ist von entscheidender Bedeutung, sicherzustellen, dass alle Einstellungen korrekt sind, da selbst scheinbar triviale Versäumnisse zu erheblichen Verlusten führen können.
Tatsächlich gab es einen Vorfall, bei dem der Hacker aufgrund einer falschen Konfiguration die Überprüfung des Übertragungsprotokolls umgehen konnte. Einige Tage vor dem Angriff führte das Projektteam ein Protokollupdate durch, bei dem eine Variable geändert wurde. Die Variable wurde verwendet, um den Standardwert der vertrauenswürdigen Nachricht darzustellen. Aufgrund dieser Änderung galten alle Nachrichten automatisch als verifiziert, sodass ein Angreifer eine beliebige Nachricht senden und den Verifizierungsprozess erfolgreich bestehen konnte.
So verbessern Sie die Brückensicherheit
Die oben erläuterten vier häufigsten Bridge-Schwachstellen verdeutlichen die Herausforderungen bei der Gewährleistung der Sicherheit in einem vernetzten Blockchain-Ökosystem. Für den Umgang mit jeder dieser Schwachstellen gibt es wichtige Überlegungen, und es gibt keinen Leitfaden, der für alle gilt.
Beispielsweise ist die Bereitstellung allgemeiner Richtlinien zur Gewährleistung eines fehlerfreien Verifizierungsprozesses eine Herausforderung, da jede Brücke ihre eigenen Verifizierungsanforderungen hat. Der effektivste Ansatz zur Verhinderung einer Umgehung der Verifizierung besteht darin, die Bridge gründlich gegen alle möglichen Angriffsvektoren zu testen und sicherzustellen, dass die Verifizierungslogik solide und konsistent ist.
Kurz gesagt: Es ist wichtig, strenge Tests gegen mögliche Angriffe durchzuführen und den häufigsten Sicherheitslücken in Brücken besondere Aufmerksamkeit zu schenken.
Schlussbetrachtungen
Aufgrund ihres hohen Werts sind Cross-Chain-Brücken seit langem ein Ziel von Hackern. Entwickler können die Sicherheit ihrer Brücken durch Tests vor der Bereitstellung und Prüfungen durch Dritte verbessern und so das Risiko verheerender Hackerangriffe wie in den letzten Jahren verringern. Brücken sind in einer Welt mit mehreren Blockchains unerlässlich, aber Sicherheit muss beim Entwurf und der Entwicklung einer effektiven Web3-Infrastruktur Priorität haben.
Weiterführende Literatur
Was ist eine Blockchain-Brücke?
Was ist kettenübergreifende Interoperabilität?
Drei beliebte Krypto-Brücken und wie sie funktionieren
Was sind verpackte Token?
Risikohinweis und Haftungsausschluss: Dieser Inhalt wird Ihnen „wie besehen“ nur zu Informations- und Bildungszwecken und ohne Gewährleistung jeglicher Art präsentiert. Der Inhalt sollte nicht als finanzielle, rechtliche oder professionelle Beratung ausgelegt werden und ist nicht als Empfehlung für den Kauf eines bestimmten Produkts oder einer bestimmten Dienstleistung gedacht. Sie sollten sich selbst von professionellen Beratern beraten lassen. Bei Beiträgen und Artikeln, die von Drittautoren eingereicht werden, beachten Sie bitte, dass die geäußerten Meinungen die des jeweiligen Autors sind und nicht unbedingt die Meinung der Binance Academy widerspiegeln. Für weitere Einzelheiten lesen Sie bitte unseren Haftungsausschluss hier. Die Preise digitaler Vermögenswerte können volatil sein. Der Wert Ihrer Investition kann steigen oder fallen und Sie erhalten den investierten Betrag möglicherweise nicht zurück. Sie allein sind für Ihre Anlageentscheidungen verantwortlich und Binance Academy ist nicht für etwaige Verluste verantwortlich. Dieses Material sollte nicht als finanzielle, rechtliche oder professionelle Beratung ausgelegt werden. Weitere Informationen finden Sie in unseren Nutzungsbedingungen und Risikohinweisen.

