Εμφάνιση απλής εγγραφής

Επέκταση λογισμικού unit testing για τη διεξαγωγή fuzz testing δοκιμών σε ενσωματωμένο λογισμικό

dc.contributor.advisorΓλυνός, Δημήτριος
dc.contributor.authorΔάσκαλος, Άγγελος - Χρήστος
dc.date.accessioned2025-11-25T04:38:04Z
dc.date.available2025-11-25T04:38:04Z
dc.date.issued2025-11
dc.identifier.urihttps://dione.lib.unipi.gr/xmlui/handle/unipi/18549
dc.description.abstractΤα ενσωματωμένα συστήματα σχεδιάζονται συχνά με χρήση σειριακών πρωτοκόλλων που ελέγχονται από πολύπλοκες μηχανές καταστάσεων ή αλλιώς «state-machines», ωστόσο αυτοί οι κρίσιμοι μηχανισμοί παραμένουν συχνά ανεπαρκώς δοκιμασμένοι. Στη συγκεκριμένη εργασία προτείνεται μια συστηματική μεθοδολογία για την ενίσχυση και την επικύρωση των λειτουργιών τέτοιων πρωτοκόλλων χρησιμοποιώντας τεχνικές stub-based unit testing και coverage-guided fuzzing. Η διεξαγωγή ενός fuzzing campaign σε ένα ενσωματωμένο σύστημα είναι μια ιδιαίτερα περίπλοκη διεργασία, καθώς απαιτεί την τροποποίηση της υλοποίησης του fuzzer (π.χ. fuzzing harness) για κάθε λογισμικό υπό εξέταση. Επίσης, πολλές φορές το campaign θα πρέπει να τρέξει σε περιβάλλον εξομοίωσης ή υπό περιορισμούς που θέτει το υλικό και τα περιφερειακά του. Σε αυτή την εργασία στοχεύουμε στην αυτόματη δημιουργία του κατάλληλου λογισμικού και δεδομένων ώστε να μπορέσουν έργα ενσωματωμένων συστημάτων να αποκομίσουν άμεσα τα οφέλη του fuzz testing, με ελέγχους σε επίπεδο software module/object-file, οι οποίοι μπορούν να εκτελεστούν αποδοτικά σε τρίτα συστήματα (ακόμη και διαφορετικής αρχιτεκτονικής από αυτή του ενσωματωμένου συστήματος). Για την πειραματική εξέταση της μεθοδολογίας αναπτύχθηκε firmware για τον μικροελεγκτή STM32 που κινεί ένα σερβοκινητήρα όπου, τα περιφερειακά αντικαθίστανται με stubs, επιτρέποντας την απομόνωση και επαλήθευση των μηχανισμών ελέγχου ταυτότητας, πλοήγησης στο μενού, επαλήθευσης αθροίσματος ελέγχου (checksum) και ακύρωσης εντολών. Με χρήση CMocka αναπτύσσονται μονάδες δοκιμών που αποκαλύπτουν λογικές δυσλειτουργίες και ασυνέπειες στην μηχανή κατάστασης πριν από την ενσωμάτωση firmware. Στη συνέχεια, το LibFuzzer σε συνδυασμό με AddressSanitizer,UBSanitizer διοχετεύει εκατομμύρια παραμορφωμένα πακέτα bytes και οριακά «edge» bytes στον αναλυτή πρωτοκόλλου UART, αποκαλύπτοντας αστοχίες και θέματα μνήμης στην παραμετροποίηση όπως καθώς και σενάρια αποτυχίας του πρωτοκόλλου. Όλες οι φάσεις επαλήθευσης εκτελούνται σε ένα version-controlled workflow στο GitHub και περιβάλλονται από ένα CI/CD workflow , εξασφαλίζοντας αναπαραγώγημα builds και περιβάλλοντα δοκιμών. H συνδυασμένη προσέγγιση οδηγεί σε σημαντική αύξηση της κάλυψης τόσο στην επεξεργασία του πρωτοκόλλου όσο και στις μεταβάσεις της αυτόματης μηχανής κατάστασης του σερβομηχανισμού, αποκαλύπτοντας εύθραυστα σημεία όπως παράκαμψη checksum, λανθασμένα reset καταστάσεων και race-conditions ακύρωσης. Με την εξής υλοποίηση παρουσιάζεται ένα ολοκληρωμένο pipeline για την ενίσχυση της αξιοπιστίας σε συστήματα περιορισμένων πόρων.el
dc.format.extent158el
dc.language.isoelel
dc.publisherΠανεπιστήμιο Πειραιώςel
dc.rightsΑναφορά Δημιουργού 3.0 Ελλάδα*
dc.rights.urihttp://creativecommons.org/licenses/by/3.0/gr/*
dc.titleΕπέκταση λογισμικού unit testing για τη διεξαγωγή fuzz testing δοκιμών σε ενσωματωμένο λογισμικόel
dc.title.alternativeExtension of unit testing software for the fuzz testing on an embedded unit softwareel
dc.typeMaster Thesisel
dc.contributor.departmentΣχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών. Τμήμα Πληροφορικήςel
dc.description.abstractENEmbedded systems are often designed using serial protocols controlled by complex state machines, but these critical mechanisms often remain insufficiently tested. This paper proposes a systematic methodology for enhancing and validating the functionality of such protocols using stub-based unit testing and coverage-guided fuzzing techniques. Conducting a fuzzing campaign on an embedded system is a particularly complex process, as it requires modifying the fuzzer implementation (e.g., fuzzing harness) for each piece of software under test. In addition, fuzzing campaigns often need to be run in a simulation environment or under constraints imposed by the hardware and peripherals. In this work, we aim to automatically generate the appropriate software and data so that embedded system projects can immediately reap the benefits of fuzz testing, with checks at the software module/object file level that can be efficiently executed on third-party systems (even those with a different architecture from that of the embedded system). For the experimental testing of the methodology, firmware was developed for the STM32 microcontroller that drives a servo motor where the peripherals are replaced with stubs, allowing the isolation and verification of the authentication, menu navigation, checksum verification, and command cancellation. Using CMocka, test units are developed that reveal logical malfunctions and inconsistencies in the state machine prior to firmware integration. Subsequently, LibFuzzer, in combination with AddressSanitizer and UBSanitizer, feeds millions of malformed byte packets and edge bytes to the UART protocol analyzer, revealing configuration memory issues and failures in the protocol. All verification steps are orchestrated within a version-controlled workflow on GitHub and encapsulated in Docker containers, ensuring reproducible builds and test environments. Our combined methodology yields significant coverage gains across both protocol parsing and servo-control state transitions, exposing subtle vulnerabilities such as checksum bypasses, improper state resets, and cancellation race conditions. By embedding stub-driven unit testing and fuzzing into a Docker-enabled GitHub pipeline, we present a reproducible framework for elevating reliability in resource-constrained embedded devices.el
dc.contributor.masterΚυβερνοασφάλεια και Επιστήμη Δεδομένωνel
dc.subject.keywordΕνσωματωμένα συστήματαel
dc.subject.keywordFuzzingel
dc.subject.keywordΑυτοματοποιημένη δοκιμήel
dc.subject.keywordΑσφάλεια λογισμικούel
dc.subject.keywordSanitizersel
dc.subject.keywordΕυπάθειεςel
dc.subject.keywordFirmwareel
dc.subject.keywordARMel
dc.subject.keywordx86el
dc.subject.keywordUnit testingel
dc.subject.keywordΚυβερνοασφάλειαel
dc.subject.keywordAutomated testingel
dc.subject.keywordSoftware securityel
dc.subject.keywordVulnerabilitiesel
dc.subject.keywordCybersecurityel
dc.date.defense2025-11-07


Αρχεία σε αυτό το τεκμήριο

Thumbnail

Αυτό το τεκμήριο εμφανίζεται στις ακόλουθες συλλογές

Εμφάνιση απλής εγγραφής

Αναφορά Δημιουργού 3.0 Ελλάδα
Εκτός από όπου διευκρινίζεται διαφορετικά, το τεκμήριο διανέμεται με την ακόλουθη άδεια:
Αναφορά Δημιουργού 3.0 Ελλάδα

Βιβλιοθήκη Πανεπιστημίου Πειραιώς
Επικοινωνήστε μαζί μας
Στείλτε μας τα σχόλιά σας
Created by ELiDOC
Η δημιουργία κι ο εμπλουτισμός του Ιδρυματικού Αποθετηρίου "Διώνη", έγιναν στο πλαίσιο του Έργου «Υπηρεσία Ιδρυματικού Αποθετηρίου και Ψηφιακής Βιβλιοθήκης» της πράξης «Ψηφιακές υπηρεσίες ανοιχτής πρόσβασης της βιβλιοθήκης του Πανεπιστημίου Πειραιώς»