In Solidity entwickelte Smart Contracts werden dazu verwendet, große Mengen an Geldwert auf der Ethereum Blockchain zu verwalten. Das macht diese Programme zu einem häufigen Ziel für Angriffe. Statische Codeanalyse kann dabei helfen, Bugs in Smart Contracts zu finden und Schwachstellen zu verhindern. Im Besonderen sind Inkonsistenzen im Code eine Art von Fehler, der mit statischer Codeanalyse gefunden werden kann.Diese Diplomarbeit untersucht die Verwendung von Inkonsistenzmustern, um Fehler in Solidity Smart Contracts zu finden. Acht solche Muster, die speziell für Solidity relevant sind, werden ausgewählt und zwei statischen Codeanalyseprogrammen implementiert. Das erste dieser Programme ist Semgrep, ein Framework zur Mustererkennung in Code. Wir zeigen, dass Semgrep stark darin ist, schnell neue Inkonsistenzmuster zu implementieren, und dass es für mehrere solche Muster effektive Codeanalyse bietet. Wir demonstrieren jedoch auch, dass Semgrep gewisse Einschränkungen in seiner Unterstützung für Solidity aufweist. Um diese Einschränkungen zu überwinden, stellen wir SIA vor, den Solidity Inconsistency Analyzer. SIA übersetzt Solidity Quellcode in Datalog Fakten und verwendet eine leistungsstarke Datalog Engine, um den Code auf Inkonsistenzmuster zu überprüfen. Dies ermöglicht es dem Programm, Vorfälle aller ausgewählten Inkonsistenzmuster zu finden und den funktionsübergreifenden Kontrollfluss auf einem höheren Niveau als Semgrep zu verstehen. Wir zeigen, dass beide statischen Analysewerkzeuge in der Lage sind, Inkonsistenzen in realen Smart Contracts zu finden, und heben die unterschiedlichen Eigenschaften der beiden Werkzeuge hervor.
de
Solidity smart contracts are used to manage large amounts of monetary value on the Ethereum block chain, making them a frequent target for attacks. Static code analysis tools can help to discover bugs in these programs and prevent vulnerabilities. In particular, inconsistencies in code are a class of bugs that can be detected by static code analysis.This paper explores the use of inconsistency patterns to find bugs in Solidity smart contracts. We select eight patterns that are specifically relevant for Solidity and implement the patterns in two static analysis tools. The first tool is Semgrep, a framework for pattern matching in code. We show that Semgrep is useful for swiftly developing new inconsistency patterns and, for a number of patterns, can provide effective code analysis. However, we also demonstrate that Semgrep has limitations in its support for the Solidity language. To address these limitations, we present SIA, the Solidity Inconsistency Analyzer. SIA translates Solidity code to Datalog facts and uses a high-performance Datalog engine to analyze the code for inconsistency patterns. This enables the tool to find instances of all the selected inconsistency patterns and comprehend interprocedural control flow to a higher level than Semgrep. We show that both static analyzers are able to find inconsistencies in real world Solidity programs and highlight the different characteristics of the two tools.
en
Weitere Information:
Arbeit an der Bibliothek noch nicht eingelangt - Daten nicht geprüft Abweichender Titel nach Übersetzung der Verfasserin/des Verfassers