Automatisierte Erkennung von Sicherheitslücken in Software durch Statische Programmanalyse
Modul: INF-BSc-278
Credits: 7
SWS: 4
Ort: OH14 / 104
Start: tba
Moodle: tba
Unterrichtssprache: Deutsch
Inhalt
Die Auswirkungen von Sicherheitslücken in beliebter Open-Source-Software haben in den letzten Jahren drastisch zugenommen, wie Vorfälle wie Log4Shell, Heartbleed oder der Equifax Breach zeigen. Da immer mehr Entwickler auf Komponenten von Drittanbietern angewiesen sind, können ihre Programme für Angriffe anfällig werden, die sie selbst nicht beheben können. Infolgedessen haben Forscher eine Reihe verschiedener Methoden entwickelt, um vorhandene Software auf potenzielle Schwachstellen zu scannen und Entwickler über Risiken und mögliche Abhilfemaßnahmen zu informieren.
Eine dieser Methoden ist die statische Programmanalyse, die statisch - d. h. ohne das analysierte Programm auszuführen - Informationen aus dem Quell- oder Bytecode des Programms extrahiert. Damit lassen sich potenziell gefährliche Datenflüsse, Laufzeitfehler oder anderes unerwünschtes Verhalten erkennen. Bislang wurde eine Vielzahl von statischen Analysen entwickelt, von denen viele inzwischen Teil gängiger IDEs oder Entwicklungs-Workflows sind.
Im Laufe dieses Projekts werden die Teilnehmer schrittweise in die Kernkonzepte der statischen Programmanalyse eingeführt, indem sie entsprechende Analyseaufgaben durchführen. Beginnend mit einfachen Analysen, die Informationen wie die Anzahl der Klassen in einem Programm extrahieren, werden wir fortgeschrittenere Konzepte wie Datenflussanalyse und abstrakte Interpretation erkunden. Die Teilnehmer werden in Gruppen arbeiten, um verschiedene Analyseaufgaben zu lösen und ihre Implementierung in realen Softwareprojekten und Bibliotheken zu bewerten, sowohl im Hinblick auf Korrektheit als auch auf Leistung.
In diesem Projekt werden wir Programme für die JVM (Java, Scala, Kotlin) analysieren und unsere Analysen in Scala (Version 2.13) unter Verwendung des OPAL Frameworks implementieren.
Literatur und Weiterführendes Material
- Eric Bodden. Inter-procedural data-flow analysis with IFDS/IDE and Soot
- The OPAL framework
- Scala lernen (Wir benötigen Scala 2.13 in diesem Fachprojekt)
Bewertung
In die Bewertung fließen unter anderem ein:
- Die Beteilung der Teilnehmenden am theoretischen Teil des Projekts
- Die Qualität der Implementierung von Metriken
- Die Durchführung und Ergebnisse der Evaluation für die jeweilige Implementierung
- Die abschließende Präsentation aller Ergebnisse