Was ist ein Smart Contract Security Audit?
Startseite
Artikel
Was ist ein Smart Contract Security Audit?

Was ist ein Smart Contract Security Audit?

Mittel
Veröffentlicht Mar 1, 2022Aktualisiert Apr 27, 2023
8m

TL;DR

Eine Sicherheitsprüfung von Smart Contracts bietet eine detaillierte Analyse der Smart Contracts eines Projekts. Diese sind wichtig, um die über sie angelegten Mittel zu schützen. Da alle Transaktionen auf der Blockchain endgültig sind, können Mittel nicht zurückgeholt werden, falls sie gestohlen werden. In der Regel untersuchen die Prüfer den Code von Smart Contracts, verfassen einen Bericht und stellen ihn dem Projekt zur Verfügung, damit es damit arbeiten kann. Anschließend wird ein Abschlussbericht veröffentlicht, in dem alle noch ausstehenden Fehler und die bereits geleistete Arbeit zur Behebung von Performance- oder Sicherheitsproblemen aufgeführt sind.


Einführung

Sicherheitsprüfungen von Smart Contracts sind im Ökosystem des dezentralisierten Finanzwesens (DeFi) sehr verbreitet. Wenn du in ein Blockchain-Projekt investiert hast, könnte deine Entscheidung teilweise auf den Ergebnissen einer Smart-Contract-Codeprüfung basiert haben.

Während die meisten Menschen die Bedeutung von Prüfungen für die Cybersicherheit verstehen, tauchen nur wenige in die Zeilen des Codes ein. Werfen wir einen Blick auf die Methoden, Tools und Ergebnisse, die typischerweise bei Sicherheitsprüfungen von Smart Contracts auftreten, damit du fundiertere Entscheidungen treffen kannst.


Was ist eine Smart-Contract-Prüfung?

Bei einer Sicherheitsprüfung von Smart Contracts wird der Code der Smart Contracts eines Projekts untersucht und kommentiert. Diese Kontrakte werden in der Regel in der Programmiersprache Solidity geschrieben und über GitHub bereitgestellt. Sicherheitsprüfungen sind besonders wertvoll für DeFi-Projekte, die Blockchain-Transaktionen im Wert von Millionen von US-Dollar oder eine große Anzahl von Spielern abwickeln wollen. Die Prüfungen folgen in der Regel einem vierstufigen Prozess:

1. Smart Contracts werden dem Prüfungsteam für eine erste Analyse zur Verfügung gestellt.

2. Das Prüfungsteam legt dem Projekt seine Ergebnisse vor, damit es darauf reagieren kann.

3. Das Projektteam nimmt auf der Grundlage der gefundenen Probleme Änderungen vor.

4. Das Prüfungsteam veröffentlicht seinen Abschlussbericht, in dem alle neuen Änderungen und noch nicht behobenen Fehler berücksichtigt sind.

Für viele Krypto-Nutzer sind Smart-Contract-Prüfungen unerlässlich, wenn sie in neue DeFi-Projekte anlegen. Sie sind zu einem Standard für Projekte geworden, die ernst genommen werden wollen. Bestimmte Prüfungsanbieter werden auch als Branchenführer angesehen, was ihre Prüfungen in den Augen der Anleger noch wertvoller macht.


Warum brauchen wir Smart Contracts-Prüfungen?

Da über Smart Contracts große Mengen an Werten abgewickelt werden, werden sie zu attraktiven Zielen für bösartige Hackerangriffe. Geringfügige Kodierungsfehler können dazu führen, dass riesige Geldsummen gestohlen werden. Beim DAO-Hack auf der Ethereum-Blockchain wurden beispielsweise ETH im Wert von rund 60 Millionen US-Dollar gestohlen, was sogar zu einer Hard Fork des Ethereum-Netzwerks führte.

Da Blockchain-Transaktionen unumkehrbar sind, muss sichergestellt werden, dass der Code eines Projekts sicher ist. Aufgrund der hohen Sicherheit der Blockchain-Technologie ist es schwierig, Mittel zurückzuholen und Probleme im Nachhinein zu beheben.


Wie funktionieren Smart-Contract-Prüfungen?

Der Ablauf einer Smart Contract-Prüfung ist bei den Prüfungsanbietern ziemlich standardisiert. Auch wenn sich die Vorgehensweise der einzelnen Prüfer leicht unterscheiden kann, ist der typische Ablauf wie folgt:

1. Bestimmung des Umfangs der Prüfung. Die Spezifikationen des Smart Contracts und des Projekts werden durch das Projekt (den beabsichtigten Zweck) und die Gesamtarchitektur definiert. Eine Spezifikation hilft dem Prüfungsteam, die Ziele des Projekts beim Schreiben und Verwenden des Codes zu verstehen.

2. Erstellung eines ersten Kostenvoranschlags auf der Grundlage des erforderlichen Arbeitsumfangs.

3. Durchführung von Tests. Die genaue Art der Tests hängt vom Prüfungsteam, seinen Analysetools und seinen Methoden ab. In der Regel werden sowohl manuelle als auch automatisierte Tests durchgeführt.

4. Erstellung eines ersten Entwurfs des Berichts mit den gefundenen Fehlern und Übermittlung an das Projektteam für Feedback und zur Nachbesserung.

5. Veröffentlichung des Abschlussberichts unter Berücksichtigung aller Maßnahmen, die das Team zur Behebung der festgestellten Probleme ergriffen hat.


Prüfungsmethoden für Smart Contracts

Gaseffizienz 

Bei der Prüfung von Smart Contracts geht es nicht nur um die Sicherheit der Blockchain. Sie befassen sich auch mit Effizienz und Optimierung. Einige Kontrakte führen eine komplizierte Reihe von Transaktionen durch, um ihre beabsichtigte Funktion zu erfüllen. Da Gasgebühren in Netzwerken wie Ethereum relativ kostspielig sind, können effiziente Kontrakte eine Menge Transaktionskosten einsparen.

Die Optimierung ihrer Performance ist auch ein Indikator für die Fähigkeiten des Entwicklers. Ineffiziente Schritte bieten mehr Ansatzpunkte für Fehler und sollten vermieden werden. Wenn die Gaskosten hoch sind, kann die Ausführung von Smart Contracts scheitern, vor allem, wenn ein niedriges Gaslimit verwendet wird.

Schwachstellen in Kontrakten

Die meiste Arbeit bei Prüfungen besteht darin, Kontrakte auf Sicherheitsschwachstellen zu überprüfen. Während einige Schwachstellen leicht zu erkennen sind, lassen sich andere viele Schwachstellen nur durch den Einsatz fortgeschrittenet Techniken und Strategien erkennen. So können beispielsweise Marktmanipulationen bei schwachen Smart Contracts genutzt werden, um sogenannte Flash Loan-Angriffe durchzuführen. Um diese Schwachstellen zu finden, beginnen die Prüfer mit dem Break-Testing und simulieren böswillige Angriffe auf den Smart Contract. Zu den häufigsten Schwachstellen gehören:

1. Probleme mit der Eintrittsinvarianz: Wenn ein Smart Contract einen externen Aufruf an einen anderen externen Kontrakt tätigt, bevor alle Auswirkungen aufgelöst sind. Der externe Kontrakt kann dann rekursiv den ursprünglichen Smart Contract aufrufen und auf eine Weise mit ihm interagieren, die nicht möglich sein sollte, da der Kontostand des ursprünglichen Kontrakts noch nicht aktualisiert wurde.

2. Ganzzahlige Überläufe und Unterläufe: Wenn ein Smart Contract eine arithmetische Operation durchführt, die Ausgabe jedoch die Speicherkapazität (in der Regel 18 Dezimalstellen) überschreitet. Dies kann dazu führen, dass falsche Beträge berechnet werden.

3. Frontrunning-Gelegenheiten: Schlecht strukturierter Code kann eine Vorwarnung vor Marktkäufen oder -verkäufen liefern. Dies wiederum kann es anderen ermöglichen, die Informationen zu nutzen und zu ihrem eigenen Vorteil zu handeln.

Sicherheitsmängel der Plattform

Bei den meisten Prüfungen wird auch das Netzwerk untersucht, in dem die Kontrakte gehostet werden, und sogar die API, die zur Interaktion mit der DApp verwendet wird. Ein Projekt kann für einen DDoS-Angriff anfällig sein, oder die Schnittstelle zu seiner Website könnte beschädigt sein, was bedeutet, dass die Nutzer ihre Wallets mit bösartigen Blockchain-Anwendungen verbinden.


Was ist ein Prüfbericht?

Der Prüfbericht wird am Ende des Prüfungsverfahrens erstellt. Aus Gründen der Transparenz wird von den Projekten erwartet, dass sie ihre Ergebnisse mit der Community teilen. In den meisten Berichten werden die Probleme nach Schweregrad kategorisiert, z.B. als kritisch, schwerwiegend, geringfügig usw. Im Bericht wird auch der Status der Probleme aufgeführt, da die Projekte Zeit haben, sie vor der Veröffentlichung des Abschlussberichts zu lösen.

Ein Standardbericht enthält neben einer Zusammenfassung auch Empfehlungen, Beispiele für redundanten Code und eine vollständige Aufschlüsselung der Kodierungsfehler. Dem Projekt wird Zeit eingeräumt, um auf die Ergebnisse des Berichts zu reagieren, bevor die endgültige Version veröffentlicht wird.


Wo kann ich eine Smart-Contract-Prüfung durchführen lassen?

Eine Reihe von Prüfdiensten für Smart Contracts sind für ihren hervorragenden Service bekannt geworden. Zwei von ihnen sind besonders beliebt, und um eine Prüfung von ihnen zu erhalten, sind ein erster Kostenvoranschlag und die Übermittlung von Informationen erforderlich.

CertiK

CertiK ist einer der Branchenführer im Bereich von Smart-Contract-Prüfungen. Hunderte von Projekten haben ihre Smart Contracts mit CertiK prüfen lassen. PancakeSwap, der größte Automatisierte Market-Maker (AMM) von BSC, ist ein Beispiel dafür. Nachfolgend findest du einen Ausschnitt der Certik-Prüfung von PancakeSwap.


Auch die überwiegende Mehrheit der von Binance Labs unterstützten Projekte haben ihre Kontrakte mit CertiK prüfen lassen. CertiK veröffentlicht eine Rangliste der geprüften Projekte, die es dir erlaubt, jedes einzelne zu vergleichen, zusammen mit einer Sicherheitsbewertung. Beachte, dass CertiK neben Ethereum auch BSC- und Polygon-Projekte abdeckt.


ConsenSys Diligence

ConsenSys wird von Joseph Lubin, einem Mitbegründer von Ethereum, geleitet und ist einer der größten Namen der Kryptobranche in der Blockchain-Entwicklung. Unter ConsenSys Diligence bietet das Unternehmen Smart-Contract-Prüfungen für Ethereum an. Sie bieten auch einen automatisierten Dienst, der EVM-Kontrakte (Ethereum Virtual Machine) auf häufig gefundene Fehler überprüft.


Was kostet eine Smart-Contract-Prüfung?

Die genauen Kosten für eine Prüfung hängen von der Anzahl der zu prüfenden Smart Contracts ab. In der Regel kostet eine Prüfung mehrere tausend US-Dollar. Ein besonders großes Projekt kann leicht über 10.000 US-Dollar kosten. Der Preis hängt auch von der Prüfungsfirma ab, die deine Prüfung durchführt, und von ihrem Ruf.


Zusammenfassung

Für Anleger und Nutzer sind Smart-Contract-Prüfungen zum Glück ein goldener Standard geworden. Wenn jedoch jedes Projekt eines hat, ist es kein einfacher Indikator für den Wert mehr. Deshalb ist es unglaublich wichtig, die Prüfung selbst zu lesen. Selbst wenn du nicht über das technische Wissen verfügst, ist es hilfreich, einen Blick auf die Kommentare und den Schweregrad möglicher Probleme zu werfen.

Wenn du auf eine Prüfung stößt, solltest du jetzt zumindest den Inhalt leichter verstehen können. Achte wie immer darauf, dass du bei einer Anlageentscheidung das Gesamtbild betrachtest und alle Informationen in Betracht ziehst.