Static analysis for facilitating secure and reliable software
Authors: Σιάββας Μιλτιάδης 
Published: September 2024

Η ασφάλεια και η αξιοπιστία του λογισμικού είναι πτυχές μείζονος σημασίας για τις επιχειρήσεις ανάπτυξης λογισμικού που επιθυμούν να παραδίδουν ασφαλές και αξιόπιστο λογισμικό στους πελάτες τους. Τα τελευταία χρόνια έχουν προταθεί αρκετές προσεγγίσεις που βασίζονται στη στατική ανάλυση για τη διευκόλυνση της ανάπτυξης ασφαλούς και αξιόπιστου λογισμικού. Σκοπός της παρούσας διατριβής είναι να διερευνήσει αυτές τις προσεγγίσεις και να επεκτείνει την τρέχουσα κατάσταση της βιβλιογραφίας, αντιμετωπίζοντας υφιστάμενα ανοικτά ζητήματα που δεν έχουν ακόμη αντιμετωπιστεί επαρκώς. Για το σκοπό αυτό, αρχικά διεξήχθη μια εμπειρική μελέτη με στόχο να διερευνήσει την ικανότητα των μετρικών λογισμικού (π.χ. μετρικές πολυπλοκότητας) να διακρίνουν μεταξύ διαφορετικών τύπων ευπαθειών και να να εξετάσει αν υπάρχουν πιθανές αλληλεξαρτήσεις μεταξύ διαφορετικών τύπων ευπαθειών. Τα αποτελέσματα της ανάλυσης αποκάλυψαν ότι οι μετρικές λογισμικού μπορούν να χρησιμοποιηθούν μόνο ως αδύναμοι δείκτες συγκεκριμένων ζητημάτων ασφάλειας, ενώ ενδέχεται να υπάρχουν σημαντικές αλληλεξαρτήσεις μεταξύ διαφορετικών τύπων ευπαθειών. Η μελέτη επίσης επιβεβαίωσε την ικανότητα των μετρικών λογισμικού (συμπεριλαμβανομένων μετρικών που δεν είχαν προηγουμένως διερευνηθεί) να υποδεικνύουν την ύπαρξη ευπαθειών στον κώδικα ανεξαρτήτως του τύπου τους. Στη συνέχεια, προτάθηκε ένα ιεραρχικό μοντέλο αξιολόγησης της ασφάλειας ικανό να ποσοτικοποιήσει το εσωτερικό επίπεδο ασφάλειας των προϊόντων λογισμικού, με βάση ειδοποιήσεις στατικής ανάλυσης και μετρικές λογισμικού. Το μοντέλο είναι πρακτικό, καθώς είναι πλήρως αυτοματοποιημένο (επιτρέποντας την συστηματική χρήση του από τα αρχικά στάδια του κύκλου ανάπτυξης ενός λογισμικού) και λειτουργικό, καθώς έχει υλοποιηθεί υπό τη μορφή επιμέρους εργαλείων. Επίσης, είναι επαρκώς αξιόπιστο, καθώς δεν εμπεριέχει υποκειμενικές πληροφορίες, αλλά αντιθέτως κατασκευάστηκε με βάση δεδομένα και καλά αποδεκτές πηγές πληροφοριών σχετικές με την ασφάλεια. Μια εκτεταμένη αξιολόγηση του μοντέλου σε μεγάλο όγκο εμπειρικών δεδομένων αποκάλυψε ότι είναι σε θέση να αξιολογεί αξιόπιστα την ασφάλεια του λογισμικού τόσο σε επίπεδο προϊόντος όσο και σε επίπεδο κλάσης με επαρκή διακριτική ικανότητα, ενώ μπορεί επίσης να χρησιμοποιηθεί για την πρόβλεψη ευπαθειών. Τα πειραματικά αποτελέσματα παρέχουν περαιτέρω υποστήριξη για την ικανότητα των ειδοποιήσεων στατικής ανάλυσης και των μετρικών λογισμικού να υποδεικνύουν την ύπαρξη ευπαθειών λογισμικού. Τέλος, προτάθηκε ένα μαθηματικό μοντέλο για τον υπολογισμό του βέλτιστου διαστήματος ελέγχου, δηλαδή του διαστήματος ελέγχου που ελαχιστοποιεί τον χρόνο εκτέλεσης των προγραμμάτων λογισμικού που υιοθετούν τον μηχανισμό ελέγχου και επανεκκίνησης σε επίπεδο εφαρμογής. Το βέλτιστο διάστημα ελέγχου βρέθηκε να εξαρτάται από τον ρυθμό αποτυχίας της εφαρμογής, το κόστος εκτέλεσης για την δημιουργία/εγκατάσταση ενός σημείου ελέγχου και το κόστος εκτέλεσης για την επανεκκίνηση ενός προγράμματος μετά από αποτυχία. Έμφαση δόθηκε σε προγράμματα με βρόχους, ενώ τα αποτελέσματα απεικονίστηκαν μέσω διαφόρων αριθμητικών παραδειγμάτων.