Μια ευρεία γκάμα επιθέσεων λογισμικού προσπαθούν να ανακτήσουν τον
έλεγχο ροής του προγραμμάτος με σκοπό να τροποποιήσουν τη
συμπεριφορά του. Η Ακεραιότητα Ελέγχου-Ροής είναι μία αποτελεσματική
πολιτική ασφαλείας, που μπορεί να αποτρέψει όλες τις επιθέσεις που
επιχειρούν να παρακάμψουν την αρχική ροή ελέγχου του προγράμματος.
Σε αυτή τη διπλωματική εργασία, χρησιμοποιούμε το εργαλείο
διαδραστικών αποδείξεων Coq για να αιτιολογήσουμε τυπικά την
ορθότητα και την αποτελεσματικότητα ενός δυναμικού ελεγκτή που
επιβάλλει Ακεραιότητα Ελέγχου-Ροής, βασιζόμενος σε ένα καινοτόμο
μηχανισμό ασφαλείας που χρησιμοποιεί λογισμικί και υλικό.
Συγκεκριμένα, αποδεικνύομε οτι ο μηχανι-σμός επιβάλλει Ακεραιότητα
Ελέγχου-Ροής ακόμα και υπό την παρουσία ενός ισχυρού κακό-βουλου
χρήστη. Επιπλέον αποδεικνύουμε μέσω εκκαθάρισης ότι ένα μηχάνημα στο
οποίο τρέχει ο δυναμικός ελεγκτής για την Ακεραιότητα Ελέγχου-Ροής,
επακριβώς εξομοιώνει όλες τις συμπεριφορές ενός αφηρημένου
μηχανήματος που έχει Ακεραιότητα Ελέγχου-Ροής εκ κατασκευής.
A wide-range of software attacks attempt to hijack the control-flow
of the program in order to alter its behavior. Control-Flow
Integrity is an effective security policy, able to thwart all
attacks that attempt to circumvent the original control-flow of a
program.
In this thesis, we use the Coq proof assistant to formally reason
about the correctness and the effectiveness of a dynamic monitor
enforcing CFI, based on a novel software-hardware security
mechanism. In particular, we prove that the mechanism enforces CFI
even in the presence of a powerful attacker. Furthermore, we prove
by refinement that a machine running the dynamic monitor for CFI,
precisely emulates all behaviors of an abstract machine that has
CFI by construction.