Mögliche Schwachstellen in Smart Contracts

Als Forscher, der die innovative Welt intelligenter Verträge untersucht, kann ich ihr revolutionäres Potenzial nicht genug betonen. Es ist jedoch wichtig anzuerkennen, dass diese selbstausführenden Vereinbarungen nicht immun gegen Manipulationen durch ruchlose Akteure sind.

Eine ineffektive Eingabeüberprüfung ist ein häufiges Problem, das es Angreifern ermöglicht, die Vertragsausführung durch unerwartete Eingaben zu beeinflussen. Darüber hinaus kann die falsche Anwendung der Geschäftslogik zu Schwachstellen führen, indem sie zu unerwarteten Ergebnissen oder logischen Lücken im Vertrag führt. Schließlich können falsch gehandhabte externe Anrufe, auch solche, die mit externen Datenquellen oder anderen Verträgen verknüpft sind, potenzielle Risiken bergen.

Wiedereintrittsangriffe stellen eine Schwachstelle in Smart Contracts dar, bei denen der Vertrag einen externen Aufruf an einen anderen Vertrag durchführt, bevor er seine eigenen Zustandsübergänge abschließt. Dadurch besteht für den aufgerufenen Vertrag die Möglichkeit, den ursprünglichen Aufrufer zu stören und möglicherweise einige Vorgänge mehr als einmal auszuführen. Die Folgen können unbeabsichtigte Aktionen oder sogar die Möglichkeit für Angreifer sein, den Vertragsstatus zu manipulieren, was zu einer Erschöpfung der Mittel oder anderen nachteiligen Auswirkungen führen kann.

Aufgrund potenzieller Risiken müssen Entwickler beim Umgang mit externen Verträgen oder Datenquellen wachsam sein. Um unerwünschte Aktionen und Sicherheitslücken zu verhindern, sollten sie externe Anrufe sorgfältig verwalten. Die sorgfältige Beachtung intelligenter Vertragssicherheitsmaßnahmen wie gründliche Tests ist für den Schutz von Verträgen vor neuen Bedrohungen von entscheidender Bedeutung.

Was sind Wiedereintrittsangriffe in Smart Contracts? „Reentry-Angriffe treten bei Smart Contracts auf, wenn der Vertrag externe Aufrufe an andere Verträge oder Funktionen durchführt, bevor er seine eigenen Zustandsänderungen abschließt.“Der Aufruf von Vertrag A an Vertrag B ermöglicht es Vertrag B, seine Interaktion mit Vertrag A wieder aufzunehmen, was möglicherweise bestimmte Funktionen wiederholt und zu unerwarteten und oft schädlichen Ergebnissen führt. Ein Beispiel wäre, wenn Vertrag A eine Transaktion mit Vertrag B initiiert, um Gelder zu überweisen, aber anschließend während der Interaktion seinen eigenen Status ändert.Die Rückruffunktion im Code von Vertrag B könnte einem Angreifer die Möglichkeit geben, in die Zustandsübergänge von Vertrag A einzugreifen, indem er die Übertragungsfunktion wiederholt auslöst, bevor sie vollständig abgeschlossen ist. Diese böswillige Aktion könnte dazu führen, dass der Angreifer während einer einzelnen Transaktion mehrmals erfolgreich Gelder aus Vertrag A abzieht.Im Jahr 2016 kam es zu einem berüchtigten Vorfall mit einer dezentralen autonomen Organisation (DAO) auf der Ethereum-Blockchain. Ein Hacker nutzte eine Schwachstelle im Smart-Contract-Code namens „Reentrancy Attack“ aus und ermöglichte es ihm, wiederholt Gelder aus dem DAO abzuheben. Das Ergebnis war der Verlust von Ether (ETH) im Wert von mehreren Millionen Dollar.Darüber hinaus erlebten verschiedene dezentrale Finanzplattformen (DeFi) wie Uniswap, Lendf.Me, BurgerSwap, SURGEBNB, Cream Finance und Siren Protocol erhebliche finanzielle Rückschläge aufgrund von Wiedereintrittsangriffen. Der durch diese Eingriffe verursachte Schaden lag zwischen 3,5 und 25 Millionen US-Dollar, was das anhaltende Risiko von Wiedereintrittsschwächen im DeFi-Sektor unterstreicht.

Wie Wiedereintrittsangriffe funktionieren

Wiedereintrittsangriffe nutzen die Interaktion zwischen aufeinanderfolgenden Funktionsaufrufen in Smart Contracts und externen Transaktionen aus. Durch die Manipulation dieser Sequenzen können Angreifer bestimmte Funktionen wiederholt auslösen, bevor sie abgeschlossen sind, was zu unerwünschten Aktionen wie ungerechtfertigten Geldtransfers führt.

Bevor der Zielvertrag die Verarbeitung seiner Änderungen abgeschlossen hat, gelingt es einem eindringenden Vertrag, ersteren dazu zu verleiten, Rückrufe an sich selbst auszuführen. Solche Handlungen können zu wiederholten Rückzügen oder unvorsichtigem Verhalten führen.

Wiedereintrittsangriffe in Smart Contracts, erklärt

Ein Angreifer initiiert eine Transaktion, indem er die Funktion „Auszahlen“ im Zielvertrag auslöst, die Ether sendet, bevor der Kontostand aktualisiert wird. Gleichzeitig enthält der Vertrag des Angreifers eine Fallback-Funktion, die die Funktion „Abheben“ erneut rekursiv aufruft und so mehr Geld aus dem Vertrag des Opfers abzieht, bevor der Kontostand aktualisiert wird.

Lassen Sie uns die Funktionsweise von Wiedereintrittsangriffen anhand eines vereinfachten Beispiels erläutern:

Intelligenter Vertrag mit „Auszahlung“-Funktion

Es gibt einen Smart-Vertrag für digitale Geldbörsen, der Benutzerguthaben verwaltet und über eine Auszahlungsfunktion für die Abwicklung von Geldabhebungen verfügt. Benutzer können diese Funktion nutzen, um ihre Token oder Ether aus dem Smart Contract in ihre individuellen Wallets zu übertragen.

Benutzerinteraktion und Funktionsausführung

Ein Nutzer initiiert selbständig eine Auszahlung von seinem digitalen Wallet. Mithilfe der Auszahlungsfunktion geben sie den angegebenen Betrag ein, den sie abheben möchten.

Als Forscher, der sich mit der Funktionsweise von Finanztransaktionen beschäftigt, kann ich erklären, dass bei der Initiierung der Funktion „Auszahlen“ geprüft wird, ob der Benutzer über ausreichende Mittel für die vorgeschlagene Auszahlung verfügt. Ist diese Bedingung erfüllt, wird der benötigte Betrag an die angegebene Adresse des Nutzers überwiesen.

Externer Anruf

In dieser Phase wird die Verwundbarkeit des Vertrags deutlich. Der externe Aufruf zu einem anderen Vertrag oder Konto erfolgt vor der Abbuchung der Auszahlung vom Guthaben des Nutzers.

Rekursiver Aufruf

Wenn der Code eines externen Vertrags eine Funktion enthält, die es ihm ermöglicht, den ursprünglichen Vertrag noch einmal aufzurufen, beispielsweise eine neu definierte „Zurückziehen“-Funktion, führt dieser Aufbau zu einer rekursiven Schleife. Folglich kann die Methode „Zurückziehen“ wiederholt ausgelöst werden, bevor sie abgeschlossen ist.

Wiedereintrittsausbeutung

Als Forscher, der sich mit intelligenten Verträgen beschäftigt, bin ich auf eine potenzielle Schwachstelle in einigen Wallet-Implementierungen gestoßen. Ein Angreifer könnte dies ausnutzen, indem er einen böswilligen Vertrag erstellt und eine Schleife in der Funktionalität des Wallets ausnutzt. So könnte es ablaufen:

Fallback-Funktion

In bestimmten Szenarien kann ein Angreifer die Fallback-Funktion eines Smart Contracts – eine besondere Funktion, die ausgelöst wird, wenn der Vertrag ohne Daten oder Ethereum aufgerufen wird – für böswillige Zwecke ausnutzen. Durch die kontinuierliche Aktivierung dieser Funktion während der Geldabwicklung können Reentrancy-Angriffe ausgeführt werden.

Staatliche Manipulation und wiederholte Abhebungen

Ein Angreifer kann die „Abheben“-Funktion mehrmals in einer einzelnen Transaktion verwenden, da der gezielte Wallet-Vertrag die Kontostände erst nach der Verarbeitung externer Aufrufe aktualisiert. Folglich ermöglicht diese Schwachstelle unbefugte Geldabhebungen, wodurch der Angreifer überschüssige Gelder stehlen und den Benutzern des Wallet-Vertrags erhebliche finanzielle Verluste zufügen kann.

Folgen von Wiedereintrittsangriffen Benutzer intelligenter Verträge sind erheblichen Risiken durch Wiedereintrittsangriffe ausgesetzt, da erhebliche finanzielle Verluste möglich sind.Wiedereintrittsangriffe können in anfälligen Smart Contracts zu unbefugten Transaktionsergebnissen wie ungerechtfertigten Bargeldabhebungen oder Geldmanipulationen führen. Böswillige Akteure nutzen diese Schwachstelle aus, indem sie wiederholt auf die Vertragsressourcen zugreifen und diese beanspruchen, was zu erheblichem finanziellen Schaden für Benutzer führt, die Vermögenswerte im kompromittierten Vertrag hinterlegt oder gehalten haben.Das Vertrauen in die Sicherheit und Zuverlässigkeit intelligenter Verträge und der Blockchain-Technologie könnte durch Wiedereintrittsangriffe untergraben werden. Diese Schwächen können zu erheblichen Schäden führen, wie bemerkenswerte Vorfälle wie der DAO-Verstoß im Ethereum-Netzwerk im Jahr 2016 zeigen, der zu erheblichen finanziellen Verlusten und Reputationsschäden für die Community führte.Als Forscher, der die Auswirkungen von Wiedereintrittsangriffen auf Blockchain-Plattformen und -Projekte untersucht, habe ich herausgefunden, dass diese Angriffe weitreichende Folgen haben können, die über nur kurzfristige finanzielle Auswirkungen hinausgehen. Beispielsweise kann es zu behördlichen und rechtlichen Prüfungen kommen, die das Vertrauen der Anleger untergraben und möglicherweise den Ruf der betroffenen Blockchain-Ökosysteme schädigen. Diese Wahrnehmung der Verwundbarkeit könnte dazu führen, dass Benutzer Vorsicht walten lassen, wenn sie sich mit Smart Contracts beschäftigen oder in dezentrale Anwendungen (DApps) investieren, was letztendlich die Einführung und Verbreitung der Blockchain-Technologie insgesamt verlangsamt.

So entschärfen Sie Wiedereintrittsangriffe

Als Vertragsanalyst empfehle ich dringend, bei der Erstellung und Prüfung von Smart Contracts optimale Verfahren einzuhalten, um die mit Wiedereintrittsangriffen verbundenen Risiken zu minimieren.

Ein Ansatz besteht darin, etablierte Codierungsbibliotheken zu nutzen, die einen guten Ruf für Sicherheit haben. Der Grund dafür ist, dass diese Bibliotheken von der Entwicklergemeinschaft strengen Tests und Prüfungen unterzogen wurden, wodurch das Risiko der Einführung von Schwachstellen oder Schwachstellen in Ihrem Code minimiert wird.

Entwickler sollten zusätzlich Sicherheitsmaßnahmen wie das „Checks-Effects-Interaction“-Design einsetzen, das das Risiko von Wiedereintrittsangriffen verringert, indem es garantiert, dass Zustandsanpassungen als eine einzige, unteilbare Einheit erfolgen. Als zusätzliche Vorsichtsmaßnahme gegen diese Art von Schwachstellen können Entwickler, sofern vorhanden, wiedereintrittssichere Smart-Contract-Entwicklungs-Frameworks nutzen.

Einfacher ausgedrückt verringert die Verwendung von Sicherheits-Frameworks die Notwendigkeit für Entwickler, Schutzmaßnahmen gegen Wiedereintrittsangriffe aufgrund der inhärenten Sicherheitsfunktionen dieser Frameworks manuell zu implementieren. Dennoch ist es für Entwickler von entscheidender Bedeutung, über die sich entwickelnden Blockchain-Bedrohungen und -Schwachstellen auf dem Laufenden zu bleiben.

Weiterlesen

2024-05-16 15:45