Oft brechen Angreifer in Softwaresysteme ein, indem sie eine spezielle Zeichenkette eingeben und so einen bereits vorhandenen Programmierfehler ausnutzen. Um diesen Missbrauch zu verhindern, entwickeln Informatiker des Kompetenzzentrums für IT-Sicherheit (CISPA) an der Saar-Uni Testverfahren, die innerhalb von Minuten Millionen gültiger Programmeingaben produzieren. Das nötige Wissen, wie die Eingaben aufgebaut sind, extrahieren die Wissenschaftler automatisch aus den zu testenden Programmen. Details präsentieren die Forscher auf der CeBIT in Halle 6 an Stand C47.
Andreas Zeller, Professor für Softwaretechnik der Universität des Saarlandes und Forscher am CISPA, will Sicherheitslücken aufdecken, bevor Cyberkriminelle sie ausnutzen können. „Moderne Testgeneratoren können sehr schnell Eingaben für das jeweilige Programm generieren“, erklärt Zeller. „Man muss aber wissen, wie die Eingabe aufgebaut ist, da das Programm ungültige Eingaben sonst sofort zurückweist“. Genau hier setzen die IT-Forscher an, nämlich zu entziffern, wie sich die Eingaben eines Programms zusammensetzen.
Aus einem vorhandenen Programm und dessen vorliegenden Eingaben können Zeller und seine Doktoranden Matthias Höschele und Alexander Kampmann automatisch eine „kontextfreie Grammatik“ herausziehen. Eine solche Grammatik beschreibt die gültigen Eingaben des Programms, etwa so wie die deutsche Grammatik gültige Sätze für die deutsche Sprache definiert. Nach den Kernpunkten dieses Ansatzes – „automatisch“ und „Grammatik“ – haben die CISPA-Forscher auch das dazugehörige Softwaresystem getauft. „Autogram“ lautet der Name ihres Prototyps, dessen erste Ergebnisse sie im September 2016 auf der Konferenz „Automated Software Engineering“ in Singapur vorstellten.
Prüfung auf „Herz und Nieren“
„Mit der von Autogram erzeugten Grammatik können wir in Minuten Millionen gültiger Eingaben produzieren und so ein Programm auf Herz und Nieren prüfen “, erklärt Zeller. Die Vielzahl von Eingaben reduziert die Wahrscheinlichkeit erheblich, eine Sicherheitslücke zu übersehen, so Zeller. Um die Grammatik zu extrahieren, beobachtet Autogram, was das jeweilige Programm mit den eingegebenen Daten macht. Unterschiedliche Teile der Eingabe werden nämlich in unterschiedlichen Teilen des Programms verarbeitet. So lernt Autogram, wie die Eingabe zusammengesetzt ist und wie sie mit dem Programmcode zusammenhängt. Die Grammatiken selbst sind für Menschen sehr gut lesbar, da sie so genannte Bezeichner aus dem Programmcode nutzen können.
Nicht mehr nur Firefox, sondern alle Programme und Eingabeformate
„Momentan testen wir unseren Prototypen, indem wir Autogram verschiedene Eingabeformate wie etwa JSON oder Tabellendaten analysieren lassen. Als Grundlage nutzen wir dafür rund tausend korrekte Eingaben“, berichtet Alexander Kampmann. Langfristig sollen diese Eingaben aber auch noch wegfallen, so dass man die Grammatik direkt aus dem Programm erlernen kann. Aufbauend auf der Grammatik können Testeingaben erstellt werden, die das Programm systematisch durchleuchten. Wie man dies effizient tut, erforschen die CISPA-Wissenschaftler im Projekt „tribble“, das sie ebenfalls auf der Cebit vorstellen. „Tribble“ nutzt Grammatiken, wie sie von Autogram geliefert werden, um systematisch alle Eingabevariationen und Codestücke abzudecken.
Mit grammatikbasiertem Testen haben die IT-Forscher um Zeller Erfahrung: 2012 stellten sie den Testgenerator Langfuzz vor, der mit Hilfe einer handgeschriebenen Grammatik den Web-Browser Firefox umfassend testete. Langfuzz ist seit vier Jahren im täglichen Einsatz bei den Firefox-Entwicklern; mit seiner Hilfe haben sie mehr als 4.000 Fehler und Sicherheitslücken gefunden und behoben.
Nun gehen die Saarbrücker Forscher den Schritt von Firefox auf beliebige Programme und Eingabeformate. „Das langfristige Ziel ist vollautomatisches Sicherheitstesten für alle – vom Kleingerät im Internet der Dinge bis zum ausgewachsenen Server“, so Zeller.