Thread-Fuzz: Mutation-based Behavioural Blackbox Fuzzing of Thread
Authors
Weirsøe, Asger Geel ; Frydenskov, Lars Bo Park
Term
4. term
Education
Publication year
2022
Pages
55
Abstract
Software now runs not only everyday apps but also critical systems such as healthcare and banking, so hidden bugs and unexpected behavior can have serious consequences. Testing helps prevent these problems. Beyond unit tests, QA, and cautious releases, a newer approach called fuzzing is gaining traction. Instead of confirming correct behavior, fuzzing bombards a program with many unusual or slightly altered inputs to see whether it crashes or acts in surprising ways. This can be very effective: Google reports finding over 25,000 defects in its own products and over 22,000 issues in open-source projects through fuzzing, and in 2020 B. Miller found failure rates of 12% on Linux, 16% on macOS, and 19% on FreeBSD when fuzzing command-line tools. In this thesis we present Thread-Fuzz, a mutation-based black-box fuzzer for the Thread networking protocol. 'Mutation-based' means it creates new test inputs by tweaking valid messages, and 'black-box' means it works without access to the program’s internal code. Thread-Fuzz is a proof of concept for behavioral fuzzing: it looks for incorrect protocol behavior, not just crashes or memory corruption. We implement a simple state machine that tracks a target server’s internal state and checks whether it still follows the protocol specification. We evaluate Thread-Fuzz on OpenThread, the open-source implementation of Thread. During testing, we found a buffer overflow that could potentially allow unauthenticated remote code execution. We also introduced ten known bugs into OpenThread, and Thread-Fuzz detected six of them. We conclude that Thread-Fuzz is an early, unpolished tool, but it is functional and shows promise.
Software styrer i dag ikke kun hverdagens apps, men også kritiske systemer som sundhedsvæsen og bank. Derfor kan skjulte fejl og uventet adfærd få alvorlige konsekvenser. Test hjælper med at forebygge sådanne problemer. Ud over enhedstests, QA og forsigtige udrulninger vinder en nyere tilgang kaldet fuzzing frem. I stedet for at bekræfte korrekt funktion udsætter fuzzing et program for mange usædvanlige eller let ændrede input for at se, om det bryder sammen eller opfører sig uventet. Metoden kan være meget effektiv: Google rapporterer at have fundet over 25.000 fejl i egne produkter og over 22.000 problemer i open source-projekter via fuzzing, og i 2020 fandt B. Miller fejlprocenter på 12% på Linux, 16% på macOS og 19% på FreeBSD ved fuzzing af kommandolinjeværktøjer. I denne afhandling præsenterer vi Thread-Fuzz, en mutationsbaseret sortboks-fuzzer til netværksprotokollen Thread. 'Mutationsbaseret' betyder, at den skaber nye testinput ved at ændre gyldige beskeder en smule, og 'sortboks' betyder, at den virker uden adgang til programmets interne kode. Thread-Fuzz er et proof of concept på adfærdsmæssig fuzzing: den leder efter forkert protokoladfærd, ikke kun nedbrud eller hukommelseskorruption. Vi implementerer en enkel tilstandsmaskine, der følger en måls servers interne tilstand og kontrollerer, om den fortsat overholder protokolspecifikationen. Vi evaluerer Thread-Fuzz på OpenThread, den åbne kildekode-implementering af Thread. Under test fandt vi et bufferoverløb, der potentielt kan muliggøre uautentificeret fjernkørsel af kode. Vi indsatte også ti kendte fejl i OpenThread, og Thread-Fuzz fandt seks af dem. Vi konkluderer, at Thread-Fuzz er et tidligt, ikke fuldt poleret værktøj, men det er funktionelt og viser potentiale.
[This apstract has been rewritten with the help of AI based on the project's original abstract]
Keywords
Fuzzing ; Blackbox fuzzing ; Whitebox fuzzing ; Greybox fuzzing ; IOT ; Thread ; Testing ; Debug ; Bufferoverflow ; Critical ; FuzzCon ; René ; Danny ; OpenThread ; Open Source ; State Machine ; Behavioural Fuzzing ; Generation-based ; Mutation-based
