Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Software Vulnerability Prediction on Commit Level
Organization Unit
Authors
  • Andrea Capobianco
Supervisors
  • Alberto Bacchelli
  • Larissa Braz Brasileiro Barbosa
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2019
Abstract Text Software vulnerabilities are security weaknesses in system design, or implementation, that if exploited may cause large damages to software developers and vendors, and most importantly software users. Although efforts are made in preventing, detecting and removing vulnerabilities before software releases, the number of publicly disclosed software vulnerabilities is increasing. Software vulnerabilities are difficult to detect during development even by experienced developers if they lack security expertise and even with use of supporting tools. In this thesis, we aim at helping developers to avoid introducing vulnerabilities during the development process. We propose a machine learning approach to predict vulnerabilities on commit level, in which, given a commit, we report whether a change in a touched file might induce a vulnerability. We analyse a set of 19 metrics, such as code churn, ownership, code metrics, and code smells, for three open source C projects (Tcpdump, FFmpeg, ImageMagick). The dataset consists of 149 vulnerability-inducing commits and 168 non-vulnerability-inducing commits, including 12 different types of vulnerabilities, but most prominently buffer related vulnerabilities. We first analyse how the metrics relate to vulnerable code changes and then create different models to predict vulnerability-inducing commits. As a result, we found 7 out of 19 metrics to have a consistently strong relationship to vulnerability-inducing commits. Further our best models reached precision, recall and F1-score of greater than 0.8 and therefore indicate that such a prediction of vulnerability-inducing commits may be a useful additional tool for software developers.
Zusammenfassung Software Vulnerabilitäten sind Sicherheitsschwachstellen im Systemdesign oder in der Implementierung, die, falls sie ausgenutzt werden, grosse Schäden für Softwareentwickler und vor allem Softwareanwender verursachen können. Obwohl Anstrengungen zur Prävention, Erkennung und Behebung von Vulnerabilitäten vor der Veröffentlichung von Software unternommen werden, nimmt die Anzahl der öffentlich bekannten Software Vulnerabilitäten zu. Sie sind auch von erfahrenen Entwicklern schwer zu erkennen, falls es ihnen an Software Sicherheitsfachwissen fehlt, sogar bei Einsatz verschiedener Hilfswerkzeuge. In dieser Arbeit gehen wir dieses Problem an, indem wir ein Modell zur Vorhersage von Sicherheitsschwachstellen auf Commit-Ebene vorschlagen. Bei einem Commit mit Änderungen in verschiedenen Dateien, können wir melden, ob es eine Änderung in einer dieser Dateien gibt, die eine Vulnerabilität verursachen könnte. Wir analysieren 19 Metriken, wie Code-Churn, Ownership und Code-Smells, für drei Open-Source C Projekte (Tcpdump, FFmpeg, ImageMagick). Der Datensatz besteht aus 149 Vulnerabilitäten-induzierenden Commits und 168 nicht-Vulnerabilitäten-induzierenden Commits, einschliesslich 12 verschiedener Typen von Vulnerabilitäten, aber grösstenteils Buffer betreffende Vulnerabilitäten. Wir analysieren zunächst den Zusammenhang der verschiedenen Metriken zu anfälligen Code-Änderungen und erstellen daraufhin unterschiedliche Modelle, die darauf abzielen, Vulnerabilitäten-induzierende Commits vorherzusagen. Wir finden eine konsistent starke Beziehung von 7 der 19 Metriken zu Vulnerabilitäten-induzierenden Commits. Ausserdem erreichen unsere besten Modelle Genauigkeit (precision), Trefferquote (recall) und F1-Score von mehr als 0.8 und weisen daher darauf hin, dass eine solche Vorhersage von Vulnerabilitäten-induzierenden Commits ein nützliches Werkzeug für Softwareentwickler sein kann.
PDF File Download
Export BibTeX