Bodner, T. (2025). Investigating Vulnerability Detection Tools and Solidity Compiler Versions on the Vulnerability of Unchecked Call Return Values [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2025.132006
Blockchain-Technologien haben in den letzten Jahren erheblich an Aufmerksamkeit gewonnen. Ethereum hat sich als führende Plattform für Smart Contracts etabliert. Während Smart Contracts eine Vielzahl von Anwendungen in Bereichen wie dezentralisierte Finanzen, Non-Fungible Tokens und dezentralisierte autonome Organisationen ermöglichen, bringen sie zugleich neue Herausforderungen mit sich, auch im Bereich Security. Schwachstellen in bereits deployten Smart Contracts können schwerwiegende Folgen haben, unter anderem finanzielle Verluste. Da bereits auf der Blockchain deployteSmart Contracts schwer zu verändern sind, sind zuverlässige Tools zur Erkennung von Schwachstellen besonders wichtig. Diese Arbeit untersucht die Schwachstelle der “unchecked return values of low-level calls” und deren Varianten. Low-Level Operationen wie send, call, delegatecall, staticcall und callcode führen bei einem Fehler kein Revert aus, sondern geben einen booleschen Wert zurück, der überprüft werden muss. Zur Analyse dieser Schwachstelle entwickeln wir ein Framework zur Generierung von Minimal Contracts mit der Schwachstelle sowohl in Konstruktoren als auch in Funktionen und kompiliert mit verschiedenen Solidity Compiler Versionen von 0.4 bis 0.8. Mit diesem Datensatz an 595 Minimal Contracts evaluieren wir drei Werkzeuge zur Erkennung von Schwachstellen: Mythril und Slither basieren auf statischer Analyse, während ConFuzzius ein dynamisches Analysetool auf Basis von Hybrid-Fuzzing ist. Die Ergebnisse zeigen Unterschiede in den Erkennungsfähigkeiten. Mythril zeigt die ausgewogenste Performanz über Low-Level Konstrukte und Compiler Versionen hinweg, scheitert jedoch bei call-basierten Contracts mit Solidity Version 0.8. Slither erkennt die meisten Varianten konsistent, übersieht jedoch eine Gruppe von Testfällen. ConFuzzius erzielt gute Ergebnisse bei send und call, kann jedoch Schwachstellen in delegatecall, staticcall und callcode nicht identifizieren, ebenso wenig wie Schwachstellen in Konstruktoren, da nur Runtime Code analysiert wird. Insgesamt liefert diese Studie wertvolle Einblicke in die Stärken und Schwächen aktueller Tools zur Schwachstellenerkennung in Smart Contracts.
de
Blockchain technologies have gained significant attention in recent years, with Ethereum establishing itself as a leading platform for smart contracts. While enabling a wide range of applications in areas such as decentralised finance, non-fungible tokens, and decentralised autonomous organisations, smart contracts also introduce new security challenges. Vulnerabilities in deployed contracts can have severe consequences, including financial losses. Since contracts on the blockchain are difficult to modify, reliable vulnerability detection tools to support developers are of great importance. This thesis investigates the weakness of “unchecked return values of low-level calls” and its variants. Low-level operations such as send, call, delegatecall, staticcall, and callcode do not revert upon failure but instead return a boolean value which must be verified. To analyse this weakness, we develop a framework for generating minimal contracts with varied weakness placements, including both constructors and functions, across Solidity compiler versions from 0.4 to 0.8. With this data set of 595 minimal contracts, we evaluate three vulnerability detection tools: Mythril and Slither, which employ static analysis, and ConFuzzius, a hybrid fuzzing-based dynamic analysis tool. The results highlight differences in the detection capabilities. Mythril demonstrates the most balanced performance across low-level constructs and compiler versions, but fails on call-based contracts with Solidity compiler version 0.8. Slither detects most variants consistently, yet misses certain cases. ConFuzzius performs well on send and call but is unable to detect weaknesses in delegatecall, staticcall, and callcode and does not analyse weaknesses placed in constructors due to its runtime-only approach. Overall, this study provides valuable insight into the strengths and limitations of current vulnerability detection tools for smart contracts.
en
Additional information:
Arbeit an der Bibliothek noch nicht eingelangt - Daten nicht geprüft Abweichender Titel nach Übersetzung der Verfasserin/des Verfassers