Οι επιθέσεις υποθετικής εκτέλεσης εκμεταλλεύονται την υποθετική εκτέλεση των νεότερων επεξεργαστών για να διαρεύσουν πληροφορίες σχετικά με την εκτέλεση των προγραμμάτων των θυμάτων κάνοντας χρήση μικροαρχιτεκτονικών πλευρικών καναλιών, όπως οι κρυφές μνήμες. Λόγω των σοβαρών απειλών ασφάλειας που επιβάλλουν οι μικροαρχιτεκτονικές επιθέσεις, προηγούμενες εργασίες επικεντρώθηκαν στην ανάπτυξη διάφορων μεθοδολογιών δοικιμών που στοχεύουν στον αυτόματο εντοπισμό τρωτών σημείων ασφάλειας σε σύγχρονους επεξεργαστές. To Revizor είναι ένα πλαίσιο (framework) δοκιμών σχεσιακού μοντέλου που προτάθηκε πρόσφατα. Παράγει τυχαίες ακολουθίες εντολών και εισόδους για τον εντοπισμό υφιστάμενων και νέων τρωτών σημείων ασφαλείας αξιοποιώντας την έννοια του υποθετικών συμβολαίων. Σε αυτή την πτυχιακή επεκτείνουμε το Revizor με επιπλέον λειτουργικότητα στοχεύοντας επεξεργαστές x86 και RISC-V. Στο κομμάτι του x86, επεκτείνουμε το Revizor ώστε να χρησιμοποιεί χρονικές μετρήσεις για την συλλογή ιχνών υλικού, αντί για μετρητές απόδοσης υλικού. Αυτή η επέκταση επιτρέπει την δοκιμή των επεξεργαστών σε ρεαλιστικές ρυθμίσεις συστήματος στις οποίες η χρήση μετρητών απόδοσης υλικού μπορεί να είναι περιορισμένη στον επιτιθέμενο. Ενισχύουμε επίσης το Revizor ώστε να χρησιμοποιεί την επίθεση πλευρικού καναλιού κρυφής μνήμης Flush+Flush, που έχει προταθεί ως μια γρήγορη και κρυφή επίθεση. Επιπλέον, επεκτείνουμε τον Revizor για να χρησιμοποιεί την κρυφή μνήμη εντολών ως πλευρικό κανάλι για τη συλλογή ιχνών υλικού με την εφαρμογή επιθέσεων κρυφής μνήμης εντολών. Με αυτόν τον τρόπο, αυξάνουμε την κάλυψη δοκιμών των μικροαρχιτεκτονικών στοιχείων των επεξε γαστών πέρα από την κρυφή μνήμη δεδομένων. Στο κομμάτι του RISC-V, επεκτείνουμε το τμήμα εκτέλεσης δοκιμών του Revizor ώστε να υποστηρίζει τη δοκιμή πραγματικών υλοποιήσεων των RISC-V επεξεργαστών, καθώς η τρέχουσα έκδοση υποστηρίζει μόνο δοκιμές που βασίζονται σε προσομοίωση. Τέλος, επαναχρησιμοποιούμε μερικά από τα στοιχεία του Revizor για την αυτόματη αναγνώριση της αρχιτεκτονικής ευπάθειας CycleDrift σε RISC-V επεξεργαστές. Η πειραματική μας αξιολόγηση δείχνει τις δυνατότητες και τηναπόδοση των βελτιωμένων τεχνικών ελέγχουν.
(EL)
Transient execution attacks exploit the speculative execution of modern CPUs to leak information regarding the execution of victim programs through the use of microarchitectural side-channels, e.g., caches. Due to the severe security threats that such microarchitectural attacks impose, prior work has focused on developing various testing techniques and frameworks that aim at automatically identifying security vulnerabilities on modern processors. Revizor is a recently proposed model-based relational testing framework that produces random instruction sequences, i.e., test cases, and inputs to detect existing and novel security vulnerabilities leveraging the concept of speculation contracts. In this thesis we enhance Revizor with additional functionality targeting both x86 and RISC-V processors. On the x86 front, we extend Revizor to use timing measurements, instead of hardware performance counters, for collecting hardware traces. This extension allows processor testing in more realistic system setups in which the use of hardware performance counters may be restricted to the attacker. We also enhance Revizor to use the Flush+Flush data cache side-channel attack, which has been shown to be a fast and stealthy attack. Furthermore, we extend Revizor to use the instruction cache as a side-channel for collecting hardware traces by implementing instruction cache attacks. In this way, we increase the testing coverage of the processor's microarchitectural components beyond the data cache. On the RISC-V front, we port the executor component of Revizor to be able to test real implementations of RISC-V processors, as the current version supports only simulation-based testing. Finally, we reuse some of the Revizor's components to automatically identify the CycleDrift RISC-V architectural vulnerability. Our experimental evaluation shows the capabilities and performance of our enhanced testing techniques.
(EN)