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.