Å fuzz teste et BFT system
Bachelor thesis
Permanent lenke
https://hdl.handle.net/11250/3074401Utgivelsesdato
2023Metadata
Vis full innførselSamlinger
- Studentoppgaver (TN-IDE) [877]
Sammendrag
Blockchain-teknologi blir stadig mer utbredt, og det bringer med seg nye sikkerhetsproblemer. På grunn av strukturen til disse distribuerte systemene, er manuelle testemetoder tidkrevende og de overser ofte mange grensetilfeller på grunn av kompleksiteten til systemene. Utviklingen av automatiske testingmetoder har vist seg å være en mer effektiv måte å oppdage sikkerhetsfeil, feil og krasjer i distribuerte systemer på.
I vår avhandling presenterer vi et automatisk testverktøy for Relab/hotstuff-systemet som er bygd med Google/gofuzz fuzzing-rammeverket. Verktøyet er bygd på den automatiserte enhetstestgeneratoren, Twins. Ved å bruke de eksisterende scenariene som Twins oppretter, erstatter vi en av meldingene som sendes gjennom nettverket med en tilfeldig generert fuzz-melding. Verktøyet itererer gjennom meldingene med ny fuzzet inndata for å utløse en panikk og finne ut hvor programmet krasjer.
Med bruk av vårt verktøy har vi oppdaget 6 steder i Relab/hotstuff-systemet der systemet krasjer. Verktøyet vårt presenterer relevant informasjon om hvor krasjet skjedde, en full stack trace og den fuzzede meldingen som forårsaket krasjet, noe som gjør debuggingprosessen enklere for vedlikeholdere/feilrettere. Blockchain technology is becoming more and more prevalent, and it brings with it new security issues.Due to the structure of these distributed systems, manual testing methods are tedious and often miss a lot of edge cases because of the complexity of the systems. The development of automatic testing methods has been proven to be a more effective way of discovering security flaws, bugs, and crashes in distributed systems.
In our thesis, we present an automatic testing tool for the Relab/hotstuff system built with the Google/gofuzz fuzzing framework. The tool is built on the automated unit test generator, Twins. Using the existing scenarios that Twins create, we replace one of the messages that are being sent through the network with a randomly created fuzz message. The tool iterates through the messages with new fuzzed input to trigger a panic and to find out where the program crashes.
With the use of our tool, we have discovered 6 locations in the Relab/hotstuff system where the system crashes. Our tool presents relevant information as to where the crash happened, a full stack trace, and the fuzzed message that caused the crash; making the debugging process easier for the maintainers/bugfixers.