Vulnerability Assessment for C programs using the Infer Static Analyzer
Creators: name: Χατζηπαναγιώτου, Παναγιώτης Αδαμάντιου
Publisher: name: Aristotle University of Thessaloniki
Year: 2022
Subjects: Στατική Ανάλυση
Σουίτα Δοκιμών
Ασφάλεια
Static Analysis
Facebook Infer
Cppcheck

description: Two of the biggest challenges that any aspiring programmer working on code has to deal with is to ensure maximum security and minimum number of bugs. At the same time, modern computing is characterized by an exponential increase in lines of code per program, making the task of ensuring security specifications and error detection prohibitively complex. One of the tools that have been developed to simplify the process of testing a software code are static analyzers, a set of tools that perform automated analysis for errors in sections of code. In this paper we attempt to examine the effectiveness of two static analysis tools, Facebook's Infer and Cppcheck, both as standalone tools and in comparison to each other. Our work focuses on the ability of our tools to debug code in C, makes use of a ready-made test suite that consists of several small programs containing a variety of errors and security issues and is divided into three main parts. In the first part we examine the tool’s ability to detect bugs in their simplest form within the code using simple syntax and non-repeating schemes. The goal of this part is to map the general capabilities of our analyzers. In the second part, we select one of the general bugs that are detectable by both of our tools and examine the ability of our analyzers to detect it in complex program schemas containing loops and parameterization. After collecting data from the second experiment, we apply five statistical metrics to our results to deepen our conclusions on the strengths and weaknesses of each tool. In the third part, we construct programs with exponentially increasing sizes consisting of bugs detected by our tools and examine the performance of each tool in terms of both execution speed and ram utilization. Finally, we present some works related to this thesis and list our conclusions as well as some ideas for future work.
description: Δύο από τις μεγαλύτερες προκλήσεις που καλείτε να αντιμετωπίσει κάθε επίδοξος προγραμματιστής που εργάζεται πάνω σε κώδικα είναι η εξασφάλιση της μέγιστης δυνατής ασφάλειας και του ελάχιστου αριθμού σφαλμάτων. Ταυτόχρονα, η σύγχρονη πληροφορική χαρακτηρίζεται από μια εκθετική αύξηση σε γραμμές κώδικα ανά πρόγραμμα με αποτέλεσμα το έργο της εξασφάλισης προδιαγραφών ασφαλείας και εντοπισμού λαθών να καθίσταται απαγορευτικά σύνθετο. Ένα από τα εργαλεία που έχουν αναπτυχθεί για την απλοποίηση της διαδικασίας ελέγχου ενός προϊόντος λογισμικού είναι οι στατικοί αναλυτές, μια σειρά προγραμμάτων που πραγματοποιούν αυτοματοποιημένες διαδικασίες αναζήτησης σφαλμάτων σε τμήματα κώδικα. Στην παρούσα εργασία προσπαθούμε να εξετάσουμε την αποτελεσματικότητα δύο εργαλείων στατικής ανάλυσης, του Infer της Facebook και του Cppcheck, τόσο σαν αυτόνομα εργαλεία όσο και συγκριτικά το ένα με το άλλο. H εργασία μας αφορά την ικανότητα εντοπισμού σφαλμάτων κώδικα στην C, κάνει χρήση μιας έτοιμης σουίτας δοκιμών που αποτελείται από πολλά μικρά προγραμματάκια που περιέχουν μια πληθώρα λαθών και ζητημάτων ασφαλείας και χωρίζεται σε τρία βασικά μέρη. Στο πρώτο μέρος εξετάζουμε την ικανότητα εντοπισμού σφαλμάτων στην πιο απλή τους μορφή εντός του κώδικα με τη χρήση απλής σύνταξης και μη επαναληπτικών σχημάτων. Στόχος αυτού του μέρους είναι η χαρτογράφηση των γενικών δυνατοτήτων των εργαλείων μας. Στο δεύτερο μέρος, επιλέγουμε ένα από τα γενικά σφάλματα τα οποία είναι εντοπίσημα και από τα δύο εργαλεία μας και εξετάζουμε την ικανότητα των Αναλυτών μας να το εντοπίσουν σε σύνθετα σχήματα προγραμμάτων που περιέχουν επαναληπτικότητα και παραμετροποίηση. Αφού συλλέξουμε τα στοιχεία του δεύτερου πειράματος εφαρμόζουμε πέντε στατιστικές μετρικές στα αποτελέσματά μας για να εμβαθύνουμε τα συμπεράσματά μας πάνω στις δυνάμεις και τις αδυναμίες του κάθε εργαλείου. Στο τρίτο μέρος κατασκευάζουμε προγράμματα με εκθετικά αυξανόμενα μεγέθη που αποτελούνται από σφάλματα που έχουν εντοπισθεί από τα εργαλεία μας και εξετάζουμε τις επιδόσεις του κάθε εργαλείου τόσο όσον αφορά την ταχύτητα εκτέλεσης όσο και την κατανάλωση μνήμης ραμ. Τέλος, παρουσιάζουμε κάποια έργα σχετικά με την παρούσα διπλωματική και παραθέτουμε τα συμπεράσματά μας καθώς και κάποιες ιδέες για μελλοντική ενασχόληση.