SCCH nutzt Software Analysen und Software Tests um Industrie-Software sicherer zu machen

Presseaussendung vom 23.02.2020

Dass man mit der "Bombardierung" mit Daten, die durch einen Zufallsgenerator erzeugt werden, Computerprogramme zum Absturz bringen kann, nutzen Sicherheitsexperten weltweit zum Schutz derselben. Das Software Competence Center Hagenberg verbindet diese Testmethoden für eine höhere Testabdeckung mit der Analyse der Programme. Dazu wird eine sprachunabhängige Analyse-Plattform des SCCH verwendet (eKNOWS), um Informationen aus dem Quellcode auszulesen und die Testmethoden effektiver einsetzen zu können.

Schwachstellen im Code aufdecken

„Software wird zunehmend agil entwickelt. Dabei ist die Robustheit gegen Fehler und Angriffe oberstes Ziel, insbesondere bei Softwaresystemen in der Industrie. Daher unterstützen wir die Entwickler dabei, Fehler frühzeitig zu finden und Security in jede Phase des Engineering-Prozesses zu bringen“, erklärt Hannes Sochor, Researcher für Software Security Analysis am SCCH. ‚Fuzzing‘ oder ‚Fuzzy Testing‘ gilt als eine der wichtigsten Methoden zur Qualitätssicherung von sicherheitskritischen Programmen. Es wird weltweit von Spezialisten genutzt, um das Auffinden von Sicherheitslücken zu automatisieren. Dabei werden verschiedene Eingabefelder im Programm mit zufälligen, unerwarteten (englisch ‚fuzz‘) Daten geflutet, um Schwachstellen in der Software aufzudecken. „Diese Technik findet Fehler, die sonst übersehen werden. Stürzt das Programm bei bestimmten Daten reproduzierbar ab, wird klar, wo es Daten nicht richtig verarbeiten kann und möglicherweise Angriffsfläche für fremden Zugriff bietet“, erklärt Sochor. Intelligente Robustheitstests nutzen ein Eingabemodell, um einen höheren Anteil gültiger Eingaben zu generieren und stellen fest, wie sich die Testabdeckung ändert, also welche Teile der Software damit erreicht werden. Sie sind am erfolgreichsten und werden für Syntax- oder Robustheitstests genutzt. 
Wenn man einen Code analysiert, ist aber nicht auf den ersten Blick erkennbar, welche Daten ein Programm akzeptiert. „In diesen Fällen nutzen wir am SCCH den Quelltext des Programms. Wir haben eKNOWS (Extracting Knowledge from Software https://www.scch.at/de/eknows) entwickelt, ein Framework mit dem wir Software analysieren und das Fachwissen der Ingenieure, das im Source Code steckt, extrahieren können. Üblicherweise sind solche Tools nur auf eine Programmiersprache spezialisiert. Das von uns entwickelte eKNOWS ist aber eine universelle Plattform mit breiter Sprachunterstützung und eines der wenigen Werkzeuge für Qualitätsanalysen in der Automatisierungsindustrie“, erklärt Dr. Thomas Ziebermayr, Leiter des Bereichs Software Science am SCCH. Diese Robustheitstests kann man auch für den Vergleich von Programmen oder Versionen verwenden. Dazu zeichnet man auf, welche Eingabewerte welche Ausgabewerte erzeugen, und das für jede Version oder jene Programme, die man vergleichen will.

Dies wird häufig bei der Umstellung alter Produktionssysteme oder Legacy Systems auf moderne IT-Umgebungen angewendet. Für solche Softwaretests verwendet man strukturierte Eingaben. Dafür muss aber für das Testprogramm festgelegt sein, welche Eingaben erlaubt sind (Grammatik). Wenn diese Regeln nicht vorhanden sind, muss man diese erstellen oder durch Analysemethoden herausfinden. Mit der recht jungen Methode des ‚Grammar Minings‘ geht Sochor daran, Regeln für gültigen Input aufzustellen. „Streng formale Grammatik wird in SPS Programmen, wie sie in der Industrie eingesetzt werden, meist noch nicht angewendet. Aber wir wollen aus dem Quellcode gültigen Input auslesen und aus mehreren Regeln die globale Grammatik eines Programms ableiten“, so Sochor. 

Universelles Tool für Grammar-based Fuzzing 

Um einen höheren Grad an Codeabdeckung zu erreichen, setzt Sochor bei seiner Entwicklung auf das kombinierte ‚Grammar-based Fuzzing‘. „Wir entwickeln ein Set an Regeln, das den korrekten Input beschreibt und testen, ob das Programm mit diesem Input umgehen kann. Mit absichtlichen Fehlern können wir spezielle Randfälle gezielt testen, um die Robustheit des Systems festzustellen. Damit decken wir dank des sprachunabhängigen ‚Grammar Minings‘ in der bestehenden Programmierung ein breites Spektrum ab, das auch in der Industrie angewendet wird“, ist Sochor überzeugt. Erste Tests mit Unternehmenspartnern des SCCH laufen bereits.