Περίληψη
Η ασφάλεια και η αξιοπιστία του λογισμικού είναι πτυχές μείζονος σημασίας για τις επιχειρήσεις ανάπτυξης λογισμικού που επιθυμούν να παραδίδουν ασφαλές και αξιόπιστο λογισμικό στους πελάτες τους. Τα τελευταία χρόνια έχουν προταθεί αρκετές προσεγγίσεις που βασίζονται στη στατική ανάλυση για τη διευκόλυνση της ανάπτυξης ασφαλούς και αξιόπιστου λογισμικού. Σκοπός της παρούσας διατριβής είναι να διερευνήσει αυτές τις προσεγγίσεις και να επεκτείνει την τρέχουσα κατάσταση της βιβλιογραφίας, αντιμετωπίζοντας υφιστάμενα ανοικτά ζητήματα που δεν έχουν ακόμη αντιμετωπιστεί επαρκώς. Για το σκοπό αυτό, αρχικά διεξήχθη μια εμπειρική μελέτη με στόχο να διερευνήσει την ικανότητα των μετρικών λογισμικού (π.χ. μετρικές πολυπλοκότητας) να διακρίνουν μεταξύ διαφορετικών τύπων ευπαθειών και να να εξετάσει αν υπάρχουν πιθανές αλληλεξαρτήσεις μεταξύ διαφορετικών τύπων ευπαθειών. Τα αποτελέσματα της ανάλυσης αποκάλυψαν ότι οι μετρικές λογισμικού μπορούν να χρησιμοποιηθούν μόνο ως αδύναμοι δείκτες συγκεκριμ ...
Η ασφάλεια και η αξιοπιστία του λογισμικού είναι πτυχές μείζονος σημασίας για τις επιχειρήσεις ανάπτυξης λογισμικού που επιθυμούν να παραδίδουν ασφαλές και αξιόπιστο λογισμικό στους πελάτες τους. Τα τελευταία χρόνια έχουν προταθεί αρκετές προσεγγίσεις που βασίζονται στη στατική ανάλυση για τη διευκόλυνση της ανάπτυξης ασφαλούς και αξιόπιστου λογισμικού. Σκοπός της παρούσας διατριβής είναι να διερευνήσει αυτές τις προσεγγίσεις και να επεκτείνει την τρέχουσα κατάσταση της βιβλιογραφίας, αντιμετωπίζοντας υφιστάμενα ανοικτά ζητήματα που δεν έχουν ακόμη αντιμετωπιστεί επαρκώς. Για το σκοπό αυτό, αρχικά διεξήχθη μια εμπειρική μελέτη με στόχο να διερευνήσει την ικανότητα των μετρικών λογισμικού (π.χ. μετρικές πολυπλοκότητας) να διακρίνουν μεταξύ διαφορετικών τύπων ευπαθειών και να να εξετάσει αν υπάρχουν πιθανές αλληλεξαρτήσεις μεταξύ διαφορετικών τύπων ευπαθειών. Τα αποτελέσματα της ανάλυσης αποκάλυψαν ότι οι μετρικές λογισμικού μπορούν να χρησιμοποιηθούν μόνο ως αδύναμοι δείκτες συγκεκριμένων ζητημάτων ασφάλειας, ενώ ενδέχεται να υπάρχουν σημαντικές αλληλεξαρτήσεις μεταξύ διαφορετικών τύπων ευπαθειών. Η μελέτη επίσης επιβεβαίωσε την ικανότητα των μετρικών λογισμικού (συμπεριλαμβανομένων μετρικών που δεν είχαν προηγουμένως διερευνηθεί) να υποδεικνύουν την ύπαρξη ευπαθειών στον κώδικα ανεξαρτήτως του τύπου τους. Στη συνέχεια, προτάθηκε ένα ιεραρχικό μοντέλο αξιολόγησης της ασφάλειας ικανό να ποσοτικοποιήσει το εσωτερικό επίπεδο ασφάλειας των προϊόντων λογισμικού, με βάση ειδοποιήσεις στατικής ανάλυσης και μετρικές λογισμικού. Το μοντέλο είναι πρακτικό, καθώς είναι πλήρως αυτοματοποιημένο (επιτρέποντας την συστηματική χρήση του από τα αρχικά στάδια του κύκλου ανάπτυξης ενός λογισμικού) και λειτουργικό, καθώς έχει υλοποιηθεί υπό τη μορφή επιμέρους εργαλείων. Επίσης, είναι επαρκώς αξιόπιστο, καθώς δεν εμπεριέχει υποκειμενικές πληροφορίες, αλλά αντιθέτως κατασκευάστηκε με βάση δεδομένα και καλά αποδεκτές πηγές πληροφοριών σχετικές με την ασφάλεια. Μια εκτεταμένη αξιολόγηση του μοντέλου σε μεγάλο όγκο εμπειρικών δεδομένων αποκάλυψε ότι είναι σε θέση να αξιολογεί αξιόπιστα την ασφάλεια του λογισμικού τόσο σε επίπεδο προϊόντος όσο και σε επίπεδο κλάσης με επαρκή διακριτική ικανότητα, ενώ μπορεί επίσης να χρησιμοποιηθεί για την πρόβλεψη ευπαθειών. Τα πειραματικά αποτελέσματα παρέχουν περαιτέρω υποστήριξη για την ικανότητα των ειδοποιήσεων στατικής ανάλυσης και των μετρικών λογισμικού να υποδεικνύουν την ύπαρξη ευπαθειών λογισμικού. Τέλος, προτάθηκε ένα μαθηματικό μοντέλο για τον υπολογισμό του βέλτιστου διαστήματος ελέγχου, δηλαδή του διαστήματος ελέγχου που ελαχιστοποιεί τον χρόνο εκτέλεσης των προγραμμάτων λογισμικού που υιοθετούν τον μηχανισμό ελέγχου και επανεκκίνησης σε επίπεδο εφαρμογής. Το βέλτιστο διάστημα ελέγχου βρέθηκε να εξαρτάται από τον ρυθμό αποτυχίας της εφαρμογής, το κόστος εκτέλεσης για την δημιουργία/εγκατάσταση ενός σημείου ελέγχου και το κόστος εκτέλεσης για την επανεκκίνηση ενός προγράμματος μετά από αποτυχία. Έμφαση δόθηκε σε προγράμματα με βρόχους, ενώ τα αποτελέσματα απεικονίστηκαν μέσω διαφόρων αριθμητικών παραδειγμάτων.
περισσότερα
Περίληψη σε άλλη γλώσσα
Software security and reliability are aspects of major concern for software development enterprises that wish to deliver dependable software to their customers. Several static analysis-based approaches for facilitating the development of secure and reliable software have been proposed over the years. The purpose of the present thesis is to investigate these approaches and to extend their state of the art by addressing existing open issues that have not been sufficiently addressed yet. To this end, an empirical study was initially conducted with the purpose to investigate the ability of software metrics (e.g., complexity metrics) to discriminate between different types of vulnerabilities, and to examine whether potential interdependencies exist between different vulnerability types. The results of the analysis revealed that software metrics can be used only as weak indicators of specific security issues, while important interdependencies may exist between different types of vulnerabilit ...
Software security and reliability are aspects of major concern for software development enterprises that wish to deliver dependable software to their customers. Several static analysis-based approaches for facilitating the development of secure and reliable software have been proposed over the years. The purpose of the present thesis is to investigate these approaches and to extend their state of the art by addressing existing open issues that have not been sufficiently addressed yet. To this end, an empirical study was initially conducted with the purpose to investigate the ability of software metrics (e.g., complexity metrics) to discriminate between different types of vulnerabilities, and to examine whether potential interdependencies exist between different vulnerability types. The results of the analysis revealed that software metrics can be used only as weak indicators of specific security issues, while important interdependencies may exist between different types of vulnerabilities. The study also verified the capacity of software metrics (including previously uninvestigated metrics) to indicate the existence of vulnerabilities in general. Subsequently, a hierarchical security assessment model able to quantify the internal security level of software products, based on static analysis alerts and software metrics is proposed. The model is practical, since it is fully-automated and operationalized in the form of individual tools, while it is also sufficiently reliable since it was built based on data and well-accepted sources of information. An extensive evaluation of the model on a large volume of empirical data revealed that it is able to reliably assess software security both at product- and at class-level of granularity, with sufficient discretion power, while it may be also used for vulnerability prediction. The experimental results also provide further support regarding the ability of static analysis alerts and software metrics to indicate the existence of software vulnerabilities. Finally, a mathematical model for calculating the optimum checkpoint interval, i.e., the checkpoint interval that minimizes the execution time of software programs that adopt the application-level checkpoint and restart (ALCR) mechanism was proposed. The optimum checkpoint interval was found to depend on the failure rate of the application, the execution cost for establishing a checkpoint, and the execution cost for restarting a program after failure. Emphasis was given on programs with loops, while the results were illustrated through several numerical examples.
περισσότερα