Dieser Artikel ist ein Beitrag der Community. Der Autor ist Minzhi He, ein Auditor bei CertiK.
Die Ansichten in diesem Artikel sind die des Verfassers und entsprechen möglicherweise nicht denen der Binance Academy.
TL;DR
Blockchain-Brücken sind für die Interoperabilität von Blockchains unerlässlich. Oft weisen sie jedoch Sicherheitslücken auf. Zu den häufigsten gehören eine unzureichende On-Chain- und Off-Chain-Validierung, Fehler bei der Abwicklung nativer Tokens und fehlerhafte Brücken-Konfigurationen. Es ist daher enorm wichtig, Blockchain-Brücken auf alle möglichen Arten von Angriffen zu testen und dabei sicherzustellen, dass die Prüflogik stimmt.
Einführung
Eine Blockchain-Brücke (Englisch: „Blockhain bridge“ oder „Crypto bridge“) ist ein Protokoll, das zwei Blockchains miteinander verbindet, um Interaktionen zwischen ihnen zu ermöglichen. Wer Bitcoins besitzt und sich an DeFi-Aktivitäten im Ethereum-Netzwerk beteiligen möchte, kann dies mittels einer Blockchain-Brücke tun, ohne seine Bitcoins verkaufen zu müssen.
Blockchain-Brücken sind von grundlegender Bedeutung für die Interoperabilität innerhalb des Blockchain-Ökosystems. Da sie jedoch mit mehreren On-Chain- und Off-Chain-Validierungen arbeiten, weisen sie verschiedene Schwachstellen auf.
Warum die Gewährleistung der Sicherheit von Blockchain-Brücken so wichtig ist
Blockchain-Brücken, die häufig in Form von Smart Contracts implementiert werden, speichern in der Regel die Tokens, die Nutzer von einer Blockchain auf eine andere übertragen möchten. Sie halten eine beträchtliche Menge an Tokens aus verschiedenen Cross-Chain-Transaktionen, was sie zu lukrativen Zielen für Hacker macht.
Darüber hinaus bieten Blockchain-Brücken aufgrund ihrer vielen Komponenten eine große Angriffsfläche. Daher sind Cross-Chain-Anwendungen ein beliebtes Ziel für Hacker, die mit einem einzigen Angriff eine große Menge an Kryptowährungen erbeuten wollen.
Gemäß den Schätzungen von CertiK waren 2022 mehr als 1,3 Mrd. USD an Verlusten auf die Angriffe auf Blockchain-Brücken zurückzuführen, was 36% der Gesamtverluste des Jahres ausmachte.
Häufige Sicherheitslücken von Blockchain-Brücken
Um die Sicherheit von Blockchain-Brücken zu verbessern, ist es wichtig, die größten Schwachstellen zu identifizieren und die Protokolle vor der Einführung entsprechend zu testen. Die häufigsten Sicherheitslücken lassen sich vier Bereichen zuordnen:
Unzureichende On-Chain-Validierung
Bei einfachen Blockchain-Brücken, insbesondere solchen, die für bestimmte dApps entwickelt wurden, ist die On-Chain-Validierung auf ein Minimum beschränkt. Diese Brücken nutzen ein zentrales Backend, um grundlegende Operationen wie Minting, Burning und Token-Transfers auszuführen, aber die gesamte Validierung erfolgt außerhalb der Blockchain.
Andere Blockchain-Brücken verwenden hingegen Smart Contracts, um Nachrichten zu validieren und On-Chain-Verifizierungen durchzuführen. Wenn ein Nutzer Mittel auf eine Blockchain einzahlt, generiert der Smart Contract eine signierte Nachricht und fügt die Signatur in die Transaktion ein. Diese Signatur dient als Beweis für die Einzahlung und wird zur Verifizierung des Auszahlungsantrags auf der anderen Blockchain verwendet. Solche Brücken sollten in der Lage sein, verschiedene Arten von Angriffen zu erkennen und zu verhindern, darunter gefälschte Einzahlungsbelege und Replay-Angriffe.
Weist der On-Chain-Validierungsprozess jedoch eine Sicherheitslücke auf, kann ein Hacker auch hier schweren Schaden anrichten. In dem Fall, dass eine Brücke den Merkle-Baum für die Validierung des Transaktionsdatensatzes nutzt, könnte ein Angreifer Beweise fälschen. Er wäre nun in der Lage, die Beweisvalidierung zu umgehen und neue Tokens in seinem Konto zu erstellen.
Bestimmte Blockchain-Brücken verwenden sogenannte Wrapped Tokens. Wenn ein Nutzer beispielsweise DAI von Ethereum auf die BNB Chain überträgt, werden seine DAI-Coins aus dem Ethereum-Kontrakt entnommen, und eine entsprechende Menge an Wrapped-DAI wird auf der BNB Chain ausgegeben.
Wird diese Transaktion jedoch nicht ordnungsgemäß validiert, könnte ein Angreifer einen bösartigen Kontrakt einsetzen, um die Wrapped Tokens von der Brücke an eine falsche Adresse zu leiten, indem er die Funktion manipuliert.
Angreifer benötigen außerdem die Genehmigung des Brückenkontrakts durch das Opfer, um Tokens mit der Funktion „transferFrom“ übertragen und vom Brückenkontrakt abziehen zu können.
Da hilft es nicht, dass viele Blockchain-Brücken von dApp-Nutzern leider eine generelle Einwilligung für Token-Transfers verlangen. Dies ist eine gängige Praxis, die zwar niedrigere Gasgebühren ermöglicht, aber zusätzliche Risiken mit sich bringt, da der Smart Contract dann auf eine unbegrenzte Anzahl von Tokens aus der Wallet des Nutzers zugreifen kann. Angreifer können die Sicherheitsmängel der fehlenden Validierung und der generellen Einwilligung für Token-Transfers ausnutzen, um die Kryptowährungen anderer Nutzer auf ihre eigene Wallet zu übertragen.
Unzureichende Off-Chain-Validierung
In einigen Brückensystemen spielt der Off-Chain-Backend-Server eine entscheidende Rolle bei der Verifizierung der Legitimität von Nachrichten, die von der Blockchain gesendet werden. Dies soll hier am Beispiel der Verifizierung von Einzahlungen aufgezeigt werden.
Eine Blockchain-Brücke mit Off-Chain-Validierung arbeitet folgendermaßen:
Nutzer interagieren mit der dApp, um Tokens in den Smart Contract auf die Ursprungs-Blockchain zu übertragen.
Die dApp sendet den Hash der Einzahlung über eine API an den Backend-Server.
Der Hash wird vom Server mehrfach überprüft. Wenn er als legitim erachtet wird, signiert ein Unterzeichner eine Nachricht und sendet die Signatur über die API zurück an die Nutzeroberfläche.
Die dApp verifiziert die Signatur und erlaubt dem Nutzer, seine Tokens von der Ursprungs-Blockchain auszuzahlen.
Der Backend-Server muss sicherstellen, dass die von ihm verarbeitete Einzahlung tatsächlich erfolgt ist und es sich nicht um eine Fälschung handelt. Er entscheidet, ob ein Nutzer Tokens von der Ursprungs-Blockchain auszahlen lassen kann, und ist daher ein attraktives Ziel für Angreifer.
Der Backend-Server muss die Struktur des durch die Transaktion ausgelösten Ereignisses sowie die Kontraktadresse, die das Ereignis ausgelöst hat, validieren. Wird letzteres vernachlässigt, könnte ein Angreifer einen bösartigen Kontrakt implementieren, um eine Einzahlung zu fälschen, die die gleiche Struktur wie eine legitime Einzahlung aufweist.
Wenn der Backend-Server nicht überprüft, von welcher Adresse das Ereignis ausging, würde er die Transaktion als gültig betrachten und die Nachricht signieren. Der Angreifer könnte dann den Transaktions-Hash an den Backend-Server senden, um die Verifizierung zu umgehen und die Tokens von der Ursprungs-Blockchain abzuziehen.
Fehler bei der Abwicklung nativer Tokens
Blockchain-Brücken implementieren unterschiedliche Ansätze für native Tokens und Utility-Tokens, um Cross-Chain-Transfers durchzuführen. Zum Beispiel ist im Ethereum-Netzwerk ETH der native Coin, während die meisten Utility-Tokens dem ERC-20-Standard folgen.
Wenn ein Nutzer seine ETH auf eine andere Blockchain übertragen möchte, muss er sie zunächst in den Brückenkontrakt einzahlen. Dazu fügt er die Coins einfach an die Transaktion an. Der ETH-Betrag kann durch Abfragen des Transaktionsfeldes „msg.value“ abgerufen werden.
Der Einzahlungsprozess für ERC-20-Tokens unterscheidet sich erheblich von dem für ETH. Um einen ERC-20-Token auf eine andere Blockchain zu übertragen, muss der Nutzer dem Brückenkontrakt zuerst die Auszahlung seiner Tokens erlauben. Nachdem er dies genehmigt und die Tokens in den Brückenkontrakt eingezahlt hat, vernichtet der Kontrakt entweder die Tokens des Nutzers mit der Funktion „burnFrom()“ oder er überträgt sie mit der Funktion „transferFrom()“ auf sich selbst.
Eine Möglichkeit, dies zu tun, ist die Verwendung einer „if-else“-Anweisung innerhalb derselben Funktion. Eine andere Möglichkeit besteht darin, zwei separate Funktionen – eine für jedes Szenario – zu erstellen. Der Versuch, ETH über die ERC-20-Einzahlungsfunktion einzuzahlen, kann zum Verlust der Mittel führen.
Im Rahmen der Verarbeitung von ERC-20-Einzahlungsanfragen geben die Nutzer in der Regel die Token-Adresse als Input für die Einzahlungsfunktion an. Dies stellt ein erhebliches Risiko dar, da während der Transaktion ein externer Aufruf von einer nicht vertrauenswürdigen Partei erfolgen kann. Eine gängige Praxis zur Risikominderung ist die Implementierung einer Whitelist, in die nur die von der Blockchain-Brücke unterstützten Tokens aufgenommen werden. Nur auf der Whitelist stehende Adressen dürfen als Argumente übermittelt werden. Durch dieses gezielte Herausfiltern von Token-Adressen durch das Projektteam können externe Aufrufe vermieden werden.
Ein weiteres Problem ergibt sich bei Cross-Chain-Transfers von ETH, da der native Token von Ethereum keine normale Adresse, sondern nur eine Nulladresse (0x000...0) besitzt. Dies ist insofern gefährlich, als durch die Übermittlung der Nulladresse an die Funktion die Whitelist-Prüfung umgangen werden kann, selbst wenn diese falsch implementiert wurde.
Wenn der Brückenkontrakt die Funktion „transferFrom“ aufruft, um Nutzerguthaben auf den Kontrakt zu übertragen, ergibt der externe Aufruf „false“, da in der Nulladresse keine Funktion „transferFrom“ implementiert ist. Die Transaktion kann jedoch trotzdem erfolgen, wenn der Kontrakt den Rückgabewert nicht angemessen handhabt. In diesem Fall haben Angreifer die Möglichkeit, die Transaktion auszuführen, ohne jemals irgendwelche Tokens an den Kontrakt zu übertragen.
Fehlerhafte Brücken-Konfigurationen
Das Whitelisting oder Blacklisting von Tokens und Adressen, die Zuweisung oder Änderung von Unterzeichnern und weitere grundlegende Konfigurationen sind von entscheidender Bedeutung für die Sicherheit einer Blockchain-Brücke. Alle Konfigurationen müssen korrekt sein, da selbst scheinbar triviale Versäumnisse zu erheblichen Verlusten von Mitteln der Nutzer führen können.
In der Tat gab es einen Vorfall, bei dem ein Angreifer aufgrund einer fehlerhaften Konfiguration die Prüfung der Transferaufzeichnungen erfolgreich passieren konnte. Das Projektteam führte einige Tage vor dem Hack ein Protokoll-Upgrade durch, bei dem eine Variable geändert wurde, die den Standardwert der vertrauenswürdigen Nachricht darstellte. Diese Änderung führte dazu, dass alle Nachrichten automatisch als verifiziert galten, sodass ein Angreifer eine beliebige Nachricht übermitteln und den Verifizierungsprozess umgehen konnte.
Wie sich die Sicherheit von Blockchain-Brücken verbessern lässt
Die vier beschriebenen Schwachstellen von Blockchain-Brücken zeigen die Herausforderungen im Hinblick auf den Schutz der Kryptowährungen der Nutzer in einem vernetzten Blockchain-Ökosystem. Für die Behebung solcher Sicherheitslücken gibt es keine Universallösung, sondern es jeder Fall muss individuell betrachtet werden.
So ist es beispielsweise schwierig, allgemeine Richtlinien für einen fehlerfreien Verifizierungsprozess zu erstellen, da jede Brücke eigene Prüfanforderungen hat. Die wirksamste Methode zur Verhinderung einer Umgehung der Verifizierung ist, die Brücke umfassend auf alle möglichen Arten von Angriffen zu testen und sicherzustellen, dass die Prüflogik stimmt.
Zusammenfassend lässt sich sagen, dass es unerlässlich ist, rigorose Tests auf potenzielle Angriffe durchzuführen und dabei den Fokus besonders auf die häufigsten Sicherheitslücken von Blockchain-Brücken zu legen.
Abschießende Gedanken
Aufgrund der großen Menge an Kryptowährungen, die in einer Cross-Chain-Brücke gespeichert sein können, sind diese seit langem ein Ziel für Angreifer. Durch umfassende Tests vor der Implementierung und Audits durch Dritte kann die Sicherheit von Blockchain-Brücken erhöht und damit das Risiko verheerender Hacks, von denen die Brücken in den letzten Jahren immer wieder betroffen waren, verringert werden. In einer Multi-Blockchain-Welt sind Blockchain-Brücken unverzichtbar, aber die Sicherheit muss beim Aufbau einer zuverlässigen Web3-Infrastruktur an erster Stelle stehen.
Weiterführende Lektüre
Was ist eine Blockchain-Brücke?
Was ist Cross-Chain-Interoperabilität?
Drei beliebte Blockchain-Brücken und deren Funktionsweise
Haftungsausschluss und Risikohinweis: Dieser Inhalt wird dir zu allgemeinen Informations- und Bildungszwecken präsentiert, ohne jegliche Zusicherung oder Garantie. Er ist weder als finanzielle, rechtliche oder sonstige professionelle Beratung noch als Empfehlung für den Kauf bestimmter Produkte oder Dienstleistungen zu verstehen. Du solltest deinen eigenen Rat von geeigneten professionellen Beratern einholen. Wenn der Artikel von einem Drittanbieter beigetragen wird, beachte bitte, dass die geäußerten Ansichten diejenigen des Drittanbieters sind und nicht unbedingt die der Binance Academy widerspiegeln. Bitte lies hier unseren vollständigen Haftungsausschluss für weitere Details. Die Preise für Kryptowährungen sind volatil. Der Wert deiner Anlage kann steigen oder fallen, und es kann sein, dass du den investierten Betrag nicht zurückerhältst. Die Verantwortung für deine Anlageentscheidungen liegt allein bei dir. Die Binance Academy haftet nicht für etwaige Verluste, die du erleidest. Dieses Material sollte nicht als finanzielle, rechtliche oder sonstige professionelle Beratung ausgelegt werden. Weitere Informationen findest du in unseren Nutzungsbedingungen und unserem Risikohinweis.