Sicherheitsüberlegungen überschreiben alle anderen Überlegungen in der Software im Allgemeinen und in der Blockchain im Besonderen. Wenn die Sicherheit ausfällt, ist nichts anderes wichtig. Blockchain beweist, dass dezentrale, vertrauenswürdige Transaktionen funktionieren, aber dennoch bleiben viele Sicherheitslücken in der Blockchain bestehen.

Sicherheits-Exploits gibt es auf Entwurfs- und Architekturebene, in der Codierungsphase und in der Betriebsphase. Und falls Sie sich gefragt haben, ja, die Blockchain kann gehackt werden.

Sicherheitslücken in der Blockchain-Sicherheit – Von hier in die Ewigkeit

Diamanten sind für immer und intelligente Verträge gelten so lange, wie die Blockchain, auf der sie bereitgestellt werden, weiterhin verwendet wird. Folglich bleiben alle Fehler und Sicherheitslücken in der Blockchain so lange bestehen, wie es der Vertrag tut.

In der Regel bietet jede Blockchain eine eigene Programmiersprache für die Implementierung intelligenter Verträge. Lasst uns genauer hinschauen.

Intelligente Vertragssprachen

Blockchain-Umgebungen enthalten ihre eigenen Sprachen für die Entwicklung intelligenter Verträge.

Die Ethereum-Plattform enthält beispielsweise die Solidity-Sprache zum Schreiben intelligenter Verträge. Die Macher haben Solidity als eine vollständige Turing-Sprache entworfen.

Eine vollständige Turing-Sprache ermöglicht es dem Programmierer im Wesentlichen, alles zu implementieren, was das zugrunde liegende System kann. Dies gibt Programmierern die Möglichkeit, Schleifen im Code zu implementieren, die möglicherweise Sicherheitslücken in der Blockchain verursachen können.

Vollständigkeit

Turing komplette Sprachen enthalten von Natur aus Komplexität, und Komplexität führt zu Fehlern und Schwachstellen.

Das Bitcoin-Netzwerk verfügt auch über eine Programmiersprache, die als Skript bezeichnet wird. Das Skript ist absichtlich nicht vollständig, um die Sicherheit zu erhöhen.

Je weniger Optionen einem Programmierer zur Verfügung stehen, desto weniger wahrscheinlich ist es, dass Blockchain-Sicherheitslücken in das System gelangen.

Um das Risiko zu minimieren, dass fehlerhafter Code in die Wildnis entlassen wird, müssen Programmierer die allgemeinen Fallstricke und Anti-Patterns verstehen, die mit der intelligenten Vertragsprogrammierung verbunden sind. (Anti-Patterns stellen schlechte Programmierpraktiken dar).


Der DAO-Hack: Das Wiedereintrittsproblem

Blockchain Sicherheitslücken Bild

Der DAO Hack

Das Wiedereintrittsproblem ist wahrscheinlich das höchste Problem unter Programmierern für Blockchain-Sicherheitslücken, die in intelligenten Verträgen codiert sind. Durch Wiedereintritt wird ein Konto durch mehrere Ausgaben für dieselbe Transaktion belastet. Der Anwendungsfall der Verarbeitung von Rückerstattungen eignet sich für diesen Exploit. Dieser Fehler betrifft jedoch jede Art von Transaktion, wenn er nicht in der Entwurfs- und Codierungsphase behoben wird.

Bei einem der bislang berüchtigtsten Kryptowährungsangriffe nutzten Hacker des DAO den Wiedereintritt aus. Kein Organisationsleiter gab vor, wie das DAO (oder die dezentrale autonome Organisation) geführt werden soll, und das DAO schlug vor, den Benutzern die Möglichkeit zu geben, über Projekte abzustimmen, in die investiert werden soll.

Im ersten Monat wurden über 150 Millionen US-Dollar an Finanzmitteln aufgebracht. Am 17. Juni 2016 haben Hacker durch den Wiedereintrittsfehler 50 Millionen US-Dollar aus der Organisation abgezogen. Die harte Gabelung von Ethereum Classic (ETC) zu Ethereum (ETH) führte zu dem Versuch, die durch diesen Hack verursachten Probleme zu lösen.

Anti-Pattern anfällig für Wiedereintritt

Eine anfällige Wiedereintrittslogik für Code sieht folgendermaßen aus:

Funktion zur Verarbeitung einer Zahlung () {

(1) Überprüfung der Gültigkeit der Transaktion, des Empfängers und des Kontostands;

(2) die Transaktion abwickeln;

(3) Aktualisieren des Status des Systems, um anzuzeigen, dass die Transaktion verarbeitet wurde;

}}

Auf den ersten Blick sieht die Logik korrekt und vollständig aus, aber der Fehler liegt in der Reihenfolge von Schritt 2 vor Schritt 3.

Während der erste Aufruf der Funktion den Verarbeitungsschritt 2 fortsetzt, kann ein weiterer Aufruf für dieselbe Transaktion in die Funktion eingegeben werden. Da die Statusinformationen in ihrem Ausgangszustand verbleiben und in Schritt 3 noch nicht verarbeitet wurden, wird der zweite Aufruf als gültige zu verarbeitende Transaktion ausgecheckt.

Folglich gibt das System ein zweites Mal Währung für dieselbe Verpflichtung aus. Hacker beschleunigen mehrere Transaktionen mit der Funktion, bevor der Status ordnungsgemäß festgelegt wird.

Heilung für Wiedereintritt

Diese Änderung des Algorithmus behebt das obige Problem:

Funktion zur Verarbeitung einer Zahlung () {

(1) Überprüfung der Gültigkeit der Transaktion, des Empfängers und des Kontostands;

(2) Aktualisieren des Status des Systems, um anzuzeigen, dass die Transaktion verarbeitet wurde;

(3) die Transaktion abwickeln;

}}

Der Code muss alle erforderlichen Ausnahmebehandlungen und alle logischen Abhängigkeiten berücksichtigen.

Überlauf

Überlauf ist eine weitere häufige Sicherheitslücke, die Programmierer beachten müssen.

Einige Programmiersprachen bieten eine starke Typisierung, andere eine schwache Typisierung. Stark typisierte Sprachen verweigern es Programmierern beispielsweise, einer numerischen Variablen Zeichenfolgendaten zuzuweisen, und schwach typisierte Sprachen erlauben solche Aktionen.

Stark typisierte Sprachen erzwingen Bereichsbeschränkungen. Wenn ein Array aus zehn Elementen besteht, können Programmierer nicht versuchen, auf das elfte Element zuzugreifen. Schwach typisierte Sprachen erlauben ein solches Verhalten, es kommt jedoch zu Abstürzen. Wenn der maximal zulässige Wert einer Variablen 99 beträgt und Sie ihr einen Wert von 100 zuweisen, beobachten Sie, wie sie beim Ausführen abstürzt!

Folglich ist Überlauf ein Exploit, den Hacker verwenden. Wenn ein Hacker einem intelligenten Vertrag einen Parameter zuführt, der außerhalb des Bereichs liegt, den der Code verarbeiten kann, kommt es zu einem Absturz. Ein solcher Absturz führt zu mehreren Exploits. Der Absturz kann einen Denial-of-Service-Angriff (DDoS-Angriff) auslösen, und wichtige Informationen zu den Interna des Systems werden manchmal in Fehlermeldungen angezeigt.

In Webanwendungen füllen Hacker den Speicher häufig mit ihrem eigenen Schadcode. Wenn das Programm abstürzt und an eine zufällige Stelle im Speicher gelangt, wird der Schadcode ausgeführt.

Schwach typisierte Sprachen bieten Leistung und dynamische Flexibilität, erfordern jedoch auch ein strengeres Design und strengere Tests, um gegen Angriffe geschützt zu sein.

Die vielköpfige Hydra

Blockchain Sicherheitslücken Bild

Eine Vielzahl von Sicherheitsproblemen plagt die Software-Welt. Mit dem Aufkommen neuer Technologien treten neue Bedrohungen auf. Neben den oben genannten Exploits stellen diese bemerkenswerten Mängel nur einige der vielen anderen Sicherheitslücken in der Blockchain dar.

Schlechte Kryptographie verursacht viele Kopfschmerzen. Kryptographie sorgt für Privatsphäre, und wenn die Privatsphäre verletzt wird, bricht alles. Das IOTA-Team hat den Fehler gemacht, in der ersten Version seines Produkts eine eigene kryptografische Bibliothek von Grund auf neu zu schreiben. Das Problem beim Rollen Ihrer eigenen Kryptografie besteht darin, dass jede komplexe Software Fehler enthält, sodass Sie garantiert über fehlerhafte Kryptografie verfügen.

Etablierte kryptografische Bibliotheken überleben die Überprüfung durch Akademiker und erweisen sich im Laufe der Zeit durch das Leben in freier Wildbahn als zuverlässig.

In der Welt der Geldbörsen muss die Zufallszahlengenerierung wirklich zufällig sein. Insbesondere in den frühen Tagen der Kryptowährung haben einige Brieftaschen diese Anforderung nicht erfüllt.

Kryptowährungsadressen erfordern Adressen, die eindeutig sein müssen. Die Eindeutigkeit kommt von einem Zufallszahlengenerator, und der Zufallszahlengenerator benötigt einen Startwert, um den Prozess zu starten. Wenn der Startwert nicht wirklich zufällig ist, schlägt das System fehl.

Ein Ergebnis einer schlechten Zufälligkeit bedeutet, dass dieselbe Adresse mehrmals erstellt wird. Stellen Sie sich das Szenario vor, in dem eine Brieftasche Person A die Adresse X und später Person B die Adresse X zuweist. Wenn eine Zahlung an die Adresse X geht, geht sie nur an eine Person. Welche Person bekommt das Geld?

Ein weiteres Problem mit schlechter Zufälligkeit tritt auf, wenn ein Hacker den Algorithmus ermittelt, der zum Erstellen des Seeds verwendet wird. Der Hacker regeneriert den Samen für sich selbst und besitzt das System.

Die Straße geht für immer weiter und die Party endet nie

Sicherheit ist ein nie endender Kampf, und selbst wenn Programmierer, Architekten und Tester alle Schwachstellen aus dem Code entfernen, bleiben betriebliche Schwachstellen bestehen.

In einer Proof of Work-Umgebung wird die Integrität zerstört, wenn schlechte Akteure 51% des Netzwerks kontrollieren. Die Spieltheorie bietet Abschwächung für diesen Angriff. Eine neue Kryptowährung mit einem kleinen Netzwerk birgt das größte Risiko für diesen Angriff. Ein Angriff von 51% zerstört jedoch den Wert der Währung, sodass sich Angreifer nur selbst verletzen.

Blockchains leben im Internet und sind Hackern genauso ausgesetzt wie das Internet. Angenommen, Sie kaufen Münzen an einer Börse auf einer Website. Injection-Angriffe, Cross-Site-Scripting, Phishing-Angriffe und alle anderen traditionellen Website-Hacks sind vorherrschend.

Abschließende Gedanken

So wie Programmierer sich vor Fehlern schützen, müssen Programmierer die Sicherheit in ihre Entwicklung einbeziehen. Es gibt einige Tools, die Programmierern bei der Aufgabe helfen, aber Programmierer müssen zuerst ihre eigenen Schwachstellen verstehen, um sich vor ihnen zu schützen.

Das Dezentrales Anwendungssicherheitsprojekt (DASP) strebt an, ein Repository für Informationen und Ressourcen zur Blockchain-Sicherheit zu sein. Sie orientieren sich etwas an der Öffnen Sie das Web Application Security Project (OWASP).. In den jährlichen OWASP Top 10 sind definitiv die derzeit vorhandenen primären Sicherheitslücken in Webanwendungen aufgeführt. Die DASP Top 10 hoffen, die entsprechende Ressource für die Blockchain bereitzustellen.

Nicht alle Angriffe sind vorher bekannt. Ein Zero-Day-Exploit definiert einen Exploit, den Hacker kennen, bevor es jemand anderes tut. Programmierer müssen also beim Entwerfen und Implementieren von Software wie Angreifer denken. Wenn Sie die Sicherheitslücken in Ihrem Code nicht finden, erwarten Sie, dass ein Hacker, der nach Gewinn sucht, sie findet.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me