Projektgruppe

Projektgruppe HiFE: High Speed Fuzzing of Ethereum Smart Contracts

Dozent:
  • Prof. Dr.-Ing. Lucas Vincenzo Davi
Ansprechpartner:
Semester:
Sommersemester 2021
Beginn:
12.04.2021
Ende:
23.07.2021
Sprache:
deutsch
LSF:
Veranstaltung im LSF

Beschreibung:

Bitcoin erfreut sich nicht nur eines immer steigenden Kurswertes an der Börse, sondern wird zunehmend in Bezahlsysteme integriert. Allerdings sind Bitcoin und vergleichbare Kryptowährungen stark limitiert und schöpfen nicht das ganze Potenzial von Blockchain Technologien aus. Smart Contracts, wie sie in der Ethereum Blockchain genutzt werden, erlauben hingegen Ausführung von beliebiger Programmlogik auf der Blockchain und sind somit deutlich mächtiger hinsichtlich ihrer Anwendungsfälle. Allerdings sind Smart Contracts auf der Ethereum Blockchain häufig hoch sicherheitskritisch, da oftmals mehrere Millionen Dollar an Kryptowährung verwaltet werden. Um potentiellen Angriffen entgegenzuwirken ist es unabdingbar Smart Contracts umfänglichen Sicherheitstests zu unterziehen. Für PC Software hat sich Fuzzing als eine sehr effektive Methode erwiesen, um Sicherheitsfehler in Software zu finden. Insbesondere hat sich Fuzzing als die effektivste Methode herausgestellt, um Fehler in C/C++ Code aufzuspüren. In diesem Projekt werden wir Fuzzing auf Ethereum Smart Contracts anwenden. Ethereum ist die populärste Blockchain Technologie für Smart Contracts und setzt ein eigenes Bytecode Format ein, um Smart Contract Code zu speichern und auszuführen. Dieses Format ist jedoch nicht für Ausführungsgeschwindigkeit optimiert, so dass Smart Contracts nicht effizient durch Fuzzing getestet werden können. Um Smart Contracts effektiv mit Fuzzing zu testen müssen wir zwei Probleme angehen:
 

  1. Wir müssen in der Lage sein Smart Contracts mit hoher Geschwindigkeit auszuführen.
  2. Wir benötigen ein "Bug Oracle" - also eine Methode, um Bugs während der Ausführung zu erkennen.


In dieser PG sollen beide Aspekte bearbeitet werden, um dann zu einem effektiven Fuzzing Framework für Smart Contracts zu gelangen. Ziel der PG ist es ebenfalls, den Teilnehmern die Möglichkeit zu geben Smart Contract Technologien sowie Sicherheitsprobleme und -lösungen kennenzulernen.

Im ersten Schritt werden wir ein Tool entwickeln, um Smart Contract Bytecode in nativen Code zu übersetzen, d.h. der Bytecode des Smart Contracts wird in äquivalenten C Code übersetzt. Damit ergibt sich ein flexibles als auch sehr effizientes Framework um Smart Contract Bytecode auszuführen. Durch die Verwendung von C als "intermediate language" lässt sich vorhandenes Tooling aus der C/C++ Fuzzing Welt wiederverwenden. Dabei muss jedoch darauf geachtet werden die Blockchain Umgebung möglichst gut zu emulieren bzw. zu modellieren, wobei in diesem Projekt das Testen von Smart Contracts in Isolation voneinander im Vordergrund steht.

Im zweiten Schritt werden wir das Framework um ein Bug Oracle erweitern, welches Fehler bei der Ausführung von Smart Contracts erkennen kann. Hier wäre z.B. Reentrancy als ein primäres Problem zu nennen. Reentrancy ist ein Concurrency Fehler, der bei Smart Contracts besonders fatale Folgen haben kann. Durch einen Reentrancy Bug wurde im „The DAO Hack“ Kryptowährung im Wert von 50 Millionen US-Dollar entwendet. Reentrancy Fehler bei Smart Contracts können im Grunde wie andere Concurrency Bugs betrachtet werden. Abschließend wird das entwickelte Fuzzing Framework hinsichtlich Code-Coverage und Geschwindigkeit evaluiert.

Termin des ersten PG-Treffens im Sommersemester: 14.04.2021 um 10:00